

# Amazon S3 ストレージへのパブリックアクセスのブロック
<a name="access-control-block-public-access"></a>

Amazon S3 パブリックアクセスブロック機能は、Amazon S3 のリソースへのパブリックアクセスの管理に役立つ、アクセスポイント、バケット、アカウント、AWS Organizations の設定を提供します。デフォルトでは、新しいバケット、アクセスポイント、およびオブジェクトはパブリックアクセスを許可しません。ただし、ユーザーはバケットポリシー、アクセスポイントポリシー、またはオブジェクトのアクセス許可を変更することで、パブリックアクセスを許可できます。S3 ブロックパブリックアクセス設定は、これらのポリシーやアクセス許可を上書きして、これらのリソースへのパブリックアクセスを制限できるようにします。

S3 パブリックアクセスブロックでは、組織管理者、アカウント管理者、およびバケット所有者は Amazon S3 のリソースへのパブリックアクセスを制限する一元的な管理を簡単に設定して、リソースがどのように作成されたかに関係なく強制的に適用することができます。

ブロックパブリックアクセス設定は、組織レベル (AWS Organizations を使用)、アカウントレベル、バケットレベル、アクセスポイントレベルなど、複数のレベルで管理できます。パブリックブロックアクセスを設定する手順については、[パブリックアクセスブロックの設定](#configuring-block-public-access) を参照してください。

Amazon S3 はバケットやオブジェクトへのアクセスのリクエストを受け取ると、バケットやバケット所有者のアカウントに適用されているパブリックアクセスブロック設定があるかどうかを確認します。アカウントがブロックパブリックアクセスポリシーを持つ AWS Organizations の一部である場合、Amazon S3 は組織レベルの設定もチェックします。リクエストがアクセスポイントを経由している場合、Amazon S3 はアクセスポイントのパブリックアクセスブロック設定も確認します。リクエストされたアクセスを禁止する既存のパブリックアクセスブロック設定がある場合、Amazon S3 はそのリクエストを拒否します。

Amazon S3 のパブリックアクセスブロックには、4 つの設定があります。これらの設定は、独立しており、任意の組み合わせで使用できます。各設定は、アクセスポイント、バケット、または AWS アカウント全体に適用できます。組織レベルでは、4 つの設定すべてが統合ポリシーとして一緒に適用されます。個々の設定を詳細に選択することはできません。アクセスポイント、バケット、アカウントのパブリックアクセスブロック設定が異なる場合、Amazon S3 は、アクセスポイント、バケット、アカウントの設定の組み合わせで最も制限が厳しいものを適用します。アカウントレベルの設定は、存在する場合は組織レベルのポリシーを自動的に継承し、S3 はバケットレベルと有効なアカウントレベルの設定の間で最も制限の厳しいポリシーを使用します。例えば、組織でブロックパブリックアクセスポリシーが有効になっているが、特定のバケットでバケットレベルでブロックパブリックアクセスが無効になっている場合、S3 はより制限の厳しい組織/アカウントレベルの設定を適用するため、バケットは引き続き保護されます。逆に、組織ポリシーが無効になっているが、バケットでブロックパブリックアクセスが有効になっている場合、そのバケットはバケットレベルの設定で保護されます。

Amazon S3 は、パブリックアクセスブロック設定でオペレーションが禁止されているかどうかを評価し、組織のポリシー (アカウントの BPA 設定を適用する)、アクセスポイント、バケット、アカウントの設定に違反しているすべてのリクエストを拒否します。

**重要**  
パブリックアクセスは、アクセスコントロールリスト (ACL)、アクセスポイントポリシー、バケットポリシー、またはそのすべてからバケットおよびオブジェクトに付与されます。Amazon S3 のすべてのアクセスポイント、バケット、オブジェクトへのパブリックアクセスを確実にブロックするために、アカウントへのパブリックアクセスをブロックする 4 つの設定をすべて有効にすることをお勧めします。複数のアカウントを管理する組織の場合は、組織レベルのパブリックアクセスブロックポリシーを使用して一元管理することを検討してください。さらに、AWS Security Hub Foundational Security Best Practices control S3.8 に準拠するために、各バケットの 4 つの設定すべてを有効にすることをお勧めします。これらの設定によって、現在および将来のバケットおよびアクセスポイントのパブリックアクセスはすべてブロックされます。  
これらの設定を適用する前に、アプリケーションがパブリックアクセスなしで正しく動作することを確認してください。「[Amazon S3 を使用して静的ウェブサイトをホスティングする](WebsiteHosting.md)」に示す静的なウェブサイトをホストする場合など、バケットやオブジェクトにある程度のパブリックアクセスが必要な場合は、ストレージのユースケースに合わせて個別に設定をカスタマイズできます。  
[パブリックアクセスをブロック] を有効にすると、S3 リソースに直接アタッチされているリソースポリシーやアクセスコントロールリスト (ACL) を通じてパブリックアクセスが付与されるのを防ぐことができるため、リソースを保護できます。パブリックアクセスのブロックを有効にすること以外にも、次のポリシーを慎重に検査して、パブリックアクセスを付与していないことを確認します。  
関連する AWS プリンシパル (IAM ロールなど) にアタッチされているアイデンティティベースのポリシー
関連する AWS リソース (AWS Key Management Service (KMS) キーなど) にアタッチされているリソースベースのポリシー

**注記**  
パブリックアクセスブロック設定は、組織、アクセスポイント、バケット、AWS アカウントに対してのみ有効にすることができます。Amazon S3 では、オブジェクトごとのパブリックアクセスブロック設定はサポートされていません。
アカウントにブロックパブリックアクセス設定を適用すると、その設定はすべての AWS リージョンにグローバルに適用されます。設定はすべてのリージョンで即時または同時に有効になるわけではありませんが、最終的にはすべてのリージョンに反映されます。
組織レベルのパブリックアクセスブロックポリシーを適用すると、選択したメンバーアカウントに自動的に反映され、アカウントレベルの設定が上書きされます。

**Topics**
+ [

## パブリックアクセスブロック設定
](#access-control-block-public-access-options)
+ [

## 組織レベルでのパブリックアクセスブロックの管理
](#access-control-block-public-access-organization-level)
+ [

## アクセスポイントでのパブリックアクセスブロックオペレーションの実行
](#access-control-block-public-access-examples-access-point)
+ [

## 「パブリック」の意味
](#access-control-block-public-access-policy-status)
+ [

## IAM Access Analyzer for S3 を使用したパブリックバケットの確認
](#access-analyzer-public-info)
+ [

## アクセス許可
](#access-control-block-public-access-permissions)
+ [

## パブリックアクセスブロックの設定
](#configuring-block-public-access)
+ [

# アカウントのパブリックアクセスブロック設定の構成
](configuring-block-public-access-account.md)
+ [

# S3 バケットへのパブリックアクセスブロック設定の構成
](configuring-block-public-access-bucket.md)

## パブリックアクセスブロック設定
<a name="access-control-block-public-access-options"></a>

S3 のブロックパブリックアクセスには 4 つの設定があります。これらの設定は、個別のアクセスポイント、バケット、または AWS アカウント 全体に任意の組み合わせで適用できます。組織レベルでは、「すべて」または「なし」のアプローチを使用して 4 つの設定すべてを同時に有効または無効にすることしかできません。個々の設定をきめ細かく制御することはできません。設定をアカウントに適用すると、その設定はアカウントが所有するすべてのバケットとアクセスポイントに適用されます。アカウントレベルの設定は、存在する場合、組織ポリシーから自動的に継承されます。同様に、設定をバケットに適用すると、その設定はバケットに関連付けられているすべてのアクセスポイントに適用されます。

ポリシーの継承と適用は、次のように機能します。
+ 組織レベルのポリシーはメンバーアカウントに自動的に適用され、既存のアカウントレベルの設定を適用します。
+ アカウントレベルの設定は、存在する場合は組織ポリシーから継承され、組織ポリシーが存在しない場合はローカルに設定された設定を使用します。
+ バケットレベルの設定は独立して動作しますが、強制制限の対象となります。S3 は、組織/アカウントレベルとバケットレベルの設定など、適用可能なすべてのレベルわたって、最も制限の厳しい組み合わせを適用します。つまり、バケットはアカウント (組織管理の場合もあります) からベースライン保護を継承しますが、S3 はバケットの設定とアカウントの有効な設定の間でより制限の厳しい設定を適用します。

次の表に、利用可能な設定が含まれます。


| 名前 | 説明 | 
| --- | --- | 
| BlockPublicAcls |  このオプションを `TRUE` に設定すると、次のように動作します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-control-block-public-access.html) この設定が `TRUE` に設定されている場合、(REST API、AWS CLI、または AWS SDK のいずれを介して行われたかにかかわらず) 指定された操作は失敗します。ただし、バケットとオブジェクトの既存のポリシーと ACL は変更されません。この設定により、パブリックアクセスから保護しながら、バケットとオブジェクトの既存のポリシーと ACL を監査、絞り込み、またはその他の方法で変更することができます。  アクセスポイントには ACL が関連付けられていません。この設定をアクセスポイントに適用すると、基になるバケットへのパススルーとして機能します。この設定がアクセスポイントで有効になっている場合、このアクセスポイントを介したリクエストは、基になるバケットでこの設定が実際に有効になっているかどうかに関係なく、この設定がバケットで有効になっているかのように動作します。   | 
| IgnorePublicAcls |  このオプションを `TRUE` に設定すると、Amazon S3 はバケットとそれに含まれるオブジェクトのすべてのパブリック ACL を無視します。この設定を使用すると、パブリック ACL を含む `PutObject` 呼び出しを許可しながら、ACL によって許可されたパブリックアクセスを安全にブロックできます (`BlockPublicAcls` とは異なり、パブリック ACL を含む `PutObject` 呼び出しを拒否します)。この設定を有効にしても、既存の ACL の永続性には影響せず、新しいパブリック ACL の設定も妨げられません。  アクセスポイントには ACL が関連付けられていません。この設定をアクセスポイントに適用すると、基になるバケットへのパススルーとして機能します。この設定がアクセスポイントで有効になっている場合、このアクセスポイントを介したリクエストは、基になるバケットでこの設定が実際に有効になっているかどうかに関係なく、この設定がバケットで有効になっているかのように動作します。   | 
| BlockPublicPolicy |  バケットに対してこのオプションを `TRUE` に設定すると、指定されたバケットポリシーでパブリックアクセスが許可されている場合、Amazon S3 は `PutBucketPolicy` への呼び出しを拒否します。バケットに対してこのオプションを `TRUE` に設定した場合も、Amazon S3 は、指定されたバケットポリシーがパブリックアクセスを許可していれば、Amazon S3 はバケットのすべての同一アカウントアクセスポイントで `PutAccessPointPolicy` への呼び出しを拒否します。 アクセスポイントでこのオプションを `TRUE` に設定すると、指定されたポリシー (アクセスポイントまたは基になるバケットのいずれか) でパブリックアクセスが許可されている場合、Amazon S3 はアクセスポイント経由で行われる `PutAccessPointPolicy` および `PutBucketPolicy` への呼び出しを拒否します。 この設定を使用することにより、バケットやバケット内のオブジェクトをパブリックに共有することを許可することなく、アクセスポイントとバケットポリシーを管理することをユーザーに許可できます。この設定を有効にしても、既存のアクセスポイントやバケットポリシーには影響しません。  この設定を効果的に使用するため、*アカウント*レベルで適用することを推奨します。バケットポリシーでは、ユーザーがバケットのブロックパブリックアクセス設定を変更できます。そのため、バケットポリシーを変更する権限を持つユーザーは、バケットのブロックパブリックアクセス設定を無効にすることを許可するポリシーを挿入できます。この設定が特定のバケットではなくアカウント全体で有効になっている場合、ユーザーがこの設定を無効にするようにバケットポリシーを変更しても、Amazon S3 はパブリックポリシーをブロックします。   | 
| RestrictPublicBuckets |  このオプションを `TRUE` に設定すると、パブリックポリシーを持つアクセスポイントやバケットへのアクセスは、バケット所有者のアカウントおよびアクセスポイント所有者のアカウント内の AWS のサービスプリンシパルと承認されたユーザーのみに制限されます。この設定は、アカウント内のユーザーにアクセスポイントやバケットの管理を許可しながら、アクセスポイントやバケットへのすべてのクロスアカウントアクセス (AWS のサービスプリンシパルによるアクセスを除く) をブロックします。 この設定を有効にしても、既存のアクセスポイントポリシーやバケットポリシーには影響しません。ただし、Amazon S3 は、特定のアカウントへのパブリックではない委任を含むパブリックアクセスポイントポリシーやパブリックバケットポリシーから派生したパブリックアクセスやクロスアカウントアクセスをブロックします。  | 

**重要**  
`GetBucketAcl` および `GetObjectAcl` を呼び出すと、指定されたバケットまたはオブジェクトに対して有効なアクセス許可が常に返されます。例えば、パブリックアクセスを許可する ACL がバケットにあり、そのバケットにも `IgnorePublicAcls` 設定が有効になっているとします。この場合、`GetBucketAcl` は、バケットに関連付けられている実際の ACL ではなく、Amazon S3 が強制的に適用しているアクセス許可を反映した ACL を返します。
ブロックパブリックアクセス設定は既存のポリシーまたは ACL を変更しません。そのため、ブロックパブリックアクセス設定を削除しても、パブリックポリシーまたは ACL を持つバケットまたはオブジェクトは再びパブリックにアクセス可能になります。

## 組織レベルでのパブリックアクセスブロックの管理
<a name="access-control-block-public-access-organization-level"></a>

組織レベルのパブリックアクセスブロックは、AWS Organizations ポリシーを使用して、組織全体の S3 パブリックアクセスコントロールを一元管理します。有効にすると、これらのポリシーは選択したアカウントに自動的に適用され、個々のアカウントレベルの設定が上書きされます。

組織レベルでのパブリックアクセスブロックの詳細については、「*AWS Organizationsユーザーガイド*」の「[S3 ポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_s3.html)」を参照してください。

## アクセスポイントでのパブリックアクセスブロックオペレーションの実行
<a name="access-control-block-public-access-examples-access-point"></a>

アクセスポイントに対してブロックパブリックアクセスオペレーションを実行するにはAWS CLI サービス `s3control` を使用します。

**重要**  
アクセスポイントの作成後、アクセスポイントのパブリックアクセスのブロック設定を変更することはできません。アクセスポイントのパブリックアクセスのブロック設定は、アクセスポイントの作成時にのみ指定できます。

## 「パブリック」の意味
<a name="access-control-block-public-access-policy-status"></a>

### ACL
<a name="public-acls"></a>

Amazon S3 は、バケットやオブジェクトの ACL が事前定義済みの `AllUsers` グループまたは `AuthenticatedUsers` グループのメンバーにアクセス許可を付与する場合にパブリックとみなします。事前定義済みのグループの詳細については、[Amazon S3 の事前定義済みのグループ](acl-overview.md#specifying-grantee-predefined-groups) を参照してください。

### バケットポリシー
<a name="public-bucket-policies"></a>

バケットポリシーを評価する場合、Amazon S3 はまずポリシーがパブリックであると想定します。その後、ポリシーを評価して非パブリックとしての資格があるかどうかを判断します。非パブリックと見なすには、バケットポリシーで、次のうち 1 つ以上の固定値 (ワイルドカードを含まない値または[AWS Identity and Access Managementポリシー変数](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)) にのみアクセスを許可する必要があります。
+ AWS プリンシパル、ユーザー、ロール、またはサービスプリンシパル (例: `aws:PrincipalOrgID`)
+ `aws:SourceIp` を使用した一連のクラスレスドメイン間ルーティング (CIDR)。CIDR の詳細については、RFC Editor のウェブサイトで [RFC 4632](http://www.rfc-editor.org/rfc/rfc4632.txt) を参照してください。
**注記**  
非常に広い IP 範囲 (たとえば 0.0.0.0/1) の `aws:SourceIp` 条件キーに基づいてアクセスを許可するバケットポリシーは、「パブリック」と評価されます。これには、IPv4 の場合は `/8`、IPv6 の場合は `/32` よりも広い値が含まれます (RFC1918 のプライベート範囲を除く)。パブリックアクセスのブロックにより、これらの「パブリック」ポリシーが拒否され、これらの「パブリック」ポリシーを既に使用しているバケットへのクロスアカウントアクセスが防止されます。
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:SourceOwner`
+ `aws:SourceAccount`
+ `aws:userid`、「」パターンの外側`AROLEID:*`
+ `s3:DataAccessPointArn`
**注記**  
この値をバケットポリシーで使用すると、アカウント ID が固定されている限り、ポリシーをパブリックにすることなく、アクセスポイント名にワイルドカードを含めることができます。例えば、`arn:aws:s3:us-west-2:123456789012:accesspoint/*` へのアクセスを許可すると、バケットポリシーをパブリックにすることなく、リージョン `123456789012` のアカウント `us-west-2` に関連付けられているすべてのアクセスポイントへのアクセスを許可できます。この動作はアクセスポイントポリシーでは異なります。詳細については、「[アクセスポイント](#access-control-block-public-access-policy-status-access-points)」を参照してください。
+ `s3:DataAccessPointAccount`

バケットポリシーの詳細については、[Amazon S3 のバケットポリシー](bucket-policies.md) を参照してください。

**注記**  
[複数値のコンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html)を使用する場合は、`ForAllValues` または `ForAnyValue` 集合演算子を使用する必要があります。

**Example : パブリックバケットポリシー**  
これらのルールでは、次のポリシー例はパブリックと見なされます。  

```
{
		"Principal": "*", 
		"Resource": "*", 
		"Action": "s3:PutObject", 
		"Effect": "Allow" 
	}
```

```
{
		"Principal": "*", 
		"Resource": "*", 
		"Action": "s3:PutObject", 
		"Effect": "Allow", 
		"Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}}
	}
```
これらのポリシーは、固定値を使用して、前述のいずれかの条件キーを含めることによって非パブリックにすることができます。例えば、上記の最後のポリシーは、次のように `aws:SourceVpc` を固定値に設定することで非パブリックにすることができます。  

```
{
		"Principal": "*", 
		"Resource": "*", 
		"Action": "s3:PutObject", 
		"Effect": "Allow", 
		"Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}}
	}
```

### Amazon S3 がパブリックと非パブリックの両方のアクセス許可を含むバケットポリシーを評価する方法
<a name="access-control-block-public-access-policy-example"></a>

この例では、Amazon S3 がパブリックと非パブリックの両方のアクセス許可を含むバケットポリシーを評価する方法を示します。

バケットに一連の固定プリンシパルへのアクセスを許可するポリシーがあるとします。前述のルールの下では、このポリシーはパブリックではありません。したがって`RestrictPublicBuckets` 設定を有効にしても、ポリシーは記述どおりに有効になります。これは、`RestrictPublicBuckets` はパブリックポリシーを持つバケットにのみ適用されるためです。ただし、パブリックステートメントをポリシーに追加すると、`RestrictPublicBuckets` はバケットに有効になります。これにより、AWS サービスプリンシパルとバケット所有者のアカウントの認証されたユーザーのみがバケットにアクセスできるようになります。

例えば、「アカウント − 1」が所有するバケットに次の内容を含むポリシーがあるとします。

1. AWS CloudTrail (AWS サービスプリンシパル) へのアクセスを許可するステートメント

1. 「アカウント − 2」アカウントへのアクセスを許可するステートメント

1. `"Principal": "*"` 制限なしで `Condition` などを指定して、パブリックへのアクセスを許可するステートメント

このポリシーは、3 番目のステートメントのためにパブリックとしての資格があります。このポリシーがあって `RestrictPublicBuckets` を有効にすると、Amazon S3 は CloudTrail によるアクセスのみを許可します。ステートメント 2 がパブリックでなくても、Amazon S3 は「アカウント − 2」によるアクセスを無効にします。これは、ステートメント 3 がポリシー全体をパブリックにレンダリングするため、`RestrictPublicBuckets` が適用されるためです。その結果、ポリシーで特定のアカウントのアカウント − 2」にアクセスが委任されていても、Amazon S3 はクロスアカウントアクセスを無効にします。ただし、ポリシーからステートメント 3 を削除した場合、そのポリシーはパブリックとして認められず、`RestrictPublicBuckets` は適用されなくなります。したがって、`RestrictPublicBuckets` を有効のままにしていても、「アカウント − 2」はバケットへのアクセスを再取得できます。

### アクセスポイント
<a name="access-control-block-public-access-policy-status-access-points"></a>

Amazon S3 がパブリックアクセスブロック設定を評価する方法は、バケットとアクセスポイントで少しだけ異なります。アクセスポイントポリシーがパブリックであることを確認するために Amazon S3 が適用するルールは、通常、アクセスポイントでもバケットと同じですが、次の場合を除きます。
+ VPC ネットワークオリジンを持つアクセスポイントは、アクセスポイントポリシーの内容に関係なく、常に非パブリックと見なされます。
+ `s3:DataAccessPointArn` を使用して一連のアクセスポイントへのアクセスを許可するアクセスポイントポリシーは、パブリックと見なされます。この動作は、バケットポリシーとは異なることに注意してください。例えば、`s3:DataAccessPointArn` と一致する `arn:aws:s3:us-west-2:123456789012:accesspoint/*` の値へのアクセスを許可するバケットポリシーは、パブリックと見なされません。ただし、アクセスポイントポリシーにおける同じステートメントは、アクセスポイントをパブリックと見なします。

## IAM Access Analyzer for S3 を使用したパブリックバケットの確認
<a name="access-analyzer-public-info"></a>

IAM Access Analyzer for S3 を使用して、パブリックアクセスを許可するバケットの ACL、バケットポリシー、またはアクセスポイントポリシーを持つバケットを確認できます。IAM Access Analyzer for S3 は、インターネットの任意のユーザーや他の AWS アカウント (組織外の AWS アカウント を含む) にアクセスを許可するように設定されているバケットに関して警告します。パブリックバケットまたは共有バケットごとに、パブリックアクセスや共有アクセスのソースとレベルを報告する結果が送信されます。

IAM Access Analyzer for S3 では、バケットへのすべてのパブリックアクセスをワンクリックでブロックすることができます。また、バケットレベルのアクセス許可の設定を参照して、きめ細かいアクセスレベルを設定することもできます。パブリックアクセスまたは共有アクセスを必要とする特定の検証済みユースケースについては、バケットの調査結果をアーカイブすることで、バケットをパブリックまたは共有とすることを確定して記録できます。

まれに、IAM Access Analyzer for S3 と Amazon S3 パブリックアクセスブロックの評価は、バケットがパブリックかどうかによって異なる場合があります。この動作は、Amazon S3 パブリックアクセスブロックが、パブリックアクセスの評価に加えて、アクションの存在についても検証を実行するために発生します。バケットポリシーに、Amazon S3 でサポートされていないアクション (`s3:NotASupportedAction` など) へのパブリックアクセスを許可する `Action` ステートメントが含まれているとします。この場合、Amazon S3 パブリックアクセスブロックはバケットをパブリックとして評価します。このようなステートメントは、アクションが後でサポートされるときにバケットをパブリックにする可能性があるためです。Amazon S3 パブリックアクセスブロックと IAM Access Analyzer for S3 の評価が異なる場合は、バケットポリシーを確認し、サポートされていないアクションを削除することをお勧めします。

IAM Access Analyzer for S3 の詳細については、[IAM Access Analyzer for S3 を使用したバケットアクセスの確認](access-analyzer.md) を参照してください。

## アクセス許可
<a name="access-control-block-public-access-permissions"></a>

Amazon S3 のパブリックアクセスブロック機能を使用するには、以下のアクセス許可が必要です。


| オペレーション | 必要なアクセス許可 | 
| --- | --- | 
| GET バケットのポリシーステータス | s3:GetBucketPolicyStatus | 
| GET バケットのパブリックアクセスのブロック設定 | s3:GetBucketPublicAccessBlock | 
| PUT バケットのパブリックアクセスのブロック設定 | s3:PutBucketPublicAccessBlock | 
| DELETE バケットのパブリックアクセスのブロック設定 | s3:PutBucketPublicAccessBlock | 
| GET アカウントのパブリックアクセスのブロック設定 | s3:GetAccountPublicAccessBlock | 
| PUT アカウントのパブリックアクセスのブロック設定 | s3:PutAccountPublicAccessBlock | 
| DELETE アカウントのパブリックアクセスのブロック設定 | s3:PutAccountPublicAccessBlock | 
| PUT アクセスポイントのパブリックアクセスのブロック設定 | s3:CreateAccessPoint | 

**注記**  
`DELETE` オペレーションには、`PUT` オペレーションと同じアクセス許可が必要です。`DELETE` オペレーションに対する個別のアクセス許可はありません。

## パブリックアクセスブロックの設定
<a name="configuring-block-public-access"></a>

AWS アカウント、Amazon S3 バケット、アクセスポイントのブロックパブリックアクセス設定の詳細については、以下のトピックを参照してください。
+ [アカウントのパブリックアクセスブロック設定の構成](configuring-block-public-access-account.md)
+ [S3 バケットへのパブリックアクセスブロック設定の構成](configuring-block-public-access-bucket.md)
+ [アクセスポイントでのパブリックアクセスブロックオペレーションの実行](#access-control-block-public-access-examples-access-point)

# アカウントのパブリックアクセスブロック設定の構成
<a name="configuring-block-public-access-account"></a>

**重要**  
アカウントが組織レベルのパブリックアクセスブロックポリシーによって管理されている場合、これらのアカウントレベルの設定を変更することはできません。組織レベルのポリシーは、アカウントレベルの設定を上書きします。一元管理オプションの詳細については、「*AWS Organizations ユーザーガイド*」の「[S3 ポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_s3.html)」を参照してください。

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

**注記**  
アカウントレベルの設定は、個々のオブジェクトの設定よりも優先されます。パブリックアクセスをブロックするようにアカウントを設定すると、アカウント内の個々のオブジェクトに対して行われたパブリックアクセスの設定が上書きされます。組織レベルのポリシーがアクティブな場合、アカウントレベルの設定は自動的に組織ポリシーから継承され、直接変更することはできません。

組織のポリシーによって管理されない場合、S3 コンソール、AWS CLI、AWS SDK、および REST API を使用して、アカウント内のすべてのバケットに対して、パブリックアクセスブロック設定を指定できます。詳細については、関連するセクションを参照してください。

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

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

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

**AWS アカウントのすべての S3 バケットのブロックパブリックアクセス設定を編集するには**

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

1. [**Block Public Access settings for this account (このアカウントのブロックパブリックアクセスの設定)**] を選択します。

1. [**Edit**] (編集) を選択して、AWS アカウント のすべてのバケットに対するブロックパブリックアクセス設定を変更します。

1. 変更する設定を選択して、[**Save changes (変更の保存)**] を選択します。

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

「This account does not allow changes to its account-level S3 Block Public Access settings due to an organizational S3 Block Public Access policy in effect,」というエラーメッセージが表示された場合は、アカウントは組織レベルのポリシーによって管理されます。組織管理者に連絡して、これらの設定を変更してください。

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

AWS CLI を介して Amazon S3 のパブリックアクセスブロックを使用することができます。AWS CLI のセットアップおよび使用の詳細については、[AWS Command Line Interface とは?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) を参照してください。

**アカウント**
+ アカウントでブロックパブリックアクセス操作を実行するには、AWS CLI サービス `s3control` を使用します。このサービスを使用するアカウントレベルの操作は次のとおりです。
  + `PutPublicAccessBlock` (アカウントの場合)
  + `GetPublicAccessBlock` (アカウントの場合)
  + `DeletePublicAccessBlock` (アカウントの場合)

**注記**  
`PutPublicAccessBlock` および `DeletePublicAccessBlock` オペレーションは、アカウントが組織レベルのポリシーによって管理されている場合、「アクセスが拒否されました」エラーを返します。アカウントレベルの `GetPublicAccessBlock` オペレーションは、存在する場合、強制された組織レベルのポリシーを返します。

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

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

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

以下の例は、AWS SDK for Java で Amazon S3 のパブリックアクセスブロックを使用して、Amazon S3 アカウントにパブリックアクセスブロック設定を配置する方法を示しています。

**注記**  
アカウントが組織レベルのポリシーによって管理されている場合、`PutPublicAccessBlock` および `DeletePublicAccessBlock` オペレーションは「アクセスが拒否されました」エラーで失敗します。

```
AWSS3ControlClientBuilder controlClientBuilder = AWSS3ControlClientBuilder.standard();
controlClientBuilder.setRegion(<region>);
controlClientBuilder.setCredentials(<credentials>);
					
AWSS3Control client = controlClientBuilder.build();
client.putPublicAccessBlock(new PutPublicAccessBlockRequest()
		.withAccountId(<account-id>)
		.withPublicAccessBlockConfiguration(new PublicAccessBlockConfiguration()
				.withIgnorePublicAcls(<value>)
				.withBlockPublicAcls(<value>)
				.withBlockPublicPolicy(<value>)
				.withRestrictPublicBuckets(<value>)));
```

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

------
#### [ 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="access-control-block-public-access-examples-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) - アカウントが組織ポリシーによって管理されている場合に失敗します。

制限されたオペレーションについては、次のエラーメッセージが表示されます。「This account does not allow changes to its account-level S3 Block Public Access settings due to an organizational S3 Block Public Access policy in effect.」

# 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)