「セキュリティグループのルール」
セキュリティグループルールは、セキュリティグループに関連付けられたリソースに到達することを許可するインバウンドトラフィックを制御します。また、このルールによって、インスタンスから送信されるアウトバウンドトラフィックも制御されます。
セキュリティグループのルールは追加または削除できます (インバウンドまたはアウトバウンドアクセスの許可または取り消しとも呼ばれます)。ルールが適用されるのは、インバウンドトラフィック (受信) またはアウトバウンドトラフィック (送信) のいずれかです。特定のソースまたは送信先へのアクセス権を付与できます。
内容
セキュリティグループのルールの基本
-
許可ルールを指定できます。拒否ルールは指定できません。
-
セキュリティグループを初めて作成するときには、インバウンドルールはありません。したがって、インバウンドルールをセキュリティグループに追加するまで、インバウンドトラフィックは許可されません。
-
セキュリティグループを最初に作成するとき、リソースからのすべてのアウトバウンドトラフィックを許可するアウトバウンドルールが設定されます。ルールを削除し、任意の発信トラフィックのみを許可するアウトバウンドルールを追加できます。セキュリティグループにアウトバウンドルールがない場合、アウトバウンドトラフィックは許可されません。
-
複数のセキュリティグループをリソースに関連付けると、各セキュリティグループのルールが集約されて、アクセス許可の判断に使用する 1 つのルールセットが形成されます。
-
ルールを追加、更新、または削除すると、セキュリティグループに関連付けられたすべてのリソースにこの変更が自動的に適用されます。一部のルール変更の影響は、トラフィックの追跡方法によって異なる場合があります。詳細については、「Amazon EC2 ユーザーガイド」の「接続追跡」を参照してください。
-
セキュリティグループルールを作成する際、AWS により、一意の ID がそのルールに割り当てられます。このルールの ID は、API または CLI を使用してルールを変更または削除する際に使用します。
制限
セキュリティグループは、「VPC+2 IP アドレス」 (「Amazon Route 53 デベロッパーガイド」の「Amazon Route 53 Resolver」を参照) または AmazonProvidedDNS と呼ばれることがある Route 53 Resolver から送受信される DNS リクエストをブロックできません。Route 53 Resolver 経由の DNS リクエストをフィルタリングするには、Route 53 Resolver DNS Firewall を使用します。
セキュリティグループルールの構成要素
-
プロトコル: 許可するプロトコル。最も一般的なプロトコルは、6 (TCP)、17 (UDP)、1 (ICMP) です。
-
ポートの範囲: TCP、UDP、カスタムプロトコルの場合、許可するポートの範囲。1 つのポート番号 (
22
など)、または一定範囲のポート番号 (7000-8000
など) を指定できます。 -
ICMP タイプおよびコード: ICMP の場合、ICMP タイプおよびコードです。例えば、ICMP エコー要求にはタイプ 8、ICMPv6 エコー要求にはタイプ 128 を使用します。
-
Source or destination (送信元または送信先): 許可するトラフィックの送信元 (インバウンドルール) または送信先 (アウトバウンドルール)。次のいずれかを指定します。
-
単一の IPv4 アドレス。
/32
プレフィクス長を使用する必要があります。例えば、203.0.113.1/32
と指定します。 -
単一の IPv6 アドレス。
/128
プレフィクス長を使用する必要があります。例えば、2001:db8:1234:1a00::123/128
と指定します。 -
CIDR ブロック表記の IPv4 アドレスの範囲。例えば、
203.0.113.0/24
と指定します。 -
CIDR ブロック表記の IPv6 アドレスの範囲。例えば、
2001:db8:1234:1a00::/64
と指定します。 -
プレフィクスリストの ID。例えば、
pl-1234abc1234abc123
と指定します。詳細については、「マネージドプレフィックスリストを使用して CIDR ブロックをグループ化する」を参照してください。 -
セキュリティグループの ID。例えば、
sg-1234567890abcdef0
と指定します。詳細については、「セキュリティグループの参照」を参照してください。
-
-
(オプション) 説明: 後で分かりやすいように、このルールの説明を追加できます。説明の長さは最大 255 文字とすることができます。使用できる文字は、a~z、A~Z、0~9、スペース、._-:/()#,@[]+=;{}!$* です。
セキュリティグループの参照
ルールのソースまたは宛先としてセキュリティグループを指定する場合、ルールはセキュリティグループに関連付けられているすべてのインスタンスに影響します。インスタンスは、指定されたプロトコルとポート経由で、インスタンスのプライベート IP アドレスを使用して、指定された方向の通信を行うことができます。
例えば、以下は、セキュリティグループ sg-0abcdef1234567890 を参照するセキュリティグループのインバウンドルールを表しています。このルールは、sg-0abcdef1234567890 に関連付けられたインスタンスからのインバウンド SSH トラフィックを許可します。
ソース | プロトコル | ポート範囲 |
---|---|---|
sg-0abcdef1234567890 |
TCP | 22 |
セキュリティグループルール内のセキュリティグループを参照するときは、以下の点に注意してください。
-
両方のセキュリティグループが、同じ VPC、またはピアリングされた VPC に属している必要がある。
-
参照されるセキュリティグループからのルールが、このグループを参照するセキュリティグループに追加されていない。
-
インバウンドルールの場合は、セキュリティグループに関連付けられた EC2 インスタンスが、参照されるセキュリティグループに関連付けられた EC2 インスタンスのプライベート IP アドレスからのインバウンドトラフィックを受信できる。
-
アウトバウンドルールの場合は、セキュリティグループに関連付けられた EC2 インスタンスが、参照されるセキュリティグループに関連付けられた EC2 インスタンスのプライベート IP アドレスへのアウトバウンドトラフィックを送信できる。
制限
ミドルボックスアプライアンスを介して異なるサブネット内の 2 つのインスタンス間のトラフィックを転送するようにルートを設定するには、両方のインスタンスのセキュリティグループでインスタンス間のトラフィックがフローできるようにする必要があります。各インスタンスのセキュリティグループは、他のインスタンスのプライベート IP アドレス、または他のインスタンスを含むサブネットの CIDR 範囲を送信元として参照される必要があります。他のインスタンスのセキュリティグループを送信元として参照する場合、インスタンス間のトラフィックは許可されません。
例
次の図は、2 つのアベイラビリティーゾーン、1 つのインターネットゲートウェイ、1 つの Application Load Balancer のサブネットを使用する VPC を示しています。各アベイラビリティーゾーンには、ウェブサーバー用のパブリックサブネットと、データベースサーバー用のプライベートサブネットがあります。ロードバランサー、ウェブサーバー、データベースサーバーには個別のセキュリティグループがあります。以下のセキュリティグループルールを作成して、トラフィックを許可します。
-
ロードバランサーのセキュリティグループにルールを追加して、インターネットからの HTTP および HTTPS トラフィックを許可します。送信元は 0.0.0.0/0 です。
-
ウェブサーバーのセキュリティグループにルールを追加して、ロードバランサーからの HTTP および HTTPS トラフィックのみを許可します。送信元はロードバランサーのセキュリティグループです。
-
データベースサーバーのセキュリティグループにルールを追加して、ウェブサーバーからのデータベースリクエストを許可します。送信元はウェブサーバーのセキュリティグループです。
セキュリティグループのサイズ
各ルールがセキュリティグループごとに設定できるルールの最大数にカウントされる方法は、ソースまたは送信先のタイプに応じて判断されます。
-
CIDR ブロックを参照するルールは、1 個のルールとしてカウントされます。
-
別のセキュリティグループを参照するルールは、参照されるセキュリティグループのサイズにかかわらず、1 個のルールとしてカウントされます。
-
カスタマーマネージドプレフィックスリストを参照するルールは、プレフィックスリストの最大サイズにならってカウントされます。例えば、プレフィックスリストの最大サイズが 20 の場合、このプレフィックスリストを参照するルールも 20 個のルールとしてカウントされます。
-
AWS マネージドプレフィックスリストを参照するルールは、プレフィックスリストのウェイトにならってカウントされます。例えば、プレフィックスリストの最大サイズが 10 の場合、このプレフィックスリストを参照するルールも 10 個のルールとしてカウントされます。詳細については、「使用可能な AWS マネージドプレフィックスリスト」を参照してください。
古くなったセキュリティグループルール
VPC に別の VPC との VPC ピアリング接続がある場合、または別のアカウントで共有されている VPC を使用している場合、VPC のセキュリティグループルールは、そのピア VPC または共有 VPC のセキュリティグループを参照できます。これにより、参照されるセキュリティグループに関連付けられているリソースと、参照するセキュリティグループに関連付けられているリソースが、相互に通信できるようになります。
共有 VPC のセキュリティグループを削除するか、または VPC ピア接続を削除すると、セキュリティグループルールは古いものとしてマークされます。古くなったセキュリティグループルールは他のセキュリティグループルールと同じ方法で削除できます。詳細については、「Amazon VPC Peering Guide」の「Work with stale security group rules」を参照してください。
セキュリティグループの操作
次のタスクでは、セキュリティグループルールを操作する方法を示しています。
必要なアクセス許可
セキュリティグループへのルールの追加
ルールをセキュリティグループに追加すると、セキュリティグループに関連付けられているすべてのリソースに新しいルールが自動的に適用されます。
VPC ピアリング接続がある場合は、セキュリティグループルールで、送信元または送信先としてピア VPC からセキュリティグループを参照できます。詳細については、Amazon VPC ピア機能ガイドの「セキュリティグループの更新によるピア VPC セキュリティグループの参照」を参照してください。
セキュリティグループルールの管理に必要な許可については、「セキュリティグループルールの管理」を参照してください。
警告
[Anywhere-IPv4] を選択すると、すべての IPv4 アドレスからのトラフィックが許可されます。[Anywhere-IPv6] を選択すると、すべての IPv6 アドレスからのトラフィックが許可されます。ポート22 (SSH) または 3389 (RDP) のルールを追加する場合、特定の IP アドレス範囲にのみインスタンスへのアクセスを許可します。
コンソールを使用してルールを追加するには
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで [セキュリティグループ] をクリックします。
-
セキュリティグループを選択します。
-
[アクション]、[Edit inbound rules (インバウンドルールを編集)] を選択するか、[アクション]、[Edit outbound rules (アウトバウンドルールを編集)] を選択します。
-
各ルールで、[Add rule] (ルールの追加) を選択し、次の操作を行います。
-
[タイプ] で、許可するプロトコルのタイプを選択します。
-
TCP または UDP の場合は、許可するポート範囲を入力する必要があります。
-
カスタムの ICMP の場合は、[プロトコル] から ICMP タイプ名を選択し、該当するものがある場合は [ポート範囲] からコード名を選択します。
-
その他のタイプについては、プロトコルとポート範囲は自動的に設定されます。
-
-
[Source Type] (送信元タイプ) (インバウンドルール) または [Destination Type] (送信先タイプ) (アウトバウンドルール) で、トラフィックを許可するために次のいずれかの操作を行います。
-
[カスタム] を選択し、IP アドレス (CIDR 表記)、CIDR ブロック、別のセキュリティグループ、あるいはプレフィクスリストを入力します。
-
[Anywhere-IPv4] を選択して、任意の IPv4 アドレスからトラフィックを許可 (インバウンドルール)、またはすべての IPv4 アドレスへのトラフィックを許可します (アウトバウンドルール)。これにより、IPv4 の CIDR ブロック 0.0.0.0/0 のルールが自動的に追加されます。
-
[Anywhere-IPv6] を選択して、任意の IPv6 アドレスからトラフィックを許可 (インバウンドルール)、またはすべての IPv6 アドレスへのトラフィックを許可します (アウトバウンドルール)。これにより、IPv6 の CIDR ブロック ::/0 のルールが自動的に追加されます。
-
ローカルコンピュータのパブリック IPv4 アドレスとの間の受信トラフィック (インバウンドルール) または送信トラフィック (アウトバウンドルール)
-
-
(オプション) [Description] (説明) では、ルールの簡単な説明を指定できます。
-
-
[Save Rules (ルールの保存)] を選択します。
AWS CLI を使用してセキュリティグループにルールを追加するには
authorize-security-group-ingress コマンドおよび authorize-security-group-egress コマンドを使用します。
セキュリティグループルールの更新
ルールを更新すると、更新されたルールは、セキュリティグループに関連付けられているすべてのリソースに自動的に適用されます。
セキュリティグループルールの管理に必要な許可については、「セキュリティグループルールの管理」を参照してください。
コンソールを使用してルールを更新するには
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで [セキュリティグループ] をクリックします。
-
セキュリティグループを選択します。
-
[アクション]、[Edit inbound rules (インバウンドルールを編集)] を選択するか、[アクション]、[Edit outbound rules (アウトバウンドルールを編集)] を選択します。
-
必要に応じてルールを更新します。
-
[Save Rules (ルールの保存)] を選択します。
AWS CLI を使用してセキュリティグループルールを更新するには
modify-security-group-rules、update-security-group-rule-descriptions-ingress、update-security-group-rule-descriptions-egress コマンドを使用します。
セキュリティグループルールのタグ付け
目的、所有者、環境などに応じて、タグを整理して識別しやすくするために、リソースにタグを追加します。セキュリティグループルールにタグを追加できます。タグキーは、各ターゲットグループルールで一意である必要があります。既にターゲットグループルールに関連付けられているキーを持つタグを追加すると、そのタグの値が更新されます。
コンソールを使用してルールにタグを付けるには
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで [セキュリティグループ] をクリックします。
-
セキュリティグループを選択します。
-
[インバウンドルール] または [アウトバウンドルール] タブで、対象となるルールのチェックボックスを選択してから、[タグを管理] をクリックします。
-
[タグの管理] ページには、ルールに割り当てられているすべてのタグが表示されます。タグを追加するには、[タグの追加] を選択し、タグのキーと値を入力します。タグを削除するには、削除するタグの横にある [Remove] を選択します。
-
[Save changes] を選択します。
AWS CLI を使用してルールにタグ付けするには
create-tags コマンドを使用します。
セキュリティグループルールの削除
セキュリティグループからルールを削除すると、その変更内容が自動的にセキュリティグループに関連付けられているインスタンスに適用されます。
コンソールを使用してセキュリティグループルールを削除するには
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで [セキュリティグループ] をクリックします。
-
セキュリティグループを選択します。
-
[Actions] (アクション) を選択してから、[Edit inbound rules] (インバウンドのルールの編集) を選択してインバウンドルールを削除するか、[Edit outbound rules] (アウトバウンドのルールの編集) を選択してアウトバウンドルールを削除します。
-
削除するルールの横にある [Delete] (削除) ボタンを選択します。
-
[Save Rules (ルールの保存)] を選択します。または、[変更をプレビュー] を選択し、変更を確認して [確認] を選択します。
AWS CLI を使用してセキュリティグループルールを削除するには
revoke-security-group-ingress と revoke-security-group-egress のコマンドを使用します。
ルールの例
ウェブサーバー
以下は、ウェブサーバーのセキュリティグループに対するルールの例です。ウェブサーバーはすべての IPv4 と IPv6 アドレスから HTTP と HTTPS トラフィックを受信し、SQL または MySQL トラフィックをデータベースサーバーに送信することができます。
警告
EC2 インスタンスにアクセスできるようにするために、ポート 22 (SSH) または 3389 (RDP) のルールを追加する場合は、特定の IP アドレスの範囲のみを許可することをお勧めします。0.0.0.0/0 (IPv4) と ::/ (IPv6) を指定すると、指定したプロトコルを使用して、誰でも任意の IP アドレスからインスタンスにアクセスできるようになります。
インバウンド | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
送信元 | プロトコル | ポート範囲 | 説明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0.0.0.0/0 |
TCP |
80 |
すべての IPv4 アドレスからのインバウンド HTTP アクセスを許可する。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
::/0 | TCP | 80 | すべての IPv6 アドレスからのインバウンド HTTP アクセスを許可する | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0.0.0.0/0 |
TCP |
443 |
すべての IPv4 アドレスからのインバウンド HTTPS アクセスを許可する |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
::/0 | TCP | 443 | すべての IPv6 アドレスからのインバウンド HTTPS アクセスを許可する | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ネットワークのパブリック IPv4 アドレス範囲 |
TCP |
22 |
(オプション) ネットワーク内の IPv4 IP アドレスからのインバウンド SSH アクセスを許可する |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ネットワークの IPv6 アドレス範囲 |
TCP | 22 | (オプション) ネットワーク内の IPv6 IP アドレスからのインバウンド SSH アクセスを許可する | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ネットワークのパブリック IPv4 アドレス範囲 |
TCP |
3389 |
(オプション) ネットワーク内の IPv4 IP アドレスからのインバウンド RDP アクセスを許可する |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ネットワークの IPv6 アドレス範囲 |
TCP | 3389 | (オプション) ネットワーク内の IPv6 IP アドレスからのインバウンド RDP アクセスを許可する | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
このセキュリティグループの ID |
すべて | すべて | (オプション) このセキュリティグループに関連付けられた他のサーバーからのインバウンドトラフィックを許可する |
アウトバウンド | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
送信先 | プロトコル | ポート範囲 | 説明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Microsoft SQL Server を実行しているインスタンスのセキュリティグループの ID |
TCP |
1433 |
Microsoft SQL Server のアウトバウンドアクセスを許可する |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MySQL を実行しているインスタンスのセキュリティグループの ID |
TCP |
3306 |
MySQL のアウトバウンドアクセスを許可する |
データベースサーバー
データベースサーバーには、MySQL や Microsoft SQL Server などのインバウンド固有のプロトコルを許可するルールが必要です。例については、「Amazon EC2 ユーザーガイド」の「データベースサーバールール」を参照してください。Amazon RDS DB インスタンスのセキュリティグループの詳細については、Amazon RDS ユーザーガイドの「セキュリティグループによるアクセスの制御」を参照してください。
到達可能性に関する問題のトラブルシューティング
Reachability Analyzer は静的な設定分析ツールです。Reachability Analyzer を使用して、VPC 内の 2 つのリソース間のネットワーク到達可能性を分析およびデバッグできます。Reachability Analyzer は、これらのリソースに到達可能な場合は、リソース間にある仮想パスのホップバイホップの詳細を生成し、そうでない場合はブロッキングコンポーネントを識別します。例えば、欠落した、または誤って設定されたセキュリティグループのルールを特定できます。
詳細については、「Reachability Analyzer Guide」(到達可能性アナライザーガイド) を参照してください。