View a markdown version of this page

バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール - Amazon Simple Storage Service

バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール

Amazon S3 のバケットポリシーを使用して、特定の仮想プライベートクラウド (VPC) エンドポイントまたは特定の VPC からのバケットへのアクセスを管理できます。このセクションでは、VPC エンドポイントからの Amazon S3 のバケットへのアクセスを管理するために使用できるバケットポリシーの例を示します。VPC エンドポイントの設定方法については、VPC ユーザーガイドの VPC エンドポイントを参照してください。

VPC を使用すると、定義した仮想ネットワーク内で AWS のリソースを起動できます。VPC エンドポイントにより、VPC と他の AWS のサービス 間のプライベート接続を作成できます。このプライベート接続では、インターネットアクセス、仮想プライベートネットワーク (VPN) 接続、NAT インスタンス、または Direct Connect を介した接続は必要ありません。

Amazon S3 の VPC エンドポイントは、Amazon S3 への接続のみを許可する VPC 内の論理エンティティです。VPC エンドポイントはリクエストを Amazon S3 にルーティングし、レスポンスを VPC にルーティングします。VPC エンドポイントはリクエストのルーティング方法のみを変更します。Amazon S3 のパブリックエンドポイントと DNS 名は、VPC エンドポイントでも使用できます。Amazon S3 での VPC エンドポイントの使用の詳細については、「VPC ユーザーガイド」の「Gateway endpoints」および「Gateway endpoints for Amazon S3」を参照してください。

Amazon S3 の VPC エンドポイントは、Amazon S3 のデータへのアクセスを管理する 2 つの方法を提供します。

  • 特定の VPC エンドポイントを通じて許可されるリクエスト、ユーザー、またはグループを管理できます。このタイプのアクセス管理については、「VPC ユーザーガイド」の「Controlling access to VPC endpoints using endpoint policies」を参照してください。

  • Amazon S3 のバケットポリシーを使用して、バケットへのアクセスを許可する VPC または VPC エンドポイントを管理できます。この種類のバケットポリシーのアクセスコントロールの例については、アクセス制限に関する次のトピックを参照してください。

重要

このセクションで説明している VPC エンドポイントに Amazon S3 のバケットポリシーを適用すると、バケットへのアクセスが意図せずにブロックされる場合があります。特に VPC エンドポイントからの接続に対するバケットのアクセスを制限することを目的としたバケットのアクセス許可により、バケットへのすべての接続がブロックされる場合があります。この問題を修正する方法については、「AWS サポート 情報センター」の「バケットポリシーの VPC または VPC エンドポイント ID が間違っています。ポリシーを修正してバケットに再度アクセスできるようにするにはどうすればよいですか?」を参照してください。

特定の VPC エンドポイントへのアクセスの制限

以下に、amzn-s3-demo-bucket という特定のバケットに対するアクセスを ID が vpce-0abcdef1234567890 の VPC エンドポイントからのみに制限する Amazon S3 のバケットポリシーの例を示します。指定されたエンドポイントが使用されていない場合、ポリシーはバケットに対するすべてのアクセスを拒否します。aws:SourceVpce 条件はエンドポイントを指定します。aws:SourceVpce 条件では、VPC エンドポイントの ID のみが必要で、VPC エンドポイントのリソースの Amazon リソースネーム (ARN) は必要ありません。ポリシーで条件を使用する方法の詳細については、条件キーを使用したバケットポリシーの例 を参照してください。

重要
  • 次のポリシーの例を使用する前に、VPC エンドポイントの ID をユースケースに応じた値に置き換えてください。そうしないと、バケットにアクセスできません。

  • このポリシーは、コンソールリクエストが指定の VPC エンドポイントを経由していない場合、指定先のバケットへのコンソールアクセスを無効にします。

JSON
{ "Version":"2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*"], "Condition": { "StringNotEquals": { "aws:SourceVpce": "vpce-0abcdef1234567890" } } } ] }

特定の VPC へのアクセスの制限

aws:SourceVpc 条件を使用して、特定の VPC へのアクセスを制限するバケットポリシーを作成できます。これは、同じ VPC で複数の VPC エンドポイントを設定していて、すべてのエンドポイントで Amazon S3 のバケットへのアクセスを管理したい場合に便利です。以下は、VPC vpc-1a2b3c4d の外側から amzn-s3-demo-bucket およびそのオブジェクトへのアクセスを拒否するポリシーの例です。指定された VPC が使用されていない場合、ポリシーはバケットに対するすべてのアクセスを拒否します。このステートメントは、バケットへのアクセス許可を付与しません。アクセス許可を付与するには、別の Allow ステートメントを追加する必要があります。vpc-1a2b3c4d 条件キーでは、VPC リソースの ARN は不要で、VPC ID のみが必要です。

重要
  • 次のポリシーの例を使用する前に、VPC の ID をユースケースに応じた値に置き換えてください。そうしないと、バケットにアクセスできません。

  • このポリシーは、コンソールリクエストが指定の VPC を経由していない場合、指定先のバケットへのコンソールアクセスを無効にします。

JSON
{ "Version":"2012-10-17", "Id": "Policy1415115909153", "Statement": [ { "Sid": "Access-to-specific-VPC-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*"], "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }

IPv6 VPC エンドポイントへのアクセスの制限

次のポリシー例では、リクエストが指定された VPC エンドポイント (vpce-0a1b2c3d4e5f6g) から発信され、ソース IP アドレスが指定された IPv6 CIDR ブロックと一致しない限り、amzn-s3-demo-bucket バケットとそのオブジェクトに対するすべての Amazon S3 (s3:) アクションを拒否します。

{ "Version": "2012-10-17", "Id": "Policy1415115909154", "Statement": [ { "Sid": "AccessSpecificIPv6VPCEOnly", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*"], "Condition": { "StringNotEquals": { "aws:SourceVpce": "vpce-0a1b2c3d4e5f6g" }, "NotIpAddress": { "aws:VpcSourceIp": "2001:db8::/32" } } } ] }

特定の IP または VPC に基づいてバケットへのアクセスを制限する方法については、AWS re:Post 情報センターの「特定の VPC エンドポイントまたは IP アドレスのみが Amazon S3 バケットにアクセスできるようにする方法を教えてください」を参照してください。