

# S3 バケットへのパブリックアクセスブロック設定の構成
<a name="configuring-block-public-access-bucket"></a>

Amazon S3 パブリックアクセスブロックは、Amazon S3 のリソースへのパブリックアクセスの管理に役立つ、アクセスポイント、バケット、組織、アカウントの設定を提供します。デフォルトでは、新しいバケット、アクセスポイント、およびオブジェクトはパブリックアクセスを許可しません。詳細については、「[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md)」を参照してください。

**注記**  
バケットレベルのブロックパブリックアクセス設定は、組織およびアカウントレベルのポリシーと連動します。S3 は、バケットレベルと有効なアカウントレベルの設定の間に最も制限の厳しい設定を適用します (存在する場合は組織ポリシーによって強制される場合があります)。

S3 コンソール、AWS CLI、AWS SDK、REST API を使用して、1 つ以上のバケットへのパブリックアクセスを許可できます。また、既にパブリックになっているバケットへのパブリックアクセスをブロックすることもできます。詳細については、関連するセクションを参照してください。

アカウント内のすべてのバケットに対してパブリックアクセスをブロックする設定を構成するには、「[アカウントのパブリックアクセスブロック設定の構成](configuring-block-public-access-account.md)」を参照してください。組織全体の一元管理については、「*AWS Organizations ユーザーガイド*」の「[S3 ポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_s3.html)」を参照してください。

アクセスポイントのパブリックアクセスブロック設定については、「[アクセスポイントでのパブリックアクセスブロックオペレーションの実行](access-control-block-public-access.md#access-control-block-public-access-examples-access-point)」を参照してください。

# S3 コンソールの使用
<a name="block-public-access-bucket"></a>

Amazon S3 パブリックアクセスブロックを使用して、S3 バケット内のデータへのパブリックアクセスを許可しないようにアプリケーションを設定します。このセクションでは、1 つ以上の S3 バケットに対するブロックパブリックアクセス設定の編集方法について説明します。AWS CLI、AWS SDK、および Amazon S3 REST API を使用したパブリックアクセスのブロックについて詳細は、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。

**[IAM Access Analyzer]** 列の **[バケット]** リストから、バケットがパブリックにアクセス可能であるかどうかを確認できます。詳細については、「[IAM Access Analyzer for S3 を使用したバケットアクセスの確認](access-analyzer.md)」を参照してください。

バケットとそのパブリックアクセス設定を一覧表示したときに `Error` が表示された場合は、必要なアクセス許可がない可能性があります。以下のアクセス許可がユーザーポリシーまたはロールポリシーに追加されていることを確認します。

```
s3:GetAccountPublicAccessBlock
s3:GetBucketPublicAccessBlock
s3:GetBucketPolicyStatus
s3:GetBucketLocation
s3:GetBucketAcl
s3:ListAccessPoints
s3:ListAllMyBuckets
```

まれに、AWS リージョンの停止により、リクエストが失敗することもあります。

**単一の S3 バケットをターゲットに Amazon S3 パブリックアクセスブロック設定を編集するには**

単一の S3 バケットのパブリックアクセス設定を変更する必要がある場合は、以下の手順に従ってください。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. [**バケット名**] リストで、目的のバケットの名前を選択します。

1. [**Permissions**] を選択します。

1. **[ブロックパブリックアクセス (バケット設定)]** の横にある **[編集]** を選択して、バケットのパブリックアクセス設定を変更します。4 つの Amazon S3 パブリックアクセスブロック設定の詳細については、[パブリックアクセスブロック設定](access-control-block-public-access.md#access-control-block-public-access-options) を参照してください。

1. 設定を選択してから、**[保存]** を選択します。

1. 確認を求められたら、「**confirm**」と入力します。次に、[**確認**] を選択して変更を保存します。

**重要**  
バケットレベルのパブリックアクセスブロック設定を無効にしても、バケットはアカウントレベルまたは組織レベルのポリシーで保護されている可能性があります。S3 は常に、すべてのレベルで設定の最も制限の厳しい組み合わせを適用します。

バケットを作成するとき、Amazon S3 パブリックアクセスブロックの設定を変更することもできます。詳細については、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

## AWS CLI の使用
<a name="configuring-block-public-access-bucket-cli"></a>

バケットのパブリックアクセスをブロックしたり、パブリックアクセスのブロックを削除するには、AWS CLI サービス `s3api` を使用します。このサービスを使用するバケットレベルの操作は次のとおりです。
+ `PutPublicAccessBlock` (バケットの場合)
+ `GetPublicAccessBlock` (バケットの場合)
+ `DeletePublicAccessBlock` (バケットの場合)
+ `GetBucketPolicyStatus`

詳細と例については、「*AWS CLI リファレンス*」の「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-public-access-block.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-public-access-block.html)」を参照してください。

**注記**  
これらのバケットレベルのオペレーションは、組織レベルのポリシーによって制限されません。ただし、有効なパブリックアクセス動作は、バケット、アカウント、組織設定の最も制限の厳しい組み合わせによって管理されます。階層とポリシーのやり取りの詳細については、「[S3 コンソールの使用](block-public-access-bucket.md)」を参照してください。

## AWS SDK の使用
<a name="configuring-block-public-access-bucket-sdk"></a>

------
#### [ Java ]

```
AmazonS3 client = AmazonS3ClientBuilder.standard()
	  .withCredentials(<credentials>)
	  .build();

client.setPublicAccessBlock(new SetPublicAccessBlockRequest()
		.withBucketName(<bucket-name>)
		.withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration()
				.withBlockPublicAcls(<value>)
				.withIgnorePublicAcls(<value>)
				.withBlockPublicPolicy(<value>)
				.withRestrictPublicBuckets(<value>)));
```

**重要**  
この例は、`AmazonS3` クライアントクラスを使用するバケットレベルの操作にのみ関係します。アカウントレベルの操作については、次の例を参照してください。

------
#### [ Other SDKs ]

その他の AWS SDK の使用については、「Amazon S3 API リファレンス」の「[Developing with Amazon S3 using the AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)」を参照してください。**

------

## REST API の使用
<a name="configuring-block-public-access-bucket-api"></a>

REST API での Amazon S3 のパブリックアクセスブロックの使用については、*Amazon Simple Storage Service API リファレンス*の以下のトピックを参照してください。
+ バケットレベルの操作
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
  + [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)