AWS VPC エンドポイント SecurityGroupEgress ルール

AWS VPC エンドポイント SecurityGroupEgress ルール

AWS VPC エンドポイントを使用して S3 リソースにアクセスしようとしていますが、うまくいきません。助けていただけませんか?

詳細:

セキュリティグループ内にEC2インスタンスがあります。これはVPCとサブネット内にあり、インターネットエンドポイントと0.0.0.0/0のルーティングテーブルエントリがあります。ただし、この特定のEC2インスタンスがインターネットと通信できるようにするのではなく、次の場所にあるS3バケットと通信できるようにしたいのです。https://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.sh より作成

これに応えて、securityGroup のデフォルトの許可 Egress ルールをオーバーロードし、ポート 22 に Egress ルールを追加して、アウトバウンド接続が拒否されるようにしました。Amazon のドキュメントには、ローカル (プライベート) AWS アドレスは引き続き許可されると書かれています。これを念頭に置いて、VPC に VPC エンドポイントを追加し、ルーティング テーブルを pl-6da54004 (com.amazonaws.eu-west-1.s3) :: vpce-9f47a1f6 で更新しました。

これを実行すると、EC2インスタンス内からS3リソースにアクセスできなくなります。wgetを試してみますhttps://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.sh より作成運がなかった。

何が問題なのか分かりますか? 私の考えは次のとおりです:

  • 私の ec2 インスタンスは S3 ドメインを 54.231.130.244 に解決しているようですが、これはすべてのインスタンスで同じではありません。S3 IP 範囲の securityGroupEgress ルールまたはルートを追加する必要がありますか? その場合、範囲は何ですか?
  • おそらく、内部 IP アドレスに解決される別のドメイン名を介して S3 リソースにアクセスする必要があるのでしょうか?

ありがとう、トビー

答え1

まず、背景を少し説明します。VPC インスタンスの DNS リゾルバーは、インフラストラクチャに組み込まれた仮想コンポーネントです。アウトバウンド セキュリティ グループのルールの影響を受けませんが、VPC に S3 エンドポイントをプロビジョニングしても、S3 エンドポイントのホスト名の解決は変わりません。

S3 の VPC エンドポイントは、いくつかの異なる機能を実行します。それらの機能を理解することが、必要な機能を実行するかどうかを理解する鍵となります。要約: この場合は、必要な機能を実行します。

まず、ルート テーブルで「プレフィックス リスト」として設定されていることに気付くでしょう。VPC エンドポイントは、事前定義された IPv4 ネットワーク プレフィックスのセットを取得し、それぞれのプレフィックス リストを含むすべてのルート テーブルでそれらのプレフィックスへのルートをハイジャックします。これにより、それらのネットワークへのトラフィックは、インターネット ゲートウェイや中間 NAT インスタンスではなく、VPC エンドポイントを通過するようになります。

本質的には、これにより、VPC から AWS サービスの IP アドレス範囲への新しいパスが開かれますが、これらの IP アドレスが導く先は、最初は、VPC エンドポイントがない場合に導く先と同じではありません。

最初に当たった場所S3にそっくりただし、インターネットに面した S3 と同一ではありません。VPC エンドポイントのポリシーを認識しているため、どのバケットとアクションにアクセスできるかを制御できます。これらは他のポリシーを上書きするのではなく、それらを補強します。

エンドポイント ポリシーは、IAM ユーザー ポリシーや S3 バケット ポリシーを上書きしたり置き換えたりしません。エンドポイントから指定されたサービスへのアクセスを制御するための別のポリシーです。ただし、すべてのタイプのポリシー (IAM ユーザー ポリシー、エンドポイント ポリシー、S3 ポリシー、Amazon S3 ACL ポリシー (ある場合)) は、Amazon S3 へのアクセスを成功させるために必要なアクセス許可を付与する必要があります。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-access

適切なポリシーでバケット アクセスを制限せず、代わりにフル アクセスを有効にすると、バケットのポリシーで許可されていれば、インスタンスはパブリック バケットを含む S3 リージョン内の任意のバケットにアクセスできるようになります。

さて、ここからが難しい部分です。デフォルトの「許可」ルールが削除されたためにインスタンスのセキュリティ グループが S3 へのアウトバウンド アクセスを許可しない場合は、特別に作成されたセキュリティ グループ ルールを使用して、インスタンスが VPC エンドポイント経由で S3 にアクセスできるようにすることができます。

セキュリティ グループに新しい送信ルールを追加します。「タイプ」には「HTTPS」を選択します。送信先には「カスタム IP」を選択します。

ドキュメントはコンソールに表示される内容と一致していません。

送信先リストには、利用可能な AWS サービスのプレフィックスリスト ID と名前が表示されます。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-security

ええと...いいえ、そうではありません。少なくとも、この記事を書いている時点では、私にとってはそうではありません。

解決策としては、「カスタム IP」を選択し、IP アドレス ブロックまたはセキュリティ グループ ID の代わりに、pl-xxxxxxxxIP アドレスのボックスに の形式で VPC エンドポイントのプレフィックス リスト ID を入力します。これは、VPC コンソールで、VPC エンドポイントに関連付けられているサブネットの 1 つにある宛先を調べることで見つけることができます。

関連情報