Amazon VPC のインフラストラクチャセキュリティ - Amazon Virtual Private Cloud

Amazon VPC のインフラストラクチャセキュリティ

マネージドサービスである Amazon Virtual Private Cloud は、AWS グローバルネットワークセキュリティによって保護されています。AWS セキュリティサービスと AWS がインフラストラクチャを保護する方法については、「AWS クラウドセキュリティ」を参照してください。インフラストラクチャセキュリティのベストプラクティスを使用して AWS 環境を設計するには、「セキュリティの柱 - AWS Well-Architected Framework」の「インフラストラクチャ保護」を参照してください。

AWS が公開した API 呼び出しを使用して、ネットワーク経由で Amazon VPC にアクセスします。クライアントは以下をサポートする必要があります:

  • Transport Layer Security (TLS)。TLS 1.2 は必須で TLS 1.3 がお勧めです。

  • DHE (楕円ディフィー・ヘルマン鍵共有) や ECDHE (楕円曲線ディフィー・ヘルマン鍵共有) などの完全前方秘匿性 (PFS) による暗号スイート。これらのモードは、Java 7 以降など、ほとんどの最新システムでサポートされています。

また、リクエストには、アクセスキー ID と、IAM プリンシパルに関連付けられているシークレットアクセスキーを使用して署名する必要があります。または、AWS Security Token Service (AWS STS) を使用して、一時的なセキュリティ認証情報を生成し、リクエストに署名することもできます。

ネットワークの隔離

仮想プライベートクラウド (VPC) は、AWS クラウド内の論理的に隔離された領域にある仮想ネットワークです。ワークロードまたは組織エンティティ単位でインフラストラクチャを隔離するには、個別の VPC を使用します。

サブネットは、ある範囲の IP アドレスが示す VPC 内の領域です。インスタンスを起動する場合には、VPC 内のあるサブネットにおいて起動することになります。サブネットを使用すると、単一の VPC 内で多階層ウェブアプリケーションの各階層 (ウェブサーバー、アプリケーションサーバーおよびデータベースサーバーなど) を隔離できます。インターネットからの直接アクセスを認めるべきでないインスタンスには、プライベートサブネットを使用します。

AWS PrivateLink を使用して、VPC 内のリソースが、サービスが VPC で直接ホストされているかのようにプライベート IP アドレスを使用して AWS のサービス に接続することを許可します。したがって、AWS のサービス へのアクセスにインターネットゲートウェイまたは NAT デバイスを使用する必要はありません。

ネットワークトラフィックの制御

EC2 インスタンスなど、VPC 内のリソースへのネットワークトラフィックを制御するには、以下のオプションを検討してください。

  • VPC へのネットワークアクセスを制御するための主要なメカニズムとして、セキュリティグループを使用します。必要に応じて、ネットワーク ACL 使用すると、ステートレスできめの粗いネットワーク制御を行うことができます。セキュリティグループは、ステートフルなパケットフィルター処理を実行して、他のセキュリティグループを参照するルールを作成できるため、ネットワーク ACL よりも汎用性があります。ネットワーク ACL は、セカンダリ制御 (特定のトラフィックのサブセットを拒否するなど) または高レベルのサブネットガードレールとして効果的に使用できます。また、ネットワーク ACL はサブネット全体に適用されるため、万が一正しいセキュリティグループがない状態でインスタンスが起動された場合に、深層防御として活用できます。

  • インターネットからの直接アクセスを認めるべきでないインスタンスには、プライベートサブネットを使用します。プライベートサブネット内にあるインスタンスからのインターネットアクセスには、踏み台ホストまたは NAT ゲートウェイを使用します。

  • 接続要件を満たす最小限のネットワークルートでサブネットルートテーブルを設定します。

  • 追加のセキュリティグループまたはネットワークインターフェイスを使用して、Amazon EC2 インスタンス管理トラフィックを通常のアプリケーショントラフィックとは別に制御および監査することをご検討ください。このアプローチにより、変更管理のための特別な IAM ポリシーを実装できるため、セキュリティグループルールや自動化されたルール検証スクリプトへの変更を容易に監査することができます。複数のネットワークインターフェイスでは、ホストベースのルーティングポリシーを作成したり、サブネットに割り当てられたネットワークインターフェイスに基づいて異なる VPC サブネットルーティングルールを活用したりするなど、ネットワークトラフィックを制御するための追加のオプションも提供されます。

  • AWS Virtual Private Network または AWS Direct Connectを使用して、リモートネットワークから VPC へのプライベート接続を確立する。詳細については、ネットワークから Amazon VPC への接続オプションを参照してください。

  • VPC フローログを使用して、インスタンスに到達するトラフィックを監視します。

  • AWS Security Hubを使用して、インスタンスからの意図しないネットワークアクセスを確認する。

  • AWS Network Firewall を使用して、VPC 内のサブネットを一般的なネットワークの脅威から保護します。

セキュリティグループとネットワーク ACL を比較する

次の表は、セキュリティグループとネットワーク ACL の基本的な違いをまとめたものです。

セキュリティグループ ネットワーク ACL
インスタンスレベルで動作します。 サブネットレベルで動作します。
インスタンスと関連付けられている場合にのみインスタンスに適用されます 関連付けられているサブネットにデプロイされているすべてのインスタンスに適用されます(セキュリティグループのルールの許容範囲が広すぎる場合は、保護レイヤーを提供します)
ルールの許可のみがサポートされます ルールの許可と拒否がサポートされます
トラフィックを許可するかどうかを決める前に、すべてのルールを評価します トラフィックを許可するかどうかを決定する際は、最も低い番号のルールから順にルールを評価します
ステートフル: ルールに関係なく、リターントラフィックが許可されます ステートレス: リターントラフィックは、ルールで明示的に許可する必要があります

次の図は、セキュリティグループおよびネットワーク ACL が提供するセキュリティレイヤーを示しています。たとえば、インターネットゲートウェイからのトラフィックは、ルーティングテーブルのルートを使用して適切なサブネットにルーティングされます。サブネットに対してどのトラフィックが許可されるかは、そのサブネットに関連付けられているネットワーク ACL のルールによってコントロールされます。インスタンスに対してどのトラフィックが許可されるかは、そのインスタンスに関連付けられているセキュリティグループのルールによってコントロールされます。

セキュリティグループおよびネットワーク ACL を使用してトラフィックをコントロール

セキュリティグループのみを使用してインスタンスを保護できます。ただし、ネットワーク ACL は追加の防御レイヤーとして追加できます。詳細については、「例: サブネットのインスタンスへのアクセス制御」を参照してください。