security groupとは何か? リソースのための仮想ファイアウォール
security groupとは、クラウドリソースにアタッチされるステートフルな仮想ファイアウォールであり、自分が定義したルールに基づいてどの受信・送信トラフィックが許可されるかを決めます。
クラウドネットワークでは、security groupはリソースを包み、ポート、プロトコル、ソースでトラフィックをフィルタリングします。ステートフルなので、許可された受信リクエストはその応答の送信を自動的に許可します。誤設定されたsecurity groupは、pipelineがデプロイ先のデータベースやサービスに到達できない最も一般的な理由の1つです。
ポートとソースによるルール
security groupのルールは、指定されたソースからのポートまたはレンジ上のトラフィックを許可します。ソースはIPレンジや別のsecurity groupであり得ます。明示的に許可されていないものはすべて拒否されます。
ステートフルなフィルタリング
security groupはステートフルなので、リクエストには受信ルールだけが必要で、応答は自動的に戻ることが許可されます。これは両方向のルールが必要なステートレスなnetwork ACLとは異なります。
受信と送信
- 受信ルールは誰がリソースに接続できるかを制御します。
- 送信ルールはリソースがどこへ到達できるかを制御します。
- デフォルトはしばしばすべての送信を許可し、すべての受信を拒否します。
security groupとCIのアクセス
データベースへデプロイするrunnerは、データベースのsecurity group上で、そのデータベースのポートについてrunnerのソースを許可する受信ルールを必要とします。それがないと、コネクションはtimeoutします。
他のグループを参照する
よりクリーンな構成では、IPをハードコードする代わりに1つのsecurity groupが別のものを参照できます。これは、ローテーションし得る特定のIPへの固定と違い、変化するrunnerのアドレスに対して堅牢です。
ブロックは瞬断ではない
security groupの拒否は、ルールを追加するまで毎回同じように失敗するため、retryできません。Latchkeyのrunnerは本当に一時的なtimeoutはretryしますが、security groupのブロックは正しいルールを開けて修正する必要があります。
重要なポイント
- security groupとは、リソースへのトラフィックを制御するステートフルな仮想ファイアウォールです。
- ステートフルなので、許可された受信リクエストはその応答を自動的に受け取れます。
- ブロックされたコネクションは、retryすべき一時的な失敗ではなく、修正すべきルールの問題です。