セキュリティグループを使用してリソースへのトラフィックを制御する - Amazon Virtual Private Cloud

セキュリティグループを使用してリソースへのトラフィックを制御する

セキュリティグループは、関連付けられたリソースに到達するトラフィックおよびリソースから離れるトラフィックを制御します。例えば、セキュリティグループを EC2 インスタンスに関連付けると、インスタンスのインバウンドトラフィックとアウトバウンドトラフィックが制御されます。

VPC を作成すると、デフォルトのセキュリティグループが使用されます。VPC ごとに追加のセキュリティグループを作成できます。セキュリティグループは、作成された VPC 内のリソースにのみ関連付けることができます。

セキュリティグループごとに、プロトコルとポート番号に基づいてトラフィックを制御するルールを追加します。インバウンドトラフィックとアウトバウンドトラフィックには、個別のルールセットがあります。

セキュリティグループの基本

セキュリティグループの特徴

  • セキュリティグループを作成する場合、名前と説明を指定する必要があります。以下のルールが適用されます。

    • セキュリティグループ名は VPC 内で一意である必要があります。

    • 名前と説明の長さは最大 255 文字とすることができます。

    • 名前と説明に使用できる文字は、a~z、A~Z、0~9、スペース、._-:/()#,@[]+=&;{}!$* です。

    • 名前に末尾のスペースが含まれている場合は、名前の末尾のスペースを削除します。例えば、名前に「セキュリティグループのテスト 」と入力すると、「セキュリティグループのテスト」として保存されます。

    • セキュリティグループ名は、sg- で開始できません。

  • セキュリティグループはステートフルです。例えば、インスタンスからリクエストを送信した場合、そのリクエストのレスポンストラフィックは、インバウンドセキュリティグループのルールに関係なく、インスタンスに到達が許可されます。許可されたインバウンドトラフィックへのレスポンスは、アウトバウンドルールに関係なく、インスタンスを離れることができます。

  • VPC あたりの作成可能なセキュリティグループの数、各セキュリティグループに追加できるルールの数、ネットワークインターフェイスに関連付けることができるセキュリティグループの数にはクォータがあります。詳細については、「Amazon VPC クォータ」を参照してください。

セキュリティグループルールの特徴

  • 許可ルールを指定できます。拒否ルールは指定できません。

  • セキュリティグループを初めて作成するときには、インバウンドルールはありません。したがって、インバウンドルールをセキュリティグループに追加するまで、インバウンドトラフィックは許可されません。

  • セキュリティグループを最初に作成するとき、リソースからのすべてのアウトバウンドトラフィックを許可するアウトバウンドルールが設定されます。ルールを削除し、任意の発信トラフィックのみを許可するアウトバウンドルールを追加できます。セキュリティグループにアウトバウンドルールがない場合、アウトバウンドトラフィックは許可されません。

  • 複数のセキュリティグループをリソースに関連付けると、各セキュリティグループのルールが集約されて、アクセス許可の判断に使用する 1 つのルールセットが形成されます。

  • ルールを追加、更新、または削除すると、セキュリティグループに関連付けられたすべてのリソースにこの変更が自動的に適用されます。一部のルール変更の影響は、トラフィックの追跡方法によって異なる場合があります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「接続追跡」を参照してください。

  • セキュリティグループルールを作成する際、AWS により、一意の ID がそのルールに割り当てられます。このルールの ID は、API または CLI を使用してルールを変更または削除する際に使用します。

ベストプラクティス

  • 特定の IAM プリンシパルのみにセキュリティグループの作成と変更を許可します。

  • エラーのリスクを減らすために、必要最小限の数のセキュリティグループを作成してください。各セキュリティグループを使用して、同様の機能とセキュリティ要件を持つリソースへのアクセスを管理します。

  • EC2 インスタンスにアクセスできるようにするために、ポート 22 (SSH) または 3389 (RDP) のインバウンドルールを追加する場合は、特定の IP アドレスの範囲のみを許可する必要があります。0.0.0.0/0 (IPv4) と ::/ (IPv6) を指定すると、指定したプロトコルを使用して、誰でも任意の IP アドレスからインスタンスにアクセスできるようになります。

  • 広い範囲のポートを開かないでください。各ポートからのアクセスが、それを必要とする送信元または宛先に制限されていることを確認します。

  • セキュリティの追加レイヤーを VPC に追加するには、セキュリティグループと同様のルールを指定したネットワーク ACL を作成することを検討してください。セキュリティグループとネットワーク ACL の違いの詳細については、「セキュリティグループとネットワーク ACL を比較する」を参照してください。

VPC のデフォルトセキュリティグループ

デフォルトの VPC および作成した VPC には、デフォルトのセキュリティグループが適用されます。リソースによっては、リソースの作成時にセキュリティグループを関連付けない場合、デフォルトのセキュリティグループが関連付けられます。例えば、EC2 インスタンスを起動時にセキュリティグループを指定しない場合、デフォルトのセキュリティグループが関連付けられます。

デフォルトのセキュリティグループのルールは変更できます。デフォルトのセキュリティグループを削除することはできません。デフォルトのセキュリティグループを削除しようとした場合、Client.CannotDelete エラーが発生します。

次の表では、デフォルトのセキュリティグループ用のデフォルトルールについて説明します。

Inbound
送信元 プロトコル ポート範囲 説明

セキュリティグループ ID (独自のリソース ID)

すべて

すべて

同じセキュリティグループに割り当てられたリソースからのインバウンドトラフィックを許可します。

Outbound

送信先 プロトコル ポート範囲 説明

0.0.0.0/0

すべて

すべて

すべてのアウトバウンド IPv4 トラフィックを許可します。

::/0 All All Allows all outbound IPv6 traffic. This rule is added only if your VPC has an associated IPv6 CIDR block.

セキュリティグループのルール

セキュリティグループルールは、セキュリティグループに関連付けられたリソースに到達することを許可するインバウンドトラフィックを制御します。また、このルールによって、インスタンスから送信されるアウトバウンドトラフィックも制御されます。

セキュリティグループのルールは追加または削除できます (インバウンドまたはアウトバウンドアクセスの許可または取り消しとも呼ばれます)。ルールが適用されるのは、インバウンドトラフィック (受信) またはアウトバウンドトラフィック (送信) のいずれかです。特定の CIDR 範囲、または VPC あるいはピア VPC (VPC ピアリング接続が必要) の別のセキュリティグループにアクセス権を付与できます。

警告

EC2 インスタンスにアクセスできるようにするために、ポート 22 (SSH) または 3389 (RDP) のルールを追加する場合は、特定の IP アドレスの範囲のみを許可することをお勧めします。0.0.0.0/0 (IPv4) と ::/ (IPv6) を指定すると、指定したプロトコルを使用して、誰でも任意の IP アドレスからインスタンスにアクセスできるようになります。

ルールごとに、以下の点について指定します。

  • プロトコル: 許可するプロトコル。最も一般的なプロトコルは、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 (ここでは、指定されたセキュリティグループと呼ばれます)。例えば、現在のセキュリティグループ、同じ VPC のセキュリティグループ、またはピア接続された VPC のセキュリティグループなどがあります。これにより、指定されたセキュリティグループに関連付けられたリソースのプライベート IP アドレスに基づくトラフィックが許可されます。その際、指定されたセキュリティグループから現在のセキュリティグループにルールが追加されることはありません。 †

  • (オプション) 説明: 後で分かりやすいように、このルールの説明を追加できます。説明の長さは最大 255 文字とすることができます。使用できる文字は、a ~ z、A ~ Z、0 ~ 9、スペース、._-:/()#,@[]+=;{}!$* です。

† ミドルボックスアプライアンスを介して異なるサブネット内の 2 つのインスタンス間のトラフィックを転送するようにルートを設定するには、両方のインスタンスのセキュリティグループでインスタンス間のトラフィックがフローできるように許可する必要があります。各インスタンスのセキュリティグループは、他のインスタンスのプライベート IP アドレス、または他のインスタンスを含むサブネットの CIDR 範囲を送信元として参照する必要があります。他のインスタンスのセキュリティグループを送信元として参照する場合、インスタンス間のトラフィックは許可されません。

ルールの例

多くの場合、セキュリティグループに追加するルールは、セキュリティグループの目的によって異なります。次の表に、ウェブサーバーに関連付けられているセキュリティグループのルールの例を示します。ウェブサーバーはすべての IPv4 および IPv6 アドレスから HTTP および HTTPS トラフィックを受信し、SQL または MySQL トラフィックをデータベースサーバーに送信することができます。

Inbound
ソース プロトコル ポート範囲 説明

0.0.0.0/0

TCP

80

すべての IPv4 アドレスからのインバウンド HTTP アクセスを許可する。

::/0 TCP 80 Allows inbound HTTP access from all IPv6 addresses

0.0.0.0/0

TCP

443

すべての IPv4 アドレスからのインバウンド HTTPS アクセスを許可する

::/0 TCP 443 Allows inbound HTTPS access from all IPv6 addresses

ネットワークのパブリック IPv4 アドレスの範囲

TCP

22

ネットワーク内の IPv4 アドレスからのインバウンド SSH アクセスを許可する

ネットワークのパブリック IPv4 アドレスの範囲

TCP

3389

ネットワーク内の IPv4 アドレスからのインバウンド RDP アクセスを許可する

Outbound

送信先 プロトコル ポート範囲 説明

Microsoft SQL Server データベースサーバーのセキュリティグループの ID

TCP

1433

Microsoft SQL Server のアウトバウンドアクセスを許可する

MySQL データベースサーバーのセキュリティグループの ID

TCP

3306

MySQL のアウトバウンドアクセスを許可する

データベースサーバーには、異なるルールセットが必要です。例えば、インバウンド HTTP および HTTPS トラフィックの代わりに、インバウンドの MySQL または Microsoft SQL Server アクセスを許可するルールを追加できます。例については、「セキュリティ」を参照してください。Amazon RDS DB インスタンスのセキュリティグループの詳細については、Amazon RDS ユーザーガイドの「セキュリティグループによるアクセスの制御」を参照してください。

その他の例については、「セキュリティグループのルールのリファレンス」「Linux インスタンス用 Amazon EC2 ユーザーガイド」を参照してください。

古くなったセキュリティグループルール

VPC に別の VPC との VPC ピアリング接続がある場合、または別のアカウントで共有されている VPC を使用している場合、VPC のセキュリティグループルールは、そのピア VPC または共有 VPC のセキュリティグループを参照できます。これにより、参照されるセキュリティグループに関連付けられているリソースと、参照するセキュリティグループに関連付けられているリソースが、相互に通信できるようになります。

共有 VPC のセキュリティグループを削除するか、または VPC ピア接続を削除すると、セキュリティグループルールは古いものとしてマークされます。古くなったセキュリティグループルールは他のセキュリティグループルールと同じ方法で削除できます。詳細については、Amazon VPC Peering ガイドの「古いセキュリティグループルールの操作」を参照してください。

セキュリティグループの操作

以下のタスクでは、Amazon VPC コンソールを使用してセキュリティグループを操作する方法を示しています。

必要なアクセス許可

セキュリティグループの作成

デフォルトでは、新しいセキュリティグループにはすべてのトラフィックがリソースを離れることを許可するアウトバウンドルールのみが設定されています。任意のインバウンドトラフィックを許可するには、またはアウトバウンドトラフィックを制限するには、ルールを追加する必要があります。

セキュリティグループは、それが対象としている VPC 内でのみ使用が可能です。

セキュリティグループの作成とセキュリティグループルールの管理に必要な許可については、「セキュリティグループの管理」と「セキュリティグループルールの管理」を参照してください。

コンソールを使用してセキュリティグループを作成するには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. [セキュリティグループの作成] を選択します。

  4. セキュリティグループの名前と説明を入力します。セキュリティグループの作成後に名前と説明を変更することはできません。

  5. [VPC] で、VPC を選択します。

  6. セキュリティグループルールはここで追加することも、後で追加することもできます。詳細については、「セキュリティグループへのルールの追加」を参照してください。

  7. タグはここで追加することも、後で追加することもできます。タグを追加するには、[新しいタグを追加] をクリックし、タグのキーと値を入力します。

  8. [セキュリティグループの作成] を選択します。

コマンドラインを使用してセキュリティグループを作成するには

セキュリティグループの表示

次のように、セキュリティグループに関する情報を表示できます。

セキュリティグループの表示に必要な許可については、「セキュリティグループの管理」を参照してください。

コンソールを使用してセキュリティグループを表示するには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. セキュリティグループが一覧表示されます。インバウンドルールやアウトバウンドルールなど、特定のセキュリティグループの詳細を表示するには、セキュリティグループを選択します。

コマンドラインを使用してセキュリティグループを表示するには

リージョン間ですべてのセキュリティグループを表示するには

次の URL で Amazon EC2 グローバルビューコンソールを開きます。https://console.aws.amazon.com/ec2globalview/home

Amazon EC2 グローバルビューの使用方法については、Linux インスタンス用ユーザーガイドの 「リソースの一覧表示およびフィルタリング」を参照してください。

セキュリティグループのタグ付け

目的、所有者、環境などに応じて、タグを整理して識別しやすくするために、リソースにタグを追加します。セキュリティグループにはタグを追加できます。タグキーは、各セキュリティグループで一意である必要があります。既にルールに関連付けられているキーを持つタグを追加すると、そのタグの値が更新されます。

コンソールを使用してセキュリティグループにタグを付けるには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. セキュリティグループのチェックボックスを選択します。

  4. [Actions] (アクション)、[Manage tags] (タグの管理) を選択します。

  5. [Manage tags] (タグの管理) ページには、セキュリティグループに割り当てられているタグが表示されます。タグを追加するには、[タグの追加] を選択し、タグのキーと値を入力します。タグを削除するには、削除するタグの横にある [Remove] を選択します。

  6. [Save changes] を選択します。

コマンドラインを使用してセキュリティグループのタグ付けを行うには

セキュリティグループを削除する

セキュリティグループを削除できるのは、そのセキュリティグループが現在リソースに関連付けられていない場合のみです。デフォルトのセキュリティグループを削除することはできません。

コンソールを使用している場合は、複数のセキュリティグループを一度に削除できます。コマンドラインまたは API を使用している場合、一度に削除できるのは 1 つのセキュリティグループのみです。

コンソールを使用してセキュリティグループを削除するには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. 1 つ以上のセキュリティグループを選択して、[Actions] (アクション)、[Delete Security Group] (セキュリティグループセキュリティグループの削除) を選択します。

  4. 確認を求められたら、「delete」と入力し、[削除] を選択します。

コマンドラインを使用してセキュリティグループを削除するには

セキュリティグループの操作

以下のタスクでは、Amazon VPC コンソールを使用してセキュリティグループルールを操作する方法を示しています。

セキュリティグループへのルールの追加

ルールをセキュリティグループに追加すると、セキュリティグループに関連付けられているすべてのリソースに新しいルールが自動的に適用されます。

VPC ピアリング接続がある場合は、セキュリティグループルールで、送信元または送信先としてピア VPC からセキュリティグループを参照できます。詳細については、Amazon VPC ピア機能ガイドの「セキュリティグループの更新によるピア VPC セキュリティグループの参照」を参照してください。

セキュリティグループルールの管理に必要な許可については、「セキュリティグループルールの管理」を参照してください。

コンソールを使用してルールを追加するには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. セキュリティグループを選択します。

  4. [アクション]、[Edit inbound rules (インバウンドルールを編集)] を選択するか、[アクション]、[Edit outbound rules (アウトバウンドルールを編集)] を選択します。

  5. 各ルールで、[Add rule] (ルールの追加) を選択し、次の操作を行います。

    1. [タイプ] で、許可するプロトコルのタイプを選択します。

      • TCP または UDP の場合は、許可するポート範囲を入力する必要があります。

      • カスタムの ICMP の場合は、[プロトコル] から ICMP タイプ名を選択し、該当するものがある場合は [ポート範囲] からコード名を選択します。

      • その他のタイプについては、プロトコルとポート範囲は自動的に設定されます。

    2. [Source Type] (送信元タイプ) (インバウンドルール) または [Destination Type] (送信先タイプ) (アウトバウンドルール) で、トラフィックを許可するために次のいずれかの操作を行います。

      • [カスタム] を選択し、IP アドレス (CIDR 表記)、CIDR ブロック、別のセキュリティグループ、あるいはプレフィクスリストを入力します。

      • [Anywhere-IPv4] を選択して、任意の IPv4 アドレスからトラフィックを許可 (インバウンドルール)、またはすべての IPv4 アドレスへのトラフィックを許可します (アウトバウンドルール)。これにより、IPv4 の CIDR ブロック 0.0.0.0/0 のルールが自動的に追加されます。

        警告

        [Anywhere-IPv4] を選択すると、すべての IPv4 アドレスが、指定されたプロトコルを使用してインスタンスにアクセスできるようになります。ポート 22 (SSH) または 3389 (RDP) のルールを追加する場合は、特定の IP アドレスまたはアドレスの範囲のみにインスタンスへのアクセスを許可する必要があります。

      • [Anywhere-IPv6] を選択して、任意の IPv6 アドレスからトラフィックを許可 (インバウンドルール)、またはすべての IPv6 アドレスへのトラフィックを許可します (アウトバウンドルール)。これにより、IPv6 の CIDR ブロック ::/0 のルールが自動的に追加されます。

        警告

        [Anywhere-IPv6] を選択すると、すべての IPv6 アドレスが、指定されたプロトコルを使用してインスタンスにアクセスできるようになります。ポート 22 (SSH) または 3389 (RDP) のルールを追加する場合は、特定の IP アドレスまたはアドレスの範囲のみにインスタンスへのアクセスを許可する必要があります。

      • ローカルコンピュータのパブリック IPv4 アドレスとの間の受信トラフィック (インバウンドルール) または送信トラフィック (アウトバウンドルール)

    3. (オプション) [Description] (説明) では、ルールの簡単な説明を指定できます。

  6. [Save Rules (ルールの保存)] を選択します。

コマンドラインを使用してセキュリティグループにルールを追加するには

セキュリティグループルールの更新

ルールを更新すると、更新されたルールは、セキュリティグループに関連付けられているすべてのリソースに自動的に適用されます。

セキュリティグループルールの管理に必要な許可については、「セキュリティグループルールの管理」を参照してください。

コンソールを使用してルールを更新するには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. セキュリティグループを選択します。

  4. [アクション]、[Edit inbound rules (インバウンドルールを編集)] を選択するか、[アクション]、[Edit outbound rules (アウトバウンドルールを編集)] を選択します。

  5. 必要に応じてルールを更新します。

  6. [Save Rules (ルールの保存)] を選択します。

コマンドラインを使用してセキュリティグループルールの説明を更新するには

セキュリティグループルールのタグ付け

目的、所有者、環境などに応じて、タグを整理して識別しやすくするために、リソースにタグを追加します。セキュリティグループルールにタグを追加できます。タグキーは、各ターゲットグループルールで一意である必要があります。既にターゲットグループルールに関連付けられているキーを持つタグを追加すると、そのタグの値が更新されます。

コンソールを使用してルールにタグを付けるには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. セキュリティグループを選択します。

  4. [インバウンドルール] または [アウトバウンドルール] タブで、対象となるルールのチェックボックスを選択してから、[タグを管理] をクリックします。

  5. [タグの管理] ページには、ルールに割り当てられているすべてのタグが表示されます。タグを追加するには、[タグの追加] を選択し、タグのキーと値を入力します。タグを削除するには、削除するタグの横にある [Remove] を選択します。

  6. [Save changes] を選択します。

コマンドラインを使用してルールにタグを付けるには

セキュリティグループルールの削除

セキュリティグループからルールを削除すると、その変更内容が自動的にセキュリティグループに関連付けられているインスタンスに適用されます。

コンソールを使用してセキュリティグループルールを削除するには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. セキュリティグループを選択します。

  4. [Actions] (アクション) を選択してから、[Edit inbound rules] (インバウンドのルールの編集) を選択してインバウンドルールを削除するか、[Edit outbound rules] (アウトバウンドのルールの編集) を選択してアウトバウンドルールを削除します。

  5. 削除するルールの横にある [Delete] (削除) ボタンを選択します。

  6. [Save Rules (ルールの保存)] を選択します。

コマンドラインを使用してセキュリティグループルールを削除するには

の使用による VPC セキュリティグループの一元管理AWS Firewall Manager

AWS Firewall Manager を使用すると、複数のアカウントおよび複数のリソースを対象にして、VPC セキュリティグループの管理およびメンテナンスタスクを簡略化できます。Firewall Manager を使用すると、1 つの中央管理者アカウントで組織のセキュリティグループを設定および監査できます。Firewall Manager により、ルールと保護が既存のアカウントとリソースに (追加する新しいリソースにも) 自動的に適用されます。Firewall Manager は、組織全体を保護する場合や、中央管理者アカウントで保護する新しいリソースを頻繁に追加する場合に特に便利です。

Firewall Manager を使用すると、次の方法でセキュリティグループを一元管理できます。

  • 組織全体で共通のベースラインセキュリティグループを設定する: 共通のセキュリティグループポリシーを使用して、組織全体のアカウントおよびリソースに対するセキュリティグループの関連付けを一元的に制御できます。組織内でポリシーを適用する場所と方法を指定します。

  • 組織内の既存のセキュリティグループを監査する: 監査セキュリティグループポリシーを使用して、組織のセキュリティグループで使用中の既存のルールを確認できます。ポリシーの範囲を設定して、すべてのアカウント、特定のアカウント、または組織内でタグ付けされたリソースを監査できます。Firewall Manager により、新しいアカウントとリソースの自動検出と監査が行われます。監査ルールを作成することにより、組織内で許可または禁止するセキュリティグループルールに関するガードレールを設定し、未使用または冗長なセキュリティグループをチェックできます。

  • 非準拠のリソースに関するレポートを取得して修復する: ベースラインおよび監査ポリシーについて、非準拠のリソースに関するレポートとアラートを取得できます。自動修復ワークフローを設定しておき、Firewall Manager によって検出された非準拠のリソースを修復することもできます。

Firewall Manager を使用してセキュリティグループを管理する方法の詳細については、AWS WAF 開発者ガイドの以下のトピックを参照してください。