

# バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール
<a name="example-bucket-policies-vpc-endpoint"></a>

Amazon S3 のバケットポリシーを使用して、特定の仮想プライベートクラウド (VPC) エンドポイントまたは特定の VPC からのバケットへのアクセスを管理できます。このセクションでは、VPC エンドポイントからの Amazon S3 のバケットへのアクセスを管理するために使用できるバケットポリシーの例を示します。VPC エンドポイントの設定方法については、[VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)の *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](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html)」および「[Gateway endpoints for Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html)」を参照してください。**

Amazon S3 の VPC エンドポイントは、Amazon S3 のデータへのアクセスを管理する 2 つの方法を提供します。
+ 特定の VPC エンドポイントを通じて許可されるリクエスト、ユーザー、またはグループを管理できます。このタイプのアクセス管理については、「VPC ユーザーガイド」の「[Controlling access to VPC endpoints using endpoint policies](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)」を参照してください。**
+ Amazon S3 のバケットポリシーを使用して、バケットへのアクセスを許可する VPC または VPC エンドポイントを管理できます。この種類のバケットポリシーのアクセスコントロールの例については、アクセス制限に関する次のトピックを参照してください。

**Topics**
+ [特定の VPC エンドポイントへのアクセスの制限](#example-bucket-policies-restrict-accesss-vpc-endpoint)
+ [特定の VPC へのアクセスの制限](#example-bucket-policies-restrict-access-vpc)
+ [IPv6 VPC エンドポイントへのアクセスの制限](#example-bucket-policies-ipv6-vpc-endpoint)

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

## 特定の VPC エンドポイントへのアクセスの制限
<a name="example-bucket-policies-restrict-accesss-vpc-endpoint"></a>

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

**重要**  
次のポリシーの例を使用する前に、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 へのアクセスの制限
<a name="example-bucket-policies-restrict-access-vpc"></a>

`aws:SourceVpc` 条件を使用して、特定の VPC へのアクセスを制限するバケットポリシーを作成できます。これは、同じ VPC で複数の VPC エンドポイントを設定していて、すべてのエンドポイントで Amazon S3 のバケットへのアクセスを管理したい場合に便利です。以下は、VPC `vpc-111bbb22` の外側から `awsexamplebucket1` およびそのオブジェクトへのアクセスを拒否するポリシーの例です。指定された VPC が使用されていない場合、ポリシーはバケットに対するすべてのアクセスを拒否します。このステートメントは、バケットへのアクセス許可を付与しません。アクセス許可を付与するには、別の `Allow` ステートメントを追加する必要があります。`vpc-111bbb22` 条件キーでは、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 エンドポイントへのアクセスの制限
<a name="example-bucket-policies-ipv6-vpc-endpoint"></a>

次のポリシー例では、リクエストが指定された 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:SourceVpc": "vpc-0a1b2c3d4e5f6g4h2"
         },
        "NotIpAddress": {
          "aws:VpcSourceIp": "2001:db8::/32"
        }
       }
     }
   ]
}
```

特定の IP または VPC に基づいてバケットへのアクセスを制限する方法については、AWS re:Post 情報センターの「[特定の VPC エンドポイントまたは IP アドレスのみが Amazon S3 バケットにアクセスできるようにする方法を教えてください](https://repost.aws/knowledge-center/block-s3-traffic-vpc-ip)」を参照してください。