Amazon S3 バケットにアクセスできる VPC エンドポイントまたは IP アドレスを指定するにはどうすればよいですか?

最終更新日: 2020 年 3 月 9 日

特定の Amazon Virtual Private Cloud (VPC) エンドポイントまたは特定の外部 IP アドレスからのトラフィックでない限り、Amazon Simple Storage Service (Amazon S3) バケットへのトラフィックをすべてブロックしたいと考えています。あるいは、バケットを使用して静的ウェブサイトをホストしており、特定の VPC エンドポイントまたは IP アドレスからのみウェブサイトにアクセスできるようにしたいと考えています。どうすればよいですか?

解決方法

バケットポリシーを使用して、S3 バケットにアクセスできる VPC エンドポイントまたは外部 IP アドレスを指定します。

注: 外部 IP アドレスは、VPC 内または VPC 外からのパブリック IP アドレスです。たとえば、外部 IP アドレスは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの Elastic IP アドレス、または VPC の NAT ゲートウェイまたはプロキシサーバーの IP アドレスにすることができます。

たとえば、次のバケットポリシーは、指定された VPC エンドポイント (aws:sourceVpce) または外部 IP アドレス (aws:SourceIp) からのリクエストでない限り、バケットへのトラフィックをブロックします。次の点にご注意ください。

警告: このバケットポリシー例では、許可された VPC エンドポイントまたは IP アドレス外のリクエストへのアクセスを明示的に拒否します。バケットポリシーを入力したユーザーであっても、ユーザーが条件を満たさない場合、バケットへのアクセスを拒否できます。バケットポリシーを保存する前に、慎重に確認する必要があります。誤ってロックアウトされた場合は、「誤って全ユーザーの Amazon S3 バケットへのアクセスを拒否してしまいました。」をご参照ください。アクセスを再取得するにはどうすればよいですか?

{
  "Version": "2012-10-17",
  "Id": "VPCe and SourceIP",
  "Statement": [{
    "Sid": "VPCe and SourceIP",
    "Effect": "Deny",
    "Principal": "*",
    "Action": "s3:*",
    "Resource": [
      "arn:aws:s3:::awsexamplebucket",
      "arn:aws:s3:::awsexamplebucket/*"
    ],
    "Condition": {
      "StringNotEquals": {
        "aws:sourceVpce": [
          "vpce-1111111",
          "vpce-2222222"
        ]
      },
      "NotIpAddress": {
        "aws:SourceIp": [
          "11.11.11.11/32",
          "22.22.22.22/32"
        ]
      }
    }
  }]
}

ユーザーが許可された VPC エンドポイントまたは IP アドレスからリクエストを送信していない場合でも、特定のユーザーに (同じ AWS アカウント内の) バケットへのアクセスを許可する必要があるときは、バケットポリシーの同じ Condition ブロック内に次のステートメントを含めることができます。

  • AROAEXAMPLEID は許可する IAM ロールのロール ID です。
  • AIDAEXAMPLEID は許可する IAM ユーザーのユーザー ID です。
  • 111111111111 はアカウントのルート認証情報を表すバケットの AWS アカウント ID です。
"StringNotLike": {
"aws:userId": [
"AROAEXAMPLEID:*",
"AIDAEXAMPLEID",
"111111111111"
]
}

特定の IAM ロールへのアクセスを許可する方法の詳細については、「How to Restrict Amazon S3 Bucket Access to a Specific IAM Role」をご参照ください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合