VPC のセキュリティグループ - Amazon Virtual Private Cloud

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

セキュリティグループは、インスタンスの仮想ファイアウォールとして機能し、インバウンドトラフィックとアウトバウンドトラフィックをコントロールします。VPC 内でインスタンスを起動した場合、そのインスタンスには最大 5 つのセキュリティグループを割り当てることができます。セキュリティグループは、サブネットレベルでなくインスタンスレベルで動作します。このため、VPC 内のサブネット内のインスタンスごとに異なるセキュリティグループのセットに割り当てることができます。

Amazon EC2 API またはコマンドラインツールを使用してインスタンスを起動するが、セキュリティグループを指定しない場合、そのインスタンスは VPC のデフォルトのセキュリティグループに自動的に割り当てられます。Amazon EC2 コンソールを使用してインスタンスを起動する場合、インスタンスの新しいセキュリティグループを作成するオプションを使用できます。

セキュリティグループごとに、インスタンスへのインバウンドトラフィックをコントロールするルールと、アウトバウンドトラフィックをコントロールする一連のルールを個別に追加します。このセクションでは、VPC のセキュリティグループとそのルールについて、知っておく必要がある基本事項について説明します。

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

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

VPC のセキュリティグループの基本的な特性を次に示します。

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

  • インバウンドトラフィックとアウトバウンドトラフィックのルールを個別に指定できます。

  • セキュリティグループルールを使用すると、プロトコルとポート番号に基づいてトラフィックをフィルタリングできます。

  • セキュリティグループはステートフルです。インスタンスからリクエストを送信する場合、そのリクエストのレスポンストラフィックは、インバウンドセキュリティグループのルールにかかわらず、流れることができます。許可されたインバウンドトラフィックに対する応答(戻りのトラフィック)は、アウトバウンドルールにかかわらずアウト側に対し通過することができます。

    注記

    トラフィックのタイプにより、追跡の方法は異なります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「接続追跡」を参照してください。

  • 新しく作成したセキュリティグループには、インバウンドルールがありません。したがって、インバウンドルールをセキュリティグループに追加するまで、別のホストからインスタンスに送信されるインバウンドトラフィックは許可されません。

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

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

  • セキュリティグループに関連付けられたインスタンスの相互通信は、トラフィックを許可するルールを追加するまで許可されません(例外: デフォルトのセキュリティグループについては、このルールがデフォルトで指定されています)。

  • セキュリティグループはネットワークインターフェイスに関連付けられます。インスタンスを起動した後で、インスタンスに関連付けられたセキュリティグループを変更できます。これにより、プライマリネットワークインターフェイス (eth0) に関連付けられたセキュリティグループが変更されます。あらゆるネットワークインターフェイスに関連付けられているセキュリティグループも指定または変更できます。デフォルトでは、ネットワークインターフェイスを作成すると、別のセキュリティグループを指定しない限り、VPC のデフォルトのセキュリティグループに関連付けられます。ネットワークインターフェイスの詳細については、「Elastic network interface」を参照してください。

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

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

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

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

    • セキュリティグループ名は、デフォルトのセキュリティグループを示すため、sg- で始めることはできません。

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

  • セキュリティグループは、セキュリティグループの作成時に指定した VPC でのみ使用できます。

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

VPC ではデフォルトのセキュリティグループが自動的に使用されます。インスタンスの起動時に別のセキュリティグループを指定しない場合、デフォルトのセキュリティグループがインスタンスに関連付けられます。

注記

Amazon EC2 コンソールでインスタンスを起動する場合、インスタンス起動ウィザードによって「launch-wizard-xx」セキュリティグループが自動的に定義され、デフォルトのセキュリティグループの代わりにインスタンスに関連付けることができます。

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

Inbound
Source Protocol Port range Description

セキュリティグループ ID (sg-xxxxxxxx)

すべて

すべて

同じセキュリティグループに割り当てられているネットワークインターフェイス(および関連付けられているインスタンス)からのインバウンドトラフィックを許可します。

Outbound

Destination Protocol Port range Description

0.0.0.0/0

すべて

すべて

すべての発信 IPv4 トラフィックを許可する

::/0 すべて すべて すべての発信 IPv6 トラフィックを許可するこのルールは、IPv6 CIDR ブロックを持つ VPC を作成するか、既存の VPC と IPv6 CIDR ブロックを関連付けている場合にデフォルトで追加されます。

デフォルトのセキュリティグループのルールは変更できます。

デフォルトのセキュリティグループを削除することはできません。デフォルトのセキュリティグループを削除しようとした場合、Client.CannotDelete: the specified group: "sg-51530134" name: "default" cannot be deleted by a user エラーが発生します。

注記

セキュリティグループのアウトバウンドルールの設定を修正した場合、VPC と IPv6 ブロックを関連付けたときに IPv6 トラフィック用のルールは自動的に追加されません。

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

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

VPC のセキュリティグループのルールの基本要素を次に示します。

  • (インバウンドルールのみ) トラフィックの送信元 (CIDR の範囲) と送信先 (リッスン) ポートまたはポートの範囲。送信元は、他のセキュリティグループ、IPv4/IPv6 CIDR ブロック、単一の IPv4/IPv6 アドレス、プレフィックスリスト ID のいずれかです。

  • (アウトバウンドルールのみ) トラフィックの送信先 (CIDR の範囲) と送信先ポートまたはポートの範囲。送信先は、他のセキュリティグループ、IPv4/IPv6 CIDR ブロック、単一の IPv4/IPv6 アドレス、プレフィックスリスト ID のいずれかです。

  • 標準のプロトコル番号を持つ任意のプロトコル (リストについては、「Protocol Numbers」を参照)。プロトコルとして ICMP を指定する場合、任意またはすべての ICMP タイプとコードを指定できます。

  • 後で識別するのに役立つセキュリティグループルールの説明 (オプション)。説明の長さは最大 255 文字とすることができます。使用できる文字は、a ~ z、A ~ Z、0 ~ 9、スペース、._-:/()#,@[]+=;{}!$* です。

  • AWSCLI、コンソール、または API を使用してセキュリティグループのルールを追加すると、送信元または送信先の CIDR ブロックが自動で正規形式に設定されます。たとえば、CIDR ブロックに 100.68.0.18/18 を指定した場合、CIDR ブロックが 100.68.0.0/18 であるルールが作成されます。

ルールの送信元として CIDR ブロックを指定すると、指定したプロトコルとポートの指定したアドレスからのトラフィックが許可されます。

セキュリティグループをルールの送信元として指定すると、指定したプロトコルとポートの送信元セキュリティグループに関連付けられたネットワークインターフェイスからのトラフィックが許可されます。着信トラフィックは、ソースセキュリティグループに関連付けられたネットワークインターフェイスのプライベート IP アドレスに基づいて許可されます (パブリック IP アドレスまたは Elastic IP アドレスは考慮されません)。セキュリティグループを送信元として追加しても、送信元セキュリティグループのルールは追加されません。例については、「VPC のデフォルトセキュリティグループ」を参照してください。

単一の IPv4 アドレスを指定した場合は、/32 プレフィックス長を使用してアドレスを指定します。単一の IPv6 アドレスを指定した場合は、/128 プレフィックス長を使用してアドレスを指定します。

ファイアウォールを設定するためのシステムの一部を使用すると、送信元ポートでフィルタを適用できます。セキュリティグループを使用すると、送信先ポートでのみフィルタを適用できます。

ルールを追加または削除すると、セキュリティグループに関連付けられたすべてのインスタンスにこの操作が自動的に適用されます。

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

Inbound
Source Protocol Port range Description

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 アドレスから Linux インスタンスへのインバウンド SSH アクセス(インターネットゲートウェイ経由)を許可する

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

TCP

3389

ネットワークの IPv4 アドレスから Windows インスタンスへのインバウンド RDP アクセス(インターネットゲートウェイ経由)を許可する

Outbound

Destination Protocol Port range Description

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 ピアリング接続を削除した場合、セキュリティグループルールは stale とマークされます。古くなったセキュリティグループルールは他のセキュリティグループルールと同じ方法で削除できます。

詳細については、Amazon VPC ピア機能ガイドの「古いセキュリティグループの操作」を参照してください。

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

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

セキュリティグループと連動する IAM ポリシーの例については、「セキュリティグループの管理」を参照してください。

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

VPC にはデフォルトのセキュリティグループがあります。このグループは削除できませんが、グループのルールは変更できます。その手順は、他のセキュリティグループを変更する手順と同じです。詳細については、「ルールの追加、削除、更新」を参照してください。

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

インスタンスのデフォルトのセキュリティグループを使用できますが、独自のグループを作成し、システムにおけるインスタンスの様々な役割を反映させたい場合があります。

次の手順では、インバウンドルールのないセキュリティグループと、デフォルトのアウトバウンドルールを作成します。

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

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

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

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

  4. セキュリティグループの名前 (たとえば、my-security-group) を入力してから、説明を入力します。

  5. [VPC] から、VPC の ID を選択します。

  6. (オプション) タグを追加または削除します。

    [タグの追加] [新しいタグの追加] を選択して、以下を実行します。

    • [キー] にはキー名を入力します。

    • [] にキー値を入力します。

    [タグを削除] タグのキーと値の右側にある [削除] を選択します。

  7. [作成] を選択します。

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

コマンドラインを使用して 1 つまたは複数のセキュリティグループを記述するには

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

ルールの追加、削除、更新

ルールを追加または削除すると、セキュリティグループに既に割り当てられているすべてのインスタンスが変更される可能性があります。

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] を選択します。[タイプ] で、トラフィックのタイプを選択し、送信元 (インバウンドルール) または送信先 (アウトバウンドルール) を指定します。例えば、パブリックウェブサーバーでは、HTTP または HTTPS を選択し、[Source] に値 0.0.0.0/0 を指定します。

    0.0.0.0/0 を使うと、すべての IPv4 アドレスから HTTP や HTTPS 経由でインスタンスにアクセスすることが許可されます。アクセスを制限するには、特定の IP アドレスまたはアドレス範囲を入力します。

  6. このセキュリティグループに関連付けられたすべてのインスタンス間での通信を許可することもできます。次のオプションを使用してインバウンドルールを作成します。

    • [タイプ]: [すべてのトラフィック]

    • [ソース]: セキュリティグループの ID を入力します。

  7. [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. [アクション]、[Edit inbound rules (インバウンドルールを編集)] を選択するか、[アクション]、[Edit outbound rules (アウトバウンドルールを編集)] を選択します。

  5. 必要に応じてルールエントリを変更します。

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

Amazon EC2 API またはコマンドラインツールを使用して、既存のルールのプロトコル、ポート範囲、送信元または送信先を更新している場合は、ルールを変更できません。代わりに、既存のルールを削除して新しいルールを追加する必要があります。ルールの説明のみを更新するには、update-security-group-rule-descriptions-ingress コマンドおよび update-security-group-rule-descriptions-egress コマンドを使用できます。

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

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

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

インスタンスのセキュリティグループを変更する

インスタンスを VPC に起動したら、インスタンスに関連付けられているセキュリティグループを変更できます。インスタンスの状態が running または stopped になったら、インスタンスのセキュリティグループを変更できます。

注記

この手順では、インスタンスのプライマリネットワークインターフェイス (eth0) に関連付けられているセキュリティグループを変更します。他のネットワークインターフェイスのセキュリティグループを変更するには、「セキュリティグループの変更」を参照してください。

コンソールを使用してインスタンスのセキュリティグループを変更するには

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

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

  3. インスタンスのチェックボックスを選択します。[Security] (セキュリティ) タブには、現在インスタンスに関連付けられているセキュリティグループが一覧表示されます。

  4. インスタンスに関連付けられているセキュリティグループを変更するには、[Actions] (アクション)、[Security] (セキュリティ)、[Change security groups] (セキュリティグループの変更) の順に選択します。

  5. [Associated security groups] (関連付けられたセキュリティグループ) で、リストからセキュリティグループを選択し、[Add security group] (セキュリティグループを追加) を選択します。

    すでに関連付けられているセキュリティグループを削除するには、そのセキュリティグループで [削除] を選択します。

  6. [Save] (保存) をクリックします。

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

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

セキュリティグループは、インスタンスが実行されているかどうかにかかわらず、そのグループに割り当てられていない場合にのみ削除できます。インスタンスは、セキュリティグループを削除する前に他のセキュリティグループに割り当てることができます(「インスタンスのセキュリティグループを変更する」を参照)。デフォルトのセキュリティグループを削除することはできません。

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

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

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

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

  3. 1 つ以上のセキュリティグループを選択し、[Security Group Actions] で [Delete Security Group] を選択します。

  4. [Delete Security Group] ダイアログボックスで、[Yes, Delete] を選択します。

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

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

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

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

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

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

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

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