

# Amazon S3 でのアクセスコントロール
<a name="access-management"></a>

AWS では、リソースはユーザーが操作できるエンティティです。Amazon Simple Storage Service (S3) では、バケット**とオブジェクト**が元の Amazon S3 リソースです。すべての S3 のお客様のバケットには、オブジェクトが含まれている可能性があります。新機能が S3 に追加され、リソースもさらに追加されましたが、すべてのお客様がこれらの機能固有のリソースを使用しているわけではありません。Amazon S3 リソースの詳細については、「[S3 リソース](#access-management-resources)」を参照してください。

デフォルトでは、すべての Amazon S3 リソースはプライベートです。さらにデフォルトでは、リソースを作成した AWS アカウントのルートユーザー (リソース所有者) と、必要なアクセス許可を持つそのアカウント内の IAM ユーザーは、作成したリソースにアクセスできます。リソース所有者は、リソースにアクセスできる他のユーザーと、他のユーザーがリソースに対して実行できるアクションを決定します。S3 には、S3 リソースへのアクセスを他のユーザーに許可するために使用できるさまざまなアクセス管理ツールがあります。

以下のセクションでは、S3 リソースの概要、使用可能な S3 アクセス管理ツール、各アクセス管理ツールの最適なユースケースについて説明します。これらのセクションのリストは、包括的な内容で、すべての S3 リソース、アクセス管理ツール、一般的なアクセス管理のユースケースが含まれることを意図しています。同時に、これらのセクションは、必要な技術的情報へと案内するディレクトリとなるように設計されています。以下のトピックの一部をよく理解している場合は、該当するセクションに進んでください。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**トピック**
+ [S3 リソース](#access-management-resources)
+ [ID](#access-management-owners)
+ [アクセス管理ツール](#access-management-tools)
+ [アクション](#access-management-actions)
+ [アクセス管理のユースケース](#access-management-usecases)
+ [アクセス管理のトラブルシューティング](#access-management-troubleshooting)

## S3 リソース
<a name="access-management-resources"></a>

元の Amazon S3 リソースとは、バケットとそれらに含まれるオブジェクトです。S3 に新しい機能が追加されると、新しいリソースも追加されます。以下は、S3 リソースとそれぞれの特徴の完全なリストです。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-management.html)

**バケット**  
Amazon S3 バケットには**、汎用バケットと**ディレクトリバケットの 2 種類があります。
+ **汎用バケット** はオリジナルの S3 バケットタイプであり、ほとんどのユースケースやアクセスパターンに推奨されます。汎用バケットでは、S3 Express One Zone 以外のすべてのストレージクラスにオブジェクトを保存することもできます。S3 ストレージクラスの詳細については、「[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md)」を参照してください。
+ **ディレクトリバケット**は、S3 Express One Zone ストレージクラスのみを使用します。アプリケーションがパフォーマンスの影響を受けやすく、1 桁ミリ秒の `PUT` と `GET` のレイテンシーから利点が得られる場合にお勧めします。詳細については[ディレクトリバケットの使用](directory-buckets-overview.md)、[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)、および[IAM を使用したリージョンエンドポイント API オペレーションの承認](s3-express-security-iam.md)を参照してください。

**S3 リソースの分類**  
Amazon S3 には、S3 リソースを分類および整理する機能が備えられています。リソースの分類は、リソースの整理に役立つだけでなく、これにより、リソースカテゴリに基づいてアクセス管理ルールを設定することもできます。特に、プレフィックスとタグ付けは、アクセス管理のアクセス許可を設定するときに使用する 2 つのストレージ組織機能です。

**注記**  
以下の情報は、汎用バケットに適用されます。ディレクトリバケットはタグ付けをサポートしておらず、プレフィックスの誓約があります。詳細については、「[IAM を使用したリージョンエンドポイント API オペレーションの承認](s3-express-security-iam.md)」を参照してください。
+ **プレフィックス** — Amazon S3 のプレフィックスは、S3 バケットに保存されたオブジェクトを整理するために使用されるオブジェクトキー名の先頭にある文字列です。スラッシュ (`/`) などの区切り文字を使用して、オブジェクトキー名内のプレフィックスの末尾を指定できます。例えば、`engineering/` プレフィックスで始まるオブジェクトキー名や、`marketing/campaigns/` プレフィックスで始まるオブジェクトキー名があるとします。スラッシュ文字 (`/`) など、プレフィックスの末尾に区切り記号を使用すると、フォルダとファイルの命名規則がエミュレートされます。ただし、S3 では、プレフィックスはオブジェクトキー名の一部です。汎用 S3 バケットでは、実際のフォルダ階層は存在しません。

  Amazon S3 では、プレフィックスを使用してオブジェクトを整理およびグループ化できます。オブジェクトへのアクセスをプレフィックスで管理することもできます。例えば、特定のプレフィックスで始まる名前のオブジェクトへのアクセスのみを制限できます。

  詳細については、「[プレフィックスを使用してオブジェクトを整理する](using-prefixes.md)」を参照してください。S3 コンソールは、フォルダ**の概念を使用します。これは、汎用バケットでは、基本的にオブジェクトキー名の前に付加されるプレフィックスです。詳細については、「[フォルダを使用して Amazon S3 コンソールのオブジェクトを整理する](using-folders.md)」を参照してください。
+ **タグ** — 各タグは、リソースに割り当てることができるキーと値のペアです。例えば、一部のリソースにタグ `topicCategory=engineering` を付けることができます。タグ付けを使用すると、コスト配分、分類と整理、アクセスコントロールに役立ちます。バケットのタグ付けはコスト配分にのみ使用されます。オブジェクト、S3 Storage Lens、ジョブ、および S3 Access Grants には、整理またはアクセスコントロールの目的でタグ付けできます。S3 Access Grants では、コスト配分にもタグ付けを使用できます。タグを使用してリソースへのアクセスを制御する例として、特定のタグまたはタグの組み合わせを持つオブジェクトのみを共有できます。

  詳細については、*IAM ユーザーガイド*の「[リソースタグを使用した AWS リソースへのアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)」を参照してください。

## ID
<a name="access-management-owners"></a>

Amazon S3 では、リソース所有者は、バケットやオブジェクトなどのリソースを作成した ID です。デフォルトでは、必要なアクセス許可を持つアカウント内でリソースと IAM アイデンティティを作成したアカウントのルートユーザーのみが S3 リソースにアクセスできます。リソース所有者は、他のアイデンティティに S3 リソースへのアクセスを許可できます。

リソースを所有していないアイデンティティは、そのリソースへのアクセスをリクエストできます。リソースに対するリクエストは、認証済みまたは未認証です。認証リクエストには、リクエストの送信元を認証する署名値を含める必要がありますが、未認証のリクエストでは署名は不要です。認証されたユーザーのみにアクセスを許可することをお勧めします。リクエスト認証の詳細については、「Amazon S3 API リファレンス」の「[Making requests](https://docs.aws.amazon.com/AmazonS3/latest/API/MakingRequests.html)」を参照してください。**

**重要**  
認証されたリクエストの実行に AWS アカウントのルートユーザー認証情報を使用しないことをお勧めします。代わりに、IAM ロールを作成し、このロールにフルアクセスを許可します。このロールを持つユーザーを*管理者ユーザー*と呼びます。AWS アカウントのルートユーザー認証情報ではなく、管理者ユーザーに割り当てられた認証情報を使用して AWS とやり取りし、バケットの作成、ユーザーの作成、アクセス許可の付与などのタスクを実行できます。詳細については、**AWS 全般のリファレンスの「[AWS アカウント ルートユーザーの認証情報と IAM ユーザーの認証情報](https://docs.aws.amazon.com/general/latest/gr/root-vs-iam.html)」および **「IAM ユーザーガイド」の「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

Amazon S3 のデータにアクセスするアイデンティティは、次のいずれかになります。

**AWS アカウント所有者**  
リソースを作成した AWS アカウントです。例えば、バケットを作成したアカウントです。このアカウントは リソースを所有しています。詳細については、「[AWS アカウントのルートユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)」を参照してください。

**AWS アカウント所有者の同じアカウントの IAM アイデンティティ**  
S3 アクセスを必要とする新しいチームメンバーのアカウントを設定する場合、AWS アカウント所有者は AWS Identity and Access Management (IAM) を使用して[ユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)、[グループ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)、[ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)を作成できます。その後、AWS アカウント所有者はこれらの IAM アイデンティティとリソースを共有できます。アカウント所有者は、IAM アイデンティティに付与するアクセス許可を指定することもできます。これにより、共有リソースで実行できるアクションを許可または拒否できます。

IAM アイデンティティを使用すると、共有リソースにアクセスする前にログイン認証情報の入力を要求するなど、機能を強化できます。IAM アイデンティティを使用すると、強力なアイデンティティ基盤をサポートするために、IAM の多要素認証 (MFA) 形式を実装することもできます。IAM のベストプラクティスは、個々のユーザーにアクセス許可を付与するのではなく、アクセス管理用のロールを作成することです。個々のユーザーを適切なロールに割り当てます。詳細については、「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

**他の AWS アカウント所有者とその IAM アイデンティティ (クロスアカウントアクセス)**  
AWS アカウント所有者は、他の AWS アカウント所有者、または別の AWS アカウントに属する IAM アイデンティティにリソースへのアクセスを許可することもできます。

**注記**  
**アクセス許可の委任** — AWS アカウントがリソースを所有している場合、そのアカウントは別の AWS アカウントにこれらの許可を付与できます。そのアカウントは、それらのアクセス許可またはそのサブセットを、同じアカウント内のユーザーに委任できます。これはアクセス許可の委任と呼ばれます。ただし、他のアカウントから許可を受け取るアカウントは、別の AWS アカウントに「クロスアカウント」でこれらの許可を委任することはできません。

**匿名ユーザー (パブリックアクセス)**  
AWS アカウント 所有者はリソースを公開できます。リソースを公開すると、リソースが**匿名ユーザーと技術的に共有されます。2023 年 4 月以降に作成されたバケットは、この設定を変更しない限り、デフォルトですべてのパブリックアクセスをブロックします。パブリックアクセスをブロックするようにバケットを設定し、認証されたユーザーにのみアクセスを許可することをお勧めします。ブロックパブリックアクセスの詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。

**AWS のサービス**  
リソース所有者は、Amazon S3 リソースへの別の AWS サービスアクセスを許可できます。例えば、ログファイルをバケットに書き込む `s3:PutObject` アクセス許可を AWS CloudTrail サービスに付与できます。詳細については、「[AWS サービスへのアクセスの提供](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_services.html)」を参照してください。

**社内ディレクトリのアイデンティティ**  
リソース所有者は、[S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-get-started.html) を使用して、社内ディレクトリのユーザーまたはロールに S3 リソースへのアクセス権を付与できます。AWS IAM アイデンティティセンター への社内ディレクトリの追加に関する詳細は、「[IAM Identity Center とは何ですか?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)」を参照してください。

### バケットまたはリソース所有者
<a name="access-management-owners-rules"></a>

このようなリソースの所有者は、バケットの作成とオブジェクトのアップロードに使用する AWS アカウントです。バケット所有者は、別の AWS アカウント (または別のアカウントのユーザー) に対して、オブジェクトをアップロードするためのクロスアカウントアクセス許可を付与できます。

バケット所有者が別のアカウントにバケットへのオブジェクトのアップロードを許可すると、バケット所有者はデフォルトで、バケットにアップロードされたすべてのオブジェクトを所有します。ただし、**バケット所有者の強制バケット設定と**バケット所有者の優先バケット設定の両方がオフになっている場合、オブジェクトをアップロードする AWS アカウントがこれらのオブジェクトを所有し、バケット所有者には別のアカウントが所有するオブジェクトに対するアクセス許可は付与されません。ただし、以下の例外があります。
+ バケット所有者が請求の支払いを行う場合、バケット所有者は、オブジェクトの所有者に関係なく、オブジェクトへのアクセスを拒否したり、バケット内のオブジェクトを削除したりすることができます。
+ バケット所有者は、オブジェクトの所有者に関係なく、オブジェクトをアーカイブしたり、アーカイブされたオブジェクトを復元したりすることができます。アーカイブはオブジェクトの格納に使用されるストレージクラスを指します。詳細については、「[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)」を参照してください。

## アクセス管理ツール
<a name="access-management-tools"></a>

Amazon S3 には、さまざまなセキュリティ機能とツールが用意されています。以下は、これらの機能とツールの包括的なリストです。これらのアクセス管理ツールがすべて必要なわけではありませんが、Amazon S3 リソースへのアクセスを付与するには、これらのツールを 1 つ以上使用する必要があります。これらのツールを適切に適用すると、データの整合性を維持し、目的のユーザーがリソースにアクセスできるようにするために役立ちます。

最も一般的に使用されるアクセス管理ツールは、**アクセスポリシーです。アクセスポリシーは、バケットのバケットポリシーなど、AWS リソースにアタッチされたリソースベースの**ポリシーに指定できます。アクセスポリシーは、IAM ユーザー、グループ、ロールなどの AWS Identity and Access Management (IAM) アイデンティティにアタッチされたアイデンティティ**ベースのポリシーに指定することもできます。アクセスポリシーを作成して、 AWS アカウントおよび IAM ユーザー、グループ、ロールにアクセス許可を付与し、リソースに対してオペレーションを実行します。例えば、他のアカウントがバケットにオブジェクトをアップロードできるように、別の AWS アカウントに `PUT Object` アクセス許可を付与できます。

アクセスポリシーでは、誰が何にアクセスできるかを記述します。Amazon S3 は、リクエストを受け取ったときにすべてのアクセスポリシーを評価して、リクエストを許可するか拒否するかを判断する必要があります。Amazon S3 がこれらのポリシーを評価する方法の詳細については、[Amazon S3 がリクエストを許可する仕組み](how-s3-evaluates-access-control.md) を参照してください。

Amazon S3 で使用できるアクセス管理ツールを以下に示します。

### バケットポリシー
<a name="access-mgmt-bucket-policy"></a>

Amazon S3 バケットポリシーは、特定のバケットにアタッチされた JSON 形式の [AWS Identity and Access Management (IAM) リソースベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)です。バケットポリシーを使用すると、バケットおよびバケット内のオブジェクトに対するアクセス許可を、他の AWS アカウントまたは IAM アイデンティティに付与できます。S3 アクセス管理の多くのユースケースは、バケットポリシーを使用することで要件が満たされます。バケットポリシーを使用すると、承認されたアイデンティティのみがリソースにアクセスしてアクションを実行できるように、バケットアクセスをパーソナライズすることができます。詳細については、「[Amazon S3 のバケットポリシー](bucket-policies.md)」を参照してください。

以下は、バケットポリシーの例です。JSON ファイルを使用してバケットポリシーを表現します。このポリシーの例では、バケット内のすべてのオブジェクトに IAM ロールの読み取りアクセス許可を付与します。このポリシーには、`amzn-s3-demo-bucket1` という名前のバケット内のオブジェクトに対して、`s3:GetObject` アクション (読み取りアクセス許可) を許可する `BucketLevelReadPermissions` という名前の 1 個のステートメントがあります。IAM ロールを `Principal` として指定することで、このポリシーは、このロールを持つすべての IAM ユーザーにアクセス権を付与します。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid":"BucketLevelReadPermissions",
      "Effect":"Allow",
      "Principal": {
	    "AWS": "arn:aws:iam::123456789101:role/s3-role"
      },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::amzn-s3-demo-bucket/*"]
    }]
  }
```

------

**注記**  
ポリシーを作成するときは、`Principal` 要素にワイルドカード文字 (`*`) を使用しないでください。ワイルドカードを使用すると、すべてのユーザーが Amazon S3 リソースにアクセスできるようになります。代わりに、バケットへのアクセスが許可されているユーザーまたはグループを明示的にリストするか、ポリシーで条件句を使用して満たす必要がある条件をリストします。ユーザーまたはグループのアクションにワイルドカード文字を含めるのではなく、該当する場合に特定のアクセス許可を付与します。

### ID ベースのポリシー
<a name="access-mgmt-id-policy"></a>

アイデンティティベースのポリシーまたは IAM ユーザーポリシーは、[AWS Identity and Access Management (IAM) ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)の一種です。アイデンティティベースのポリシーは、AWSアカウントの IAM ユーザー、グループ、またはロールにアタッチされる JSON 形式のポリシーです。アイデンティティベースのポリシーを使用すると、バケットまたはオブジェクトへのアクセス許可を IAM アイデンティティに付与できます。アカウント内に IAM ユーザー、グループ、およびロールを作成し、これらにアクセスポリシーをアタッチできます。次に、Amazon S3 リソースを含む AWS リソースへのアクセス許可を付与できます。詳細については、「[Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)」を参照してください。

以下は、アイデンティティベースポリシーの例です。このポリシーの例では、関連 IAM ロールに、バケットとバケット内のオブジェクトに対して Amazon S3 の 6 つの異なるアクション (アクセス許可) の実行を許可します。このポリシーをアカウントの IAM ロールにアタッチし、そのロールを一部の IAM ユーザーに割り当てると、このロールを持つユーザーは、ポリシーで指定されたリソース (バケット) に対してこれらのアクションを実行できます。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
  {
    "Sid": "AssignARoleActions",
    "Effect": "Allow",
    "Action": [
	  "s3:PutObject",
	  "s3:GetObject",
	  "s3:ListBucket",
	  "s3:DeleteObject",
	  "s3:GetBucketLocation"
    ],
    "Resource": [
	  "arn:aws:s3:::amzn-s3-demo-bucket/*",
	  "arn:aws:s3:::amzn-s3-demo-bucket"
    ]
    },
  {
    "Sid": "AssignARoleActions2",
    "Effect": "Allow",
    "Action": "s3:ListAllMyBuckets",
    "Resource": "*"
  }
  ]
}
```

------

### S3 Access Grants
<a name="access-mgmt-s3ag"></a>

S3 Access Grants を使用して、Active Directory などの企業 ID ディレクトリ内のアイデンティティと AWS Identity and Access Management (IAM) アイデンティティの両方の Amazon S3 データへのアクセス許可を作成します。S3 Access Grants は、大規模なデータのアクセス許可の管理に役立ちます。さらに、S3 Access Grants は、エンドユーザーアイデンティティと、AWS CloudTrail での S3 データへのアクセスに使用されるアプリケーションをログに記録します。これにより、S3 バケット内のデータへのすべてのアクセスについて、エンドユーザーアイデンティティまで詳細な監査履歴が提供されます。詳細については、「[S3 Access Grants でのアクセス管理](access-grants.md)」を参照してください。

### Access Points
<a name="access-mgmt-ap"></a>

Amazon S3 Access Points は、S3 の共有データセットを使用するアプリケーションの大規模なデータアクセスの管理を簡素化します。Access Points は名前付きのネットワークエンドポイントで、バケットにアタッチされます。アクセスポイントを使用すると、オブジェクトのアップロードや取得などの S3 オブジェクトオペレーションを大規模に実行できます。バケットには最大 10,000 個のアクセスポイントをアタッチできます。各アクセスポイントでは、個別のアクセス許可やネットワークコントロールを適用することで、S3 オブジェクトへのアクセスをきめ細かく制御できます。S3 Access Points は、同じアカウントまたは別の信頼されたアカウントのバケットに関連付けることができます。Access Points ポリシーは、基になるバケットポリシーと組み合わせて評価されるリソースベースのポリシーです。詳細については、「[アクセスポイントを使用した共有データセットへのアクセスの管理](access-points.md)」を参照してください。

### アクセスコントロールリスト (ACL)
<a name="access-mgmt-acl"></a>

ACL は、アクセス許可の被付与者と付与されるアクセス許可を識別するリストです。ACL は、基本的な読み取り/書き込み許可を他の AWS アカウントに付与します。ACL では、Amazon S3 固有の XML スキーマが使用されます。ACL は、[AWS Identity and Access Management (IAM) ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)の一種です。オブジェクト ACL は、オブジェクトへのアクセスを管理するために使用され、バケット ACL はバケットへのアクセスを管理するために使用されます。バケットポリシーはバケット全体に対して 1 つですが、オブジェクト ACL は各オブジェクトに対して指定されます。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL は無効にしておくことをお勧めします。ACL の使用方法の詳細については、[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md) を参照してください。

**警告**  
 Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。

以下に、バケット ACL の例を示します。この ACL アクセス権限は、フルコントロールのアクセス許可を持つバケット所有者を示します。

```
<?xml version="1.0" encoding="UTF-8"?>
	<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
		<Owner>
			<ID>Owner-Canonical-User-ID</ID>
		</Owner>
	<AccessControlList>
		<Grant>
			<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Canonical User">
				<ID>Owner-Canonical-User-ID</ID>
			</Grantee>
			<Permission>FULL_CONTROL</Permission>
		</Grant>
	</AccessControlList>
</AccessControlPolicy>
```

### オブジェクトの所有権
<a name="access-mgmt-obj-ownership"></a>

オブジェクトへのアクセスを管理するには、オブジェクトの所有者である必要があります。オブジェクト所有権のバケットレベルの設定を使用すると、バケットにアップロードされたオブジェクトの所有権を制御できます。また、オブジェクト所有権を使用して、ACL を有効にします。デフォルトでは、オブジェクト所有権は *[バケット所有者の強制]* に設定され、すべての ACL は無効になっています。ACL が無効になっている場合、バケット所有者はバケット内のすべてのオブジェクトを所有し、データへのアクセスの管理のみを行います。アクセスを管理するために、バケット所有者は ACL を除くポリシーまたは別のアクセス管理ツールを使用します。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

オブジェクト所有権には、バケットにアップロードされるオブジェクトの所有権を制御し、ACL を無効化または有効化するために使用できる 3 つの設定があります。

**ACL を無効化する**
+ **バケット所有者強制 (デフォルト)** – ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えません。このバケットはアクセスコントロールを定義するためだけにポリシーを使用します。

**ACL を有効化する**
+ **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。
+ **オブジェクトライター** — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザーにそのオブジェクトへのアクセス権を付与できます。

**その他のベストプラクティス**  
転送中および保管時のデータを保護するために、次のバケット設定とツールを使用することを検討してください。どちらも、データの完全性とアクセシビリティを維持するために重要です。
+ **パブリックアクセスをブロック** — デフォルトのバケットレベルの設定の *[パブリックアクセスをブロック]* をオフにしないでください。この設定は、デフォルトでデータへのパブリックアクセスをブロックします。ブロックパブリックアクセスの詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。
+ **S3 バージョニング** — データ整合性のために、S3 バージョニングバケット設定を実装できます。この設定では、オブジェクトを上書きするのではなく、更新時にオブジェクトに複数のバージョンを持たせます。S3 バージョニングを使用すると、必要に応じて以前のバージョンを保存、取得、復元できます。S3 バージョニングの詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。
+ **S3 Object Lock** — S3 Object Lock は、データの整合性を実現するために実装できるもう 1 つの設定です。この機能により、オブジェクトを不変的に保存するための Write-Once-Read-Many (WORM) モデルを実装できます。Object Lock の詳細については、「[S3 Object Lock を使用したオブジェクトのロック](object-lock.md)」を参照してください。
+ **オブジェクト暗号化** — Amazon S3 には、転送中および保管時のデータを保護するために使用できる、複数のオブジェクト暗号化オプションがあります。**サーバー側の暗号化では、オブジェクトをデータセンター内のディスクに保存する前に暗号化し、オブジェクトをダウンロードするときに復号します。リクエストが認証され、お客様がアクセス許可を持っていれば、オブジェクトが暗号化されているかどうかに関係なく同じ方法でアクセスできます。詳細については、「[サーバー側の暗号化によるデータの保護](serv-side-encryption.md)」を参照してください。S3 は、新しくアップロードされたオブジェクトをデフォルトで暗号化します。詳細については、「[Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定](bucket-encryption.md)」を参照してください。*クライアント側の暗号化*では、Amazon S3 に送信する前にデータを暗号化します。詳細については、「[クライアント側の暗号化を使用したデータの保護](UsingClientSideEncryption.md)」を参照してください。
+ **署名方法** — 署名バージョン 4 は、HTTP で送信される AWS リクエストに認証情報を追加するプロセスです。セキュリティ対策として、AWS へのほとんどのリクエストは、アクセスキーを使用して署名する必要があります。アクセスキーは、アクセスキー ID とシークレットアクセスキーで構成されます。これらの 2 つのキーは、一般的にセキュリティ認証情報と呼ばれます。詳細については、「[リクエストの認証 (AWS 署名バージョン 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)」および「[署名バージョン 4 の署名プロセス](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)」を参照してください。

## アクション
<a name="access-management-actions"></a>

S3 のアクセス許可および条件キーの完全なリストについては、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**アクション**  
Amazon S3 の AWS Identity and Access Management (IAM) アクションは、S3 バケットまたはオブジェクトで実行できるアクションです。これらのアクションをアイデンティティに付与して、S3 リソースに対してアクションを実行できるようにします。S3 アクションの例は、バケット内のオブジェクトを読み取る `s3:GetObject` と、バケットにオブジェクトを書き込む `s3:PutObject` です。

**条件キー**  
アクション以外に、条件が満たされた場合のみのアクセスを許可するように IAM 条件キーが制限されます。条件キーはオプションです。



**注記**  
バケットポリシーなどのリソースベースのアクセスポリシー、またはアイデンティティベースのポリシーでは、以下を指定できます。  
ポリシーステートメントの `Action` 要素内のアクションまたはアクションの配列。
ポリシーステートメントの `Effect` 要素で、`Allow` を指定してリストされたアクションを付与するか、`Deny` を指定してリストされたアクションをブロックできます。最小特権の使用をさらに維持するために、アクセスポリシーの `Effect` 要素の `Deny` のステートメントはできるだけ広義に、`Allow` ステートメントはできるだけ狭義にする必要があります。ポリシー条件ステートメントに含まれるアイデンティティに対して、オプトインに関するベストプラクティスを実装するための別の効果的な手段として、「`s3:*`」アクションとペアになった `Deny` 効果があります。
ポリシーステートメントの `Condition` 要素の条件キー。

## アクセス管理のユースケース
<a name="access-management-usecases"></a>

Amazon S3 では、リソース所有者にアクセス権を付与するためのさまざまなツールを提供します。使用する S3 アクセス管理ツールは、共有する S3 リソース、アクセスを許可するアイデンティティ、許可または拒否するアクションによって異なります。S3 アクセス管理ツールの 1 つまたは組み合わせを使用して、S3 リソースへのアクセスを管理できます。

ほとんどの場合、アクセスポリシーを使用すると、アクセス許可を管理できます。アクセスポリシーは、バケットなどのリソース、または別の Amazon S3 リソース ([S3 リソース](#access-management-resources)) にアタッチされたリソースベースのポリシーに指定できます。アクセスポリシーは、アカウントの AWS Identity and Access Management (IAM) ユーザー、グループ、ロールにアタッチされたアイデンティティベースのポリシーに指定することもできます。バケットポリシーがユースケースにより適している場合もあります。詳細については、「[Amazon S3 のバケットポリシー](bucket-policies.md)」を参照してください。または、 AWS Identity and Access Management (IAM) を使用して、AWS アカウント 内に IAM ユーザー、グループ、ロールを作成し、アイデンティティベースのポリシーを介してバケットとオブジェクトへのアクセスを管理できます。詳細については、「[Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)」を参照してください。

これらのアクセス管理オプションをナビゲートしやすくするために、Amazon S3 カスタマーの一般的なユースケースと各 S3 アクセス管理ツールの推奨事項を以下に示します。

### AWS アカウント所有者が同じアカウント内のユーザーとのみバケットを共有したい
<a name="access-mgmt-use-case-1"></a>

すべてのアクセス管理ツールで、この基本的なユースケースを満たすことができます。このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **バケットポリシー** – 1 つのバケットまたは少数のバケットへのアクセスを許可する場合、またはバケットのアクセス許可がバケット間で類似している場合は、バケットポリシーを使用します。バケットポリシーでは、バケットごとに 1 つのポリシーを管理します。詳細については、「[Amazon S3 のバケットポリシー](bucket-policies.md)」を参照してください。
+ **アイデンティティベースのポリシー** – バケットごとにアクセス許可が異なるバケットが多数あり、管理するユーザーロールはわずかの場合は、ユーザー、グループ、またはロールに IAM ポリシーを使用できます。IAM ポリシーは、他の AWS リソースや Amazon S3 リソースへのユーザーアクセスを管理する場合にも適しています。詳細については、「[例 1: バケット所有者がユーザーにバケットのアクセス許可を付与する](example-walkthroughs-managing-access-example1.md)」を参照してください。
+ **S3 Access Grants** – S3 Access Grants を使用すると、S3 バケット、プレフィックス、またはオブジェクトへのアクセスを許可できます。S3 Access Grants では、さまざまなオブジェクトレベルのアクセス許可を大規模に指定できますが、バケットポリシーのサイズは 20 KB に制限されています。詳細については、「[S3 Access Grants の開始方法](access-grants-get-started.md)」を参照してください。
+ **Access Points** - バケットにアタッチされる名前付きのネットワークエンドポイントである Access Points を使用できます。バケットには最大 10,000 個のアクセスポイントをアタッチできます。各アクセスポイントでは、個別のアクセス許可やネットワークコントロールを適用することで、S3 オブジェクトへのアクセスをきめ細かく制御できます。詳細については、「[アクセスポイントを使用した共有データセットへのアクセスの管理](access-points.md)」を参照してください。

### AWS アカウント所有者が別の AWS アカウントのユーザーとバケットまたはオブジェクトを共有したい (クロスアカウント）
<a name="access-mgmt-use-case-2"></a>

別の AWS アカウントにアクセス許可を付与するには、バケットポリシーまたは次のいずれかの推奨アクセス管理ツールを使用する必要があります。このユースケースでは、アイデンティティベースのアクセスポリシーを使用できません。クロスアカウントアクセスの付与に関する詳細は、「[Amazon S3 バケット内のオブジェクトへのクロスアカウントアクセスを提供するには、どうしたらいいですか?](https://repost.aws/knowledge-center/cross-account-access-s3)」を参照してください。

このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **バケットポリシー** - バケットポリシーでは、バケットごとに 1 つのポリシーを管理します。詳細については、「[Amazon S3 のバケットポリシー](bucket-policies.md)」を参照してください。
+ **S3 Access Grants** – S3 Access Grants を使用すると、S3 バケット、プレフィックス、またはオブジェクトへのクロスアカウントアクセスを許可できます。S3 Access Grants を使用すると、さまざまなオブジェクトレベルのアクセス許可を大規模に指定できますが、バケットポリシーのサイズは 20 KB に制限されています。詳細については、「[S3 Access Grants の開始方法](access-grants-get-started.md)」を参照してください。
+ **Access Points** - バケットにアタッチされる名前付きのネットワークエンドポイントである Access Points を使用できます。バケットには最大 10,000 個のアクセスポイントをアタッチできます。各アクセスポイントでは、個別のアクセス許可やネットワークコントロールを適用することで、S3 オブジェクトへのアクセスをきめ細かく制御できます。詳細については、「[アクセスポイントを使用した共有データセットへのアクセスの管理](access-points.md)」を参照してください。

### AWS アカウント所有者またはバケット所有者が、オブジェクトレベルまたはプレフィックスレベルでアクセス許可を付与する必要があり、これらのアクセス許可がオブジェクトごとまたはプレフィックスごとに異なる。
<a name="access-mgmt-use-case-3"></a>

バケットポリシーでは、例えば、特定の[キー名のプレフィックス](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix)を共有するバケット内のオブジェクト、または特定のタグを持つオブジェクトへのアクセスを許可できます。例えば、キー名プレフィックス `logs/` で始まるオブジェクトの読み取り権限を付与できます。ただし、アクセス許可がオブジェクトごとに異なる場合、特にバケットポリシーのサイズが 20 KB に制限されているため、バケットポリシーを使用して個々のオブジェクトへのアクセス許可を付与することは実用的でない可能性があります。

このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **S3 Access Grants** – S3 Access Grants を使用すると、オブジェクトレベルまたはプレフィックスレベルのアクセス許可を管理できます。バケットポリシーとは異なり、S3 Access Grants を使用すると、さまざまなオブジェクトレベルのアクセス許可を大規模に指定できます。バケットポリシーのサイズは 20 KB に制限されています。詳細については、「[S3 Access Grants の開始方法](access-grants-get-started.md)」を参照してください。
+ **Access Points** – アクセスポイントを使用すると、オブジェクトレベルまたはプレフィックスレベルのアクセス許可を管理できます。Access Points は名前付きのネットワークエンドポイントで、バケットにアタッチされます。バケットには最大 10,000 個のアクセスポイントをアタッチできます。各アクセスポイントでは、個別のアクセス許可やネットワークコントロールを適用することで、S3 オブジェクトへのアクセスをきめ細かく制御できます。詳細については、「[アクセスポイントを使用した共有データセットへのアクセスの管理](access-points.md)」を参照してください。
+ **ACL** – 特に ACL はオブジェクトごと負荷できる許可数が 100 個に制限されているため、アクセスコントロールリスト (ACL) の使用はお勧めしません。ただし、ACL を有効にした場合、バケット設定で *[オブジェクト所有者]* を *[希望するバケット所有者]* と *[ACL 有効]* に設定します。この設定では、新しいオブジェクトが `bucket-owner-full-control` 既定 ACL はオブジェクトライターではなく、バケット所有者によって自動的に所有されます。次に、XML 形式のアクセスポリシーであるオブジェクト ACL を使用して、他のユーザーにオブジェクトへのアクセスを許可できます。詳細については、「[アクセスコントロールリスト (ACL) の概要](acl-overview.md)」を参照してください。

### AWS アカウント所有者またはバケット所有者が、特定のアカウント ID のみにバケットアクセスを制限したい
<a name="access-mgmt-use-case-4"></a>

このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **バケットポリシー** - バケットポリシーでは、バケットごとに 1 つのポリシーを管理します。詳細については、「[Amazon S3 のバケットポリシー](bucket-policies.md)」を参照してください。
+ **Access Points** – Access Points は名前付きのネットワークエンドポイントで、バケットにアタッチされます。バケットには最大 10,000 個のアクセスポイントをアタッチできます。各アクセスポイントでは、個別のアクセス許可やネットワークコントロールを適用することで、S3 オブジェクトへのアクセスをきめ細かく制御できます。詳細については、「[アクセスポイントを使用した共有データセットへのアクセスの管理](access-points.md)」を参照してください。

### AWS アカウント 所有者またはバケット所有者が、データにアクセスするすべてのユーザーまたはアプリケーションに対して個別のエンドポイントを必要としている
<a name="access-mgmt-use-case-5"></a>

このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **Access Points** – Access Points は名前付きのネットワークエンドポイントで、バケットにアタッチされます。バケットには最大 10,000 個のアクセスポイントをアタッチできます。各アクセスポイントでは、個別のアクセス許可やネットワークコントロールを適用することで、S3 オブジェクトへのアクセスをきめ細かく制御できます。各アクセスポイントは、基になるバケットにアタッチされたバケットポリシーと連動して機能するカスタマイズされたアクセスポイントポリシーを適用します。詳細については、「[アクセスポイントを使用した共有データセットへのアクセスの管理](access-points.md)」を参照してください。

### AWS アカウント所有者またはバケット所有者が、S3 の仮想プライベートクラウド (VPC)エンドポイントからのアクセスを管理する必要がある
<a name="access-mgmt-use-case-6"></a>

Amazon S3 の仮想プライベートクラウド (VPC) エンドポイントは、S3 への接続のみを許可する VPC 内の論理エンティティです。このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **VPC 設定のバケット** – バケットポリシーを使用して、バケットへのアクセスを許可されているユーザーと、バケットがアクセスできる VPC エンドポイントを制御できます。詳細については、「[バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール](example-bucket-policies-vpc-endpoint.md)」を参照してください。
+ **アクセスポイント** – アクセスポイントを設定する場合、アクセスポイントポリシーを使用できます。仮想プライベートクラウド (VPC) からのリクエストのみを受け付けるようにアクセスポイントを設定することで、プライベートネットワークへの Amazon S3 データアクセスを制限できます。また、アクセスポイントごとにカスタムのブロックパブリックアクセスを設定することもできます。詳細については、「[アクセスポイントを使用した共有データセットへのアクセスの管理](access-points.md)」を参照してください。

### AWS アカウント所有者またはバケット所有者が静的ウェブサイトを公開する必要がある
<a name="access-mgmt-use-case-7"></a>

S3 を使用すると、静的ウェブサイトをホストし、S3 バケットからホストされているウェブサイトのコンテンツを誰でも閲覧できるようになります。

このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **Amazon CloudFront** – このソリューションでは、バケットのコンテンツへのすべてのパブリックアクセスを継続的にブロックしながら、Amazon S3 静的ウェブサイトをパブリックにホストできます。4 つすべての S3 の [パブリックアクセスをブロック] 設定を有効にしたまま、S3 静的ウェブサイトをホストする場合は、Amazon CloudFront のオリジンアクセスコントロール (OAC) を使用できます。Amazon CloudFront は、セキュアな静的ウェブサイトをセットアップするために必要な機能を提供します。また、このソリューションを使用しない Amazon S3 静的ウェブサイトは、HTTP エンドポイントのみをサポートします。CloudFront は、耐久性に優れた Amazon S3 のあるストレージを使用し、HTTPS などの追加のセキュリティヘッダーを提供します。HTTPS では、通常の HTTP リクエストを暗号化し、一般的なサイバー攻撃から保護することで、セキュリティが強化されます。

  詳細については、**「Amazon CloudFront デベロッパーガイド」の「[安全な静的ウェブサイトの使用開始](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/getting-started-secure-static-website-cloudformation-template.html)」を参照してください。
+ **Amazon S3 バケットをパブリックにアクセス可能にする** – パブリックにアクセス可能な静的ウェブサイトとして使用できるようにバケットを設定できます。
**警告**  
この方法はお勧めしていません。代わりに、Amazon CloudFront の一部として Amazon S3 静的ウェブサイトを使用することをお勧めします。詳細については、前のオプションを参照するか、「[安全な静的ウェブサイトの使用開始](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/getting-started-secure-static-website-cloudformation-template.html)」を参照してください。

  Amazon CloudFront を使用せずに Amazon S3 静的ウェブサイトを作成するには、まずすべてのパブリックアクセスブロック設定をオフにする必要があります。静的ウェブサイトのバケットポリシーを記述するときは、`ListObject` または `PutObject` アクセス許可ではなく、`s3:GetObject` アクションのみを指定してください。これにより、ユーザーがバケット内のすべてのオブジェクトを表示したり、独自のコンテンツを追加したりできなくなります。詳細については、「[ウェブサイトアクセスのアクセス許可の設定](WebsiteAccessPermissionsReqd.md)」を参照してください。

### AWS アカウント所有者またはバケット所有者がバケットのコンテンツを公開したい
<a name="access-mgmt-use-case-8"></a>

新しい Amazon S3 バケットを作成する場合、*パブリックアクセスブロック*設定はデフォルトで有効になっています。ブロックパブリックアクセスの詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。

バケットへのすべてのパブリックアクセスを許可することはお勧めしません。ただし、特定のユースケースで設定する必要がある場合は、このユースケースで次のアクセス管理ツールを使用することをお勧めします。
+ **ブロックパブリックアクセス設定を無効にする** – バケット所有者は、バケットへの認証されていないリクエストを許可できます。例えば、認証されていない [Put Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) リクエストは、バケットにパブリックバケットポリシーが適用されている場合や、バケットの ACL でパブリックアクセス許可が付与されている場合は許可されます。認証されていないリクエストはすべて、他の任意の AWS ユーザー、または認証されていない匿名ユーザーによって行われます。このユーザーは、特定の正規ユーザー ID `65a011a29cdf8ec533ec3d1ccaae921c` によって、ACL で表されます。オブジェクトが `WRITE` または `FULL_CONTROL` にアップロードされた場合、特にすべてのユーザーグループまたは匿名ユーザーへのアクセスが許可されます。パブリックバケットポリシーとパブリックアクセスコントロールリスト (ACL) の詳細については、[「パブリック」の意味](access-control-block-public-access.md#access-control-block-public-access-policy-status) を参照してください。

### AWS アカウント所有者またはバケット所有者がアクセスポリシーのサイズ制限を超えた
<a name="access-mgmt-use-case-9"></a>

バケットポリシーとアイデンティティベースのポリシーには、どちらも 20 KB のサイズ制限があります。アクセス許可の要件が複雑な場合、このサイズ制限を超える可能性があります。

このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **Access Points** — ユースケースで機能する場合、アクセスポイントを使用します。アクセスポイントでは、各バケットには複数の名前付きネットワークエンドポイントがあり、それぞれに基盤となるバケットポリシーで動作する独自のアクセスポイントポリシーがあります。ただし、アクセスポイントはバケットではなくオブジェクトに対してのみ動作し、クロスリージョンレプリケーションはサポートされていません。詳細については、「[アクセスポイントを使用した共有データセットへのアクセスの管理](access-points.md)」を参照してください。
+ **S3 Access Grants** – S3 Access Grants を使用します。S3 Access Grants は、バケット、プレフィックス、またはオブジェクトへのアクセス権限を付与する非常に多数の許可をサポートしています。詳細については、「[S3 Access Grants の開始方法](access-grants-get-started.md)」を参照してください。

### AWS アカウント所有者または管理者ロールが、社内ディレクトリ内のユーザーまたはグループにバケット、プレフィックス、またはオブジェクトへの直接アクセスを許可したい
<a name="access-mgmt-use-case-10"></a>

AWS Identity and Access Management (IAM) を介してユーザー、グループ、ロールを管理する代わりに、社内ディレクトリを AWS IAM アイデンティティセンター に追加できます。詳細については、「[IAM Identity Center とは](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)」を参照してください。

AWS IAM アイデンティティセンター に社内ディレクトリを追加したら、以下のアクセス管理ツールを使用して、社内ディレクトリアイデンティティに S3 リソースへのアクセス権を付与することをお勧めします。
+ **S3 Access Grants** – S3 Access Grants を使用します。S3 Access Grants は、社内ディレクトリ内のユーザーまたはロールへのアクセスの付与をサポートしています。詳細については、「[S3 Access Grants の開始方法](access-grants-get-started.md)」を参照してください。

### AWS アカウント所有者またはバケット所有者が、CloudFront ログを S3 バケットに書き込むためのアクセス権をAWS CloudFront サービスに付与したい
<a name="access-mgmt-use-case-11"></a>

このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **バケット ACL** – バケット ACL の唯一の推奨されるユースケースは、 Amazon CloudFront `awslogsdelivery` アカウントなどの特定の AWS のサービスに許可を付与することです。ディストリビューションを作成または更新して、CloudFront ロギングを有効にすると、CloudFront はバケット ACL を更新して、バケットにログを書き込むための `awslogsdelivery` 許可を `FULL_CONTROL` アカウントに付与します。詳細については、**「Amazon CloudFront デベロッパーガイド」の「[標準ログ記録の設定とログファイルへのアクセスに必要なアクセス許可](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#AccessLogsBucketAndFileOwnership)」を参照してください。ログを保存するバケットが S3 オブジェクト所有権の**バケット所有者の強制設定を使用して ACL を無効にすると、CloudFront はバケットにログを書き込むことができません。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

### バケット所有者が、他のユーザーによってバケットに追加されるオブジェクトを完全に制御したい。
<a name="access-mgmt-use-case-12"></a>

バケットポリシー、アクセスポイント、または S3 Access Grants を使用して、バケットにオブジェクトをアップロードするためのアクセス権を他のアカウントに付与できます。バケットへのクロスアカウントアクセスが許可されている場合、バケットにアップロードされたオブジェクトに対して完全なコントロールを維持していることを確認できます。

このユースケースでは、以下のアクセス管理ツールをお勧めします。
+ **オブジェクト所有者** – バケットレベルの設定 *[オブジェクト所有者]* をデフォルトの *[バケット所有者の強制]* 設定のままにします。

## アクセス管理のトラブルシューティング
<a name="access-management-troubleshooting"></a>

以下のリソースは、S3 アクセス管理に関する問題のトラブルシューティングに役立ちます。

**アクセス拒否 (403 Forbidden) エラーのトラブルシューティング**  
アクセス拒否の問題が発生した場合は、アカウントレベルとバケットレベルの設定を確認してください。また、アクセス権利を付与するために使用するアクセス管理機能をチェックして、ポリシー、設定、または構成が正しいことを確認します。Amazon S3 のアクセス拒否 (403 禁止) エラーの一般的な原因の詳細については、「[Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング](troubleshoot-403-errors.md)」を参照してください。

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

IAM Access Analyzer for S3 では、バケットへのすべてのパブリックアクセスを 1 つのアクションでブロックできます。特定のユースケースをサポートするためにパブリックアクセスが必要な場合を除き、バケットへのすべてのパブリックアクセスをブロックすることをお勧めします。すべてのパブリックアクセスをブロックする前に、アプリケーションがパブリックアクセスなしで正常に動作することを確認してください。詳細については、「[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md)」を参照してください。

また、バケットレベルのアクセス許可の設定を参照して、詳細なアクセスレベルを設定することもできます。パブリックアクセスまたは共有アクセスを必要とする特定の検証済みユースケースについては、バケットの調査結果をアーカイブすることで、バケットをパブリックまたは共有とすることを確定して記録できます。これらのバケット設定はいつでも再確認および変更できます。結果は、監査目的で CSV レポートとしてダウンロードすることもできます。

IAM Access Analyzer for S3 は、Amazon S3 コンソールで追加料金なしで使用できます。IAM Access Analyzer for S3 は、AWS Identity and Access Management (IAM) IAM Access Analyzer を利用しています。Amazon S3 コンソールで IAM Access Analyzer for S3 を使用するには、[IAM コンソール](https://console.aws.amazon.com/iam/)にアクセスして、IAM Access Analyzer で個別のリージョンごとにアカウントレベルのアナライザーを作成する必要があります。

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

**ログ記録とモニタリング**  
モニタリングは、アクセス障害を簡単にデバッグできるように、Amazon S3 ソリューションの信頼性、可用性、パフォーマンスを維持するうえで重要な部分です。ログ記録により、ユーザーが受け取ったエラーや、いつどのようなリクエストが行われたかを把握できます。AWS には、Amazon S3 リソースをモニタリングするための以下のようなツールがいくつかあります。
+ AWS CloudTrail
+ Amazon S3 アクセスログ
+ AWS Trusted Advisor
+ Amazon CloudWatch

詳細については、「[Amazon S3 でのログ記録とモニタリング](monitoring-overview.md)」を参照してください。

# Amazon S3 用 Identity and Access Management
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) は、管理者が AWS リソースへのアクセスを安全に制御するために役立つ AWS のサービス です。IAM 管理者は、誰が**認証 (サインイン) され、Amazon S3 リソースを使用する**認可を受ける (許可がある) ことができるかを制御します。IAM は、追加費用なしで使用できる AWS のサービスです。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**注記**  
Amazon S3 Express One Zone ストレージクラスをディレクトリバケットで使用する方法の詳細については、「[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)」と「[ディレクトリバケットの使用](directory-buckets-overview.md)」を参照してください。

**Topics**
+ [対象者](#security_iam_audience)
+ [アイデンティティによる認証](#security_iam_authentication)
+ [ポリシーを使用したアクセス権の管理](#security_iam_access-manage)
+ [Amazon S3 での IAM の機能](security_iam_service-with-iam.md)
+ [Amazon S3 がリクエストを許可する仕組み](how-s3-evaluates-access-control.md)
+ [Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)
+ [Amazon S3 のポリシーとアクセス許可](access-policy-language-overview.md)
+ [Amazon S3 のバケットポリシー](bucket-policies.md)
+ [Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)
+ [チュートリアル: ポリシーを使用した Amazon S3 リソースへのアクセスの管理](example-walkthroughs-managing-access.md)
+ [Amazon S3 ストレージレンズでのサービスにリンクされたロールの使用](using-service-linked-roles.md)
+ [Amazon S3 アイデンティティとアクセスのトラブルシューティング](security_iam_troubleshoot.md)
+ [AWSAmazon S3 の マネージドポリシー](security-iam-awsmanpol.md)

## 対象者
<a name="security_iam_audience"></a>

AWS Identity and Access Management (IAM) の使用方法は、ロールによって異なります。
+ **サービスユーザー** - 機能にアクセスできない場合は、管理者にアクセス許可をリクエストします (「[Amazon S3 アイデンティティとアクセスのトラブルシューティング](security_iam_troubleshoot.md)」を参照)。
+ **サービス管理者** - ユーザーアクセスを決定し、アクセス許可リクエストを送信します (「[Amazon S3 での IAM の機能](security_iam_service-with-iam.md)」を参照)
+ **IAM 管理者** - アクセスを管理するためのポリシーを作成します (「[Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)」を参照)

## アイデンティティによる認証
<a name="security_iam_authentication"></a>

認証とは、アイデンティティ認証情報を使用して AWS にサインインする方法です。ユーザーは、IAM ユーザー の AWS アカウントのルートユーザー として、または IAM ロールを引き受けることによって、認証される 必要があります。

AWS IAM アイデンティティセンター (IAM アイデンティティセンター)、シングルサインオン認証、Google/Facebook 認証情報などの ID ソースからの認証情報を使用して、フェデレーテッドアイデンティティとしてサインインできます。サインインの詳細については、「*AWS サインイン ユーザーガイド*」の「[AWS アカウントにサインインする方法](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)」を参照してください。

プログラムによるアクセスの場合、AWS はリクエストに暗号で署名するための SDK と CLI を提供します。詳細については、「*IAM ユーザーガイド*」の「[API リクエストに対する AWS 署名バージョン 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)」を参照してください。

### AWS アカウント のルートユーザー
<a name="security_iam_authentication-rootuser"></a>

 AWS アカウントを作成すると、すべての AWS のサービスとリソースに対する完全なアクセス権を持つ AWS アカウント *ルートユーザー*と呼ばれる 1 つのサインイン ID を使用して開始します。日常的なタスクには、ルートユーザーを使用しないことを強くお勧めします。ルートユーザー認証情報を必要とするタスクについては、「*IAM ユーザーガイド*」の「[ルートユーザー認証情報が必要なタスク](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)」を参照してください。

### フェデレーテッドアイデンティティ
<a name="security_iam_authentication-federated"></a>

ベストプラクティスでは、人間のユーザーが一時的な認証情報を使用して AWS のサービス にアクセスする際、アイデンティティプロバイダーとのフェデレーションを使用することが求められます。

*フェデレーテッドアイデンティティ*は、エンタープライズディレクトリ、ウェブ ID プロバイダー、Directory Service のユーザーであり、ID ソースからの認証情報を使用して AWS のサービス にアクセスするユーザーです。フェデレーテッドアイデンティティは、一時的な認証情報を提供するロールを引き受けます。

アクセスを一元管理する場合は、AWS IAM アイデンティティセンター をお勧めします。詳細については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[IAM アイデンティティセンターとは](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)」を参照してください。

### IAM ユーザーとグループ
<a name="security_iam_authentication-iamuser"></a>

*[IAM ユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)*は、特定の個人やアプリケーションに対する特定のアクセス許可を持つアイデンティティです。長期認証情報を持つ IAM ユーザーの代わりに一時的な認証情報を使用することをお勧めします。詳細は「*IAM ユーザーガイド*」の「[人間のユーザーが一時的な認証情報を使用して AWS にアクセスするには ID プロバイダーとのフェデレーションの使用が必要です](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)」を参照してください。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)は、IAM ユーザーの集合を指定し、大量のユーザーに対するアクセス許可の管理を容易にします。詳細については、「*IAM ユーザーガイド*」の「[IAM ユーザーに関するユースケース](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)」を参照してください。

### IAM ロール
<a name="security_iam_authentication-iamrole"></a>

*[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*は、特定のアクセス許可を持つアイデンティであり、一時的な認証情報を提供します。[ユーザーから IAM ロール (コンソール) に切り替える](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)、または AWS CLI や AWS API オペレーションを呼び出すことで、ロールを引き受けることができます。詳細については、「*IAM ユーザーガイド*」の「[ロールを引き受けるための各種方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)」を参照してください。

IAM ロールは、フェデレーションユーザーアクセス、一時的な IAM ユーザーのアクセス許可、クロスアカウントアクセス、クロスサービスアクセス、および Amazon EC2 で実行するアプリケーションに役立ちます。詳細については、*IAM ユーザーガイド* の [IAM でのクロスアカウントリソースアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) を参照してください。

## ポリシーを使用したアクセス権の管理
<a name="security_iam_access-manage"></a>

AWS でアクセスを制御するには、ポリシーを作成して AWS ID またはリソースにアタッチします。ポリシーは、アイデンティティやリソースとの関連付けに伴うアクセス許可を定義します。AWS は、プリンシパルがリクエストを行うときに、これらのポリシーを評価します。大半のポリシーは JSON ドキュメントとして AWS に保存されます。JSON ポリシードキュメントの詳細については、「*IAM ユーザーガイド*」の「[JSON ポリシー概要](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)」を参照してください。

管理者は、ポリシーを使用して、どの**プリンシパル**がどの**リソース**に対して、どのような**条件**で**アクション**を実行できるかを定義することで、誰が何にアクセスできるかを指定します。

デフォルトでは、ユーザーやロールにアクセス許可はありません。IAM 管理者は IAM ポリシーを作成してロールに追加し、このロールをユーザーが引き受けられるようにします。IAM ポリシーは、オペレーションの実行方法を問わず、アクセス許可を定義します。

### アイデンティティベースのポリシー
<a name="security_iam_access-manage-id-based-policies"></a>

アイデンティティベースのポリシーは、アイデンティティ (ユーザー、グループ、またはロール) にアタッチできる JSON アクセス許可ポリシードキュメントです。これらのポリシーは、アイデンティティがどのリソースに対してどのような条件下でどのようなアクションを実行できるかを制御します。アイデンティティベースポリシーの作成方法については、*IAM ユーザーガイド* の [カスタマー管理ポリシーでカスタム IAM アクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) を参照してください。

アイデンティティベースのポリシーは、*インラインポリシー* (単一の ID に直接埋め込む) または*管理ポリシー* (複数の ID にアタッチされたスタンドアロンポリシー) にすることができます。管理ポリシーとインラインポリシーのいずれかを選択する方法については、「*IAM ユーザーガイド*」の「[管理ポリシーとインラインポリシーのいずれかを選択する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)」を参照してください。

### リソースベースのポリシー
<a name="security_iam_access-manage-resource-based-policies"></a>

リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。例としては、IAM *ロール信頼ポリシー*や Amazon S3 *バケットポリシー*などがあります。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスを制御できます。リソースベースのポリシーでは、[プリンシパルを指定する](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)必要があります。

リソースベースのポリシーは、そのサービス内にあるインラインポリシーです。リソースベースのポリシーで IAM の AWS マネージドポリシーを使用することはできません。

### その他のポリシータイプ
<a name="security_iam_access-manage-other-policies"></a>

AWS は、より一般的なポリシータイプで付与された最大数のアクセス許可を設定できる、追加のポリシータイプをサポートしています。
+ **アクセス許可の境界** – アイデンティティベースのポリシーで IAM エンティティに付与することのできるアクセス許可の数の上限を設定します。詳細については、「*IAM ユーザーガイド*」の「[IAM エンティティのアクセス許可境界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)」を参照してください。
+ **サービスコントロールポリシー (SCP)** - AWS Organizations 内の組織または組織単位の最大のアクセス許可を指定します。詳細については、「*AWS Organizations ユーザーガイド*」の「[サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)」を参照してください。
+ **リソースコントロールポリシー (RCP)** – は、アカウント内のリソースで利用できる最大数のアクセス許可を定義します。詳細については、「*AWS Organizations ユーザーガイド*」の「[リソースコントロールポリシー (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)」を参照してください。
+ **セッションポリシー** – ロールまたはフェデレーションユーザーの一時セッションを作成する際にパラメータとして渡される高度なポリシーです。詳細については、「*IAM ユーザーガイド*」の「[セッションポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)」を参照してください。

### 複数のポリシータイプ
<a name="security_iam_access-manage-multiple-policies"></a>

1 つのリクエストに複数のタイプのポリシーが適用されると、結果として作成されるアクセス許可を理解するのがさらに難しくなります。複数のポリシータイプが関連するとき、リクエストを許可するかどうかを AWS が決定する方法の詳細については、*IAM ユーザーガイド* の [ポリシーの評価ロジック](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) を参照してください。

# Amazon S3 での IAM の機能
<a name="security_iam_service-with-iam"></a>

IAM を使用して Amazon S3 へのアクセスを管理する前に、Amazon S3 で利用できる IAM 機能について理解しておく必要があります。






**Amazon S3 で使用できる IAM の機能**  

| IAM 機能 | Amazon S3 のサポート | 
| --- | --- | 
|  [アイデンティティベースのポリシー](#security_iam_service-with-iam-id-based-policies)  |   あり  | 
|  [リソースベースのポリシー](#security_iam_service-with-iam-resource-based-policies)  |   はい  | 
|  [ポリシーアクション](#security_iam_service-with-iam-id-based-policies-actions)  |   あり  | 
|  [ポリシーリソース](#security_iam_service-with-iam-id-based-policies-resources)  |   はい  | 
|  [ポリシー条件キー (サービス固有)](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   はい  | 
|  [ACL](#security_iam_service-with-iam-acls)  |   はい  | 
|  [ABAC (ポリシー内のタグ)](#security_iam_service-with-iam-tags)  |   部分的  | 
|  [一時認証情報](#security_iam_service-with-iam-roles-tempcreds)  |   あり  | 
|  [転送アクセスセッション (FAS)](#security_iam_service-with-iam-principal-permissions)  |   あり  | 
|  [サービスロール](#security_iam_service-with-iam-roles-service)  |   あり  | 
|  [サービスリンクロール](#security_iam_service-with-iam-roles-service-linked)  |   部分的  | 

Amazon S3 およびその他の AWS サービスがほとんどの IAM 機能との連携する方法の詳細については、「IAM ユーザーガイド」の「[IAM と連携する AWS サービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

## Amazon S3 のアイデンティティベースのポリシー
<a name="security_iam_service-with-iam-id-based-policies"></a>

**アイデンティティベースのポリシーのサポート:** あり

アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティにアタッチできる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。アイデンティティベースポリシーの作成方法については、「*IAM ユーザーガイド*」の「[カスタマー管理ポリシーでカスタム IAM アクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、およびアクションを許可または拒否する条件を指定できます。JSON ポリシーで使用できるすべての要素について学ぶには、「*IAM ユーザーガイド*」の「[IAM JSON ポリシーの要素のリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)」を参照してください。

### Amazon S3 のアイデンティティベースのポリシー例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>

Amazon S3 のアイデンティティベースのポリシー例を確認するには、「[Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)」を参照してください。

## Amazon S3 内のリソースベースのポリシー
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**リソースベースのポリシーのサポート:** あり

リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。リソースベースのポリシーには例として、IAM *ロールの信頼ポリシー*や Amazon S3 *バケットポリシー*があげられます。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスをコントロールできます。ポリシーがアタッチされているリソースの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーで、[プリンシパルを指定する](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーションユーザー、または AWS のサービス を含めることができます。

クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。詳細については、IAM ユーザーガイド**の[IAM でのクロスアカウントリソースアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)を参照してください。

Amazon S3 サービスは、*バケットポリシー*、*アクセスポイントポリシー*、および*アクセス許可*をサポートします。
+ バケットポリシーは、Amazon S3 バケットにアタッチされるリソースベースのポリシーです。リソースポリシーは、バケットに対してアクションを実行できるプリンシパルを定義します。
+ アクセスポイントポリシーは、基になるバケットポリシーと組み合わせて評価されるリソースベースのポリシーです。
+ アクセス許可は、Amazon S3 内のデータへのアクセス許可をプレフィックス、バケット、またはオブジェクトごとに定義するための簡略化されたモデルです。S3 Access Grants の詳細については、「[S3 Access Grants でのアクセス管理](access-grants.md)」を参照してください。

### バケットポリシーのプリンシパル
<a name="s3-bucket-user-policy-specifying-principal-intro"></a>

`Principal` エレメントは、リソースへのアクセスを許可または拒否するユーザー、アカウント、サービス、または他のエンティティを指定します。`Principal` を指定する例を以下に示します。詳細については、「*IAM ユーザーガイド*」の「[プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)」を参照してください。

#### AWS アカウントに許可を付与する
<a name="s3-aws-account-permissions"></a>

AWS アカウントに許可を付与するには、以下の形式を使用してアカウントを指定します。

```
"AWS":"account-ARN"
```

次に例を示します。

```
"Principal":{"AWS":"arn:aws:iam::AccountIDWithoutHyphens:root"}
```

```
"Principal":{"AWS":["arn:aws:iam::AccountID1WithoutHyphens:root","arn:aws:iam::AccountID2WithoutHyphens:root"]}
```

**注記**  
上記の例では、アカウントレベルにアクセス許可を委任する権限をルートユーザーに付与します。ただし、アカウント内の特定のロールとユーザーに対しては、IAM ポリシーが引き続き必要です。

#### IAM ユーザーにアクセス許可を付与する
<a name="s3-aws-user-permissions"></a>

アカウントの IAM ユーザーにアクセス許可を付与するには、`"AWS":"user-ARN"` の名前と値のペアを指定する必要があります。

```
"Principal":{"AWS":"arn:aws:iam::account-number-without-hyphens:user/username"}
```

ステップバイステップの手順を説明する詳細な例については、[例 1: バケット所有者がユーザーにバケットのアクセス許可を付与する](example-walkthroughs-managing-access-example1.md) および [例 3: バケット所有者が自分の所有していないオブジェクトに対するアクセス許可を付与する](example-walkthroughs-managing-access-example3.md) を参照してください。

**注記**  
バケットポリシーを更新した後に IAM ID を削除すると、バケットポリシーのプリンシパル要素には ARN の代わりに一意の ID が表示されます。これらの一意な ID は再利用されることがないため、すべてのポリシーステートメントから一意の ID を持つプリンシパルを安全に削除できます。一意の ID の詳細については、「*IAM ユーザーガイド*」の「[IAM ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids)」を参照してください。

#### 匿名アクセス許可を付与する
<a name="s3-anonymous-permissions"></a>

**警告**  
Simple Storage Service (Amazon S3) バケットへの匿名アクセスを付与するときは注意が必要です。匿名アクセスを付与すると、世界中のすべてのユーザーがバケットにアクセスできます。種類にかかわらず、S3 バケットへの匿名書き込みアクセスは一切付与しないことを強くお勧めします。

匿名アクセスと呼ばれるアクセス許可を全員に付与するには、`"*"` の値としてワイルドカード (`Principal`) を設定します。例えば、バケットを Web サイトとして設定する場合、以下のように、バケット内のすべてのオブジェクトを公開し、誰でもアクセスできるようにすることができます。

```
"Principal":"*"
```

```
"Principal":{"AWS":"*"}
```

リソースベースのポリシーで、`"Principal": "*"` 効果と共に `Allow` を使用すると、AWS にサインしていなくても、誰でもリソースにアクセスできるようになります。

リソースベースのポリシーで、`Allow` 効果と共に `"Principal" : { "AWS" : "*" }` を使用すると、同じパーティションのどのアカウントのルートユーザー、IAM ユーザー、引き受けたロールのセッション、フェデレーティッドユーザーでも、リソースにアクセスできるようになります。

匿名ユーザーの場合、これら 2 つの方法は同等です。詳細については、「*IAM ユーザーガイド*」の「[すべてのプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-anonymous)」を参照してください。

ワイルドカードとして使用して、プリンシパルの名前または ARN の一部に一致させることはできません。

**重要**  
AWS アクセスコントロールポリシーでは、プリンシパル "\$1" と \$1"AWS": "\$1"\$1 は同じように動作します。

#### リソースのアクセス許可の制限
<a name="s3-restrict-permissions"></a>

リソースポリシーを使用して、それ以外の場合は IAM プリンシパルで利用できるリソースへのアクセスを制限することもできます。`Deny` ステートメントを使用してアクセスを防止します。

次の例では、安全な転送プロトコルが使用されていない場合はアクセスをブロックします。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyBucketAccessIfSTPNotUsed",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      }
    }
  ]
}
```

------

このポリシーでは、この方法を使用して特定のアカウントやプリンシパルのみへのアクセスの拒否を試みるのではなく、`"Principal": "*"` を使用して、この制限をすべてのユーザーに適用することがベストプラクティスです。

#### CloudFront の URL を使用したアクセスの要求
<a name="require-cloudfront-urls"></a>

Amazon S3 の URL の代わりに CloudFront の URL を使用することで、ユーザーが Amazon S3 のコンテンツのみにアクセスするように制限することができます。これを行うには、CloudFront オリジンアクセスコントロール (OAC) を作成します。その後、S3 データのアクセス許可を変更します。バケットポリシーでは、次のように CloudFront をプリンシパルとして設定できます。

```
"Principal":{"Service":"cloudfront.amazonaws.com"}
```

ポリシーの `Condition` 要素を使用して、S3 オリジンを含む CloudFront ディストリビューションに代わってリクエストが行われた場合にのみ CloudFront がバケットにアクセスできるようにします。

```
        "Condition": {
           "StringEquals": {
              "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/CloudFront-distribution-ID"
           }
        }
```

CloudFront URL を使用した S3 アクセスの制限の詳細については、「Amazon CloudFront 開発者ガイド」の「[Amazon Simple Storage Service オリジンへのアクセスの制限](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)」を参照してください。**Amazon CloudFront を使用する場合のセキュリティとプライバシーのメリットの詳細については、「[コンテンツへのセキュアなアクセスとアクセス制限の設定](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecurityAndPrivateContent.html)」を参照してください。

### Amazon S3 のリソースベースポリシーの例
<a name="security_iam_service-with-iam-resource-based-policies-examples"></a>
+ Amazon S3 バケットポリシーの例については、「[Amazon S3 のバケットポリシー](bucket-policies.md)」を参照してください。
+ アクセスポイントのポリシーの例については、「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。

## Amazon S3 のポリシーアクション
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**ポリシーアクションのサポート:** あり

管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどのような**リソース**にどのような**条件**で**アクション**を実行できるかということです。

JSON ポリシーの `Action` 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

以下に、S3 API オペレーションと必要なポリシーアクション間のさまざまなタイプのマッピング関係を示します。
+ 同じ名前の 1 対 1 のマッピング。例えば、 `PutBucketPolicy` API オペレーションを使用するには、`s3:PutBucketPolicy` ポリシーアクションが必要です。
+ 異なる名前の 1 対 1 のマッピング。例えば、 `ListObjectsV2` API オペレーションを使用するには、`s3:ListBucket` ポリシーアクションが必要です。
+ 1 対多のマッピング。例えば、`HeadObject` API オペレーションを使用するには、`s3:GetObject` が必要です。また、S3 オブジェクトロックを使用し、オブジェクトのリーガルホールドステータスまたは保持設定を取得したい場合は、`HeadObject` API オペレーションを使用する前に、対応する `s3:GetObjectLegalHold` または `s3:GetObjectRetention` ポリシーアクションも必要です。
+ 1 対多のマッピング。例えば、`ListObjectsV2` または `HeadBucket` API オペレーションを使用するには、`s3:ListBucket` ポリシーアクションが必要です。



ポリシーで使用する Amazon S3 アクションの一覧については、「サービス認可リファレンス」の「[Amazon S3 で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-actions-as-permissions)」を参照してください。**Amazon S3 API オペレーションの完全なリストについては、「*Amazon Simple Storage Service API リファレンス*」の「[Amazon S3 API アクション](https://docs.aws.amazon.com//AmazonS3/latest/API/API_Operations.html)」を参照してください。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

Amazon S3 のポリシーアクションは、アクションの前に次のプレフィックスを使用します。

```
s3
```

単一のステートメントで複数のアクションを指定するには、アクションをカンマで区切ります。

```
"Action": [
      "s3:action1",
      "s3:action2"
         ]
```





### バケットオペレーション
<a name="using-with-s3-actions-related-to-buckets"></a>

バケットオペレーションは、バケットリソースタイプで動作する S3 API オペレーションです。例: `CreateBucket`、`ListObjectsV2`、`PutBucketPolicy`。バケットオペレーションの S3 ポリシーアクションでは、バケットポリシーの `Resource` 要素または IAM アイデンティティベースのポリシーが、次の例形式の S3 バケットタイプの Amazon リソースネーム (ARN) 識別子である必要があります。

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
```

次のバケットポリシーは、アカウント `12345678901` のユーザー `Akua` に [https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutObject.html) API オペレーションを実行し、S3 バケット内のオブジェクトを一覧表示する `s3:ListBucket` アクセス許可を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow Akua to list objects in the bucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Akua"
            },
            "Action": [
            "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
        }
    ]
}
```

------
<a name="bucket-operations-ap"></a>
**汎用バケットのアクセスポイントのポリシーでのバケットオペレーション**  
汎用バケットのアクセスポイントポリシーで付与されるアクセス許可は、基になるバケットで同じアクセス許可が許可される場合にのみ有効です。S3 アクセスポイントを使用する場合は、バケットからアクセスポイントにアクセスコントロールを委任するか、アクセスポイントポリシーで同じアクセス許可を基礎となるバケットのポリシーに追加する必要があります。詳細については、「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。アクセスポイントポリシーでは、バケットオペレーションの S3 ポリシーアクションで、次の形式の `Resource` 要素にアクセスポイント ARN を使用する必要があります。

```
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/example-access-point"
```

次のアクセスポイントポリシーは、`example-access-point` という名前の S3 アクセスポイントを介して [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectsV2.html) API オペレーションを実行する `s3:ListBucket` アクセス許可をアカウント `12345678901` のユーザー `Akua` に付与します。このアクセス許可により、`Akua` は `example-access-point` に関連付けられているバケット内のオブジェクトを一覧表示できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAkuaToListObjectsInBucketThroughAccessPoint",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Akua"
            },
            "Action": [
            "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:us-west-2:111122223333:accesspoint/example-access-point"
        }
    ]
}
```

------

**注記**  
すべてのバケットオペレーションが汎用バケットのアクセスポイントでサポートされているわけではありません。詳細については、「[S3 オペレーションとアクセスポイントの互換性](access-points-service-api-support.md#access-points-operations-support)」を参照してください。
<a name="bucket-operations-ap-directory-buckets"></a>
**ディレクトリバケットのアクセスポイントのポリシーでのバケットオペレーション**  
ディレクトリバケットのアクセスポイントポリシーで付与されるアクセス許可は、基になるバケットで同じアクセス許可が許される場合にのみ有効です。S3 アクセスポイントを使用する場合は、バケットからアクセスポイントにアクセスコントロールを委任するか、アクセスポイントポリシーで同じアクセス許可を基礎となるバケットのポリシーに追加する必要があります。詳細については、「[ディレクトリバケットのアクセスポイントを使用するための IAM ポリシーの設定](access-points-directory-buckets-policies.md)」を参照してください。アクセスポイントポリシーでは、バケットオペレーションの S3 ポリシーアクションで、次の形式の `Resource` 要素にアクセスポイント ARN を使用する必要があります。

```
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/example-access-point--usw2-az1--xa-s3"
```

次のアクセスポイントポリシーは、`example-access-point--usw2-az1--xa-s3` という名前のアクセスポイントを介して [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectsV2.html) API オペレーションを実行する `s3:ListBucket` アクセス許可をアカウント `12345678901` のユーザー `Akua` に付与します。このアクセス許可により、`Akua` は `example-access-point--usw2-az1--xa-s3` に関連付けられているバケット内のオブジェクトを一覧表示できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAkuaToListObjectsInTheBucketThroughAccessPoint",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Akua"
            },
            "Action": [
            "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3express:us-east-1:111122223333:accesspoint/example-access-point-usw2-az1-xa-s3"
        }
    ]
}
```

------

**注記**  
すべてのバケットオペレーションがディレクトリバケットのアクセスポイントでサポートされているわけではありません。詳細については、「[ディレクトリバケットのアクセスポイントのオブジェクトオペレーション](access-points-directory-buckets-service-api-support.md)」を参照してください。

### オブジェクト操作
<a name="using-with-s3-actions-related-to-objects"></a>

オブジェクトオペレーションは、オブジェクトリソースタイプに基づいて実行される S3 API オペレーションです。例: `GetObject`、`PutObject`、`DeleteObject`。オブジェクトオペレーションの S3 ポリシーアクションでは、ポリシーの `Resource` 要素を次の例の形式で S3 オブジェクト ARN にする必要があります。

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
```

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/*"
```

**注記**  
前の例に示すように、オブジェクト ARN にはバケット名の後にスラッシュが含まれている必要があります。

以下のバケットポリシーは、アカウント `12345678901` のユーザー `Akua` に `s3:PutObject` の許可を付与します。このアクセス許可により、`Akua` は [https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutObject.html) API オペレーションを使用して、`amzn-s3-demo-bucket` という名前の S3 バケットにオブジェクトをアップロードできるようになります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow Akua to upload objects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Akua"
            },
            "Action": [
            "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------
<a name="object-operations-ap"></a>
**アクセスポイントポリシーでのオブジェクトオペレーション**  
S3 アクセスポイントを使用してオブジェクトオペレーションへのアクセスを制御する場合、アクセスポイントポリシーを使用できます。アクセスポイントポリシーを使用するとき、オブジェクトオペレーションの S3 ポリシーアクションで、`arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource` 形式の `Resource` 要素にアクセスポイント ARN を使用する必要があります。アクセスポイントを使用するオブジェクトオペレーションの場合、アクセスポイント ARN 全体の後に `/object/` 値を `Resource` 要素に含める必要があります。次に例を示します。

```
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/example-access-point/object/*"
```

```
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/example-access-point/object/prefix/*"
```

次のアクセスポイントポリシーは、アカウント `12345678901` のユーザー `Akua` に `s3:GetObject` アクセス許可を付与します。このアクセス許可により、`Akua` は、アクセスポイントに関連付けられているバケット内のすべてのオブジェクトに対して、`example-access-point` という名前のアクセスポイントを介して [https://docs.aws.amazon.com//AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_GetObject.html) API オペレーションを実行できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow Akua to get objects through access point",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Akua"
            },
            "Action": [
            "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-access-point/object/*"
        }
    ]
}
```

------

**注記**  
すべてのオブジェクトオペレーションがアクセスポイントでサポートされているわけではありません。詳細については、「[S3 オペレーションとアクセスポイントの互換性](access-points-service-api-support.md#access-points-operations-support)」を参照してください。
<a name="object-operations-ap-directory-buckets"></a>
**ディレクトリバケットのアクセスポイントのポリシーでのオブジェクトオペレーション**  
ディレクトリバケットのアクセスポイントを使用してオブジェクトオペレーションへのアクセスを制御する場合、アクセスポイントポリシーを使用できます。アクセスポイントポリシーを使用するとき、オブジェクトオペレーションの S3 ポリシーアクションで、`arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource` 形式の `Resource` 要素にアクセスポイント ARN を使用する必要があります。アクセスポイントを使用するオブジェクトオペレーションの場合、アクセスポイント ARN 全体の後に `/object/` 値を `Resource` 要素に含める必要があります。次に例を示します。

```
"Resource": "arn:aws:s3express:us-west-2:123456789012:accesspoint/example-access-point--usw2-az1--xa-s3/object/*"
```

```
"Resource": "arn:aws:s3express:us-west-2:123456789012:accesspoint/example-access-point--usw2-az1--xa-s3/object/prefix/*"
```

次のアクセスポイントポリシーは、アカウント `12345678901` のユーザー `Akua` に `s3:GetObject` アクセス許可を付与します。このアクセス許可により、`Akua` は、アクセスポイントに関連付けられているバケット内のすべてのオブジェクトに対して、`example-access-point--usw2-az1--xa-s3` という名前のアクセスポイントを介して [https://docs.aws.amazon.com//AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_GetObject.html) API オペレーションを実行できます。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "Allow Akua to get objects through access point",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::12345678901:user/Akua"
            },
            "Action": "s3express:CreateSession","s3:GetObject"
            "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/example-access-point--usw2-az1--xa-s3/object/*"
        }
    ]
}
```

**注記**  
すべてのオブジェクトオペレーションがディレクトリバケットのアクセスポイントでサポートされているわけではありません。詳細については、「[ディレクトリバケットのアクセスポイントのオブジェクトオペレーション](access-points-directory-buckets-service-api-support.md)」を参照してください。

### 汎用バケットオペレーションのアクセスポイント
<a name="using-with-s3-actions-related-to-accesspoint"></a>

アクセスポイントオペレーションは、`accesspoint` リソースタイプで動作する S3 API オペレーションです。例: `CreateAccessPoint`、`DeleteAccessPoint`、`GetAccessPointPolicy`。アクセスポイントオペレーションの S3 ポリシーアクションは、バケットポリシーやアクセスポイントポリシーではなく、IAM アイデンティティベースのポリシーでのみ使用できます。アクセスポイントオペレーションでは、`Resource` 要素を次の例の形式のアクセスポイント ARN にする必要があります。

```
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/example-access-point"
```

次の IAM アイデンティティベースのポリシーは、`example-access-point` という名前の S3 アクセスポイントで [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_GetAccessPointPolicy.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_GetAccessPointPolicy.html) API オペレーションを実行する `s3:GetAccessPointPolicy` アクセス許可を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GrantPermissionToRetrieveTheAccessPointPolicyOfAccessPointExampleAccessPoint",
            "Effect": "Allow",
            "Action": [
            "s3:GetAccessPointPolicy"
            ],
            "Resource": "arn:aws:s3:*:123456789012:accesspoint/example-access-point"
        }
    ]
}
```

------

アクセスポイントを使用してバケットオペレーションへのアクセスを制御する場合は、「[汎用バケットのアクセスポイントのポリシーでのバケットオペレーション](#bucket-operations-ap)」を参照してください。オブジェクトオペレーションへのアクセスを制御するには、「[アクセスポイントポリシーでのオブジェクトオペレーション](#object-operations-ap)」を参照してください。アクセスポイントポリシーの設定方法の詳細については、「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。

### ディレクトリバケットオペレーションのアクセスポイント
<a name="using-with-s3-actions-related-to-accesspoint-directory-buckets"></a>

ディレクトリバケットオペレーションのアクセスポイントは、`accesspoint` リソースタイプで動作する S3 API オペレーションです。例: `CreateAccessPoint`、`DeleteAccessPoint`、`GetAccessPointPolicy`。アクセスポイントオペレーションの S3 ポリシーアクションは、バケットポリシーやアクセスポイントポリシーではなく、IAM アイデンティティベースのポリシーでのみ使用できます。ディレクトリバケットオペレーションのアクセスポイントでは、`Resource` 要素を次の例の形式のアクセスポイント ARN にする必要があります。

```
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/example-access-point--usw2-az1--xa-s3"
```

次の IAM アイデンティティベースのポリシーは、`example-access-point--usw2-az1--xa-s3` という名前のアクセスポイントで [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_GetAccessPointPolicy.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_GetAccessPointPolicy.html) API オペレーションを実行する `s3express:GetAccessPointPolicy` アクセス許可を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GrantPermissionToRetrieveTheAccessPointPolicyOfAccessPointExampleAccessPointUsw2Az1XaS3",
            "Effect": "Allow",
            "Action": [
            "s3express:CreateSession","s3express:GetAccessPointPolicy"
            ],
            "Resource": "arn:aws:s3:*:111122223333:accesspoint/example-access-point"
        }
    ]
}
```

------

次の IAM アイデンティティベースのポリシーは、ディレクトリバケットのアクセスポイントを作成する `s3express:CreateAccessPoint` アクセス許可を付与します。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "Grant CreateAccessPoint.",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "s3express:CreateAccessPoint""Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

次の IAM アイデンティティベースのポリシーは、ディレクトリバケットのアクセスポイントのアクセスポイント範囲を作成する `s3express:PutAccessPointScope` アクセス許可を付与します。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "Grant PutAccessPointScope",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "s3express:CreateAccessPoint",
            "S3Express:PutAccessPointScope""Effect": "Allow",
            "Resource": "*",
        }
    ]
}
```

ディレクトリバケットのアクセスポイントを使用してバケットオペレーションへのアクセスを制御する場合は、「[ディレクトリバケットのアクセスポイントのポリシーでのバケットオペレーション](#bucket-operations-ap-directory-buckets)」を参照してください。オブジェクトオペレーションへのアクセスを制御するには、「[ディレクトリバケットのアクセスポイントのポリシーでのオブジェクトオペレーション](#object-operations-ap-directory-buckets)」を参照してください。ディレクトリバケットのアクセスポイントポリシーの設定方法の詳細については、「[ディレクトリバケットのアクセスポイントを使用するための IAM ポリシーの設定](access-points-directory-buckets-policies.md)」を参照してください。

### Object Lambda アクセスポイントオペレーション
<a name="using-with-s3-actions-related-to-olap"></a>

Amazon S3 Object Lambda を使用すると、Amazon S3 `GET`、`LIST`、`HEAD` リクエストに独自のコードを追加して、データがアプリケーションに返されるときにそのデータを変更および処理できます。Object Lambda アクセスポイントを介したリクエストは、他のアクセスポイントを介したリクエストと同様に行うことができます。詳細については、「[S3 Object Lambda を使用したオブジェクトの変換](transforming-objects.md)」を参照してください。

Object Lambda アクセスポイントオペレーションのポリシーを設定する方法についての詳細は、「[Object Lambda アクセスポイントの IAM ポリシーの設定](olap-policies.md)」を参照してください。

### マルチリージョンアクセスポイントオペレーション
<a name="using-with-s3-actions-related-to-mrap"></a>

マルチリージョンアクセスポイントを使用すると、複数の AWS リージョン にある S3 バケットからのリクエストをアプリケーションが実行するために使用できるグローバルエンドポイントを作成できます。マルチリージョンアクセスポイントを使用して、単一のリージョンで使用するのと同じシンプルなアーキテクチャでマルチリージョンアプリケーションを構築し、世界中のどこでもこれらのアプリケーションを実行することができます。詳細については、「[マルチリージョンアクセスポイントを使用したマルチリージョントラフィックの管理](MultiRegionAccessPoints.md)」を参照してください。

マルチリージョンアクセスポイントオペレーションのポリシーを設定する方法の詳細については、「[マルチリージョンアクセスポイントポリシーの例](MultiRegionAccessPointPermissions.md#MultiRegionAccessPointPolicyExamples)」を参照してください。

### バッチジョブオペレーション
<a name="using-with-s3-actions-related-to-batchops"></a>

(バッチオペレーション) ジョブオペレーションは、ジョブリソースタイプで動作する S3 API オペレーションです。例えば、`DescribeJob` と `CreateJob` です。ジョブオペレーションの S3 ポリシーアクションは、バケットポリシーではなく、IAM アイデンティティベースのポリシーでのみ使用できます。また、ジョブオペレーションでは、IAM アイデンティティベースのポリシーの `Resource` 要素を次の例の形式の `job` ARN にする必要があります。

```
"Resource": "arn:aws:s3:*:123456789012:job/*"
```

次の IAM アイデンティティベースのポリシーは、`example-job` という名前の S3 バッチオペレーションジョブに対して [DescribeJob](https://docs.aws.amazon.com//AmazonS3/latest/API/API_DescribeJob.html) API オペレーションを実行する `s3:DescribeJob` アクセス許可を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribingBatchOperationJob",
            "Effect": "Allow",
            "Action": [
            "s3:DescribeJob"
            ],
            "Resource": "arn:aws:s3:*:111122223333:job/example-job"
        }
    ]
}
```

------

### S3 Storage Lens 設定オペレーション
<a name="using-with-s3-actions-related-to-lens"></a>

S3 Storage Lens 設定オペレーションの設定方法の詳細については、「[Amazon S3 ストレージレンズアクセス許可の設定](storage_lens_iam_permissions.md)」を参照してください。

### アカウントオペレーション
<a name="using-with-s3-actions-related-to-accounts"></a>

アカウントオペレーションは、アカウントレベルで実行される S3 API オペレーションです。例えば、`GetPublicAccessBlock` (アカウント用) です。アカウントは、Amazon S3 で定義されるリソースタイプではありません。アカウントオペレーションの S3 ポリシーアクションは、バケットポリシーではなく、IAM アイデンティティベースのポリシーでのみ使用できます。また、アカウントオペレーションでは、IAM アイデンティティベースのポリシーの `Resource` 要素が `"*"` である必要があります。

次の IAM アイデンティティベースのポリシーは、アカウントレベルの [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_GetPublicAccessBlock.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_GetPublicAccessBlock.html) API オペレーションを実行し、アカウントレベルのパブリックアクセスブロック設定を取得するために `s3:GetAccountPublicAccessBlock` アクセス許可を付与します。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowRetrievingTheAccountLevelPublicAccessBlockSettings",
         "Effect":"Allow",
         "Action":[
            "s3:GetAccountPublicAccessBlock" 
         ],
         "Resource":[
            "*"
         ]
       }
    ]
}
```

------

### Amazon S3 のポリシーの例
<a name="security_iam_service-with-policies-examples-actions"></a>
+ Amazon S3 のアイデンティティベースのポリシー例を確認するには、「[Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)」を参照してください。
+ Amazon S3 のリソースベースのポリシー例を確認するには、「[Amazon S3 のバケットポリシー](bucket-policies.md)」および「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。

## Amazon S3 のポリシーリソース
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**ポリシーリソースのサポート:** あり

管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルの権限をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (\$1) を使用します。

```
"Resource": "*"
```

一部の Amazon S3 API アクションは複数のリソースをサポートします。例えば、`s3:GetObject` は `example-resource-1` と `example-resource-2` にアクセスするため、プリンシパルには両方のリソースにアクセスする許可が必要です。1 つのステートメントで複数のリソースを指定するには、次の例に示すように、ARN をカンマで区切ります。

```
"Resource": [
      "example-resource-1",
      "example-resource-2"
```

Amazon S3 のリソースは、バケット、オブジェクト、アクセスポイント、またはジョブです。ポリシーでは、バケット、オブジェクト、アクセスポイント、またはジョブの Amazon リソースネーム (ARN) を使用してリソースを識別します。

Amazon S3 リソースタイプとその ARN の完全なリストについては、「サービス認可リファレンス」の「[Resources defined by Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-resources-for-iam-policies)」を参照してください。**どのアクションで各リソースの ARN を指定できるかについては、「[Amazon S3 で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-actions-as-permissions)」を参照してください。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

### リソース ARN のワイルドカード文字
<a name="s3-arn-wildcards"></a>

リソース ARN の一部にワイルドカードを使用できます。ARN セグメント (コロンで区切られている部分) でワイルドカード文字 (`*` と `?`) を使用できます。アスタリスク (`*`) は 0 個以上の文字の任意の組み合わせを表し、疑問符 (`?`) は任意の 1 文字を表します。各セグメントで複数の `*` または `?` 文字を使用できます。ただし、ワイルドカード文字はセグメントをまたぐことはできません。
+ 以下の ARN は ARN の `relative-ID` の部分でワイルドカード文字 `*` を使用して、`amzn-s3-demo-bucket` バケット内のすべてのオブジェクトを識別します。

  ```
  1. arn:aws:s3:::amzn-s3-demo-bucket/*
  ```
+ 次の ARN は `*` を使用して、S3 のすべてのバケットとオブジェクトを示しています。

  ```
  arn:aws:s3:::*
  ```
+ 以下の ARN は、`relative-ID` の部分で、`*` および `?` の両方のワイルドカード文字を使用します。この ARN により、*`amzn-s3-demo-example1bucket`*、`amzn-s3-demo-example2bucket`、`amzn-s3-demo-example3bucket` など、バケット内のすべてのオブジェクトを識別します。

  ```
  1. arn:aws:s3:::amzn-s3-demo-example?bucket/*
  ```

### リソース ARN のポリシー変数
<a name="s3-policy-variables"></a>

Amazon S3 の ARN では、ポリシー変数を使用することもできます。あらかじめ定義されているこれらの変数は、ポリシーの評価時に対応する値で置き換えられます。例えば、バケットをフォルダのコレクションとして構成し、ユーザーごとに別のフォルダを使用するとします。フォルダ名はユーザー名と同じです。各ユーザーに自分のフォルダに対するアクセス許可を付与するには、リソース ARN で以下のようにポリシー変数を指定します。

```
arn:aws:s3:::bucket_name/developers/${aws:username}/
```

実行時にポリシーが評価されると、リソース ARN の変数 `${aws:username}` には、リクエストを行うユーザーのユーザー名が挿入されます。





### Amazon S3 のポリシーの例
<a name="security_iam_service-with-policies-examples-resources"></a>
+ Amazon S3 のアイデンティティベースのポリシー例を確認するには、「[Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)」を参照してください。
+ Amazon S3 のリソースベースのポリシー例を確認するには、「[Amazon S3 のバケットポリシー](bucket-policies.md)」および「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。

## Amazon S3 のポリシー条件キー
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**サービス固有のポリシー条件キーのサポート:** あり

管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどんな**リソース**にどんな**条件**で**アクション**を実行できるかということです。

`Condition` 要素は、定義された基準に基づいてステートメントが実行される時期を指定します。イコールや未満などの[条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)を使用して条件式を作成して、ポリシーの条件とリクエスト内の値を一致させることができます。すべての AWS グローバル条件キーを確認するには、*IAM ユーザーガイド*の[AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)を参照してください。

各 Amazon S3 条件キーは、その条件を設定できる API でサポートされている同じ名前のリクエストヘッダーに対応します。Amazon S3 固有の条件キーでは、同じ名前のリクエストヘッダーの動作が指定されます。例えば、アクセス許可 `s3:GetObjectVersion` に対して条件付きのアクセス許可を付与する条件キー `s3:VersionId` は、GET Object リクエストで設定する `versionId` クエリパラメータの動作を定義します。

Amazon S3 の条件キーのリストを確認するには、「サービス認可リファレンス」の「*Condition keys for Amazon S3*」を参照してください。[https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys)どのアクションおよびリソースで条件キーを使用できるかについては、「[Amazon S3 で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-actions-as-permissions)」を参照してください。

### 例: オブジェクトのアップロードを特定のストレージクラスのオブジェクトに制限する
<a name="example-storage-class-condition-key"></a>

アカウント ID `123456789012` で表されているアカウント A がバケットを所有しているとします。アカウント A の管理者は、アカウント A のユーザーである *`Dave`* に対して、`STANDARD_IA` ストレージクラスにオブジェクトが保存されている場合にのみ *`Dave`* がバケットにオブジェクトをロードすることを許可するとします。オブジェクトのアップロードを特定のストレージクラスに制限するために、アカウント A の管理者は、次のバケットポリシーの例に示すように `s3:x-amz-storage-class` 条件キーを使用できます。

------
#### [ JSON ]

****  

```
{
                 "Version":"2012-10-17",		 	 	 
                 "Statement": [
                   {
                     "Sid": "statement1",
                     "Effect": "Allow",
                     "Principal": {
                       "AWS": "arn:aws:iam::123456789012:user/Dave"
                     },
                     "Action": "s3:PutObject",
                     "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                     "Condition": {
                       "StringEquals": {
                         "s3:x-amz-storage-class": [
                           "STANDARD_IA"
                         ]
                       }
                     }
                   }
                 ]
            }
```

------

この例で、`Condition` ブロックは指定されたキーと値のペア `StringEquals` に適用される `"s3:x-amz-acl":["public-read"]` 条件を指定します。条件の表現に使用できる、事前に定義された一連のキーがあります。この例では、`s3:x-amz-acl` 条件キーを使用しています。この条件では、`public-read` の値が指定された `x-amz-acl` ヘッダーをすべての `PutObject` リクエストに含めることがユーザーに求められます。

### Amazon S3 のポリシーの例
<a name="security_iam_service-with-policies-examples-conditions"></a>
+ Amazon S3 のアイデンティティベースのポリシー例を確認するには、「[Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)」を参照してください。
+ Amazon S3 のリソースベースのポリシー例を確認するには、「[Amazon S3 のバケットポリシー](bucket-policies.md)」および「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。

## Amazon S3 での ACL
<a name="security_iam_service-with-iam-acls"></a>

**ACL のサポート:** あり

Amazon S3 のアクセスコントロールリスト (ACL) は、どの AWS アカウント がリソースへのアクセス許可を持つかをコントロールします。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。

**重要**  
Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。

Amazon S3 での ACL を使用したアクセスコントロールについては、「[ACL によるアクセス管理](acls.md)」を参照してください。

## Amazon S3 での ABAC
<a name="security_iam_service-with-iam-tags"></a>

**ABAC (ポリシー内のタグ) のサポート:** 一部

属性ベースのアクセスコントロール (ABAC) は、タグと呼ばれる属性に基づいてアクセス許可を定義する認可戦略です。IAM エンティティと AWS リソースにタグを付けることで、プリンシパルのタグがリソースタグと一致するときに操作を許可する ABAC ポリシーを設計できます。

タグに基づいてアクセスを管理するには、`aws:ResourceTag/key-name`、`aws:RequestTag/key-name`、または `aws:TagKeys` の条件キーを使用して、ポリシーの[条件要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)でタグ情報を提供します。

サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値は**あり**です。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「**部分的**」になります。

ABAC の詳細については、「*IAM ユーザーガイド*」の「[ABAC 認可でアクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)」を参照してください。ABAC をセットアップする手順を説明するチュートリアルについては、「*IAM ユーザーガイド*」の「[属性ベースのアクセスコントロール (ABAC) を使用する](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)」を参照してください。

Amazon S3 で ABAC をサポートするリソースの詳細については、「[属性ベースのアクセス制御 (ABAC) のタグを使用する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac)」を参照してください。

タグに基づいて S3 バッチオペレーションジョブへのアクセスを制限するためのアイデンティティベースのポリシー例を確認するには、「[ジョブタグを使用したバッチオペレーションのアクセス許可の制御](batch-ops-job-tags-examples.md)」を参照してください。

### ABAC とオブジェクトタグ
<a name="s3-object-tags"></a>

ABAC ポリシーでは、オブジェクトは `aws:` タグの代わりに `s3:` タグを使用します。オブジェクトタグに基づいてオブジェクトへのアクセスをコントロールするには、以下のタグを使用してポリシーの [Condition 要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)でタグ情報を指定します。
+ `s3:ExistingObjectTag/tag-key`
+ `s3:RequestObjectTagKeys`
+ `s3:RequestObjectTag/tag-key`

アクセス許可ポリシーの例など、オブジェクトタグを使用したアクセスコントロールについては、「[タグ付けとアクセスコントロールポリシー](tagging-and-policies.md)」を参照してください。

## Amazon S3 での一時的な認証情報の使用
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**一時的な認証情報のサポート:** あり

一時的な認証情報は、AWSリソースへの短期的なアクセスを提供し、フェデレーションの使用時またはロールの切り替え時に自動的に作成されます。AWS では、長期的なアクセスキーを使用する代わりに、一時的な認証情報を動的に生成することをお勧めします。詳細については、「*IAM ユーザーガイド*」の「[IAM の一時的な認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)」および「[IAM と連携する AWS のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

## Amazon S3 の転送アクセスセッション
<a name="security_iam_service-with-iam-principal-permissions"></a>

**転送アクセスセッション (FAS) のサポート:** あり

 転送アクセスセッション (FAS) は、AWS のサービス を呼び出すプリンシパルのアクセス許可を AWS のサービス のリクエストと合わせて使用し、ダウンストリームのサービスに対してリクエストを行います。FAS リクエストを行う際のポリシーの詳細については、「[転送アクセスセッション](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)」を参照してください。
+ SSE-KMS を使用してオブジェクトを暗号化した場合、Amazon S3 は FAS を使用してオブジェクトを復号化するための呼び出しを AWS KMS に対して行います。詳細については、「[AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の使用](UsingKMSEncryption.md)」を参照してください。
+ S3 Access Grants も FAS を使用します。特定の ID の S3 データへのアクセス許可を作成すると、被付与者は S3 Access Grants に一時的な認証情報を要求します。S3 Access Grants は、AWS STS からリクエスタの一時的な認証情報を取得し、その認証情報をリクエスタに提供します。詳細については、「[S3 Access Grants を介して Amazon S3 データへのアクセスをリクエストする](access-grants-credentials.md)」を参照してください。

## Amazon S3 のサービスロール
<a name="security_iam_service-with-iam-roles-service"></a>

**サービスロールのサポート:** あり

 サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける [IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)です。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、IAM ユーザーガイド**の [AWS のサービス に許可を委任するロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を参照してください。

**警告**  
サービスロールのアクセス許可を変更すると、Amazon S3 が機能しなくなる可能性があります。サービスロールは、Amazon S3 で指示された場合のみ編集してください。

## Amazon S3 のサービスリンクロール
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**サービスにリンクされたロールをサポート**： 一部

 サービスにリンクされたロールは、AWS のサービス にリンクされているサービスロールの一種です。サービスがロールを引き受け、ユーザーに代わってアクションを実行できるようになります。サービスにリンクされたロールは、AWS アカウント に表示され、サービスによって所有されます。IAM 管理者は、サービスリンクロールのアクセス許可を表示できますが、編集することはできません。

Amazon S3 では、Amazon S3 Storage Lens 用のサービスにリンクされたロールをサポートしています。Amazon S3 でのサービスリンクロールの作成または管理の詳細については、「[Amazon S3 ストレージレンズでのサービスにリンクされたロールの使用](using-service-linked-roles.md)」を参照してください。

**プリンシパルとしての Amazon S3 サービス**


| ポリシー内のサービス名 | S3 機能 | 詳細情報 | 
| --- | --- | --- | 
|  `s3.amazonaws.com`  |  S3 レプリケーション  |  [ライブレプリケーションの設定の概要](replication-how-setup.md)  | 
|  `s3.amazonaws.com`  |  S3 イベント通知  |  [Amazon S3 イベント通知](EventNotifications.md)  | 
|  `s3.amazonaws.com`  |  S3 インベントリ  |  [S3 インベントリを使用したデータのカタログ化と分析](storage-inventory.md)  | 
|  `access-grants.s3.amazonaws.com`  |  S3 Access Grants  |  [ロケーションを登録する](access-grants-location-register.md)  | 
|  `batchoperations.s3.amazonaws.com`  |  S3 バッチオペレーション  |  [バッチオペレーションに対するアクセス許可の付与](batch-ops-iam-role-policies.md)  | 
|  `logging.s3.amazonaws.com`  |  S3 サーバーアクセスのログ記録  |  [Amazon S3 サーバーアクセスログを有効にします。](enable-server-access-logging.md)  | 
|  `storage-lens.s3.amazonaws.com`  |  S3 Storage Lens  |  [データエクスポートで Amazon S3 Storage Lens のメトリクスを確認する](storage_lens_view_metrics_export.md)  | 

# Amazon S3 がリクエストを許可する仕組み
<a name="how-s3-evaluates-access-control"></a>

Amazon S3 は、バケットまたはオブジェクトオペレーションなどのリクエストを受け取ると、まずリクエスタに必要なアクセス許可があることを確認します。Amazon S3 は、関連するすべてのアクセスポリシー、ユーザーポリシー、およびリソースベースのポリシー (バケットポリシー、バケットアクセスコントロールリスト (ACL)、オブジェクト ACL) を評価して、リクエストを許可するかどうかを決めます。

**注記**  
Amazon S3 アクセス許可チェックで有効な許可が見つからなかった場合は、アクセス拒否 (403 Forbidden) アクセス許可拒否エラーが返されます。詳細については、「[Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshoot-403-errors.html)」を参照してください。

Amazon S3 は、リクエストを受け取ると、リクエスタが特定のオペレーションを実行するアクセス許可があるかどうかを確認するため、次の操作を順に実行します。

1. 関連するすべてのアクセスポリシー (ユーザーポリシー、バケットポリシー、および ACL) を実行時に評価ターゲットのポリシーのセットに変換します。

1. 作成したポリシーのセットを次の手順で評価します。各ステップで、Amazon S3 は、コンテキストの権限に基づいて、ポリシーのサブセットを特定のコンテキストで評価します。

   1. **ユーザーコンテキスト** – ユーザーコンテキストでは、ユーザーが属する親アカウントにコンテキストの権限があります。

      Amazon S3 は、親アカウントが所有するポリシーのサブセットを評価します。このサブセットには、親がユーザーにアタッチするユーザーポリシーが含まれています。親がリクエスト内のリソース (バケットまたはオブジェクト) も所有している場合、Amazon S3 は、対応するリソースポリシー (バケットポリシー、バケット ACL、オブジェクト ACL) も同時に評価します。

      ユーザーは、オペレーションを実行するための親アカウントからのアクセス許可を持つ必要があります。

      このステップは、リクエストが AWS アカウント内のユーザーによって行われた場合にのみ適用されます。リクエストが AWS アカウントのルートユーザー認証情報を使用して行われている場合、Amazon S3 はこのステップをスキップします。

   1. **バケットコンテキスト** – バケットコンテキストでは、Amazon S3 はバケットを所有する AWS アカウント が所有するポリシーを評価します。

      バケットオペレーションに対するリクエストの場合、リクエスタはバケット所有者からのアクセス許可を持つ必要があります。リクエストがオブジェクトをターゲットにしている場合、Amazon S3 は、バケット所有者が所有するすべてのポリシーを評価して、バケット所有者がオブジェクトへのアクセスを明示的に拒否していないかどうかを確認します。明示的な拒否セットが存在する場合、Amazon S3 はリクエストを許可しません。

   1. **オブジェクトコンテキスト** – オブジェクトに対するリクエストの場合、Amazon S3 はオブジェクトの所有者が所有するポリシーのサブセットを評価します。

Amazon S3 がリクエストを承認する方法を示すいくつかのシナリオの例を次に示します。

**Example - リクエスタが IAM プリンシパルの場合**  
リクエスタが IAM プリンシパルの場合、Amazon S3 は、オペレーションを実行するために必要な許可が、プリンシパルが属する親 AWS アカウントよりプリンシパルに付与されているかどうかを判断する必要があります。さらに、リクエストがバケットオペレーション (バケット内容のリストを取得するリクエストなど) の場合、Amazon S3 は、オペレーションを実行するためのアクセス許可をバケット所有者がリクエスタに付与していることを確認する必要があります。IAM プリンシパルがリソースに対して特定のオペレーションを実行するには、そのプリンシパルが属する親 AWS アカウントと、リソースを所有する AWS アカウントの両方からの許可が必要です。

 

**Example - リクエスタが IAM プリンシパルの場合 - リクエストが、バケット所有者が所有していないオブジェクトに対するオペレーションに関連している場合。**  
バケット所有者が所有していないオブジェクトに対するオペレーションのリクエストの場合は、リクエスタがオブジェクトの所有者からのアクセス許可を持つことの確認に加えて、Amazon S3 はバケットポリシーもチェックして、バケット所有者がオブジェクトに対する明示的な拒否を設定していないことを確認する必要があります。バケット所有者 (請求の支払者) は、オブジェクトの所有者にかかわらず、バケット内のオブジェクトへのアクセスを明示的に拒否できます。また、バケット所有者は、バケット内のすべてのオブジェクトを削除できます。  
デフォルトでは、別の AWS アカウントがオブジェクトを S3 汎用バケットにアップロードすると、そのアカウント (オブジェクトライター) がオブジェクトを所有し、そのオブジェクトにアクセスでき、アクセスコントロールリスト (ACL) を介して他のユーザーにそのオブジェクトへのアクセスを許可できます。オブジェクト所有者を使用してこのデフォルト動作を変更することで、ACL を無効にして、汎用バケット内のすべてのオブジェクトをバケット所有者として自動的に所有できます。その結果、データのアクセスコントロールは、IAM ユーザーポリシー、S3 バケットポリシー、仮想プライベートクラウド (VPC) エンドポイントポリシー、AWS Organizations サービスコントロールポリシー (SCP) などのポリシーに基づいています。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

Amazon S3 がアクセスポリシーを評価してバケットオペレーションおよびオブジェクトオペレーションのリクエストを承認または拒否する仕組みについて詳しくは、以下のトピックを参照してください。

**Topics**
+ [Amazon S3 がバケットオペレーションのリクエストを承認する仕組み](access-control-auth-workflow-bucket-operation.md)
+ [Amazon S3 がオブジェクトオペレーションのリクエストを許可する仕組み](access-control-auth-workflow-object-operation.md)

# Amazon S3 がバケットオペレーションのリクエストを承認する仕組み
<a name="access-control-auth-workflow-bucket-operation"></a>

Amazon S3 は、バケットオペレーションのリクエストを受け取ると、関連するすべてのアクセス許可を、実行時に評価する一連のポリシーに変換します。関連するアクセス許可には、リソースベースのアクセス許可 (バケットポリシーやバケットアクセスコントロールリストなど) とユーザーポリシー (リクエストが IAM プリンシパルからの場合) が含まれます。Amazon S3 はその後、作成したポリシーのセットを特定のコンテキスト (ユーザーコンテキストまたはバケットコンテキスト) に従って、一連の手順で評価します。

1. **ユーザーコンテキスト** – リクエスタが IAM プリンシパルの場合、そのプリンシパルは親 AWS アカウント からアクセス許可を付与されている必要があります。このステップで、Amazon S3 は、親アカウント (コンテキストの権限とも呼ばれる) が所有するポリシーのサブセットを評価します。このポリシーのサブセットには、親アカウントがプリンシパルにアタッチするユーザーポリシーが含まれます。親がリクエスト内のリソース(この場合はバケット)も所有している場合、Amazon S3 は、対応するリソースポリシー(バケットポリシーおよびバケット ACL)も同時に評価します。バケットオペレーションのリクエストが出されるたびに、サーバーアクセスログはリクエスタの正規 ID を記録します。詳細については、[サーバーアクセスログによるリクエストのログ記録](ServerLogs.md) を参照してください。

1. **バケットコンテキスト** – リクエスタは、バケット所有者から特定のバケットオペレーションを実行するためのアクセス許可を付与されている必要があります。このステップで、Amazon S3 は、バケットを所有する AWS アカウントが所有するポリシーのサブセットを評価します。

   バケット所有者は、バケットポリシーまたはバケット ACL を使用してアクセス許可を付与できます。バケットを所有している AWS アカウント が IAM プリンシパルの親アカウントでもある場合は、ユーザーポリシーでバケットの許可を設定できます。

 次に示すのは、バケットオペレーションのコンテキストベースの評価を説明するための図です。

![\[バケットオペレーションのコンテキストベースの評価を示す図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/AccessControlAuthorizationFlowBucketResource.png)


次の例は、評価ロジックを示します。

## 例 1: バケット所有者がリクエストするバケットオペレーション
<a name="example1-policy-eval-logic"></a>

 この例では、バケット所有者が AWS アカウントのルート認証情報を使用してバケットオペレーションへのリクエストを送信します。

![\[バケット所有者がリクエストするバケットオペレーションの説明図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/example10-policy-eval-logic.png)


 Amazon S3 はコンテキストの評価を次のように実行します。

1.  リクエストは AWS アカウントのルートユーザー認証情報を使用して行われるため、ユーザーコンテキストは評価されません。

1.  バケットコンテキストでは、Amazon S3 はバケットポリシーを調べて、リクエスタがオペレーションを実行するアクセス許可を持つかどうかを判定します。Amazon S3 はリクエストを許可します。

## 例 2: バケット所有者でない AWS アカウントがリクエストしたバケットオペレーション
<a name="example2-policy-eval-logic"></a>

この例では、AWS アカウント 2222−2222−2222 が所有するバケットオペレーションで AWS アカウント 1111−1111−1111 のルートユーザー認証情報を使用してリクエストが行われます。このリクエストに IAM ユーザーは関与していません。

![\[バケット所有者以外の AWS アカウント がリクエストするバケットオペレーションの説明図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/example20-policy-eval-logic.png)


この例では、Amazon S3 は次のようにコンテキストを評価します。

1. リクエストは AWS アカウントのルートユーザー認証情報を使用して行われるため、ユーザーコンテキストは評価されません。

1. バケットコンテキストでは、Amazon S3 はバケットポリシーを調べます。バケット所有者 (AWS アカウント 2222−2222−2222) が、リクエストされたオペレーションを AWS アカウント 1111−1111−1111 に許可していない場合は、Amazon S3 はリクエストを拒否します。それ以外の場合、Amazon S3 はリクエストを許可し、オペレーションを実行します。

## 例 3: 親 AWS アカウントがバケット所有者でもある IAM プリンシパルがリクエストしたバケットオペレーション
<a name="example3-policy-eval-logic"></a>

 この例では、リクエストを送信したユーザーが AWS アカウント 1111−1111−1111 の IAM ユーザー Jill であり、このアカウントがバケット所有者でもあります。

![\[IAM プリンシパルとバケット所有者がリクエストするバケットオペレーションの説明図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/example30-policy-eval-logic.png)


 Amazon S3 は次のコンテキスト評価を実行します。

1.  リクエストは IAM プリンシパルからであるため、ユーザーコンテキストで、Amazon S3 は親 AWS アカウントに属するすべてのポリシーを評価して、Jill がオペレーションを実行する許可を持っているかどうかを判定します。

    この例では、プリンシパルが属する親 AWS アカウント 1111−1111−1111 は、バケット所有者でもあります。その結果、Amazon S3 は、ユーザーポリシーに加えて、バケットポリシーとバケット ACL も同じコンテキストで評価します。これらが同じアカウントに属するからです。

1. Amazon S3 はバケットポリシーとバケット ACL をユーザーコンテキストの一部として評価したので、バケットコンテキストは評価しません。

## 例 4: 親 AWS アカウントがバケット所有者でない IAM プリンシパルがリクエストしたバケットオペレーション
<a name="example4-policy-eval-logic"></a>

この例では、リクエストを送信したのが 1111−1111−1111 を親 AWS アカウント とする IAM ユーザー Jill であり、バケット所有者は別の AWS アカウント 2222−2222−2222 です。

![\[バケット所有者以外の IAM プリンシパルがリクエストするバケットオペレーションの説明図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/example40-policy-eval-logic.png)


Jill には、親 AWS アカウントとバケット所有者の両方からの許可が必要です。Amazon S3 は次のようにコンテキストを評価します。

1. リクエストは IAM プリンシパルからであるため、Amazon S3 は、アカウントが作成したポリシーを参照してユーザーコンテキストを評価し、Jill に必要なアクセス許可があることを検証します。Jill にアクセス許可がある場合、Amazon S3 はバケットコンテキストの評価に進みます。Jill にアクセス許可がない場合、Amazon S3 はリクエストを拒否します。

1.  バケットコンテキストでは、Amazon S3 はバケット所有者の 2222−2222−2222 がリクエストされたオペレーションを実行するアクセス許可を Jill (またはその親 AWS アカウント) に付与していることを確認します。アクセス許可がある場合、Amazon S3 はリクエストを許可し、オペレーションを実行します。アクセス許可がない場合、Amazon S3 はリクエストを拒否します。

# Amazon S3 がオブジェクトオペレーションのリクエストを許可する仕組み
<a name="access-control-auth-workflow-object-operation"></a>

Amazon S3 は、オブジェクトオペレーションのリクエストを受け取ると、関連するすべての許可 、リソースベースの許可 (オブジェクトアクセスコントロールリスト (ACL)、バケットポリシー、バケット (ACL) と IAM ユーザーポリシー) を実行時に評価する一連のポリシーに変換します。その後、作成したポリシーのセットを一連の手順で評価します。各ステップでは、ポリシーのサブセットが、ユーザーコンテキスト、バケットコンテキスト、オブジェクトコンテキストの 3 つの固有のコンテキストで評価されます。

1. **ユーザーコンテキスト** – リクエスタが IAM プリンシパルの場合、そのプリンシパルは親 AWS アカウント からアクセス許可を付与されている必要があります。このステップで、Amazon S3 は、親アカウント (コンテキストの権限とも呼ばれる) が所有するポリシーのサブセットを評価します。このポリシーのサブセットには、親がプリンシパルにアタッチするユーザーポリシーが含まれます。親がリクエスト内のリソース (バケットまたはオブジェクト) も所有している場合、Amazon S3 は、対応するリソースポリシー (バケットポリシー、バケット ACL、オブジェクト ACL) も同時に評価します。
**注記**  
親 AWS アカウントがリソース (バケットまたはオブジェクト) を所有している場合、親アカウントは、ユーザーポリシーまたはリソースポリシーを使用して、リソースの許可を IAM プリンシパルに付与できます。

1. **バケットコンテキスト** – このコンテキストでは、Amazon S3 はバケットを所有する AWS アカウント が所有するポリシーを評価します。

   リクエスト内のオブジェクトを所有する AWS アカウント がバケット所有者と同じでない場合、Amazon S3 はポリシーをチェックして、バケット所有者がオブジェクトへのアクセスを明示的に拒否しているかどうかをチェックします。オブジェクトに対する明示的な拒否セットが存在する場合、Amazon S3 はリクエストを許可しません。

1. **オブジェクトコンテキスト** – リクエスタは、オブジェクト所有者から特定のオブジェクトオペレーションを実行するためのアクセス許可を付与されている必要があります。このステップで、Amazon S3 はオブジェクト ACL を評価します。
**注記**  
バケットとオブジェクトの所有者が同じ場合、オブジェクトへのアクセスは、バケットコンテキストで評価されるバケットポリシーで許可することができます。所有者が異なる場合、オブジェクトの所有者はオブジェクト ACL を使用してアクセス許可を付与する必要があります。オブジェクトを所有する AWS アカウントが IAM プリンシパルの親アカウントでもある場合は、ユーザーコンテキストで評価されるユーザーポリシーでオブジェクトのアクセス許可を設定できます。これらのアクセスポリシーの各オプションの詳細については、[チュートリアル: ポリシーを使用した Amazon S3 リソースへのアクセスの管理](example-walkthroughs-managing-access.md) を参照してください。  
バケット所有者がバケット内のすべてのオブジェクトを所有し、バケットポリシーまたは IAM ベースのポリシーを使用してこれらのオブジェクトへのアクセスを管理する場合は、オブジェクト所有権にバケット所有者強制設定を適用できます。この設定では、バケット所有者として、バケット内のすべてのオブジェクトを自動的に所有し、完全に制御できます。バケットとオブジェクト ACL は編集できず、アクセスと見なされなくなります。詳細については、[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md) を参照してください。

 次に示すのは、オブジェクトオペレーションに対するコンテキストベースの評価の説明です。

![\[オブジェクトオペレーションのコンテキストベースの評価を示す図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/AccessControlAuthorizationFlowObjectResource.png)


## オブジェクトオペレーションのリクエストの例
<a name="access-control-auth-workflow-object-operation-example1"></a>

この例では、親 AWS アカウント が 1111−1111−1111 である IAM ユーザー Jill が、`GetObject` 2222−2222−2222 が所有するバケットにある、AWS アカウント 3333−3333−3333 が所有するオブジェクトに対するオブジェクトオペレーションのリクエスト (AWS アカウント など) を送信します。

![\[オブジェクトオペレーションのリクエストを示す図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/example50-policy-eval-logic.png)


Jill には、親 AWS アカウント、バケット所有者、およびオブジェクト所有者からの許可が必要です。Amazon S3 は次のようにコンテキストを評価します。

1. リクエストは IAM プリンシパルからであるため、Amazon S3 は、ユーザーコンテキストを評価して、親 AWS アカウント 1111−1111−1111 がリクエストされたオペレーションを実行するアクセス許可を Jill に付与していることを検証します。アクセス許可がある場合、Amazon S3 はバケットコンテキストを評価します。アクセス許可がない場合、Amazon S3 はリクエストを拒否します。

1. バケットコンテキストでは、バケット所有者の AWS アカウント 2222−2222−2222 がコンテキストの権限です。Amazon S3 は、バケットポリシーを評価して、バケット所有者がオブジェクトへのアクセスを Jill に対して明示的に拒否しているかどうかを判定します。

1. オブジェクトコンテキストでは、コンテキストの権限はオブジェクト所有者の AWS アカウント 3333−3333−3333 です。Amazon S3 は、オブジェクト ACL を評価して、Jill がオブジェクトにアクセスするアクセス許可を持つかどうかを判定します。アクセス許可がある場合、Amazon S3 はリクエストを許可します。

# Amazon S3 API オペレーションに必要なアクセス許可
<a name="using-with-s3-policy-actions"></a>

**注記**  
このページでは、汎用バケットの Amazon S3 ポリシーアクションについて説明します。ディレクトリバケットの Amazon S3 ポリシーアクションの詳細については、「[ディレクトリバケットのアクション](s3-express-security-iam.md#s3-express-security-iam-actions)」を参照してください。

S3 API オペレーションを実行するには、適切なアクセス許可が必要です。このページでは、S3 API オペレーションを必要なアクセス許可にマッピングします。S3 API オペレーションを実行するアクセス許可を付与するには、有効なポリシー (S3 バケットポリシーや IAM アイデンティティベースのポリシーなど) を作成し、ポリシーの `Action` 要素で対応するアクションを指定する必要があります。これらのアクションはポリシーアクションと呼ばれます。すべての S3 API オペレーションが 1 つのアクセス許可 (1 つのポリシーアクション) で表されるわけではなく、さまざまな API オペレーションには複数のアクセス許可 (複数のポリシーアクション) が必要です。

ポリシーを作成するときは、対応する Amazon S3 ポリシーアクションに必要な正しいリソースタイプに基づいて、`Resource` 要素を指定する必要があります。このページでは、アクセス許可をリソースタイプ別に S3 API オペレーションに分類します。リソースタイプの詳細については、「*サービス認可リファレンス*」の「[Resource types defined by Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-resources-for-iam-policies)」を参照してください。Amazon S3 ポリシーアクションの完全なリストとポリシーで使用する条件キーについては、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**Amazon S3 API オペレーションの完全なリストについては、「*Amazon Simple Storage Service API リファレンス*」の「[Amazon S3 API アクション](https://docs.aws.amazon.com//AmazonS3/latest/API/API_Operations.html)」を参照してください。

S3 で HTTP `403 Forbidden` エラーに対処する方法の詳細については、「[Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング](troubleshoot-403-errors.md)」を参照してください。S3 で使用する IAM 機能の詳細については、「[Amazon S3 での IAM の機能](security_iam_service-with-iam.md)」を参照してください。S3 セキュリティのベストプラクティスに関する詳細は、「[Amazon S3 のセキュリティのベストプラクティス](security-best-practices.md)」を参照してください。

**Topics**
+ [バケットオペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-buckets)
+ [オブジェクトオペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-objects)
+ [汎用バケットオペレーションのアクセスポイントとアクセス許可](#using-with-s3-policy-actions-related-to-accesspoint)
+ [Object Lambda アクセスポイントのオペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-olap)
+ [マルチリージョンアクセスポイントとアクセス許可](#using-with-s3-policy-actions-related-to-mrap)
+ [バッチジョブのオペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-batchops)
+ [S3 ストレージレンズ設定オペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-lens)
+ [S3 ストレージレンズグループのオペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-lens-groups)
+ [S3 Access Grants インスタンスのオペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-s3ag-instances)
+ [S3 Access Grants ロケーションのオペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-s3ag-locations)
+ [S3 Access Grants の許可付与オペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-s3ag-grants)
+ [API オペレーションとアクセス許可](#using-with-s3-policy-actions-related-to-accounts)

## バケットオペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-buckets"></a>

バケットオペレーションは、バケットリソースタイプで動作する S3 API オペレーションです。バケットポリシーまたは IAM アイデンティティベースのポリシーでバケットオペレーションに S3 ポリシーアクションを指定する必要があります。

ポリシーでは、`Resource` 要素はバケットの Amazon リソースネーム (ARN) である必要があります。`Resource` 要素形式とポリシーの例の詳細については、「[バケットオペレーション](security_iam_service-with-iam.md#using-with-s3-actions-related-to-buckets)」を参照してください。

**注記**  
アクセスポイントポリシーのバケットオペレーションにアクセス許可を付与する場合は、次の点に注意してください。  
アクセスポイントポリシーのバケットオペレーションで付与されるアクセス許可は、基になるバケットで同じアクセス許可が許される場合にのみ有効です。アクセスポイントを使用する場合は、バケットからアクセスポイントにアクセスコントロールを委任するか、アクセスポイントポリシーで同じアクセス許可を基礎となるバケットのポリシーに追加する必要があります。
バケットオペレーションにアクセス許可を付与するアクセスポイントポリシーでは、`Resource` 要素は `accesspoint` ARN である必要があります。`Resource` 要素形式とポリシーの例の詳細については、「[汎用バケットのアクセスポイントのポリシーでのバケットオペレーション](security_iam_service-with-iam.md#bucket-operations-ap)」を参照してください。アクセスポイントポリシーの詳細については、「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。
すべてのバケットオペレーションがアクセスポイントでサポートされているわけではありません。詳細については、「[S3 オペレーションとアクセスポイントの互換性](access-points-service-api-support.md#access-points-operations-support)」を参照してください。

以下は、バケットオペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)  |  (必須) `s3:CreateBucket`  |  新しい S3 バケットを作成するのに必要です。  | 
|    |  (条件付きで必須) `s3:PutBucketAcl`  |  アクセスコントロールリスト (ACL) を使用して、`CreateBucket` リクエスト時にバケットに対してアクセス許可を指定する場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutBucketObjectLockConfiguration`、`s3:PutBucketVersioning`  |  バケットの作成時に Object Lock を有効にする場合は必須です。  | 
|    |  (条件付きで必須) `s3:PutBucketOwnershipControls`  |  バケットの作成時に S3 オブジェクトの所有権を指定する場合は必須です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketMetadataConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketMetadataConfiguration.html) (V2 API オペレーション。IAM ポリシーアクション名は、V1 および V2 API オペレーションで同じです。)  |  (必須) `s3:CreateBucketMetadataTableConfiguration`、`s3tables:CreateTableBucket`、`s3tables:CreateNamespace`、`s3tables:CreateTable`、`s3tables:GetTable`、`s3tables:PutTablePolicy`、`s3tables:PutTableEncryption`、`kms:DescribeKey`  |  汎用バケットでメタデータテーブル設定を作成するために必要です。 AWS マネージドテーブルバケットとメタデータテーブル設定で指定されたメタデータテーブルを作成するには、指定された `s3tables` アクセス許可が必要です。 AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用してメタデータテーブルを暗号化する場合は、KMS キーポリシーに追加のアクセス許可が必要です。詳細については、「[メタデータテーブルを設定するためのアクセス許可の設定](metadata-tables-permissions.md)」を参照してください。 メタデータテーブルをクエリできるように AWS マネージドテーブルバケットを AWS 分析サービスと統合する場合は、追加のアクセス許可が必要です。詳細については、「[Integrating Amazon S3 Tables with AWS analytics services](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)」を参照してください。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketMetadataTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucketMetadataTableConfiguration.html) (V1 API オペレーション)  |  (必須) `s3:CreateBucketMetadataTableConfiguration`、`s3tables:CreateNamespace`、`s3tables:CreateTable`、`s3tables:GetTable`、`s3tables:PutTablePolicy`  |  汎用バケットでメタデータテーブル設定を作成するために必要です。 メタデータテーブル設定で指定されたテーブルバケットにメタデータテーブルを作成するには、指定された `s3tables` アクセス許可が必要です。 AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用してメタデータテーブルを暗号化する場合は、追加のアクセス許可が必要です。詳細については、「[メタデータテーブルを設定するためのアクセス許可の設定](metadata-tables-permissions.md)」を参照してください。 メタデータテーブルをクエリできるようにテーブルバケットを AWS 分析サービスと統合する場合は、追加のアクセス許可が必要です。詳細については、「[Integrating Amazon S3 Tables with AWS analytics services](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)」を参照してください。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)  |  (必須) `s3:DeleteBucket`  |  S3 バケットを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)  |  (必須) `s3:PutAnalyticsConfiguration`  |  S3 バケットから S3 分析設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)  |  (必須) `s3:PutBucketCORS`  |  バケットのクロスオリジンリソース共有 (CORS) 設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)  |  (必須) `s3:PutEncryptionConfiguration`  |  Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) は、S3 のバケットでデフォルトの暗号化設定をリセットするために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)  |  (必須) `s3:PutIntelligentTieringConfiguration`  |  S3 バケットから既存の S3 Intelligent-Tiering 設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)  |  (必須) `s3:PutInventoryConfiguration`  |  S3 バケットから S3 インベントリ設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)  |  (必須) `s3:PutLifecycleConfiguration`  |  S3 バケットの S3 ライフサイクル設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetadataTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetadataTableConfiguration.html) (V2 API オペレーション。IAM ポリシーアクション名は、V1 および V2 API オペレーションで同じです。)  |  (必須) `s3:DeleteBucketMetadataTableConfiguration`  |  汎用バケットからメタデータテーブル設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetadataTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetadataTableConfiguration.html) (V1 API オペレーション)  |  (必須) `s3:DeleteBucketMetadataTableConfiguration`  |  汎用バケットからメタデータテーブル設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)  |  (必須) `s3:PutMetricsConfiguration`  |  Amazon S3 バケットからの Amazon CloudWatch リクエストメトリクスのメトリクス構成を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketOwnershipControls.html)   |  (必須) `s3:PutBucketOwnershipControls`  |  S3 バケットのオブジェクト所有権設定を削除するために必要です。削除後、オブジェクト所有権の設定は `Object writer` になります。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)  |  (必須) `s3:DeleteBucketPolicy`  |  S3 バケットのポリシーを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)  |  (必須) `s3:PutReplicationConfiguration`  |  S3 バケットのレプリケーション設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)  |  (必須) `s3:PutBucketTagging`  |  S3 バケットからタグを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketWebsite.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketWebsite.html)  |  (必須) `s3:DeleteBucketWebsite`  |  S3 バケットのウェブサイト設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html) (バケットレベル)  |  (必須) `s3:PutBucketPublicAccessBlock`  |  S3 バケットのブロックパブリックアクセス設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)  |  (必須) `s3:GetAccelerateConfiguration`  |  Accelerate サブリソースを使用してバケット のAmazon S3 Transfer Acceleration 状態 (Enabled または Suspended) を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAcl.html)  |  (必須) `s3:GetBucketAcl`  |  S3 バケットのアクセスコントロールリスト (ACL) を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)  |  (必須) `s3:GetAnalyticsConfiguration`  |  S3 バケットから分析設定 ID によって識別される分析設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html)  |  (必須) `s3:GetBucketCORS`  |  S3 バケットのクロスオリジンリソース共有 (CORS) 設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)  |  (必須) `s3:GetEncryptionConfiguration`  |  S3 バケットのデフォルトの暗号化設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)  |  (必須) `s3:GetIntelligentTieringConfiguration`  |  S3 バケットの S3 Intelligent-Tiering 設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)  |  (必須) `s3:GetInventoryConfiguration`  |  バケットのインベントリ設定 ID で識別されインベントリ設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)  |  (必須) `s3:GetLifecycleConfiguration`  |  バケットの S3 ライフサイクル設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLocation.html)  |  (必須) `s3:GetBucketLocation`  |  S3 バケットが存在する AWS リージョンを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html)  |  (必須) `s3:GetBucketLogging`  |  S3 バケットのロギングステータスと、ユーザーがそのステータスを表示および変更するアクセス許可を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetadataTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetadataTableConfiguration.html) (V2 API オペレーション。IAM ポリシーアクション名は、V1 および V2 API オペレーションで同じです。)  |  (必須) `s3:GetBucketMetadataTableConfiguration`  |  汎用バケットのメタデータテーブル設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetadataTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetadataTableConfiguration.html) (V1 API オペレーション)  |  (必須) `s3:GetBucketMetadataTableConfiguration`  |  汎用バケットのメタデータテーブル設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)  |  (必須) `s3:GetMetricsConfiguration`  |  メトリクス設定 ID で指定されたメトリクス設定をバケットから取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)  |  (必須) `s3:GetBucketNotification`  |  S3 バケットの通知設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html)  |  (必須) `s3:GetBucketOwnershipControls`  |  S3 バケットのオブジェクト所有権設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)  |  (必須) `s3:GetBucketPolicy`  |  ポリシーを S3 バケットに返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)  |  (必須) `s3:GetBucketPolicyStatus`  |  バケットがパブリックかどうかを示す S3 バケットのポリシーステータスを取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)  |  (必須) `s3:GetReplicationConfiguration`  |  S3 バケットのレプリケーション設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html)  |  (必須) `s3:GetBucketRequestPayment`  |  S3 バケットのリクエスト支払い設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)  |  (必須) `s3:GetBucketVersioning`  |  S3 バケットのバージョニング状態を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)  |  (必須) `s3:GetBucketTagging`  |  S3 バケットに関連付けられているタグセットを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html)  |  (必須) `s3:GetBucketWebsite`  |  S3 バケットのウェブサイト設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html)  |  (必須) `s3:GetBucketObjectLockConfiguration`  |  S3 バケットの Object Lock 設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html) (バケットレベル)  |  (必須) `s3:GetBucketPublicAccessBlock`  |  S3 バケットのブロックパブリックアクセス設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)  |  (必須) `s3:ListBucket`  |  バケットが存在し、そのバケットにアクセスする許可があるかどうかを判断するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)  |  (必須) `s3:GetAnalyticsConfiguration`  |  S3 バケットの分析設定を一覧表示するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)  |  (必須) `s3:GetIntelligentTieringConfiguration`  |  S3 バケットの S3 Intelligent-Tiering 設定を一覧表示するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)  |  (必須) `s3:GetInventoryConfiguration`  |  S3 バケットのインベントリ設定のリストを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)  |  (必須) `s3:GetMetricsConfiguration`  |  S3 バケットのメトリクス設定を一覧表示するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)  |  (必須) `s3:ListBucket`  |  S3 バケットのオブジェクトの一部またはすべて (最大 1,000) を一覧表示するために必要です。  | 
|    |  (条件付きで必須) `s3:GetObjectAcl`  |  オブジェクト所有者情報を表示する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)  |  (必須) `s3:ListBucket`  |  S3 バケットのオブジェクトの一部またはすべて (最大 1,000) を一覧表示するために必要です。  | 
|    |  (条件付きで必須) `s3:GetObjectAcl`  |  オブジェクト所有者情報を表示する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html)  |  (必須) `s3:ListBucketVersions`  |  S3 バケット内のすべてのバージョンのオブジェクトに関するメタデータを取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)  |  (必須) `s3:PutAccelerateConfiguration`  |  既存のバケットの加速設定を指定するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAcl.html)  |  (必須) `s3:PutBucketAcl`  |  アクセスコントロールリスト (ACL) を使用して、既存のバケットに対するアクセス許可を設定するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)  |  (必須) `s3:PutAnalyticsConfiguration`  |  S3 バケットの分析設定を行うために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)  |  (必須) `s3:PutBucketCORS`  |  S3 バケットのクロスオリジンリソース共有 (CORS) 設定を指定するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)  |  (必須) `s3:PutEncryptionConfiguration`  |  S3 バケットにデフォルトの暗号化を設定するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)  |  (必須) `s3:PutIntelligentTieringConfiguration`  |  S3 Intelligent-Tiering 設定を S3 バケットに配置するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)  |  (必須) `s3:PutInventoryConfiguration`  |  S3 バケットにインベントリ設定を追加するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)  |  (必須) `s3:PutLifecycleConfiguration`  |  S3 バケットの新しい S3 ライフサイクル設定を作成するか、既存のライフサイクル設定を置き換えるために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)  |  (必須) `s3:PutBucketLogging`  |  S3 バケットのログ記録パラメータを設定し、ログ記録パラメータを表示および変更できるユーザーのアクセス許可を指定するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)  |  (必須) `s3:PutMetricsConfiguration`  |  S3 バケットの Amazon CloudWatch リクエストメトリクスのメトリクス設定を実行または更新するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html)  |  (必須) `s3:PutBucketNotification`  |  S3 バケットの指定されたイベントの通知を有効にするために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html)  |  (必須) `s3:PutBucketOwnershipControls`  |  S3 バケットのオブジェクト所有権設定を作成または変更するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)  |  (必須) `s3:PutBucketPolicy`  |  S3 バケットポリシーをバケットに適用するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)  |  (必須) `s3:PutReplicationConfiguration`  |  新しいレプリケーション設定を作成するか、S3 バケットの既存のレプリケーション設定を置き換えるために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketRequestPayment.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketRequestPayment.html)  |  (必須) `s3:PutBucketRequestPayment`  |  バケットのリクエスト支払い設定を実行するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)  |  (必須) `s3:PutBucketTagging`  |  S3 バケットにタグのセットを追加するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html)  |  (必須) `s3:PutBucketVersioning`  |  S3 バケットのバージョニング状態を設定するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)  |  (必須) `s3:PutBucketWebsite`  |  バケットをウェブサイトとして設定し、ウェブサイトの設定を行うために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html)  |  (必須) `s3:PutBucketObjectLockConfiguration`  |  S3 バケットに Object Lock 設定を追加するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html) (バケットレベル)  |  (必須) `s3:PutBucketPublicAccessBlock`  |  S3 バケットのブロックパブリックアクセス設定を作成または変更するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataInventoryTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataInventoryTableConfiguration.html)  |  (必須) `s3:UpdateBucketMetadataInventoryTableConfiguration`、`s3tables:CreateTableBucket`、`s3tables:CreateNamespace`、`s3tables:CreateTable`、`s3tables:GetTable`、`s3tables:PutTablePolicy`、`s3tables:PutTableEncryption`、`kms:DescribeKey`  |  汎用バケットのメタデータテーブル設定のインベントリテーブルを有効または無効にするために必要です。 AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用してインベントリテーブルを暗号化する場合は、KMS キーポリシーに追加のアクセス許可が必要です。詳細については、「[メタデータテーブルを設定するためのアクセス許可の設定](metadata-tables-permissions.md)」を参照してください。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataJournalTableConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataJournalTableConfiguration.html)  |  (必須) `s3:UpdateBucketMetadataJournalTableConfiguration`  |  汎用バケットのメタデータテーブル設定のジャーナルテーブルレコードの有効期限を有効または無効にするために必要です。  | 

## オブジェクトオペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-objects"></a>

オブジェクトオペレーションは、オブジェクトリソースタイプで動作する S3 API オペレーションです。リソースベースのポリシー (バケットポリシー、アクセスポイントポリシー、マルチリージョンアクセスポイントポリシー、VPC エンドポイントポリシーなど) または IAM アイデンティティベースのポリシーでオブジェクトオペレーションに S3 ポリシーアクションを指定する必要があります。

ポリシーでは、`Resource` 要素はオブジェクト ARN である必要があります。`Resource` 要素形式とポリシーの例の詳細については、「[オブジェクト操作](security_iam_service-with-iam.md#using-with-s3-actions-related-to-objects)」を参照してください。

**注記**  
AWS KMS ポリシーアクション (`kms:GenerateDataKey` および `kms:Decrypt`) は AWS KMS リソースタイプにのみ適用され、IAM アイデンティティベースのポリシーと AWS KMS リソースベースのポリシー (AWS KMS キーポリシー) で指定する必要があります。S3 バケットポリシーなど、S3 リソースベースのポリシーでは AWS KMS ポリシーアクションを指定できません。
アクセスポイントを使用してオブジェクトオペレーションへのアクセスを制御する場合、アクセスポイントポリシーを使用できます。アクセスポイントポリシーのオブジェクトオペレーションにアクセス許可を付与するには、次の点に注意してください。  
オブジェクトオペレーションへのアクセス許可を付与するアクセスポイントポリシーでは、`Resource` 要素はアクセスポイントを介してアクセスされるオブジェクトの ARN である必要があります。`Resource` 要素形式とポリシーの例の詳細については、「[アクセスポイントポリシーでのオブジェクトオペレーション](security_iam_service-with-iam.md#object-operations-ap)」を参照してください。
すべてのオブジェクトオペレーションがアクセスポイントでサポートされているわけではありません。詳細については、「[S3 オペレーションとアクセスポイントの互換性](access-points-service-api-support.md#access-points-operations-support)」を参照してください。
すべてのオブジェクトオペレーションがマルチリージョンアクセスポイントでサポートされているわけではありません。詳細については、「[S3 オペレーションとマルチリージョンアクセスポイントの互換性](MrapOperations.md#mrap-operations-support)」を参照してください。

オブジェクトオペレーションと必要なポリシーアクションのマッピングを次に示します。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)  |  (必須) `s3:AbortMultipartUpload`  |  マルチパートアップロードを中止するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)  |  (必須) `s3:PutObject`  |  マルチパートアップロードを完了するために必要です。  | 
|    |  (条件付きで必須) `kms:Decrypt`  |  AWS KMS カスタマーマネージドキー暗号化オブジェクトのマルチパートアップロードを完了する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)  |  ソースオブジェクトの場合:  |  ソースオブジェクトの場合:  | 
|    |  (必須) `s3:GetObject` または `s3:GetObjectVersion`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|    |  (条件付きで必須) `kms:Decrypt`  |  ソースバケットから AWS KMS カスタマーマネージドキーで暗号化されたオブジェクトをコピーする場合に必要です。  | 
|    |  送信先オブジェクトの場合:  |  送信先オブジェクトの場合:  | 
|    |  (必須) `s3:PutObject`  |  コピーしたたオブジェクトを送信先バケットに配置するために必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectAcl`  |  `CopyObject` リクエストを行うときに、オブジェクトアクセスコントロールリスト (ACL) を持つコピーしたオブジェクトを送信先バケットに配置する場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectTagging`  |  `CopyObject` リクエストを行うときに、オブジェクトのタグが付いたコピーしたオブジェクトを送信先バケットに配置する場合に必要です。  | 
|    |  (条件付きで必須) `kms:GenerateDataKey`  |  コピーしたオブジェクトを AWS KMS カスタマーマネージドキーで暗号化し、送信先バケットに配置する場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectRetention`  |  新しいオブジェクトの Object Lock 保持設定を行う場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectLegalHold`  |  新しいオブジェクトに Object Lock のリーガルホールドを適用する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)  |  (必須) `s3:PutObject`  |  マルチパートアップロードを作成するために必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectAcl`  |  アップロードしたオブジェクトのオブジェクトアクセスコントロールリスト (ACL) アクセス許可を設定する場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectTagging`  |  アップロードしたオブジェクトにオブジェクトのタグ付け (複数可) を追加する場合に必要です。  | 
|    |  (条件付きで必須) `kms:GenerateDataKey`  |  マルチパートアップロードを開始するときに、AWS KMS カスタマーマネージドキーを使用してオブジェクトを暗号化する場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectRetention`  |  アップロードしたオブジェクトの Object Lock 保持設定を実行する場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectLegalHold`  |  アップロードしたオブジェクトに Object Lock のリーガルホールドを適用する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)  |  (必須) `s3:DeleteObject` または `s3:DeleteObjectVersion`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|    |  (条件付きで必須) `s3:BypassGovernanceRetention`  |  Object Lock 保持のガバナンスモードで保護されているオブジェクトを削除する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)  |  (必須) `s3:DeleteObject` または `s3:DeleteObjectVersion`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|    |  (条件付きで必須) `s3:BypassGovernanceRetention`  |  Object Lock 保持のガバナンスモードで保護されているオブジェクトを削除する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)  |  (必須) `s3:DeleteObjectTagging` または `s3:DeleteObjectVersionTagging`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)  |  (必須) `s3:GetObject` または `s3:GetObjectVersion`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|    |  (条件付きで必須) `kms:Decrypt`  |  AWS KMS カスタマーマネージドキーで暗号化されたオブジェクトを取得および復号する場合に必要です。  | 
|    |  (条件付きで必須) `s3:GetObjectTagging`  |  `GetObject` リクエストを行うときにオブジェクトのタグセットを取得する場合に必要です。  | 
|    |  (条件付きで必須) `s3:GetObjectLegalHold`  |  オブジェクトの現在の Object Lock のリーガルホールドステータスを取得する場合に必要です。  | 
|    |  (条件付きで必須) `s3:GetObjectRetention`  |  オブジェクトの Object Lock 保持設定を取得する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)  |  (必須) `s3:GetObjectAcl` または `s3:GetObjectVersionAcl`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)  |  (必須) `s3:GetObject` または `s3:GetObjectVersion`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|    |  (条件付きで必須) `kms:Decrypt`  |  AWS KMS カスタマーマネージドキー暗号化オブジェクトに関連する属性を取得する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html)  |  (必須) `s3:GetObjectLegalHold`  |  オブジェクトの現在の Object Lock のリーガルホールドステータスを取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html)  |  (必須) `s3:GetObjectRetention`  |  オブジェクトの Object Lock 保持設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)  |  (必須) `s3:GetObjectTagging` または `s3:GetObjectVersionTagging`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTorrent.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTorrent.html)  |  (必須) `s3:GetObject`  |  オブジェクトの torrent ファイルを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)  |  (必須) `s3:GetObject`  |  オブジェクト自体を返さずにオブジェクトからメタデータを取得するために必要です。  | 
|    |  (条件付きで必須) `s3:GetObjectLegalHold`  |  オブジェクトの現在の Object Lock のリーガルホールドステータスを取得する場合に必要です。  | 
|    |  (条件付きで必須) `s3:GetObjectRetention`  |  オブジェクトの Object Lock 保持設定を取得する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)  |  (必須) `s3:ListBucketMultipartUploads`  |  バケット内の進行中のマルチパートアップロードを一覧表示するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)  |  (必須) `s3:ListMultipartUploadParts`  |  特定のマルチパートアップロードでアップロードされている部分を一覧表示するために必要です。  | 
|    |  (条件付きで必須) `kms:Decrypt`  |  AWS KMS カスタマーマネージドキー暗号化マルチパートアップロードの一部を一覧表示する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)  |  (必須) `s3:PutObject`  |  オブジェクトを配置するために必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectAcl`  |  `PutObject` リクエストを行うときにオブジェクトアクセスコントロールリスト (ACL) を配置する場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectTagging`  |  `PutObject` リクエストを行うときにオブジェクトのタグ付けを行う場合に必要です。  | 
|    |  (条件付きで必須) `kms:GenerateDataKey`  |  AWS KMS カスタマーマネージドキーを使用してオブジェクトを暗号化する場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectRetention`  |  オブジェクトに Object Lock 保持設定を行う場合に必要です。  | 
|    |  (条件付きで必須) `s3:PutObjectLegalHold`  |  指定されたオブジェクトに Object Lock のリーガルホールド設定を適用する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)  |  (必須) `s3:PutObjectAcl` または `s3:PutObjectVersionAcl`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLegalHold.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLegalHold.html)  |  (必須) `s3:PutObjectLegalHold`  |  Object Lock のリーガルホールド設定をオブジェクトに適用するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectRetention.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectRetention.html)  |  (必須) `s3:PutObjectRetention`  |  Object Lock 保持設定をオブジェクトに適用するために必要です。  | 
|    |  (条件付きで必須) `s3:BypassGovernanceRetention`  |  Object Lock 保持設定のガバナンスモードをバイパスする場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)  |  (必須) `s3:PutObjectTagging` または `s3:PutObjectVersionTagging`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)  |  (必須) `s3:RestoreObject`  |  アーカイブしたオブジェクトのコピーを復元するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html)  |  (必須) `s3:GetObject`  |  シンプルな構造化クエリ言語 (SQL) ステートメントに基づいて S3 オブジェクトのコンテンツをフィルタリングするために必要です。  | 
|    |  (条件付きで必須) `kms:Decrypt`  |  AWS KMS カスタマーマネージドキーで暗号化された S3 オブジェクトのコンテンツをフィルタリングする場合に必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html) | (必須) `s3:UpdateObjectEncryption`、`s3:PutObject`、`kms:Encrypt`、`kms:Decrypt`、`kms:GenerateDataKey`、`kms:ReEncrypt*` | Amazon S3 マネージド暗号化 (SSE-S3) によるサーバー側の暗号化と AWS Key Management Service (AWS KMS) 暗号化キーによるサーバー側の暗号化 (SSE-KMS) の間で暗号化されたオブジェクトを変更する場合に必要です。`UpdateObjectEncryption` オペレーションを使用して S3 バケットキーを適用し、AWS KMS リクエストのコストを削減したり、データの暗号化に使用されるカスタマーマネージド KMS キーを変更して、カスタムキーローテーション標準に準拠することもできます。 | 
|    | (条件付きで必須) `organizations:DescribeAccount` | AWS Organizations を使用している場合、組織内の他の AWS アカウントのカスタマーマネージド KMS キーで `UpdateObjectEncryption` オペレーションを使用するには、`organizations:DescribeAccount` アクセス許可が必要です。  また、AWS サポート に連絡して、組織内の他のメンバーアカウントが所有する AWS KMS keys を使用する機能をリクエストする必要があります。   | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)  |  (必須) `s3:PutObject`  |  マルチパートアップロードでパートをアップロードするために必要です。  | 
|    |  (条件付きで必須) `kms:GenerateDataKey`  |  アップロードパートを配置し、AWS KMS カスタマーマネージドキーで暗号化する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)  |  ソースオブジェクトの場合:  |  ソースオブジェクトの場合:  | 
|    |  (必須) `s3:GetObject` または `s3:GetObjectVersion`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)  | 
|    |  (条件付きで必須) `kms:Decrypt`  |  ソースバケットから AWS KMS カスタマーマネージドキーで暗号化されたオブジェクトをコピーする場合に必要です。  | 
|    |  送信先のパートの場合:  |  送信先のパートの場合:  | 
|    |  (必須) `s3:PutObject`  |  マルチパートアップロードのパートを送信先バケットにアップロードするために必要です。  | 
|    |  (条件付きで必須) `kms:GenerateDataKey`  |  パートを送信先バケットにアップロードするときに、AWS KMS カスタマーマネージドキーを使用してパートを暗号化する場合に必要です。  | 

## 汎用バケットオペレーションのアクセスポイントとアクセス許可
<a name="using-with-s3-policy-actions-related-to-accesspoint"></a>

アクセスポイントオペレーションは、`accesspoint` リソースタイプで動作する S3 API オペレーションです。アクセスポイントオペレーションの S3 ポリシーアクションは、バケットポリシーやアクセスポイントポリシーではなく、IAM アイデンティティベースのポリシーで指定する必要があります。

ポリシーでは、`Resource` 要素は `accesspoint` ARN である必要があります。`Resource` 要素形式とポリシーの例の詳細については、「[汎用バケットオペレーションのアクセスポイント](security_iam_service-with-iam.md#using-with-s3-actions-related-to-accesspoint)」を参照してください。

**注記**  
アクセスポイントを使用してバケットまたはオブジェクトオペレーションへのアクセスを制御する場合は、次の点に注意してください。  
アクセスポイントを使用してバケットオペレーションへのアクセスを制御する方法については、「[汎用バケットのアクセスポイントのポリシーでのバケットオペレーション](security_iam_service-with-iam.md#bucket-operations-ap)」を参照してください。
アクセスポイントを使用してオブジェクトオペレーションへのアクセスを制御する方法については、「[アクセスポイントポリシーでのオブジェクトオペレーション](security_iam_service-with-iam.md#object-operations-ap)」を参照してください。
アクセスポイントポリシーの設定方法の詳細については、「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。

以下は、アクセスポイントオペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html)  |  (必須) `s3:CreateAccessPoint`  |  S3 バケットに関連付けられているアクセスポイントを作成するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html)  |  (必須) `s3:DeleteAccessPoint`  |  アクセスポイントを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html)  |  (必須) `s3:DeleteAccessPointPolicy`  |  アクセスポイントポリシーを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html)  |  (必須) `s3:GetAccessPointPolicy`  |  アクセスポイントポリシーを取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicyStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicyStatus.html)  |  (必須) `s3:GetAccessPointPolicyStatus`  |  指定したアクセスポイントにパブリックアクセスを許可するポリシーが現在あるかどうかに関する情報を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html)  |  (必須) `s3:PutAccessPointPolicy`  |  アクセスポイントポリシーを配置するために必要です。  | 

## Object Lambda アクセスポイントのオペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-olap"></a>

Object Lambda アクセスポイントオペレーションは、`objectlambdaaccesspoint` リソースタイプで動作する S3 API オペレーションです。Object Lambda アクセスポイントオペレーションのポリシーを設定する方法についての詳細は、「[Object Lambda アクセスポイントの IAM ポリシーの設定](olap-policies.md)」を参照してください。

Object Lambda アクセスポイントオペレーションと必要なポリシーアクションのマッピングを次に示します。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html)  |  (必須) `s3:CreateAccessPointForObjectLambda`  |  Object Lambda アクセスポイントを作成するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointForObjectLambda.html)  |  (必須) `s3:DeleteAccessPointForObjectLambda`  |  指定した Object Lambda アクセスポイントを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicyForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicyForObjectLambda.html)  |  (必須) `s3:DeleteAccessPointPolicyForObjectLambda`  |  指定したオブジェクト Lambda アクセスポイントでポリシーを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointConfigurationForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointConfigurationForObjectLambda.html)  |  (必須) `s3:GetAccessPointConfigurationForObjectLambda`  |  Object Lambda アクセスポイントの設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetAccessPointForObjectLambda.html)  |  (必須) `s3:GetAccessPointForObjectLambda`  |  Object Lambda アクセスポイントに関する情報を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetAccessPointPolicyForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetAccessPointPolicyForObjectLambda.html)  |  (必須) `s3:GetAccessPointPolicyForObjectLambda`  |  指定した Object Lambda アクセスポイントに関連付けられたアクセスポイントポリシーを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetAccessPointPolicyStatusForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetAccessPointPolicyStatusForObjectLambda.html)  |  (必須) `s3:GetAccessPointPolicyStatusForObjectLambda`  |  特定の Object Lambda アクセスポイントポリシーのポリシーステータスを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutAccessPointConfigurationForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutAccessPointConfigurationForObjectLambda.html)  |  (必須) `s3:PutAccessPointConfigurationForObjectLambda`  |  Object Lambda アクセスポイントの設定に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutAccessPointPolicyForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutAccessPointPolicyForObjectLambda.html)  |  (必須) `s3:PutAccessPointPolicyForObjectLambda`  |  アクセスポリシーを指定した Object Lambda アクセスポイントに関連付けるために必要です。  | 

## マルチリージョンアクセスポイントとアクセス許可
<a name="using-with-s3-policy-actions-related-to-mrap"></a>

マルチリージョンアクセスポイントオペレーションは、`multiregionaccesspoint` リソースタイプで動作する S3 API オペレーションです。マルチリージョンアクセスポイントオペレーションのポリシーを設定する方法の詳細については、「[マルチリージョンアクセスポイントポリシーの例](MultiRegionAccessPointPermissions.md#MultiRegionAccessPointPolicyExamples)」を参照してください。

以下は、マルチリージョンアクセスポイントオペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateMultiRegionAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateMultiRegionAccessPoint.html)  |  (必須) `s3:CreateMultiRegionAccessPoint`  |  マルチリージョンアクセスポイントを作成し、S3 バケットに関連付けるために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteMultiRegionAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteMultiRegionAccessPoint.html)  |  (必須) `s3:DeleteMultiRegionAccessPoint`  |  マルチリージョンアクセスポイントを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeMultiRegionAccessPointOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeMultiRegionAccessPointOperation.html)  |  (必須) `s3:DescribeMultiRegionAccessPointOperation`  |  マルチリージョンアクセスポイントを管理するための非同期リクエストのステータスを取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPoint.html)  |  (必須) `s3:GetMultiRegionAccessPoint`  |  指定したマルチリージョンアクセスポイントに関する設定情報を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointPolicy.html)  |  (必須) `s3:GetMultiRegionAccessPointPolicy`  |  指定したマルチリージョンアクセスポイントのアクセスコントロールポリシーを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointPolicyStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointPolicyStatus.html)  |  (必須) `s3:GetMultiRegionAccessPointPolicyStatus`  |  指定したマルチリージョンアクセスポイントにパブリックアクセスを許可するアクセスコントロールポリシーが存在するかどうかについて、特定のマルチリージョンアクセスポイントのポリシーステータスを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointRoutes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPointRoutes.html)  |  (必須) `s3:GetMultiRegionAccessPointRoutes`  |  マルチリージョンアクセスポイントのルート設定を返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutMultiRegionAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutMultiRegionAccessPointPolicy.html)  |  (必須) `s3:PutMultiRegionAccessPointPolicy`  |  指定したマルチリージョンアクセスポイントのアクセスコントロールポリシーを更新するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SubmitMultiRegionAccessPointRoutes.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SubmitMultiRegionAccessPointRoutes.html)  |  (必須) `s3:SubmitMultiRegionAccessPointRoutes`  |  マルチリージョンアクセスポイントのルート設定の更新を送信するために必要です。  | 

## バッチジョブのオペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-batchops"></a>

(バッチオペレーション) ジョブオペレーションは、`job` リソースタイプで動作する S3 API オペレーションです。ジョブオペレーションの S3 ポリシーアクションは、バケットポリシーではなく、IAM アイデンティティベースのポリシーで指定する必要があります。

ポリシーでは、`Resource` 要素は `job` ARN である必要があります。`Resource` 要素形式とポリシーの例の詳細については、「[バッチジョブオペレーション](security_iam_service-with-iam.md#using-with-s3-actions-related-to-batchops)」を参照してください。

以下は、バッチジョブオペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteJobTagging.html)  |  (必須) `s3:DeleteJobTagging`  |  既存の S3 バッチオペレーションジョブからタグを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html)  |  (必須) `s3:DescribeJob`  |  バッチオペレーションジョブの設定パラメータとステータスを取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html)  |  (必須) `s3:GetJobTagging`  |  既存の S3 バッチオペレーションジョブのタグセットを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html)  |  (必須) `s3:PutJobTagging`  |  既存の S3 バッチオペレーションジョブにタグを配置または置換するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateJobPriority.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateJobPriority.html)  |  (必須) `s3:UpdateJobPriority`  |  既存のジョブの優先度を更新するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateJobStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateJobStatus.html)  |  (必須) `s3:UpdateJobStatus`  |  指定したジョブのステータスを更新するために必要です。  | 

## S3 ストレージレンズ設定オペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-lens"></a>

S3 ストレージレンズオペレーションは、`storagelensconfiguration` リソースタイプで動作する S3 API オペレーションです。S3 Storage Lens 設定オペレーションの設定方法の詳細については、「[Amazon S3 ストレージレンズアクセス許可の設定](storage_lens_iam_permissions.md)」を参照してください。

以下は、S3 ストレージレンズの設定オペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteStorageLensConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteStorageLensConfiguration.html)  |  (必須) `s3:DeleteStorageLensConfiguration`  |  S3 ストレージレンズ設定を削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteStorageLensConfigurationTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteStorageLensConfigurationTagging.html)  |  (必須) `s3:DeleteStorageLensConfigurationTagging`  |  S3 ストレージレンズ設定タグを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetStorageLensConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetStorageLensConfiguration.html)  |  (必須) `s3:GetStorageLensConfiguration`  |  S3 ストレージレンズ設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetStorageLensConfigurationTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetStorageLensConfigurationTagging.html)  |  (必須) `s3:GetStorageLensConfigurationTagging`  |  S3 ストレージレンズ設定のタグを取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutStorageLensConfigurationTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutStorageLensConfigurationTagging.html)  |  (必須) `s3:PutStorageLensConfigurationTagging`  |  既存の S3 ストレージレンズ設定にタグを配置または置換するために必要です。  | 

## S3 ストレージレンズグループのオペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-lens-groups"></a>

S3 ストレージレンズグループオペレーションは、`storagelensgroup` リソースタイプで動作する S3 API オペレーションです。S3 ストレージレンズグループのアクセス許可を設定する方法の詳細については、「[Storage Lens グループのアクセス許可。](storage-lens-groups.md#storage-lens-group-permissions)」を参照してください。

以下は、S3 ストレージレンズグループのオペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteStorageLensGroup.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteStorageLensGroup.html)  |  (必須) `s3:DeleteStorageLensGroup`  |  既存の S3 ストレージレンズグループを削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetStorageLensGroup.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetStorageLensGroup.html)  |  (必須) `s3:GetStorageLensGroup`  |  S3 ストレージレンズグループ設定の詳細を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateStorageLensGroup.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateStorageLensGroup.html)  |  (必須) `s3:UpdateStorageLensGroup`  |  既存の S3 ストレージレンズグループを更新するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateStorageLensGroup.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateStorageLensGroup.html) | (必須) `s3:CreateStorageLensGroup` | 新しいストレージレンズグループを作成するために必要です。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateStorageLensGroup.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateStorageLensGroup.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html) | (必須) `s3:CreateStorageLensGroup`、`s3:TagResource` | タグ付きの新しいストレージレンズグループグループを作成するために必要です。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListStorageLensGroups.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListStorageLensGroups.html) | (必須) `s3:ListStorageLensGroups` | ホームリージョンのすべてのストレージレンズグループを一覧表示するために必要です。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html) | (必須) `s3:ListTagsForResource` | ストレージレンズグループに追加されたタグを一覧表示するために必要です。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html) | (必須) `s3:TagResource` | 既存のストレージレンズグループのストレージレンズグループタグを追加または更新するために必要です。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html) | (必須) `s3:UntagResource` | ストレージレンズグループからタグを削除するために必要です。 | 

## S3 Access Grants インスタンスのオペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-s3ag-instances"></a>

S3 Access Grants インスタンスのオペレーションは、`accessgrantsinstance` リソースタイプに対して実行される S3 API オペレーションです。S3 Access Grants インスタンスは、アクセス許可の論理コンテナです。S3 Access Grants インスタンスの使用の詳細については、「[S3 Access Grants インスタンスの使用](access-grants-instance.md)」を参照してください。

以下は、S3 Access Grants インスタンスの設定オペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_AssociateAccessGrantsIdentityCenter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_AssociateAccessGrantsIdentityCenter.html)  |  (必須) `s3:AssociateAccessGrantsIdentityCenter`  |  AWS IAM アイデンティティセンター インスタンスを S3 Access Grants インスタンスに関連付けるために必要です。これにより、企業 ID ディレクトリ内のユーザーとグループのアクセス許可を作成できるようになります。また、次のアクセス許可も必要です。 `sso:CreateApplication`、`sso:PutApplicationGrant`、および `sso:PutApplicationAuthenticationMethod`。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsInstance.html)  |  (必須) `s3:CreateAccessGrantsInstance`  |  個々のアクセス許可のコンテナである S3 Access Grants インスタンス (`accessgrantsinstance` リソース) を作成するために必要です。 AWS IAM アイデンティティセンター インスタンスを S3 Access Grants インスタンスに関連付けるためには、`sso:DescribeInstance`、`sso:CreateApplication`、`sso:PutApplicationGrant`、`sso:PutApplicationAuthenticationMethod` のアクセス許可も必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstance.html)  |  (必須) `s3:DeleteAccessGrantsInstance`  |  アカウント内の AWS リージョン から S3 Access Grants インスタンス (`accessgrantsinstance` リソース) を削除するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstanceResourcePolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstanceResourcePolicy.html)  |  (必須) `s3:DeleteAccessGrantsInstanceResourcePolicy`  |  S3 Access Grants インスタンスのリソースポリシーを削除するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DissociateAccessGrantsIdentityCenter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DissociateAccessGrantsIdentityCenter.html)  |  (必須) `s3:DissociateAccessGrantsIdentityCenter`  |  AWS IAM アイデンティティセンター インスタンスと S3 Access Grants インスタンスの関連付けを解除するために必要です。また、次のアクセス許可も必要です。 `sso:DeleteApplication`  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstance.html)  |  (必須) `s3:GetAccessGrantsInstance`  |  アカウント内の AWS リージョン の S3 Access Grants インスタンスを取得するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceForPrefix.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceForPrefix.html)  |  (必須) `s3:GetAccessGrantsInstanceForPrefix`  |  特定のプレフィックスを含む S3 Access Grants インスタンスを取得するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceResourcePolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceResourcePolicy.html)  |  (必須) `s3:GetAccessGrantsInstanceResourcePolicy`  |  S3 Access Grants インスタンスのリソースポリシーを返すために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsInstances.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsInstances.html)  |  (必須) `s3:ListAccessGrantsInstances`  |  アカウント内の S3 Access Grants インスタンスのリストを返すために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessGrantsInstanceResourcePolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessGrantsInstanceResourcePolicy.html)  |  (必須) `s3:PutAccessGrantsInstanceResourcePolicy`  |  S3 Access Grants インスタンスのリソースポリシーを更新するために必要です。  | 

## S3 Access Grants ロケーションのオペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-s3ag-locations"></a>

S3 Access Grants ロケーションのオペレーションは、`accessgrantslocation` リソースタイプに対して実行される S3 API オペレーションです。S3 Access Grants ロケーションの使用の詳細については、「[S3 Access Grants ロケーションの使用](access-grants-location.md)」を参照してください。

以下は、S3 Access Grants ロケーションの設定オペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsLocation.html)  |  (必須) `s3:CreateAccessGrantsLocation`  |  S3 Access Grants インスタンスにロケーションを登録する (`accessgrantslocation` リソースを作成する) ために必要です。指定した IAM ロールには、次のアクセス許可も必要です。 `iam:PassRole`  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html)  |  (必須) `s3:DeleteAccessGrantsLocation`  |  S3 Access Grants インスタンスから登録済みのロケーションを削除するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsLocation.html)  |  (必須) `s3:GetAccessGrantsLocation`  |  S3 Access Grants インスタンスに登録済みの特定のロケーションの詳細を取得するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsLocations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsLocations.html)  |  (必須) `s3:ListAccessGrantsLocations`  |  S3 Access Grants インスタンスに登録済みのロケーションのリストを返すために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateAccessGrantsLocation.html)  |  (必須) `s3:UpdateAccessGrantsLocation`  |  S3 Access Grants インスタンスの登録済みロケーションの IAM ロールを更新するために必要です。  | 

## S3 Access Grants の許可付与オペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-s3ag-grants"></a>

S3 Access Grants の許可付与オペレーションは、`accessgrant` リソースタイプに対して実行される S3 API オペレーションです。S3 Access Grants の個々の許可付与の使用の詳細については、「[S3 Access Grants での許可の使用](access-grants-grant.md)」を参照してください。

以下は、S3 Access Grants の許可付与の設定オペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrant.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrant.html)  |  (必須) `s3:CreateAccessGrant`  |  S3 Access Grants インスタンスでユーザーまたはグループの個々の許可付与 (`accessgrant` リソース) を作成するために必要です。また、次のアクセス許可も必要です。 任意のディレクトリアイデンティティの場合 — `sso:DescribeInstance` および `sso:DescribeApplication` ディレクトリユーザーの場合 — `identitystore:DescribeUser`  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrant.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrant.html)  |  (必須) `s3:DeleteAccessGrant`  |  S3 Access Grants インスタンスから個々のアクセス許可付与 (`accessgrant` リソース) を削除するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrant.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrant.html)  |  (必須) `s3:GetAccessGrant`  |  S3 Access Grants インスタンスの個々のアクセス許可付与の詳細を取得するために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrants.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrants.html)  |  (必須) `s3:ListAccessGrants`  |  S3 Access Grants インスタンスの個々のアクセス許可付与のリストを返すために必要です。  | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListCallerAccessGrants.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListCallerAccessGrants.html)  |  (必須) `s3:ListCallerAccessGrants`  |  S3 Access Grants を通じて呼び出し元に Amazon S3 データへのアクセスを許可するアクセス許可付与を一覧表示するために必要です。  | 

## API オペレーションとアクセス許可
<a name="using-with-s3-policy-actions-related-to-accounts"></a>

アカウントオペレーションは、アカウントレベルで実行される S3 API オペレーションです。アカウントは、Amazon S3 で定義されるリソースタイプではありません。アカウントオペレーションの S3 ポリシーアクションは、バケットポリシーではなく、IAM アイデンティティベースのポリシーで指定する必要があります。

ポリシーでは、`Resource` 要素は `"*"` である必要があります。ポリシーの例の詳細については、「[アカウントオペレーション](security_iam_service-with-iam.md#using-with-s3-actions-related-to-accounts)」を参照してください。

以下は、アカウントオペレーションと必要なポリシーアクションのマッピングです。


| API オペレーション | ポリシーアクション | ポリシーアクションの説明 | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html)  |  (必須) `s3:CreateJob`  |  新しい S3 バッチオペレーションジョブを作成するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateStorageLensGroup.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateStorageLensGroup.html)  |  (必須) `s3:CreateStorageLensGroup`  |  新しい S3 ストレージレンズグループを作成し、指定した AWS アカウント ID に関連付けるために必要です。  | 
|    |  (条件付きで必須) `s3:TagResource`  |  AWS リソースタグを使用して S3 ストレージレンズグループを作成する場合に必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeletePublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeletePublicAccessBlock.html) (アカウントレベル)  |  (必須) `s3:PutAccountPublicAccessBlock`  |  ブロックパブリックアクセス設定を AWS アカウントから削除するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html)  |  (必須) `s3:GetAccessPoint`  |  指定したアクセスポイントに関する設定情報を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html) (アカウントレベル)  |  (必須) `s3:GetAccountPublicAccessBlock`  |  AWS アカウントのブロックパブリックアクセス設定を取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPoints.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPoints.html)  |  (必須) `s3:ListAccessPoints`  |  AWS アカウントが所有する S3 バケットのアクセスポイントを一覧表示するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPointsForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPointsForObjectLambda.html)  |  (必須) `s3:ListAccessPointsForObjectLambda`  |  Object Lambda アクセスポイントを一覧表示するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)  |  (必須) `s3:ListAllMyBuckets`  |  認証されたリクエスト送信者が所有するすべてのバケットのリストを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListJobs.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListJobs.html)  |  (必須) `s3:ListJobs`  |  現在のジョブと最近終了したジョブを一覧表示するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListMultiRegionAccessPoints.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListMultiRegionAccessPoints.html)  |  (必須) `s3:ListMultiRegionAccessPoints`  |  指定した AWS アカウントに現在関連付けられているマルチリージョンアクセスポイントのリストを返すために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListStorageLensConfigurations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListStorageLensConfigurations.html)  |  (必須) `s3:ListStorageLensConfigurations`  |  AWS アカウントの S3 ストレージレンズ設定のリストを取得するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListStorageLensGroups.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListStorageLensGroups.html)  |  (必須) `s3:ListStorageLensGroups`  |  指定したホーム AWS リージョン内のすべての S3 ストレージレンズグループを一覧表示するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html) (アカウントレベル)  |  (必須) `s3:PutAccountPublicAccessBlock`  |  AWS アカウントのブロックパブリックアクセス設定を作成または変更するために必要です。  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutStorageLensConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutStorageLensConfiguration.html)  |  (必須) `s3:PutStorageLensConfiguration`  |  S3 ストレージレンズ設定を配置するために必要です。  | 

# Amazon S3 のポリシーとアクセス許可
<a name="access-policy-language-overview"></a>

ここでは、Amazon S3 のバケットポリシーとユーザーポリシーの概要を示し、AWS Identity and Access Management (IAM) ポリシーの基本的なエレメントについて説明します。リストされた各エレメントは、そのエレメントの詳細と使用方法の例にリンクしています。

Amazon S3 アクションの完全なリストについては、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

基本的に、ポリシーには以下のエレメントが含まれます。
+ [Resource](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-resources) — ポリシーが適用される Amazon S3 バケット、オブジェクト、アクセスポイント、またはジョブ。バケット、オブジェクト、アクセスポイント、またはジョブの Amazon リソースネーム (ARN) を使用してリソースを識別します。

  バケットレベルのオペレーションの例:

  `"Resource": "arn:aws:s3:::bucket_name"`

  オブジェクトレベルのオペレーションの例: 
  + `"Resource": "arn:aws:s3:::bucket_name/*"` (バケットのすべてのオブジェクト)
  + `"Resource": "arn:aws:s3:::bucket_name/prefix/*"` (バケット内の特定のプレフィックスの下にあるオブジェクト)

  詳細については、「[Amazon S3 のポリシーリソース](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-resources)」を参照してください。
+ [Actions](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) – Amazon S3 では、各リソースに対して一連のオペレーションがサポートされています。許可 (または拒否) するリソースのオペレーションは、アクションキーワードを使用して識別します。

  例えば、`s3:ListBucket` アクセス許可は、Amazon S3 の [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) オペレーションの使用をユーザーに許可します (`s3:ListBucket` アクセス許可は、アクション名がオペレーション名に直接マッピングされないケースに該当します)。Amazon S3 アクションの使用に関する詳細については、「[Amazon S3 のポリシーアクション](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions)」を参照してください。Amazon S3 のアクション一覧については、*Amazon Simple Storage Service API リファレンス*の「[アクション](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.html)」を参照してください。
+ [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html) – ユーザーが特定のアクションをリクエストした場合の効力です。`Allow` または `Deny` のいずれかになります。

  リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。リソースへのアクセスを明示的に拒否することもできます。別のポリシーでリソースへのアクセスが許可されているユーザーに対して、そのリソースへのアクセスを禁止できます。詳細については、*IAM ユーザーガイド*の「[IAM JSON ポリシーの要素: Effect](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html)」を参照してください。
+ [Principal](security_iam_service-with-iam.md#s3-bucket-user-policy-specifying-principal-intro) – ステートメントのアクションやリソースへのアクセスが許可されているアカウントまたはユーザーを指します。バケットポリシーの場合、プリンシパルは、このアクセス許可の被付与者であるユーザー、アカウント、サービス、または他のエンティティです。詳細については、「[バケットポリシーのプリンシパル](security_iam_service-with-iam.md#s3-bucket-user-policy-specifying-principal-intro)」を参照してください。
+ [Condition](amazon-s3-policy-keys.md) – ポリシーが有効になる条件。Amazon S3 のアクセスポリシーの条件は、AWS 全体のキーと Amazon S3 固有のキーを使用して指定することができます。詳細については、「[条件キーを使用したバケットポリシーの例](amazon-s3-policy-keys.md)」を参照してください。

以下のバケットポリシーの例は、`Effect`、`Principal`、`Action`、`Resource`のエレメントを示しています。このポリシーは、アカウント `123456789012` のユーザー `Akua` に、`amzn-s3-demo-bucket1` バケットに対する Amazon S3 の `s3:GetObject`、`s3:GetBucketLocation`、`s3:ListBucket` アクセス許可を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ExamplePolicy01",
    "Statement": [
        {
            "Sid": "ExampleStatement01",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Akua"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        }
    ]
}
```

------

ポリシーの言語の詳細については、「IAM ユーザーガイド」の「[IAM でのポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)」および「[IAM JSON ポリシーリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)」を参照してください。**

## アクセス許可の委任
<a name="permission-delegation"></a>

AWS アカウントがリソースを所有している場合、そのアカウントは別の AWS アカウントにこれらの許可を付与できます。そのアカウントは、それらのアクセス許可またはそのサブセットを、アカウント内のユーザーに委任できます。これはアクセス許可の委任と呼ばれます。**ただし、他のアカウントから許可を受け取るアカウントは、別の AWS アカウント にクロスアカウントで許可を委任することはできません。

## Amazon S3 のバケットとオブジェクトの所有権
<a name="about-resource-owner"></a>

バケットとオブジェクトは Amazon S3 のリソースです。デフォルトでは、リソース所有者のみ、これらのリソースにアクセスできます。リソースの所有者とは、リソースを作成する AWS アカウントを指します。例: 
+ このようなリソースの所有者は、バケットの作成とオブジェクトのアップロードに使用する AWS アカウントです。
+  AWS Identity and Access Management (IAM) ユーザーまたはロールの認証情報を使用してオブジェクトをアップロードする場合、オブジェクトの所有者は、そのユーザーやロールが属する AWS アカウントです。
+ バケット所有者は、別の AWS アカウント (または別のアカウントのユーザー) に対して、オブジェクトをアップロードするためのクロスアカウントアクセス許可を付与できます。この場合、オブジェクトをアップロードする AWS アカウントが、それらのオブジェクトを所有します。バケット所有者には、他のアカウントが所有するオブジェクトに対するアクセス許可はありません。ただし、次のような例外があります。
  + バケット所有者が請求の支払いを行う場合、バケット所有者は、オブジェクトの所有者に関係なく、オブジェクトへのアクセスを拒否したり、バケット内のオブジェクトを削除したりすることができます。
  + バケット所有者は、オブジェクトの所有者に関係なく、オブジェクトをアーカイブしたり、アーカイブされたオブジェクトを復元したりすることができます。アーカイブはオブジェクトの格納に使用されるストレージクラスを指します。詳細については、[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md) を参照してください。

### 所有権とリクエスト認証
<a name="about-resource-owner-requests"></a>

バケットに対するリクエストはすべて、認証済みまたは未認証です。認証済みのリクエストには、リクエストの送信元を認証する署名値を含める必要がありますが、未認証のリクエストには含みません。リクエスト認証の詳細については、「Amazon S3 API リファレンス」の「[Making requests](https://docs.aws.amazon.com/AmazonS3/latest/API/MakingRequests.html)」を参照してください。**

バケット所有者は認証されていないリクエストを許可できます。例えば、認証されていない [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) リクエストは、バケットにパブリックバケットポリシーが適用されている場合や、バケットの ACL で `All Users` グループまたは匿名ユーザーに `WRITE` または `FULL_CONTROL` のアクセス許可が付与されている場合に許可されます。パブリックバケットポリシーとパブリックアクセスコントロールリスト (ACL) の詳細については、[「パブリック」の意味](access-control-block-public-access.md#access-control-block-public-access-policy-status) を参照してください。

認証されていないリクエストはすべて、匿名ユーザーによって行われます。このユーザーは、特定の正規ユーザー ID `65a011a29cdf8ec533ec3d1ccaae921c` によって、ACL で表されます。認証されていないリクエストでオブジェクトがバケットにアップロードされている場合、所有者はその匿名ユーザーです。デフォルトのオブジェクト ACL では、`FULL_CONTROL` がオブジェクトの所有者として匿名ユーザーに付与されます。そのため、Amazon S3 では、認証されていないリクエストによるオブジェクトの取得やその ACL の変更を許可しています。

匿名ユーザーによってオブジェクトが変更されないように、匿名のパブリック書き込みをバケットに許可するバケットポリシーを実装したり、匿名ユーザーにバケットへの書き込みアクセスを許可したりする ACL を使用しないことをお勧めします。この推奨事項を強制的に適用するには、Amazon S3 のパブリックアクセスのブロックを使用します。

パブリックアクセスのブロックの詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。ACL の詳細については、[アクセスコントロールリスト (ACL) の概要](acl-overview.md) を参照してください。

**重要**  
認証されたリクエストの実行に AWS アカウントのルートユーザー認証情報を使用しないことをお勧めします。代わりに、IAM ロールを作成し、このロールにフルアクセスを許可します。このロールを持つユーザーを*管理者ユーザー*と呼びます。AWS アカウントのルートユーザー認証情報ではなく、管理者ユーザーに割り当てられた認証情報を使用して AWS とやり取りし、バケットの作成、ユーザーの作成、アクセス許可の付与などのタスクを実行できます。詳細については、「IAM ユーザーガイド」の「[AWS セキュリティ認証情報](https://docs.aws.amazon.com/general/latest/gr/root-vs-iam.html)」および「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。**







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

バケットポリシーは、Amazon S3 バケットとその中のオブジェクトへのアクセス許可を付与できるリソースベースのポリシーです。バケット所有者のみが、ポリシーをバケットに関連付けることができます。バケットに添付された許可は、バケット所有者が所有するバケットのすべてのオブジェクトに適用されます。これらの許可は、他の AWS アカウント が所有するオブジェクトには適用されません。

S3 オブジェクト所有権は、Amazon S3 バケットレベルの設定で、バケットにアップロードされたオブジェクトの所有権を制御し、アクセスコントロールリスト (ACL) を有効または無効にするのに使用できます。デフォルトでは、オブジェクト所有権は[バケット所有者の強制] 設定に設定され、すべての ACL は無効になっています。バケット所有者は、バケット内のすべてのオブジェクトを所有し、ポリシーのみを使用してオブジェクトへのアクセスを管理します。

バケットポリシーは、JSON ベースの AWS Identity and Access Management (IAM) ポリシー言語を使用します。バケットポリシーを使用して、バケット内のオブジェクトに対する許可を追加または拒否できます。バケットポリシーは、ポリシーの要素に基づいて、リクエストを許可または拒否します。これらの要素には、リクエスタ、S3 アクション、リソース、およびリクエストの側面または条件 (リクエストの作成に使用された IP アドレスなど) が含まれます。

例えば、次のことを実行するバケットポリシーを作成できます。
+ S3 バケットにオブジェクトをアップロードするためのクロスアカウントアクセス許可を付与するクロスアカウントアクセス許可を付与する
+ バケット所有者であるユーザーが、アップロードされたオブジェクトを完全に管理できるようにする

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

**重要**  
バケットポリシーを使用して、[S3 ライフサイクル](object-lifecycle-mgmt.md)ルールによる削除や移行を防ぐことはできません。例えば、バケットポリシーがすべてのプリンシパルのすべてのアクションを拒否する場合でも、S3 ライフサイクル設定は通常どおり機能します。

このセクションのトピックでは、具体例と、S3 コンソールにバケットポリシーを追加する方法について説明します。アイデンティティベースのポリシーについては、「[Amazon S3 のアイデンティティベースのポリシー](security_iam_id-based-policy-examples.md)」を参照してください。バケットポリシー言語の詳細については、「[Amazon S3 のポリシーとアクセス許可](access-policy-language-overview.md)」を参照してください。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**Topics**
+ [Amazon S3 コンソールを使用したバケットポリシーの追加](add-bucket-policy.md)
+ [バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール](example-bucket-policies-vpc-endpoint.md)
+ [Amazon S3 バケットポリシーの例](example-bucket-policies.md)
+ [条件キーを使用したバケットポリシーの例](amazon-s3-policy-keys.md)

# Amazon S3 コンソールを使用したバケットポリシーの追加
<a name="add-bucket-policy"></a>

[AWS Policy Generator](https://aws.amazon.com/blogs/aws/aws-policy-generator/) および Amazon S3 コンソールを使用して、新しいバケットポリシーを追加したり、既存のバケットポリシーを編集したりできます。バケットポリシーはリソースベースの AWS Identity and Access Management (IAM) ポリシーです。バケットポリシーをバケットに追加して、バケットおよびバケット内のオブジェクトに対するアクセス許可を、他の AWS アカウントまたは IAM ユーザーに付与できます。オブジェクトのアクセス許可は、バケット所有者が作成したオブジェクトにのみ適用されます。バケットポリシーの詳細については、「[Amazon S3 用 Identity and Access Management](security-iam.md)」を参照してください。

ポリシーを保存する前に、AWS Identity and Access Management Access Analyzer でセキュリティ警告、エラー、一般的な警告、および提案を解決してください。IAM Access Analyzer は、IAM [ポリシーの文法](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)および[ベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) に対してポリシーチェックを行います。これらのチェックにより、機能的でセキュリティのベストプラクティスに準拠したポリシーを作成するのに、役立つ結果と実行可能なレコメンデーションが示されます。IAM Access Analyzer を使用したポリシーの検証の詳細については、「*IAM ユーザーガイド*」の「[IAM Access Analyzer のポリシーの検証](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)」を参照してください。IAM Access Analyzer によって返される警告、エラー、および提案のリストを表示するには、「[IAM Access Analyzer ポリシーチェックリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html)」を参照してください。

ポリシーのエラーのトラブルシューティングに関するガイダンスについては、「[Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング](troubleshoot-403-errors.md)」を参照してください。

**バケットポリシーを作成または編集するには**

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

1. 左のナビゲーションペインで、**[汎用バケット]** または **[ディレクトリバケット]** を選択します。

1. バケットのリストで、バケットポリシーを作成するバケットの名前、またはバケットポリシーを編集するバケットの名前を選択します。

1. **[アクセス許可]** タブを選択します。

1. **[バケットポリシー]** で **[編集]** を選択します。**[Edit bucket policy]** (バケットポリシーを編集) ページが表示されます。

1. **[Edit bucket policy]** (バケットポリシーを編集) ページで、次の操作を実行します。
   + バケットポリシーの例を表示するには、**[ポリシーの例]** をクリックします。または、「Amazon S3 ユーザーガイド」の「[Amazon S3 バケットポリシーの例](example-bucket-policies.md)」を参照してください。**
   + ポリシーを自動的に生成するか、**Policy]** (ポリシー) セクションで JSON を編集するには、**[Policy Generator]** を選択します。

   **[Policy Generator]** を選択すると、AWS Policy Generator が新しいウィンドウで開きます。

   1. **[Select Type of Policy]** (ポリシーの種類の選択) の **[AWS Policy Generator]** ページで、**[S3 Bucket Policy]** (S3 バケットポリシー)を選択します。

   1. 提供されたフィールドに情報を入力してステートメントを追加し、**ステートメントの追加**を選択します。このステップを、追加するステートメントの数だけ繰り返します。ポリシーステートメントの詳細については、*IAM ユーザーガイド*の [IAM JSON ポリシーのエレメントのリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)を参照してください。
**注記**  
わかりやすいように、**[バケットポリシーの編集]** ページでは、現在のバケットの **[バケット ARN]** (Amazon リソースネーム) が **[ポリシー]** テキストフィールドの上に表示されます。この ARN をコピーして、**AWSポリシージェネレータ**のステートメントで使用できます。

   1. ステートメントの追加が完了したら、**ポリシーの生成**を選択します。

   1. 生成されたポリシーテキストをコピーし、[**閉じる**] を選択すると、Amazon S3 コンソールの**バケットポリシーの編集**ページに戻ります。

1. **[Policy]** (ポリシー) ボックスで、既存のポリシーを編集するか、AWS Policy Generator からバケットポリシーを貼り付けます。ポリシーを保存する前に、セキュリティ警告、エラー、一般的な警告、および提案を解決してください。
**注記**  
バケットポリシーのサイズは 20 KB に制限されています。

1. (オプション) 新しいポリシーがリソースへのパブリックアクセスおよびクロスアカウントアクセスにどのように影響するかをプレビューするには、**[Preview external access]** (外部アクセスをプレビュー) を選択します。ポリシーを保存する前に、新しい IAM Access Analyzer の結果が導入されているかどうかや、既存の結果を解決するかどうかを確認できます。アクティブなアナライザーが表示されない場合は、**[Go to Access Analyzer]** (Access Analyzer に移動) を選択し、[[IAM Access Analyzer]](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) でアカウントアナライザーを作成します。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html)の*アクセスのプレビュー*を参照してください。

1. **[Save changes]** (変更の保存) を選択すると、**[Permissions]** (アクセス許可) タブへ戻ります。

# バケットポリシーを使用した 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)」を参照してください。

# Amazon S3 バケットポリシーの例
<a name="example-bucket-policies"></a>

Amazon S3 バケットポリシーを使用すると、バケット内のオブジェクトへのアクセスを保護して、適切な権限を持つユーザーだけがアクセスできるようにすることができます。適切な権限を持たない認証済みユーザーが Amazon S3 リソースにアクセスできないようにすることもできます。

このセクションでは、バケットポリシーの一般的なユースケース例を紹介します。これらのサンプルポリシーは、`amzn-s3-demo-bucket` をリソース値として使用します。これらのポリシーをテストするには、`user input placeholders` をお客様の情報 (バケット名など) と置き換えます。

オブジェクトのセットに対するアクセス許可を付与または拒否するために、Amazon リソースネーム (ARN) やその他の値でワイルドカード文字 (`*`) を使用できます。例えば、共通の[プレフィックス](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix)で始まるか、`.html` などの特定の拡張子で終わるオブジェクトのグループへのアクセスをコントロールできます。

AWS Identity and Access Management (IAM) ポリシー言語については、「[Amazon S3 のポリシーとアクセス許可](access-policy-language-overview.md)」を参照してください。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**注記**  
Amazon S3 コンソールを使用して許可をテストするときには、コンソールに必要な `s3:ListAllMyBuckets`、`s3:GetBucketLocation`、`s3:ListBucket` を追加で付与する必要があります。コンソールを使用してユーザーにアクセス許可を付与してテストする例の解説については、「[ユーザーポリシーを使用したバケットへのアクセスの制御](walkthrough1.md)」を参照してください。

バケットポリシーを作成するためのその他のリソースには、以下が含まれます。
+ バケットポリシーの作成時に使用できる IAM ポリシーアクション、リソース、および条件キーの完全なリストについては、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**
+ S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。
+ S3 ポリシーの作成に関するガイダンスについては、「[Amazon S3 コンソールを使用したバケットポリシーの追加](add-bucket-policy.md)」を参照してください。
+ ポリシーのエラーのトラブルシューティングを行うには、「[Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング](troubleshoot-403-errors.md)」を参照してください。

ポリシーの追加または更新に問題がある場合は、AWS re:Post 情報センターの「[Amazon S3 バケットポリシーを更新しようとする際、『Invalid principal in policy』というエラーが発生する理由を知りたいです](https://repost.aws/knowledge-center/s3-invalid-principal-in-policy-error)」を参照してください。

**Topics**
+ [任意の匿名ユーザーへの読み取り専用アクセス許可の付与](#example-bucket-policies-anonymous-user)
+ [暗号化が必要](#example-bucket-policies-encryption)
+ [定型の ACL を使ったバケットの管理](#example-bucket-policies-public-access)
+ [オブジェクトタグ付けによるオブジェクトアクセスの管理](#example-bucket-policies-object-tags)
+ [グローバル条件キーによるオブジェクトアクセスの管理](#example-bucket-policies-global-condition-keys)
+ [HTTP または HTTPS リクエストに基づくアクセス管理](#example-bucket-policies-HTTP-HTTPS)
+ [特定のフォルダへのユーザーアクセスの管理](#example-bucket-policies-folders)
+ [アクセスログへのアクセス管理](#example-bucket-policies-access-logs)
+ [Amazon CloudFront の OAI へのアクセス管理](#example-bucket-policies-cloudfront)
+ [Amazon S3 ストレージレンズへのアクセス管理](#example-bucket-policies-lens)
+ [S3 インベントリ、S3 分析、および S3 インベントリレポートの権限管理](#example-bucket-policies-s3-inventory)
+ [MFA が必要](#example-bucket-policies-MFA)
+ [ユーザーによるオブジェクトの削除を禁止する](#using-with-s3-actions-related-to-bucket-subresources)

## 任意の匿名ユーザーへの読み取り専用アクセス許可の付与
<a name="example-bucket-policies-anonymous-user"></a>

ポリシー設定を使用して、匿名のパブリックユーザーにアクセス許可を付与できます。これは、バケットを静的ウェブサイトとして設定する場合に便利です。匿名のパブリックユーザーにアクセス許可を付与するには、バケットのブロックパブリックアクセス設定を無効にする必要があります。これを行う方法と必要なポリシーの詳細については、「[ウェブサイトアクセスのアクセス許可の設定](WebsiteAccessPermissionsReqd.md)」を参照してください。同じ目的でより制限の厳しいポリシーを設定する方法については、「AWS 情報センター」の「[Amazon S3 バケットの一部のオブジェクトにパブリック読み取りアクセス権を付与するにはどうすればよいですか?](https://repost.aws/knowledge-center/read-access-objects-s3-bucket)」を参照してください。

デフォルトでは、Amazon S3 はアカウントとバケットへのパブリックアクセスをブロックします。バケットを使用して静的ウェブサイトをホストする場合は、以下のステップを使用して、パブリックアクセスブロック設定を編集できます。

**警告**  
このステップを完了する前に「[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md)」を読んで、パブリックアクセスを許可することに伴うリスクを理解し、了承してください。パブリックアクセスブロック設定をオフにしてバケットをパブリックにすると、インターネット上のだれでもバケットにアクセスできるようになります。バケットへのすべてのパブリックアクセスをブロックすることをお勧めします。

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開きます。

1. 静的ウェブサイトとして設定されたバケットの名前を選択します。

1. [**Permissions (アクセス許可)**] を選択します。

1. **[ブロックパブリックアクセス (バケット設定)]** で **[編集]** を選択します。

1. [**Block *all* public access (すべてのパブリックアクセスをブロックする)**] をクリアし、[**Save changes (変更の保存)**] を選択します。  
![\[バケットのブロックパブリックアクセス設定を示す Amazon S3 コンソール。\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   Amazon S3 で、バケットのブロックパブリックアクセス設定がオフになります。パブリックな静的ウェブサイトを作成するには、バケットポリシーを追加する前に、アカウントの[ブロックパブリックアクセス設定を編集する](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html)必要があります。アカウントのブロックパブリックアクセス設定が現在有効になっている場合は、**[ブロックパブリックアクセス (バケット設定)]** の下にメモが表示されます。

## 暗号化が必要
<a name="example-bucket-policies-encryption"></a>

次の例に示すように、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を要求できます。

### バケットに書き込まれるすべてのオブジェクトに SSE-KMS が必要
<a name="example-bucket-policies-encryption-1"></a>

次のポリシー例では、バケットに書き込まれるすべてのオブジェクトを、AWS Key Management Service (AWS KMS) キーを使用したサーバー側の暗号化 (SSE-KMS) を使用して暗号化することを要求しています。オブジェクトが SSE-KMS で暗号化されていない場合、リクエストは拒否されます。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Id": "PutObjPolicy",
"Statement": [{
  "Sid": "DenyObjectsThatAreNotSSEKMS",
  "Principal": "*",
  "Effect": "Deny",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
  "Condition": {
    "Null": {
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "true"
    }
  }
}]
}
```

------

### バケットに書き込まれるすべてのオブジェクトに特定の AWS KMS key を使用する SSE-KMS が必要
<a name="example-bucket-policies-encryption-2"></a>

次のポリシー例では、特定の KMS キー ID を使用して SSE-KMS で暗号化されていないオブジェクトはバケットに書き込まれません。オブジェクトがリクエストごとのヘッダーまたはバケットのデフォルト暗号化を使用して SSE-KMS で暗号化されている場合でも、特定の KMS キーで暗号化されていないオブジェクトはバケットに書き込めません。この例で使用している KMS キー ARN を必ずお客様の KMS キー ARN に置き換えてください。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Id": "PutObjPolicy",
"Statement": [{
  "Sid": "DenyObjectsThatAreNotSSEKMSWithSpecificKey",
  "Principal": "*",
  "Effect": "Deny",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
  "Condition": {
    "ArnNotEqualsIfExists": {
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
    }
  }
}]
}
```

------

## 定型の ACL を使ったバケットの管理
<a name="example-bucket-policies-public-access"></a>

### オブジェクトをアップロードしたり、パブリックアクセス用のオブジェクト ACL を設定したりする権限を複数のアカウントに付与する
<a name="example-bucket-policies-acl-1"></a>

以下のユーザーポリシーの例は、複数の AWS アカウント に `s3:PutObject` アクセス許可および `s3:PutObjectAcl` アクセス許可を付与します。また、このポリシーの例では、これらのオペレーションのリクエストには必ず `public-read` という[既定のアクセスコントロールリスト (ACL)](acl-overview.md#canned-acl) を含めることが求められています。詳細については、「[Amazon S3 のポリシーアクション](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions)」および「[Amazon S3 のポリシー条件キー](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys)」を参照してください。

**警告**  
`public-read` という既定の ACL を使用すると、バケット内のオブジェクトを世界中の誰でも見ることができます。Amazon S3 のバケットへの匿名アクセスを許可したり、パブリックアクセスブロック設定を無効にしたりする場合は注意が必要です。匿名アクセスを付与すると、世界中のすべてのユーザーがバケットにアクセスできます。[静的なウェブサイトのホスティング](WebsiteHosting.md)などで特に必要な場合を除いて、Amazon S3 のバケットへの匿名アクセスは許可しないことをお勧めします。静的ウェブサイトホスティングのパブリックアクセスをブロックする設定を有効にする場合は、「[チュートリアル: Amazon S3 での静的ウェブサイトの設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPublicReadCannedAcl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": [
                        "public-read"
                    ]
                }
            }
        }
    ]
}
```

------

### バケット所有者はフルコントロール権限を持ちながら、オブジェクトをアップロードするためのクロスアカウントアクセス許可を付与する
<a name="example-bucket-policies-acl-2"></a>

以下の例は、アップロードされたオブジェクトを完全に制御しながら、別の AWS アカウント がバケットにオブジェクトをアップロードできるようにする方法を示しています。このポリシーでは、特定の AWS アカウント (*`111122223333`*) に、アップロード時に `bucket-owner-full-control` の既定 ACL が含まれている場合にのみ、オブジェクトをアップロードする機能が付与されます。ポリシーの `StringEquals` 条件は、要件を表現する `s3:x-amz-acl` 条件キーを指定します。詳細については、「[Amazon S3 のポリシー条件キー](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys)」を参照してください。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
     {
       "Sid":"PolicyForAllowUploadWithACL",
       "Effect":"Allow",
       "Principal":{"AWS":"111122223333"},
       "Action":"s3:PutObject",
       "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*",
       "Condition": {
         "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
       }
     }
   ]
}
```

------

## オブジェクトタグ付けによるオブジェクトアクセスの管理
<a name="example-bucket-policies-object-tags"></a>

### 特定のタグキーと値を持つオブジェクトの読み取り権限のみをユーザーに許可する
<a name="example-bucket-policies-tagging-1"></a>

以下のアクセス許可ポリシーでは、`environment: production` タグキーと値を持つオブジェクトのみを読み取れるように制限しています。このポリシーは `s3:ExistingObjectTag` 条件キーを使用してタグキーと値を指定します。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Principal":{
            "AWS":"arn:aws:iam::111122223333:role/JohnDoe"
         },
         "Effect":"Allow",
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*",
         "Condition":{
            "StringEquals":{
               "s3:ExistingObjectTag/environment":"production"
            }
         }
      }
   ]
}
```

------

### ユーザーが追加できるオブジェクトタグキーを制限する
<a name="example-bucket-policies-tagging-2"></a>

次のポリシーの例では、`s3:PutObjectTagging` アクションを実行するアクセス許可をユーザーに付与します (ユーザーが既存のオブジェクトにタグを追加することができます)。この条件は `s3:RequestObjectTagKeys` 条件キーを使用して、`Owner` や `CreationDate` などの許可されたタグキーを指定します。詳細については、「*IAM ユーザーガイド*」の「[複数のキーの値をテストする条件の作成](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_multi-value-conditions.html)」を参照してください。

このポリシーは、リクエストで指定されたすべてのタグキーが承認されたタグキーであることを保証します。条件の `ForAnyValue` 修飾子によって、指定したキーの少なくとも 1 つがリクエストに存在することが保証されます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
            "arn:aws:iam::111122223333:role/JohnDoe"
         ]
       },
 "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [
            "Owner",
            "CreationDate"
          ]
        }
      }
    }
  ]
}
```

------

### ユーザーにオブジェクトタグの追加を許可する場合は特定のタグキーと値が必要
<a name="example-bucket-policies-tagging-3"></a>

次のポリシーの例では、`s3:PutObjectTagging` アクションを実行するアクセス許可をユーザーに付与します (ユーザーが既存のオブジェクトにタグを追加することができます)。この条件により、値が `X` に設定された特定のタグキー (`Project` など) をユーザーが含めることが求められます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
       "arn:aws:iam::111122223333:user/JohnDoe"
         ]
       },
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X"
        }
      }
    }
  ]
}
```

------

### 特定のオブジェクトタグキーと値を持つオブジェクトのみを追加することをユーザーに許可する
<a name="example-bucket-policies-tagging-4"></a>

次のポリシーの例では、`s3:PutObject` アクションを実行する権限をユーザーに付与して、ユーザーがバケットにオブジェクトを追加できるようにします。ただし、`Condition` ステートメントは、アップロードされたオブジェクトで使用できるタグキーと値を制限します。この例では、ユーザーがバケットに追加できるのは、値が `Finance` に設定された特定のタグキー (`Department`) を持つオブジェクトだけです。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Principal":{
            "AWS":[
                 "arn:aws:iam::111122223333:user/JohnDoe"
         ]
        },
        "Effect": "Allow",
        "Action": [
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ],
        "Condition": {
            "StringEquals": {
                "s3:RequestObjectTag/Department": "Finance"
            }
        }
    }]
}
```

------

## グローバル条件キーによるオブジェクトアクセスの管理
<a name="example-bucket-policies-global-condition-keys"></a>

[グローバル条件キー](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html)は、`aws` プレフィックスが付いた条件キーです。AWS のサービス のサービスは、グローバル条件キーをサポートするか、サービスプレフィックスを含むサービス固有のキーを提供できます。JSON ポリシーの `Condition` 要素を使用して、リクエストのキーを、ポリシーで指定したキー値と比較できます。

### Amazon S3 サーバーアクセスログ配信のみに制限する
<a name="example-bucket-policies-global-condition-keys-1"></a>

次の例のバケットポリシーでは、[https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) グローバル条件キーを使用して、サービス間リクエストを行っているリソースの [Amazon リソースネーム (ARN)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) を、ポリシーで指定した ARN と比較します。`aws:SourceArn` 条件キーを使用して、サービス間のトランザクション中に Amazon S3 サービスが[混乱した代理](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html)として使用されるのを防ぐことができます。Amazon S3 バケットにオブジェクトを追加できるのは Amazon S3 サービスのみです。

この例のバケットポリシーは、ロギングサービスプリンシパル (`s3:PutObject`) にのみ `logging.s3.amazonaws.com` 許可を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPutObjectS3ServerAccessLogsPolicy",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "StringEquals": {
                "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket1"
                }
            }
        },
        {
            "Sid": "RestrictToS3ServerAccessLogs",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "ForAllValues:StringNotEquals": {
                    "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com"
                }
            }
        }
    ]
}
```

------

### 自分の組織にのみアクセスを許可
<a name="example-bucket-policies-global-condition-keys-2"></a>

リソースにアクセスするすべての [IAM プリンシパル](https://docs.aws.amazon.com//IAM/latest/UserGuide/intro-structure.html#intro-structure-principal)が組織内の AWS アカウント (AWS Organizations管理アカウントを含む) からのアクセスのみに制限する場合は、`aws:PrincipalOrgID` グローバル条件キーを使用できます。

このタイプのアクセスを許可または制限するには、`aws:PrincipalOrgID` 条件を定義し、[バケットポリシーの組織 ID](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_org_details.html) に値を設定します。組織 ID は、バケットへのアクセスを制御するために使用されます。`aws:PrincipalOrgID` 条件を使用すると、バケットポリシーのアクセス許可は、組織に追加されるすべての新しいアカウントにも適用されます。

以下は、組織内の特定の IAM プリンシパルにバケットへの直接アクセス許可を付与できるリソースベースのバケットポリシーの例です。バケットポリシーに `aws:PrincipalOrgID` グローバル条件キーを追加すると、リソースにアクセスするにはプリンシパルアカウントが組織内に存在する必要があります。アクセスを許可するときに誤って間違ったアカウントを指定した場合でも、[aws:PrincipalOrgID グローバル条件キー](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid)は追加の保護手段として機能します。このグローバルキーをポリシーで使用すると、指定した組織以外のすべてのプリンシパルが、Amazon S3 バケットにアクセスできないようにします。リソースへのアクセス権を取得できるのは、リストにある組織のアカウントのプリンシパルだけです。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "AllowGetObject",
        "Principal": {
            "AWS": "*"
        },
        "Effect": "Allow",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalOrgID": ["o-aa111bb222"]
            }
        }
    }]
}
```

------

## HTTP または HTTPS リクエストに基づくアクセス管理
<a name="example-bucket-policies-HTTP-HTTPS"></a>

### HTTPS リクエストのみにアクセスを制限
<a name="example-bucket-policies-use-case-HTTP-HTTPS-1"></a>

潜在的な攻撃者がネットワークトラフィックを操作するのを防ぎたい場合は、HTTPS (TLS) を使用して暗号化された接続のみを許可し、HTTP リクエストによるバケットへのアクセスを制限できます。リクエストが HTTP か HTTPS かを判断するには、S3 バケットポリシーの [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) グローバル条件キーを使用します。`aws:SecureTransport` 条件キーは、リクエストが HTTP を使用して送信されたかどうかをチェックします。

リクエストが `true` を返した場合、リクエストは HTTPS 経由の送信です。リクエストが `false` を返した場合、リクエストは HTTP 経由の送信です。その後、目的のリクエストスキームに基づいてバケットへのアクセスを許可または拒否することができます。

次の例で、バケットポリシーは HTTP リクエストを明示的に拒否しています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "RestrictToTLSRequestsOnly",
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket",
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        },
        "Principal": "*"
    }]
}
```

------

### 特定の HTTP Referer へのアクセスの制限
<a name="example-bucket-policies-HTTP-HTTPS-2"></a>

`amzn-s3-demo-bucket` というバケットに格納されている写真や動画へのリンクがある *`www.example.com`* または *`example.com`* というドメイン名のウェブサイトがあるとします。デフォルトでは、Amazon S3 のすべてのリソースはプライベートであるため、リソースを作成した AWS アカウント のみがアクセスできます。

これらのオブジェクトへのウェブサイトの読み取りアクセスを許可するには、`s3:GetObject` アクセス許可を条件付きで付与するバケットポリシーを追加する方法があります。条件としては、`GET` リクエストが特定のウェブページから発生する必要があることを指定します。次のポリシーでは、`aws:Referer` 条件キー付きの `StringLike` 条件を使用してリクエストを制限します。

使用するブラウザのリクエストに HTTP `referer` ヘッダーが含まれていることを確認します。

**警告**  
`aws:Referer` 条件キーを使用するときには、十分な注意が必要です。一般に知られている HTTP 参照子のヘッダー値を含めるのは危険です。認可されていない当事者は、変更されたブラウザまたはカスタムブラウザを使用して任意の `aws:Referer` 値を提供することができます。したがって、無許可の当事者が AWS リクエストを直接作成できないよう、`aws:Referer` を使用しないでください。  
この `aws:Referer` 条件キーは、Amazon S3 に保存されているコンテンツなどのデジタルコンテンツが、無許可のサードパーティーサイトで参照されないよう保護する目的でのみ、お客様に提供されています。詳細については、「[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer)」の「*aws:Referer*」を参照してください。

## 特定のフォルダへのユーザーアクセスの管理
<a name="example-bucket-policies-folders"></a>

### 特定のフォルダへのアクセス許可をユーザーに付与
<a name="example-bucket-policies-folders-1"></a>

特定のフォルダへのアクセスをユーザーに許可しようとしているとします。IAM ユーザーと S3 バケットが同じ AWS アカウント に属している場合は、IAM ポリシーを使用してユーザーに特定のバケットフォルダへのアクセス許可を付与できます。このアプローチを使用すると、バケットポリシーを更新してアクセスを付与する必要はありません。複数のユーザーが切り替えることができる IAM ロールに IAM ポリシーを追加できます。

IAM ID と S3 バケットの AWS アカウント が異なる場合は、IAM ポリシーとバケットポリシーの両方でクロスアカウントアクセスを許可する必要があります。クロスアカウントアクセスを付与する方法の詳細については、「[バケット所有者がクロスアカウントのバケットのアクセス許可を付与する](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)」を参照してください。

次のバケットポリシーの例では、自分のフォルダ (`home/JohnDoe/`) のみに`JohnDoe` のフルコンソールアクセスを許可しています。`home` フォルダを作成し、ユーザーに適切なアクセス許可を付与することで、複数のユーザーが 1 つのバケットを共有できます。このポリシーは、次の 3 つの `Allow` ステートメントで構成されています。
+ `AllowRootAndHomeListingOfCompanyBucket`: ユーザー (`JohnDoe`) が `amzn-s3-demo-bucket` バケットのルートレベルと `home` フォルダ内のオブジェクトを一覧表示できるようにします。このステートメントにより、ユーザーはコンソールを使用してプレフィックス `home/` を検索することもできます。
+ `AllowListingOfUserFolder`: ユーザー (`JohnDoe`) が `home/JohnDoe/` フォルダとサブフォルダ内のすべてのオブジェクトを一覧表示できるようにします。
+ `AllowAllS3ActionsInUserFolder`: `Read`、`Write`、`Delete` 権限を付与することで、ユーザーが Amazon S3 のすべてのアクションを実行できるようにします。権限はバケット所有者のホームフォルダに限定されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRootAndHomeListingOfCompanyBucket",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": ["", "home/", "home/JohnDoe"],
                    "s3:delimiter": ["/"]
                }
            }
        },
        {
            "Sid": "AllowListingOfUserFolder",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Action": ["s3:ListBucket"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["home/JohnDoe/*"]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInUserFolder",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Action": ["s3:*"],
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/home/JohnDoe/*"]
        }
    ]
}
```

------

## アクセスログへのアクセス管理
<a name="example-bucket-policies-access-logs"></a>

### アクセスログを有効にするためのアクセス権限を Application Load Balancer に付与
<a name="example-bucket-policies-access-logs-1"></a>

Application Load Balancer のアクセスログを有効にする場合は、ロードバランサーが[ログを保存する](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#access-log-create-bucket) S3 バケットの名前を指定する必要があります。このバケットは、バケットにアクセスログを書き込む許可を Elastic Load Balancing に付与する[アタッチされたポリシー](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#attach-bucket-policy)が必要です。

次の例では、バケットポリシーにより、バケットにアクセスログを書き込む許可を Elastic Load Balancing (ELB) に付与しています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/111122223333/*"
        }
    ]
}
```

------

**注記**  
必ず、`elb-account-id` を、ご利用の AWS リージョン における Elastic Load Balancing の AWS アカウント ID に置き換えてください。Elastic Load Balancing リージョンのリストについては、「*Elastic Load Balancing ユーザーガイド*」の「[Attach a policy to your Amazon S3 bucket](https://docs.aws.amazon.com//elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy)」を参照してください。

ご利用の AWS リージョン がサポートされている Elastic Load Balancing リージョンのリストに表示されない場合は、次のポリシーを使用して、指定されたログ配信サービスにアクセス許可を付与します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
       "Principal": {
         "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
          },
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/111122223333/*"
    }
  ]
}
```

------

次に、必ず [Elastic Load Balancing のアクセスログ](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#enable-access-logs)を有効にして設定してください。テストファイルを作成することで、[バケットのアクセス許可を確認](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#verify-bucket-permissions)できます。

## Amazon CloudFront の OAI へのアクセス管理
<a name="example-bucket-policies-cloudfront"></a>

### Amazon CloudFront の OAI へのアクセス許可の付与
<a name="example-bucket-policies-cloudfront-1"></a>

次のバケットポリシーの例は、CloudFront のオリジンアクセスアイデンティティ (OAI) に S3 のバケット内のすべてのオブジェクトを取得 (読み取り) するアクセス許可を付与します。CloudFront の OAI を使用すると、バケット内のオブジェクトへの CloudFront からのアクセスは許可して、Amazon S3 からの直接アクセスは許可しないようにすることができます。詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)」を参照してください。

次のポリシーは、OAI の ID をポリシーの `Principal` として使用します。S3 のバケットポリシーを使用して CloudFront の OAI にアクセス許可を付与する方法の詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[オリジンアクセスアイデンティティ (OAI) からオリジンアクセスコントロール (OAC) への移行](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#migrate-from-oai-to-oac)」を参照してください。

この例を使用するには:
+ `EH1HDMB1FH2TC` を OAI の ID に置き換えます。OAI の ID を確認するには、CloudFront コンソールの[オリジンアクセスアイデンティティページ](https://console.aws.amazon.com/cloudfront/home?region=us-east-1#oai:)を参照するか、CloudFront API の [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html) を使用します。
+ `amzn-s3-demo-bucket` をバケットの名前に置き換えます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

## Amazon S3 ストレージレンズへのアクセス管理
<a name="example-bucket-policies-lens"></a>

### Amazon S3 ストレージレンズへのアクセス許可の付与
<a name="example-bucket-policies-lens-1"></a>

S3 ストレージレンズはメトリクスを集約し、Amazon S3 コンソールの **[Buckets]** (バケット) ページの **[Account snapshot]** (アカウントスナップショット) セクションにこの情報を表示します。S3 ストレージレンズは、インサイトと傾向を可視化したり、外れ値にフラグ付けしたり、ストレージコストの最適化やデータ保護のベストプラクティスの適用に関するレコメンデーション事項を受け取ったりするために使用できるインタラクティブダッシュボードも提供します。ダッシュボードには、組織、アカウント、AWS リージョン、ストレージクラス、バケット、プレフィックス、またはストレージレンズのグループレベルでインサイトを生成して可視化できる、ドリルダウンオプションが用意されています。毎日のメトリクスレポートを CSV または Parquet 形式で汎用 S3 バケットに送信したり、メトリクスを AWS マネージド S3 テーブルバケットに直接エクスポートしたりすることもできます。

S3 ストレージレンズは、収集したストレージ使用量のメトリクスをさらなる分析のため Amazon S3 バケット内にエクスポートできます。S3 ストレージレンズがメトリクスのエクスポートを配置するバケットは、*送信先バケット*として知られています。S3 Storage Lens のメトリクスエクスポートを設定するとき、ターゲットバケットにバケットポリシーを作成する必要があります。詳細については、「[Amazon S3 ストレージレンズを使用してストレージのアクティビティと使用状況をモニタリングする](storage_lens.md)」を参照してください。

次のバケットポリシーの例では、Amazon S3 が送信先バケットにオブジェクトを書き込む (`PUT` リクエスト) ためのアクセス許可が付与されます。S3 Storage Lens メトリクスのエクスポートを設定するときには、このようなバケットポリシーを送信先バケットに使用します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3StorageLensExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "storage-lens.s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/destination-prefix/StorageLens/111122223333/*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:s3:region-code:111122223333:storage-lens/storage-lens-dashboard-configuration-id"
                }
            }
        }
    ]
}
```

------

S3 ストレージレンズの組織レベルのメトリクスエクスポートを設定するときには、前述のバケットポリシーの `Resource` ステートメントに次の変更を加えます。

```
1. "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/destination-prefix/StorageLens/your-organization-id/*",
```

## S3 インベントリ、S3 分析、および S3 インベントリレポートの権限管理
<a name="example-bucket-policies-s3-inventory"></a>

### S3 インベントリおよび S3 分析に対するアクセス許可の付与
<a name="example-bucket-policies-s3-inventory-1"></a>

S3 インベントリでは、バケット内のオブジェクトのリストが作成され、S3 分析のエクスポートでは、分析に使用されるデータの出力ファイルが作成されます。インベントリによってオブジェクトがリストされるバケットは、*ソースバケット*と呼ばれます。インベントリファイルと、分析エクスポートファイルが書き込まれるバケットは、*送信先バケット*と呼ばれます。インベントリまたは分析のエクスポートを設定する場合、ターゲットバケットにバケットポリシーを作成する必要があります。詳細については、「[S3 インベントリを使用したデータのカタログ化と分析](storage-inventory.md)」および「[Amazon S3 分析 – ストレージクラス分析](analytics-storage-class.md)」を参照してください。

次のバケットポリシーの例では、ソースバケットのアカウントからターゲットバケットにオブジェクトを書き込む (`PUT` リクエスト) ための Amazon S3 のアクセス許可が付与されます。このようなバケットポリシーは、S3 インベントリと S3 分析エクスポートをセットアップするときに、宛先バケットで使用します。

------
#### [ JSON ]

****  

```
{  
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
            "Sid": "InventoryAndAnalyticsExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
            "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ],
            "Condition": {
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```

------

### S3 インベントリレポート設定の作成を制御する
<a name="example-bucket-policies-s3-inventory-2"></a>

[S3 インベントリを使用したデータのカタログ化と分析](storage-inventory.md) は、S3 バケット内のオブジェクトのリストと、各オブジェクトのメタデータを作成します。`s3:PutInventoryConfiguration` アクセス許可により、ユーザーはデフォルトで使用可能なすべてのオブジェクトメタデータフィールドを含むインベント設定を作成し、インベントリを保存する宛先バケットを指定できます。宛先バケット内のオブジェクトへの読み取りアクセスを持つユーザーは、インベントリレポートで使用可能なすべてのオブジェクトメタデータフィールドにアクセスできます。S3 Inventory で使用できるメタデータフィールドの詳細については、「[Amazon S3 インベントリのリスト](storage-inventory.md#storage-inventory-contents)」を参照してください。

S3 インベントリレポートをユーザーが設定できないようにするには、ユーザーから `s3:PutInventoryConfiguration` アクセス許可を削除します。

S3 インベントリレポート設定の一部のオブジェクトメタデータフィールドはオプションです。つまり、デフォルトで使用できますが、ユーザーに`s3:PutInventoryConfiguration` アクセス許可を付与すると制限できます。`s3:InventoryAccessibleOptionalFields` 条件キーを使用して、ユーザーがこれらのオプションのメタデータフィールドをレポートに含めることができるかどうかを制御できます。S3 インベントリで使用できるオプションのメタデータフィールドのリストについては、「*Amazon Simple Storage Service API リファレンス*」の「[https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody)」を参照してください。

特定のオプションのメタデータフィールドを使用してインベントリ設定を作成するアクセス許可をユーザーに付与するには、`s3:InventoryAccessibleOptionalFields` 条件キーを使用してバケットポリシーの条件を絞り込みます。

次のポリシー例では、インベントリ設定を条件付きで作成するアクセス許可をユーザー (`Ana`) に付与します。ポリシーの `ForAllValues:StringEquals`条件は、 `s3:InventoryAccessibleOptionalFields`条件キーを使用して、許可される 2 つのオプションのメタデータフィールド、つまり `Size` と `StorageClass` を指定します。したがって、`Ana` がインベントリ設定を作成するとき、含めることができるオプションのメタデータフィールドは `Size` と `StorageClass` のみです。

------
#### [ JSON ]

****  

```
{
	"Id": "InventoryConfigPolicy",
	"Version":"2012-10-17",		 	 	 
	"Statement": [{
			"Sid": "AllowInventoryCreationConditionally",
			"Effect": "Allow",			
			"Principal": {
				"AWS": "arn:aws:iam::111122223333:user/Ana"
			},			
			"Action": 
				"s3:PutInventoryConfiguration",
			"Resource": 
				"arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET",
			"Condition": {
				"ForAllValues:StringEquals": {
					"s3:InventoryAccessibleOptionalFields": [
					   "Size",
					   "StorageClass"
					   ]
				  }
				}
			}
	]
}
```

------

特定のオプションのメタデータフィールドを含む S3 インベントリレポートをユーザーが設定できないようにするには、レプリケート元バケットのバケットポリシーに明示的な `Deny` ステートメントを追加します。次のバケットポリシーの例では、オプションの `ObjectAccessControlList` または `ObjectOwner` メタデータフィールドを含むインベントリ設定をソースバケット `amzn-s3-demo-source-bucket` に作成することをユーザー `Ana` に拒否します。ユーザー`Ana` は、他のオプションのメタデータフィールドを使用してインベントリ設定を作成できます。

```
 1. {
 2. 	"Id": "InventoryConfigSomeFields",
 3. 	"Version": "2012-10-17",		 	 	 
 4. 	"Statement": [{
 5. 			"Sid": "AllowInventoryCreation",
 6. 			"Effect": "Allow",
 7. 			"Principal": {
 8. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
 9. 			},
10. 			"Action": "s3:PutInventoryConfiguration",			
11. 			"Resource": 
12. 				"arn:aws:s3:::amzn-s3-demo-source-bucket",
13. 
14. 		},
15. 		{
16. 			"Sid": "DenyCertainInventoryFieldCreation",
17. 			"Effect": "Deny",
18. 			"Principal": {
19. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
20. 			},
21. 			"Action": "s3:PutInventoryConfiguration",	
22. 			"Resource": 
23. 			  "arn:aws:s3:::amzn-s3-demo-source-bucket",			
24. 			"Condition": {
25. 				"ForAnyValue:StringEquals": {
26. 					"s3:InventoryAccessibleOptionalFields": [
27. 					   "ObjectOwner",
28. 					   "ObjectAccessControlList"
29. 					   ]
30. 				  }
31. 				}
32. 			}
33. 	]
34. }
```

**注記**  
バケットポリシーで `s3:InventoryAccessibleOptionalFields` 条件キーを使用しても、既存のインベントリ設定に基づくインベントリレポートのデリバリーには影響しません。

**重要**  
前の例に示すように、`Allow` 効果で `ForAllValues` を、または `Deny` 効果で `ForAnyValue` を使用することをお勧めします。  
これらの組み合わせは過度に制限され、インベントリ設定の削除がブロックされる可能性があるため、`Deny` 効果で `ForAllValues` または `Allow` 効果で `ForAnyValue` を使用しないでください。  
`ForAllValues` および `ForAnyValue` 条件セット演算子の詳細については、「*IAM ユーザーガイド*」「[複数値のコンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html#reference_policies_condition-multi-valued-context-keys)」を参照してください。

## MFA が必要
<a name="example-bucket-policies-MFA"></a>

Amazon S3 は、多エレメント認証 (MFA) で保護された API へのアクセスをサポートしています。この機能により、Amazon S3 のリソースへのアクセスに MFA を強制的に適用することができます。多エレメント認証により、AWS 環境に適用できるセキュリティのレベルが高まります。MFA は、有効な MFA コードを入力して MFA デバイスを物理的に所有していることを証明することがユーザーに要求されるセキュリティ機能です。詳細については、[AWS 多エレメント認証](https://aws.amazon.com/mfa/) を参照してください。Amazon S3 のリソースにアクセスするすべてのリクエストに対して MFA を要求することができます。

MFA の要件を適用するには、バケットポリシーで `aws:MultiFactorAuthAge` 条件キーを使用します。IAM ユーザーは、AWS Security Token Service (AWS STS) により発行される一時的な認証情報を使用して、Amazon S3 のリソースにアクセスできます。AWS STS リクエスト時に、MFA コードを指定します。

Amazon S3 が多要素認証のリクエストを受け取ると、`aws:MultiFactorAuthAge` 条件キーに一時的な認証情報が作成されてからの時間の数値 (秒) が示されます。リクエストで提供された一時的な認証情報が MFA デバイスを使用して作成されていない場合、このキー値は null (不在) になります。次の例に示すように、バケットポリシーに、この値を確認する条件を追加できます。

このポリシー例は、リクエストが MFA を使用して認証されていない場合、`amzn-s3-demo-bucket` バケットの *`/taxdocuments`* フォルダに対するすべての Amazon S3 オペレーションを拒否します。MFA の詳細については、[IAM ユーザーガイドAWSの ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)* での多エレメント認証 (MFA) の使用* を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true }}
      }
    ]
 }
```

------

`aws:MultiFactorAuthAge` 条件キー値が null で、リクエスト内の一時的なセキュリティ認証情報が MFA デバイスを使用せずに作成されたことを示している場合、`Condition` ブロック内の `Null` 条件の評価は `true` になります。

次のバケットポリシーは、前述のバケットポリシーの拡張です。次のポリシーには、2 つのポリシーステートメントが含まれています。1 つのステートメントは、バケット (`s3:GetObject`) の `amzn-s3-demo-bucket` アクセス許可を全員に付与します。もう 1 つのステートメントは、MFA を要求することにより、バケットの `amzn-s3-demo-bucket/taxdocuments` フォルダへのアクセスを制限します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "DenyInsecureConnections",
        "Effect": "Deny",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true } }
      },
      {
        "Sid": "AllowGetObject",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": ["s3:GetObject"],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
      }
    ]
 }
```

------

オプションで、`aws:MultiFactorAuthAge` キーの有効期間を制限する数値条件を使用することができます。`aws:MultiFactorAuthAge` キーで指定する期間は、リクエストの認証に使われる一時的セキュリティ認証情報の寿命とは無関係です。

例えば、次のバケットポリシーでは、MFA 認証を要求するほかに、一時セッションが作成されてからの時間もチェックします。このポリシーは、`aws:MultiFactorAuthAge` キーの値が、一時セッションが 1 時間 (3,600 秒) 以上前に作成されたことを示す場合に、すべてのオペレーションを拒否します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": {"Null": {"aws:MultiFactorAuthAge": true }}
      },
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }}
       },
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": "*",
         "Action": ["s3:GetObject"],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
       }
    ]
 }
```

------

## ユーザーによるオブジェクトの削除を禁止する
<a name="using-with-s3-actions-related-to-bucket-subresources"></a>

デフォルトでは、ユーザーには一切のアクセス許可がありません。ただし、ポリシーを作成する際に、意図しないアクセス許可をユーザーに付与する可能性があります。このようなアクセス許可の抜け穴を防ぐには、明示的な拒否を追加して、より厳格なアクセスポリシーを記述する必要があります。

ユーザーまたはアカウントによるオブジェクトの削除を明示的に防ぐには、バケットポリシーに `s3:DeleteObject`、`s3:DeleteObjectVersion`、および `s3:PutLifecycleConfiguration` のアクションのアクセス許可を追加する必要があります。オブジェクトの削除は、明示的に `DELETE Object` API オペレーションを呼び出すか、有効期限が過ぎたオブジェクトを Amazon S3 が削除できるようにオブジェクトのライフサイクルを設定 (「[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)」を参照) することで可能であるため、これらすべてのアクションが必要です。

次の例は、ユーザー `MaryMajor` の `DELETE Object` アクセス許可を明示的に拒否します。明示的な `Deny` ステートメントは、付与されている他のどのアクセス許可よりも常に優先されます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "statement1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/MaryMajor"
      },
      "Action": [
        "s3:GetObjectVersion",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
	 	"arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    },
    {
      "Sid": "statement2",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/MaryMajor"
      },
      "Action": [
        "s3:DeleteObject",
        "s3:DeleteObjectVersion",
        "s3:PutLifecycleConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
	    "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    }
  ]
}
```

------

# 条件キーを使用したバケットポリシーの例
<a name="amazon-s3-policy-keys"></a>

アクセスポリシー言語を使用して、アクセス許可を付与するときに条件を指定できます。オプションの `Condition` 要素、または `Condition` ブロックを使用して、ポリシーが有効になるときの条件を指定できます。

オブジェクトおよびバケットオペレーションに Amazon S3 条件キーを使用するポリシーについては、次の例を参照してください。条件キーの詳細については、[Amazon S3 のポリシー条件キー](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys) を参照してください。Amazon S3 アクションの完全なリストとポリシーで指定できるリソースについては、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

## 例: オブジェクトオペレーションで使用できる Amazon S3 の条件キー
<a name="object-keys-in-amazon-s3-policies"></a>

以下の例は、オブジェクトオペレーションに Amazon S3 固有の条件キーを使用する方法を示しています。Amazon S3 アクションの完全なリストとポリシーで指定できるリソースについては、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

ここでは、[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) オペレーションで条件キーを使用するポリシーの例をいくつか示します。PutObject オペレーションでは、アクセスコントロールリスト (ACL) に固有のヘッダーを使用して、ACL に基づいてアクセス許可を付与することができます。これらの条件キーを使用することで、条件を設定し、ユーザーがオブジェクトをアップロードする場合に特定のアクセス許可を要求することができます。また、PutObjectAcl オペレーションを使用して ACL に基づいてアクセス許可を付与することもできます。詳細については、[Amazon S3 Amazon Simple Storage Service API リファレンス](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)の *PutObjectAcl* を参照してください。ACL の詳細については、[アクセスコントロールリスト (ACL) の概要](acl-overview.md) を参照してください。

**Topics**
+ [例 1: サーバー側の暗号化を使用してオブジェクトを保存するよう要求する `s3:PutObject` のアクセス許可を付与する](#putobject-require-sse-2)
+ [例 2: 制限されているコピー元からオブジェクトをコピーする `s3:PutObject` のアクセス許可を付与する](#putobject-limit-copy-source-3)
+ [例 3: オブジェクトの特定のバージョンに対するアクセス許可を付与する](#getobjectversion-limit-access-to-specific-version-3)
+ [例 4: オブジェクトタグに基づくアクセス許可の付与](#example-object-tagging-access-control)
+ [例 5: バケット所有者の AWS アカウント ID によるアクセスの制限](#example-object-resource-account)
+ [例 6: 最小の TLS バージョンの要求](#example-object-tls-version)
+ [例 7: `Deny` ステートメントから特定のプリンシパルを除外する](#example-exclude-principal-from-deny-statement)
+ [例 8: オブジェクトキー名または ETags に基づいた、クライアントへの条件付きオブジェクトアップロードの強制](#example-conditional-writes-enforce)

### 例 1: サーバー側の暗号化を使用してオブジェクトを保存するよう要求する `s3:PutObject` のアクセス許可を付与する
<a name="putobject-require-sse-2"></a>

アカウント A がバケットの所有者であるとします。アカウント管理者がアカウント A のユーザーの Jane にオブジェクトをアップロードするアクセス許可を付与するとします。ただし、Jane が必ず Amazon S3 マネージドキーを使用したサーバー側の暗号化 (SSE-S3) をリクエストすることを条件とします。この場合、アカウント A の管理者は、以下のように `s3:x-amz-server-side-encryption` 条件キーを使用することで、この要件を指定できます。次の `Condition` ブロックのキーと値のペアは、暗号化タイプとして `s3:x-amz-server-side-encryption` 条件キーと SSE-S3 (`AES256`) を指定します。

```
"Condition": {
     "StringNotEquals": {
         "s3:x-amz-server-side-encryption": "AES256"
     }}
```

AWS CLI を使用してこのアクセス許可をテストする場合、次の例に示すように、`--server-side-encryption` パラメータを使用して必要な暗号化を追加する必要があります。このコマンド例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin
```

### 例 2: 制限されているコピー元からオブジェクトをコピーする `s3:PutObject` のアクセス許可を付与する
<a name="putobject-limit-copy-source-3"></a>

`PUT` のオブジェクトリクエストでは、ソースオブジェクトを指定すると、リクエストはコピーオペレーションです (「[https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)」を参照)。バケット所有者は、これに対応して、ソースに制限が付いているオブジェクトをコピーするためのアクセス許可をユーザーに付与できます。以下に例を示します。
+ 指定したソースバケット (例: `amzn-s3-demo-source-bucket`) からのみオブジェクトをコピーすることを許可します。
+ 指定したソースバケットから、キー名のプレフィックスが *`public/`* など特定のプレフィックス (例: `amzn-s3-demo-source-bucket/public/*`) で始まるオブジェクトのみコピーすることを許可します。
+ ソースバケット (例: `amzn-s3-demo-source-bucket/example.jpg`) から特定のオブジェクトのみをコピーすることを許可します。

次のバケットポリシーでは、ユーザー (`Dave`) に `s3:PutObject` のアクセス許可が付与されます。このポリシーでは、リクエストに `s3:x-amz-copy-source` ヘッダーを含め、ヘッダーの値でキー名のプレフィックスに `/amzn-s3-demo-source-bucket/public/*` を指定している場合にのみ、オブジェクトをコピーできます。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Sid": "cross-account permission to user in your own account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
        },
        {
            "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/*"
                }
            }
        }
    ]
}
```

------

**AWS CLI でポリシーをテストする**  
AWS CLI の `copy-object` コマンドを使用して、アクセス許可をテストできます。`--copy-source` パラメータを追加してソースを指定します。キー名のプレフィックスは、ポリシーで許可されているプレフィックスと一致する必要があります。`--profile` パラメータを使用して、ユーザー Dave の認証情報を指定します。AWS CLI の設定の詳細については、「Amazon S3 API リファレンス」の「[Developing with Amazon S3 using the AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html)」を参照してください。**

```
aws s3api copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg 
--copy-source amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg --profile AccountADave
```

**特定のオブジェクトのみをコピーするアクセス許可を付与する**  
前述のポリシーでは、`StringNotLike` 条件を使用しています。次に示すとおり、特定のオブジェクトのみをコピーするアクセス許可を付与するには、条件を `StringNotLike` から `StringNotEquals` に変更し、オブジェクトキーを正確に指定する必要があります。このコマンド例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
"Condition": {
       "StringNotEquals": {
           "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg"
       }
}
```

### 例 3: オブジェクトの特定のバージョンに対するアクセス許可を付与する
<a name="getobjectversion-limit-access-to-specific-version-3"></a>

アカウント A が、バージョニングが有効なバケットを所有しているとします。このバケットには、`HappyFace.jpg` オブジェクトのバージョンが複数含まれています。アカウント A の管理者は、ユーザー `Dave` にオブジェクトの特定のバージョンのみを取得できるアクセス許可を付与したいと考えています。この場合、アカウント管理者は、次に示すように、条件を付けてユーザー `Dave` に `s3:GetObjectVersion` のアクセス許可を付与できます。`Condition` ブロックのキーと値のペアは、`s3:VersionId` 条件キーを指定します。この場合、指定したバージョニングが有効なバケットからオブジェクトを取得するには、`Dave` は正確なオブジェクトバージョン ID を知る必要があります。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg"
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg",
            "Condition": {
                "StringNotEquals": {
                    "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e"
                }
            }
        }
    ]
}
```

------

**AWS CLI でポリシーをテストする**  
このこのポリシーでアクセス許可をテストするには、AWS CLI `get-object` コマンドを実行するときに、特定のオブジェクトバージョンを指定して取得する`--version-id` パラメータを使用します。コマンドは、特定のオブジェクトバージョンを取得し、`OutputFile.jpg` ファイルに保存します。

```
aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave
```

### 例 4: オブジェクトタグに基づくアクセス許可の付与
<a name="example-object-tagging-access-control"></a>

Amazon S3 のオペレーションでオブジェクトのタグの条件キーを使用する方法の例については、「[タグ付けとアクセスコントロールポリシー](tagging-and-policies.md)」を参照してください。

### 例 5: バケット所有者の AWS アカウント ID によるアクセスの制限
<a name="example-object-resource-account"></a>

`aws:ResourceAccount` または `s3:ResourceAccount` の条件キーのいずれかを使用して、特定の AWS アカウント ID が所有する Amazon S3 バケットへのユーザー、ロール、またはアプリケーションのアクセスを制限する IAM または仮想プライベートクラウド (VPC) エンドポイントポリシーを記述できます。これらの条件キーを使用すると、VPC 内のクライアントによる、ユーザーが所有していないバケットへのアクセスを制限できます。

ただし、一部の AWS サービスは AWS マネージドバケットへのアクセスに依存していることに注意してください。したがって、IAM ポリシーで `aws:ResourceAccount` キーまたは `s3:ResourceAccount` キーを使用することは、これらのリソースへのアクセスにも影響する可能性があります。詳細については、以下のリソースを参照してください。
+ [AWS アカウント ガイド](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#bucket-policies-s3)の*指定された AWS PrivateLink のバケットへのアクセスの制限*
+ *Amazon ECR ガイド*の [Amazon ECR が使用するバケットへのアクセスを制限する](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-minimum-s3-perms)
+ *AWS Systems Manager ガイド*の [AWS が管理する Amazon S3 バケットに必要なアクセスを System Manager に提供する](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-minimum-s3-permissions.html)

`aws:ResourceAccount` および `s3:ResourceAccount` 条件キーの詳細と使用方法を示す例については、「AWS ストレージブログ」の「[Limit access to Amazon S3 buckets owned by specific AWS アカウント](https://aws.amazon.com/blogs/storage/limit-access-to-amazon-s3-buckets-owned-by-specific-aws-accounts/)」を参照してください。**

### 例 6: 最小の TLS バージョンの要求
<a name="example-object-tls-version"></a>

`s3:TlsVersion` 条件キーを使用して、クライアントが使用する TLS バージョンに基づいて Amazon S3 バケットへのユーザーまたはアプリケーションのアクセスを制限する IAM ポリシー、仮想プライベートクラウドエンドポイント (VPCE) ポリシー、またはバケットポリシーを作成できます。この条件キーを使用して、最小の TLS バージョンを必要とするポリシーを記述できます。

**注記**  
AWS のサービスがユーザーに代わって他の AWS のサービスを呼び出す場合 (サービス間呼び出し)、`s3:TlsVersion`、`aws:SecureTransport`、`aws:SourceIp`、および `aws:VpcSourceIp` など、特定のネットワーク固有の認可コンテキストが編集されます。ポリシーで `Deny` ステートメントとともにこれらの条件キーを使用すると、AWS サービスプリンシパルが意図せずブロックされる可能性があります。セキュリティ要件を維持しながら AWS のサービスが適切に動作できるようにするには、値が `false` の `aws:PrincipalIsAWSService` 条件キーを追加して、`Deny` ステートメントからサービスプリンシパルを除外します。例えば、次のようになります。  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
このポリシーは、HTTPS が使用されていない場合に (`aws:SecureTransport` が false)、AWS 以外のサービスプリンシパルに対してのみ S3 オペレーションへのアクセスを拒否します。これにより、条件付き制限が AWS サービスプリンシパルを除くすべてのプリンシパルに適用されます。

**Example**  
このバケットポリシーの例では、1.2 より前の TLS バージョン (1.1 や 1.0 など) のクライアントによる `PutObject` リクエストを拒否します。**このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericLessThan": {
                    "s3:TlsVersion": 1.2
                }
            }
        }
    ]
}
```

**Example**  
このバケットポリシー例では、1.1 よりも高い TLS バージョン (1.2、1.3 以降など) のクライアントによる `PutObject` リクエストを許可します。**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericGreaterThan": {
                    "s3:TlsVersion": 1.1
                }
            }
        }
    ]
}
```

### 例 7: `Deny` ステートメントから特定のプリンシパルを除外する
<a name="example-exclude-principal-from-deny-statement"></a>

次のバケットポリシーは、アカウント番号 *`123456789012`* を持つプリンシパルを除き、`amzn-s3-demo-bucket` への `s3:GetObject` アクセスを拒否します。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromPrincipalNotInSpecificAccount",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

### 例 8: オブジェクトキー名または ETags に基づいた、クライアントへの条件付きオブジェクトアップロードの強制
<a name="example-conditional-writes-enforce"></a>

条件付き書き込みでは、`WRITE` リクエストにヘッダーを追加して、S3 オペレーションに前提条件を指定できます。このヘッダーを使用して、条件が満たされないと S3 オペレーションが失敗する条件を指定します。例えば、オブジェクトアップロード時に、バケットに同じキー名を持つオブジェクトが存在しないことを検証することで、既存のデータの上書きを防ぐことができます。または、オブジェクトを書き込む前に、Amazon S3 でオブジェクトのエンティティタグ (ETag) をチェックすることもできます。

バケットポリシーの条件を使用して条件付き書き込みを適用するバケットポリシーの例については、「[Amazon S3 バケットに条件付き書き込みを強制する](conditional-writes-enforce.md)」を参照してください。

## 例: バケットオペレーションで使用できる Amazon S3 の条件キー
<a name="bucket-keys-in-amazon-s3-policies"></a>

以下のポリシーの例では、バケットオペレーションに Amazon S3 固有の条件キーを使用する方法を示します。

**Topics**
+ [例 1: IP アドレスに対する条件付きの `s3:GetObject` アクセス許可の付与](#AvailableKeys-iamV2)
+ [例 2: 特定のプレフィックスを持つバケット内のオブジェクト一覧の取得](#condition-key-bucket-ops-2)
+ [例 3: キーの最大数の設定](#example-numeric-condition-operators)

### 例 1: IP アドレスに対する条件付きの `s3:GetObject` アクセス許可の付与
<a name="AvailableKeys-iamV2"></a>

リクエストが特定の範囲の IP アドレス (例: `192.0.2.*`) から発信された場合は、そのアドレスが除外する IP アドレス (例: `192.0.2.188`) でない限り、`s3:GetObject` アクションを使用するアクセス許可を認証したユーザーに付与できます。`Condition` ブロックでは、`IpAddress` と `NotIpAddress` は条件であり、それぞれの条件に評価されるキーと値のペアが指定されています。この例の両方のキーと値のペアは、`aws:SourceIp` AWS 全体キーを使用しています。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**注記**  
`Condition` ブロックで指定されている `IPAddress` と `NotIpAddress` のキー値は、RFC 4632 で説明されているように、CIDR 表記を使用しています。詳細については、[http://www.rfc−editor.org/rfc/rfc4632.txt](http://www.rfc-editor.org/rfc/rfc4632.txt) を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action":"s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "192.0.2.0/24" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "192.0.2.188/32" 
                } 
            } 
        } 
    ]
}
```

------

Amazon S3 のポリシーでは、他の AWS 全体の条件キーを使用することもできます。例えば、VPC エンドポイントのバケットポリシーで `aws:SourceVpce` 条件キーや `aws:SourceVpc` 条件キーを指定できます。具体的な例については、「[バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール](example-bucket-policies-vpc-endpoint.md)」を参照してください。

**注記**  
一部の AWS グローバル条件キーでは、特定のリソースタイプのみがサポートされます。そのため、使用するグローバル条件キーとリソースタイプを Amazon S3 がサポートしているかどうか、または代わりに Amazon S3 固有の条件キーを使用する必要があるかどうかを確認してください。Amazon S3 に対してサポートされているリソースタイプと条件キーの完全なリストについては、サービス認可リファレンスの「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**  
S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

### 例 2: 特定のプレフィックスを持つバケット内のオブジェクト一覧の取得
<a name="condition-key-bucket-ops-2"></a>

`s3:prefix` 条件キーを使用して、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) API オペレーションを、特定のプレフィックスを持つキー名に制限できます。バケット所有者であれば、条件キーを使用して、ユーザーがバケット内の特定のプレフィックスの内容を一覧表示することを制限できます。`s3:prefix` 条件キーは、バケットのオブジェクトがキー名プレフィックスによって整理されている場合に便利です。

Amazon S3 コンソールでは、キー名のプレフィックスを使用して、フォルダの概念を示します。フォルダの概念をサポートしているはコンソールのみです。Amazon S3 API では、バケットとオブジェクトのみがサポートされています。例えば、キー名が *`public/object1.jpg`* および *`public/object2.jpg`* である 2 つのオブジェクトがある場合、コンソールには *`public`* フォルダ以下のオブジェクトが表示されます。Amazon S3 API では、これらはプレフィックスを持つオブジェクトとして扱われ、フォルダ内のオブジェクトとしては扱われません。プレフィックスと区切り文字を使用してアクセス許可をフィルタリングする方法の詳細については、[ユーザーポリシーを使用したバケットへのアクセスの制御](walkthrough1.md) を参照してください。

次のシナリオでは、バケット所有者とユーザーが属する親アカウントは同一です。したがって、バケット所有者は、アクセス許可を付与するためにバケットポリシーまたはユーザーポリシーのどちらも使用できます。`ListObjectsV2` API オペレーションを使用できる条件キーの詳細については、「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)」を参照してください。

**注記**  
バケットがバージョニングに対応している場合、バケット内のオブジェクトのリストを表示するには、以下のポリシーで、`s3:ListBucket` のアクセス許可ではなく `s3:ListBucketVersions` のアクセス許可を付与する必要があります。`s3:ListBucketVersions` アクセス許可は、`s3:prefix` 条件キーもサポートしています。

**ユーザーポリシー**  
次のユーザーポリシーは、`s3:ListBucket` のアクセス許可 (「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)」を参照) に、`projects` の値を持つリクエストでプレフィックスを指定する必要がある `Condition` ステートメントを付与します。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action": "s3:ListBucket",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       }         
    ]
}
```

------

`Condition` ステートメントは、プレフィックスが `projects` のオブジェクトキーのみを一覧表示するようにユーザーを制限します。明示的な`Deny` ステートメントを追加すると、ユーザーに付与されている他のアクセス許可にかかわらず、他のプレフィックスが付いたキーのリストを求めるユーザーは拒否されます。例えば、以前のユーザーポリシーの更新やバケットポリシーにより、オブジェクトキーのリストを表示するアクセス許可がユーザーに制限なく付与される場合があります。明示的な `Deny` ステートメントは常に `Allow` ステートメントを上書きするため、ユーザーが `projects` プレフィックスを持つキー以外のキーを一覧表示しようとすると、リクエストは拒否されます。

**バケットポリシー**  
次の例に示すとおり、上記のユーザーポリシーに `Principal` 要素を追加して、ユーザーを指定する場合は、バケットポリシーを使用できます。このポリシーの例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action":  "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects"  
             }
          } 
       }         
    ]
}
```

------

**AWS CLI でポリシーをテストする**  
このポリシーは、次の `list-object` AWS CLI コマンドを使用してテストできます。このコマンドでは、`--profile` パラメータを使用してユーザーの認証情報を指定します。AWS CLI のセットアップと使用の詳細については、「Amazon S3 API リファレンス」の「[Developing with Amazon S3 using the AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html)」を参照してください。**

```
aws s3api list-objects --bucket amzn-s3-demo-bucket --prefix projects --profile AccountA
```

### 例 3: キーの最大数の設定
<a name="example-numeric-condition-operators"></a>

`s3:max-keys` 条件キーを使用すると、リクエスタが [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) または [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html) リクエストで返すことができるキーの最大数を設定できます。デフォルトでは、API オペレーションは最大 1,000 個のキーを返します。`s3:max-keys` で使用できる数値条件演算子の一覧とその例については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Numeric)の*数値条件演算子* を参照してください。

# Amazon S3 のアイデンティティベースのポリシー
<a name="security_iam_id-based-policy-examples"></a>

デフォルトでは、ユーザーとロールには Amazon S3 リソースを作成または変更するアクセス許可がありません。IAM 管理者は、リソースで必要なアクションを実行するための権限をユーザーに付与する IAM ポリシーを作成できます。

これらのサンプルの JSON ポリシードキュメントを使用して IAM アイデンティティベースのポリシーを作成する方法については、「*IAM ユーザーガイド*」の「[IAM ポリシーを作成する (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)」を参照してください。

Amazon S3 が定義するアクションとリソースタイプ (リソースタイプごとの ARN の形式を含む) の詳細については、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**Topics**
+ [ポリシーに関するベストプラクティス](#security_iam_service-with-iam-policy-best-practices)
+ [ユーザーポリシーを使用したバケットへのアクセスの制御](walkthrough1.md)
+ [Amazon S3 のアイデンティティベースのポリシー例](example-policies-s3.md)

## ポリシーに関するベストプラクティス
<a name="security_iam_service-with-iam-policy-best-practices"></a>

アイデンティティベースのポリシーは、あるユーザーがアカウントの Amazon S3 リソースを作成、アクセス、削除できるどうかを決定します。これらのアクションでは、AWS アカウント に費用が発生する場合があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
+ **AWS マネージドポリシーの使用を開始し、最小特権のアクセス許可に移行する** – ユーザーとワークロードへのアクセス許可の付与を開始するには、多くの一般的なユースケースのためにアクセス許可を付与する *AWS マネージドポリシー*を使用します。これらは AWS アカウントで使用できます。ユースケースに固有の AWS カスタマー管理ポリシーを定義して、アクセス許可を絞り込むことをお勧めします。詳細については、*IAM ユーザーガイド* の [AWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) または [ジョブ機能の AWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) を参照してください。
+ **最小特権を適用する** – IAM ポリシーでアクセス許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、*最小特権アクセス許可*とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、*IAM ユーザーガイド* の [IAM でのポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) を参照してください。
+ **IAM ポリシーで条件を使用してアクセスをさらに制限する** - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。たとえば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。また、CloudFormation などの特定の AWS のサービス を介して使用する場合、条件を使用してサービスアクションへのアクセスを許可することもできます。詳細については、*IAM ユーザーガイド* の [IAM JSON ポリシー要素:条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) を参照してください。
+ **IAM アクセスアナライザー を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する** - IAM アクセスアナライザー は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、*IAM ユーザーガイド* の [IAM Access Analyzer でポリシーを検証する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) を参照してください。
+ **多要素認証 (MFA) を要求する** – AWS アカウントで IAM ユーザーまたはルートユーザーを要求するシナリオがある場合は、セキュリティを強化するために MFA をオンにします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、*IAM ユーザーガイド* の [MFA を使用した安全な API アクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) を参照してください。

IAM でのベストプラクティスの詳細については、*IAM ユーザーガイド* の [IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) を参照してください。

# ユーザーポリシーを使用したバケットへのアクセスの制御
<a name="walkthrough1"></a>

このチュートリアルでは、Amazon S3 でのユーザーアクセス許可の使用について説明します。この例では、フォルダを含むバケットを作成します。AWS アカウントで AWS Identity and Access Management IAM ユーザーを作成し、作成したユーザーに対して、Amazon S3 バケットおよびバケット内のフォルダへのアクセス許可を段階的に付与します。

**Topics**
+ [バケットとフォルダの基本](#walkthrough-background1)
+ [チュートリアルの概要](#walkthrough-scenario)
+ [チュートリアルの準備をする](#walkthrough-what-you-need)
+ [ステップ 1: バケットを作成する](#walkthrough1-create-bucket)
+ [ステップ 2: IAM ユーザーとグループを作成する](#walkthrough1-add-users)
+ [ステップ 3: IAM ユーザーにアクセス許可が付与されていないことを確認する](#walkthrough1-verify-no-user-permissions)
+ [ステップ 4: グループレベルのアクセス許可を付与する](#walkthrough-group-policy)
+ [ステップ 5: IAM ユーザーの Alice に特定のアクセス許可を付与する](#walkthrough-grant-user1-permissions)
+ [ステップ 6: IAM ユーザーの Bob に特定のアクセス許可を付与する](#walkthrough1-grant-permissions-step5)
+ [ステップ 7: Private フォルダをセキュリティで保護する](#walkthrough-secure-private-folder-explicit-deny)
+ [ステップ 8: クリーンアップする](#walkthrough-cleanup)
+ [関連リソース](#RelatedResources-walkthrough1)

## バケットとフォルダの基本
<a name="walkthrough-background1"></a>

Amazon S3 のデータモデルはフラットな構造をしています。バケットを作成し、バケットにオブジェクトを保存します。サブバケットやサブフォルダの階層はありませんが、フォルダ階層をエミュレートすることができます。Amazon S3 コンソールなどのツールを使用すると、バケット内の論理フォルダやサブフォルダを表示できます。

`companybucket` という名前のバケットには、`Private`、`Development`、`Finance` の 3 つのフォルダと `s3-dg.pdf` オブジェクトが含まれていることがコンソールに表示されます。コンソールでは、フォルダおよびサブフォルダからなる論理的な階層が作成するために、オブジェクト名 (キー) を使用します。次の例を考えます。
+ `Development` フォルダを作成すると、コンソールによって `Development/` というキーを持つオブジェクトが作成されます。区切り記号として末尾のスラッシュ (`/`) が付いている点に注意してください。
+ `Projects1.xls` というオブジェクトを `Development` フォルダにアップロードすると、コンソールによってそのオブジェクトがアップロードされ、`Development/Projects1.xls` というキーが設定されます。

  このキーの `Development` は[プレフィックス](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix)で、`/` は区切り記号です。Amazon S3 API のオペレーションではプレフィックスと区切り記号がサポートされます。例えば、特定のプレフィックスと区切り記号を持つすべてのオブジェクトの一覧を取得できます。コンソールで `Development` フォルダを開くと、そのフォルダ内のオブジェクトがコンソールに一覧表示されます。次の例では、`Development` フォルダには 1 つのオブジェクトが含まれています。

  コンソールで `Development` バケットの `companybucket` フォルダを表示すると、プレフィックスに `Development` と区切り文字に `/` を指定したリクエストが Amazon S3 に送信されます。コンソールのレスポンスは、コンピュータのファイルシステムのフォルダ一覧と似ています。前述の例は、バケット `companybucket` に `Development/Projects1.xls` というキーを持つ 1 つのオブジェクトがあることを示しています。

コンソールは、オブジェクトのキーを使用して論理階層を推測しています。Amazon S3 には物理階層はありません。Amazon S3 にはフラットなファイル構造にオブジェクトを含むバケットがあるだけです。Amazon S3 API を使用してオブジェクトを作成すると、オブジェクトのキーを使用して論理階層を表すことができます。オブジェクトの論理階層を作成する場合は、個別のフォルダへのアクセスを管理できます。このチュートリアルで、その方法について説明します。

開始する前に、*ルートレベル*のバケットの内容の概念を理解する必要があります。`companybucket` バケットに次のオブジェクトがあるとします。
+ `Private/privDoc1.txt`
+ `Private/privDoc2.zip`
+ `Development/project1.xls`
+ `Development/project2.xls`
+ `Finance/Tax2011/document1.pdf`
+ `Finance/Tax2011/document2.pdf`
+ `s3-dg.pdf`

これらのオブジェクトキーによって、ルートレベルフォルダ `Private`、`Development`、および `Finance` と、ルートレベルオブジェクト `s3-dg.pdf` を持つ論理階層が作成されます。Amazon S3 コンソールでバケット名を選択すると、ルートレベルの項目が表示されます。コンソールにはトップレベルのプレフィックス (`Private/`、`Development/`、`Finance/`) が表示されます。オブジェクトキー `s3-dg.pdf` にはプレフィックスがないため、ルートレベル項目として表示されます。



## チュートリアルの概要
<a name="walkthrough-scenario"></a>

このチュートリアルでは、3 つのフォルダ (`Private`、`Development`、`Finance`) を含むバケットを作成します。

ユーザーは Alice と Bob の 2 名です。Alice には `Development` フォルダにのみ、Bob には `Finance` フォルダにのみアクセスを付与します。`Private` フォルダの内容は非公開のままにします。このチュートリアルの例では、IAM ユーザー (ユーザー名 Alice と Bob) を作成してアクセスを管理し、必要なアクセス許可を付与します。

IAM では、ユーザーグループを作成して、そのグループのすべてのユーザーに適用するグループレベルのアクセス許可を付与することもできます。これにより、アクセス許可を効果的に管理できます。この演習では、Alice と Bob に共通のアクセス許可が必要です。そのため、`Consultants` というグループを作成し、Alice と Bob をそのグループに追加します。最初に、グループポリシーをグループに関連付けてアクセス許可を付与します。次に、特定のユーザーにポリシーを関連付けてユーザー固有のアクセス許可を追加します。

**注記**  
このチュートリアルでは、バケット名に `companybucket`、IAM ユーザーに Alice と Bob、グループ名に `Consultants` を使用しています。Amazon S3 ではバケット名はグローバルに一意である必要があるため、このバケット名は実際に作成する名前に置き換えてください。

## チュートリアルの準備をする
<a name="walkthrough-what-you-need"></a>

 この例では、AWS アカウント 認証情報を使用して、IAM ユーザーを作成します。最初、これらのユーザーにはアクセス許可が何もありません。これらのユーザーに、Amazon S3 の特定のアクションを実行するためのアクセス許可を段階的に付与します。アクセス許可をテストするには、各ユーザーの認証情報を使用してコンソールにサインインします。AWS アカウントの所有者として許可を段階的に付与し、IAM ユーザーとして許可をテストするには、そのたびに異なる認証情報を使用してサインイン/サインアウトする必要があります。これは、1 つのブラウザでテストできますが、2 つのブラウザを使用した方が迅速に処理することができます。一方のブラウザで自分の AWS アカウント 認証情報を使用して AWS マネジメントコンソール に接続し、もう一方のブラウザで IAM ユーザーの認証情報を使用して接続します。

 AWS アカウント 認証情報を使用して AWS マネジメントコンソール にサインインするには、[https://conso4le.aws.amazon.com/](https://console.aws.amazon.com/) にアクセスします。。IAM ユーザーは、このリンクからはサインインできません。IAM ユーザーは IAM 対応のサインインページを使用する必要があります。アカウント所有者からユーザーにこのリンクを通知します。

IAM の詳細については、[IAM ユーザーガイドAWS マネジメントコンソールの ](https://docs.aws.amazon.com/IAM/latest/UserGuide/console.html)* へのサインインページ* を参照してください。

### IAM ユーザーにサインインのリンクを提供するには
<a name="walkthrough-sign-in-user-credentials"></a>

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

1. [**Navigation (ナビゲーション)**] ペインで、[**IAM Dashboard (IAM ダッシュボード)**] を選択します。

1. [**IAM users sign in link (IAM ユーザーのサインインのリンク)**] の URL を書き留めます。このリンクを IAM ユーザーに提供して、IAM ユーザー名とパスワードを使用してコンソールにサインインしてもらいます。

## ステップ 1: バケットを作成する
<a name="walkthrough1-create-bucket"></a>

このステップでは、AWS アカウント認証情報を使用して Amazon S3 コンソールにサインインし、バケットの作成、バケットへのフォルダの追加、各フォルダのへの 1 つまたは 2 つのサンプルドキュメントのアップロードを行います。

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

1. バケットを作成します。

   手順については、[汎用バケットの作成](create-bucket-overview.md) を参照してください。

1. バケットにドキュメントを 1 つアップロードします。

   この演習では、このバケットのルートレベルに `s3-dg.pdf` というドキュメントがあることを前提としています。別のドキュメントをアップロードする場合は、`s3-dg.pdf` をそのドキュメントのファイル名に置き換えてください。

1. 3 つのフォルダ (`Private`、`Finance`、`Development`) をバケットに追加します。

   フォルダを作成するステップバイステップの手順については、*Amazon Simple Storage Service ユーザーガイド*の [フォルダを使用して Amazon S3 コンソールのオブジェクトを整理する](using-folders.md) を参照してください。

1. 各フォルダにドキュメントを 1 つか 2 つアップロードします。

   この演習では、各フォルダに数個のドキュメントをアップロード済みで、バケットに次のキーを持つオブジェクトが存在することを前提としています。
   + `Private/privDoc1.txt`
   + `Private/privDoc2.zip`
   + `Development/project1.xls`
   + `Development/project2.xls`
   + `Finance/Tax2011/document1.pdf`
   + `Finance/Tax2011/document2.pdf`
   + `s3-dg.pdf`

   

   手順については、[オブジェクトのアップロード](upload-objects.md) を参照してください。

## ステップ 2: IAM ユーザーとグループを作成する
<a name="walkthrough1-add-users"></a>

[IAM コンソール](https://console.aws.amazon.com/iam/)を使用して 2 人の IAM ユーザー (Alice と Bob) を AWS アカウント に追加します。詳細な手順については、「IAM ユーザーガイド」の「[AWS アカウント での IAM ユーザーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)」を参照してください。**

また、`Consultants` という名前の管理グループを作成します。続いて、ユーザーをこのグループに追加します。詳細な手順については、「[IAM ユーザーグループの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_create.html)」を参照してください。

**警告**  
ユーザーとグループを追加するときに、これらのユーザーにアクセス許可を付与するポリシーを関連付けないでください。最初の時点では、アクセス許可はこれらのユーザーに付与せず、以降のセクションで段階的に付与します。まず、これらの IAM ユーザーにパスワードを割り当てておく必要があります。それらのユーザー認証情報を使用して Amazon S3 のアクションをテストし、アクセス許可が意図したとおりに機能することを確認します。

新しい IAM ユーザーの作成の各手順については、「IAM ユーザーガイド」の「[AWS アカウント での IAM ユーザーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)」を参照してください。**このチュートリアル用にユーザーを作成するときは、**[AWS マネジメントコンソール アクセス]** を選択し、[[プログラムによるアクセス]](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) を消去します。

管理グループを作成する手順については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)の*最初の IAM 管理者のユーザーおよびグループの作成*を参照してください。



## ステップ 3: IAM ユーザーにアクセス許可が付与されていないことを確認する
<a name="walkthrough1-verify-no-user-permissions"></a>

ブラウザを 2 つ使用する場合は、ここで 2 つ目のブラウザからいずれかの IAM ユーザー認証情報を使用して、コンソールにサインインできます。

1. IAM ユーザーのサインインのリンク (「[IAM ユーザーにサインインのリンクを提供するには](#walkthrough-sign-in-user-credentials)」を参照) から、いずれかの IAM ユーザー認証情報を使用して AWS マネジメントコンソールにサインインします。

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開きます。

    アクセスが拒否されることを示すコンソールメッセージを確認します。

次に、アクセス許可を段階的にユーザーに付与します。最初に、両方のユーザーに必要なアクセス許可を付与するグループポリシーをアタッチします。

## ステップ 4: グループレベルのアクセス許可を付与する
<a name="walkthrough-group-policy"></a>

ユーザーが次の内容を実行できるようにします。
+ 親アカウントが所有するすべてのバケットを表示します。これを行うには、Bob と Alice に `s3:ListAllMyBuckets` アクションのためのアクセス許可が必要です。
+ `companybucket` バケット内のルートレベルの項目、フォルダ、およびオブジェクトを一覧表示します。これを行うには、Bob と Alice に `s3:ListBucket` バケットに対する `companybucket` アクションのためのアクセス許可が必要です。

次に、これらのアクセス許可を付与するポリシーを作成し、`Consultants` グループにアタッチします。

### ステップ 4.1: すべてのバケットのリストを表示するアクセス許可を付与する
<a name="walkthrough1-grant-permissions-step1"></a>

このステップでは、親アカウントが所有するすべてのバケットを表示するのに必要な最小限のアクセス許可をユーザーに付与する管理ポリシーを作成します。そのポリシーを `Consultants` グループにアタッチします。その管理ポリシーをユーザーまたはグループにアタッチしたら、親 AWS アカウントが所有するバケットのリストを取得する許可をそのユーザーまたはグループに付与します。

1. AWS マネジメントコンソール にサインインして、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。
**注記**  
ユーザーに許可を付与するため、IAM ユーザーではなく、AWS アカウントの認証情報を使用してサインインします。

1. 管理ポリシーを作成します。

   1. 左側のナビゲーションペインで [**ポリシー**] を選択し、続いて [**ポリシーの作成**] を選択します。

   1. [**JSON**] タブを選択します。

   1. 以下のアクセスポリシーをコピーし、 ポリシーテキストフィールドに貼り付けます。

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "AllowGroupToSeeBucketListInTheConsole",
            "Action": ["s3:ListAllMyBuckets"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::*"]
          }
        ]
      }
      ```

------

      ポリシーは JSON ドキュメントです。そのドキュメントの `Statement` はオブジェクトの配列であり、各オブジェクトが名前と値のペアを使用してアクセス許可を定義しています。前述のポリシーは、1 つの特定のアクセス許可を定義しています。`Action` はアクセスの種類を指定します。ポリシーの `s3:ListAllMyBuckets` は、定義済みの Amazon S3 アクションです。このアクションは Amazon S3 GET サービスオペレーションをターゲットとし、認証された送信者が所有するすべてのバケットの一覧を返します。`Effect` エレメントの値は、特定のアクセスを許可するかどうかを決定します。

   1. [**ポリシーの確認**] を選択します。次のページで、[`AllowGroupToSeeBucketListInTheConsole`Name (名前)**] フィールドに「**」と入力し、[**Create policy (ポリシーの作成)**] を選択します。
**注記**  
[**Summary (概要)**] エントリに、このポリシーではどのアクセス許可も付与されないことを示すメッセージが表示されます。このチュートリアルでは、このメッセージを無視しても問題ありません。

1. 作成した `AllowGroupToSeeBucketListInTheConsole` 管理ポリシーを `Consultants` グループにアタッチします。

   管理ポリシーのアタッチの各手順については、「IAM ユーザーガイド」の「[IAM ID のアクセス許可の追加および削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#attach-managed-policy-console)」を参照してください。**

   IAM コンソールで、ポリシードキュメントを IAM ユーザーおよびグループにアタッチします。両方のユーザーがバケットのリストを取得できるように、ポリシーをグループにアタッチします。

1. アクセス許可をテストします。

   1. IAM ユーザーのサインインのリンク (「[IAM ユーザーにサインインのリンクを提供するには](#walkthrough-sign-in-user-credentials)」を参照) から、いずれかの IAM ユーザー認証情報を使用してコンソールにサインインします。

   1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

      コンソールにすべてのバケットが表示されますが、バケット内のオブジェクトは表示されません。

### ステップ 4.2: バケットのルートレベルの内容をユーザーが表示できるようにする
<a name="walkthrough1-grant-permissions-step2"></a>

次に、`Consultants` グループのすべてのユーザーがルートレベルの `companybucket` バケット項目を一覧表示できるようにします。Amazon S3 コンソールで会社のバケットを選択すると、そのバケットのルートレベルのアイテムが表示されます。

**注記**  
この例では、`companybucket` を使用して説明します。作成したバケットの名前を使用する必要があります。

バケット名を選択したときにコンソールから Amazon S3 に送信されるリクエスト、Amazon S3 から返されるレスポンス、コンソールでレスポンスがどのように解釈されるかについて理解するために、さらに詳しくフローを見てみましょう。

バケット名を選択すると、コンソールから Amazon S3 に[バケットの GET (ListObjects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) のリクエストが送信されます。このリクエストには次のパラメータが含まれます。
+ 空の文字列を値に持つ `prefix` パラメータ。
+ `delimiter` を値に持つ `/` パラメータ。

リクエストの例を次に示します。

```
GET ?prefix=&delimiter=/ HTTP/1.1 
Host: companybucket.s3.amazonaws.com
Date: Wed, 01 Aug  2012 12:00:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
```

Amazon S3 から返されるレスポンスには、次の `<ListBucketResult/>` エレメントが含まれます。

```
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Name>companybucket</Name>
  <Prefix></Prefix>
  <Delimiter>/</Delimiter>
   ...
  <Contents>
    <Key>s3-dg.pdf</Key>
    ...
  </Contents>
  <CommonPrefixes>
    <Prefix>Development/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>Finance/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>Private/</Prefix>
  </CommonPrefixes>
</ListBucketResult>
```

キーの `s3-dg.pdf` オブジェクトには区切り文字のスラッシュ (`/`) が含まれておらず、このキーは Amazon S3 から `<Contents>` エレメントで返されています。一方、このバケットの例の他のキーには区切り文字の `/` が含まれています。Amazon S3 は、キーをグループ化し、`<CommonPrefixes>`、`Development/`、および `Finance/` のそれぞれのプレフィックス値の `Private/` エレメントを返します。このエレメントは、これらのキーの先頭から、指定した `/` 区切り記号の出現箇所までのサブ文字列です。

コンソールでこの結果が解釈され、ルートレベルの項目が 3 つのフォルダと 1 つのオブジェクトキーとして表示されます。

Bob または Alice が **Development** フォルダを開くと、コンソールから Amazon S3 に[バケットの GET (ListObjects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) のリクエストが送信されます。このリクエストの `prefix` パラメータと `delimiter` パラメータは、次の値に設定されます。
+ 値が `prefix` の `Development/` パラメータ。
+ 値が「`delimiter`」の `/` パラメータ。

レスポンスでは、指定したプレフィックスで始まるオブジェクトのキーが Amazon S3 から返されます。

```
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Name>companybucket</Name>
  <Prefix>Development</Prefix>
  <Delimiter>/</Delimiter>
   ...
  <Contents>
    <Key>Project1.xls</Key>
    ...
  </Contents>
  <Contents>
    <Key>Project2.xls</Key>
    ...
  </Contents> 
</ListBucketResult>
```

コンソールにオブジェクトキーが表示されます。

ここで、ルートレベルのバケット項目を一覧表示するためのアクセス許可をユーザーに付与する作業に戻ります。バケットの内容を一覧表示するには、ユーザーは `s3:ListBucket` アクションを呼び出すためのアクセス許可を持っている必要があります。次のポリシーステートメント を参照してください。ルートレベルのコンテンツのみを表示するようにするために、ユーザーがリクエストで `prefix` に値を指定していないことを条件に追加します。これにより、ユーザーはルートレベルのフォルダをダブルクリックできなくなります。最後に、値が「`delimiter`」の `/` パラメータをユーザーリクエストに組み込むようユーザーに義務付けて、フォルダ形式のアクセスを要求する条件を追加します。

```
{
  "Sid": "AllowRootLevelListingOfCompanyBucket",
  "Action": ["s3:ListBucket"],
  "Effect": "Allow",
  "Resource": ["arn:aws:s3:::companybucket"],
  "Condition":{ 
         "StringEquals":{
             "s3:prefix":[""], "s3:delimiter":["/"]
                        }
              }
}
```

Amazon S3 コンソールでバケットを選択すると、コンソールはまず[ Get Bucket location](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html) リクエストを送信して、バケットがデプロイされている AWS リージョン を確認します。次に、コンソールはリージョン固有のバケットのエンドポイントを使用して、[バケットの GET (ListObjects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) のリクエストを送信します。結果として、ユーザーがコンソールを使用する場合は、次のポリシーステートメントに示すように、`s3:GetBucketLocation` アクションのためのアクセス許可を付与する必要があります。

```
{
   "Sid": "RequiredByS3Console",
   "Action": ["s3:GetBucketLocation"],
   "Effect": "Allow",
   "Resource": ["arn:aws:s3:::*"]
}
```

**ユーザーがルートレベルのバケットの内容を一覧表示できるようにするには**

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

   IAM ユーザーの認証情報ではなく、AWS アカウントの認証情報を使用してコンソールにサインインします。

1. `AllowGroupToSeeBucketListInTheConsole` グループにアタッチされている既存の `Consultants` 管理ポリシーを以下のポリシーに置き換えます。このポリシーでも `s3:ListBucket` アクションは実行できます。`Resource` ポリシーの *`companybucket`* は、自分のバケットの名前に置き換えてください。

   手順については、「IAM ユーザーガイド」の「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**詳細な手順では、ポリシーがアタッチされているすべてのプリンシパルエンティティに変更を適用するステップに従ってください。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	                  
     "Statement": [
        {
          "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket",
          "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ],
          "Effect": "Allow",
          "Resource": [ "arn:aws:s3:::*"  ]
        },
        {
          "Sid": "AllowRootLevelListingOfCompanyBucket",
          "Action": ["s3:ListBucket"],
          "Effect": "Allow",
          "Resource": ["arn:aws:s3:::companybucket"],
          "Condition":{ 
                "StringEquals":{
                       "s3:prefix":[""], "s3:delimiter":["/"]
                              }
                      }
        }
     ] 
   }
   ```

------

1. 更新されたアクセス許可をテストします。

   1. IAM ユーザーのサインインリンク (「[IAM ユーザーにサインインのリンクを提供するには](#walkthrough-sign-in-user-credentials)」を参照) を使用して AWS マネジメントコンソールにサインインします。

      Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

   1. 作成したバケットを選択すると、ルートレベルのバケット項目がコンソールに表示されます。バケット内のフォルダを選択しても、フォルダの内容は表示されません。そのためのアクセス許可が付与されていないからです。

このテストは、ユーザーが Amazon S3 コンソールを使用すると成功します。コンソールでバケットを選択すると、コンソールの実装により、空の文字列を値に持つ `prefix` パラメータと、`delimiter` を値に持つ `/` パラメータが送信されるためです。

### ステップ 4.3: グループポリシーの概要
<a name="walkthrough-group-policy-summary"></a>

追加したグループポリシーによって、IAM ユーザーである Alice と Bob に次の最小限のアクセス許可が付与されます。
+ 親アカウントが所有するすべてのバケットを表示します。
+ `companybucket` バケット内のルートレベルの項目を表示します。

ただし、ユーザーが実行できる操作はまだ十分ではありません。次のように、ユーザー固有のアクセス許可を付与します。
+ `Development` フォルダのオブジェクトの読み書きを Alice に許可します。
+ `Finance` フォルダのオブジェクトの読み書きを Alice と Bob に許可します。

ユーザー固有のアクセスを許可するには、グループではなく特定のユーザーにポリシーを関連付けます。次のセクションでは、`Development` フォルダを操作するためのアクセス許可を Alice に付与します。`Finance` フォルダを操作するための同様のアクセス許可を Bob に付与するステップを繰り返します。

## ステップ 5: IAM ユーザーの Alice に特定のアクセス許可を付与する
<a name="walkthrough-grant-user1-permissions"></a>

次に、`Development` フォルダの内容を表示し、そのフォルダ内のオブジェクトを読み書きできるように、追加のアクセス許可を Alice に付与します。

### ステップ 5.1: IAM ユーザーの Alice に Development フォルダの内容を一覧表示するためのアクセス許可を付与する
<a name="walkthrough-grant-user1-permissions-listbucket"></a>

Alice が `Development` フォルダの内容を表示できるようにするには、`s3:ListBucket` バケットに対して `companybucket` アクションを実行するためのアクセス許可を付与するポリシーをユーザー Alice に適用する必要があります (プレフィックス `Development/` がリクエストに含まれていることを前提とします)。このポリシーはユーザー (Alice) にのみ適用するため、インラインポリシーを使用します。インラインポリシーの詳細については、「[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html)」の「*管理ポリシーとインラインポリシー*」を参照してください。

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

   IAM ユーザーの認証情報ではなく、AWS アカウントの認証情報を使用してコンソールにサインインします。

1. `Development` フォルダの内容を表示するアクセス許可をユーザー (Alice) に付与するインラインポリシーを作成します。

   1. 左側のナビゲーションペインで、**[ユーザー]** を選択します。

   1. ユーザー名 **[Alice]** を選択します。

   1. ユーザーの詳細ページで、[**Permissions (アクセス許可)**] タブを選択し、[**Add inline policy (インラインポリシーの追加)**] を選択します。

   1. [**JSON**] タブを選択します。

   1. 以下のアクセスポリシーをコピーし、ポリシーのテキストフィールドに貼り付けます。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	   
          "Statement": [
          {
            "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
            "Action": ["s3:ListBucket"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::companybucket"],
            "Condition": { "StringLike": {"s3:prefix": ["Development/*"] }
             }
          }
        ]
      }
      ```

------

   1. [**ポリシーの確認**] を選択します。次のページで、[**Name (名前)**] フィールドに名前を入力し、[**Create policy (ポリシーの作成)**] を選択します。

1. Alice のアクセス許可の変更をテストします。

   1. IAM ユーザーのサインインリンク (「[IAM ユーザーにサインインのリンクを提供するには](#walkthrough-sign-in-user-credentials)」を参照) を使用して AWS マネジメントコンソールにサインインします。

   1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

   1. Amazon S3 コンソールで、Alice がバケットの `Development/` フォルダ内のオブジェクトを一覧表示できることを確認します。

      ユーザーが `/Development` フォルダ内のオブジェクトを一覧表示するためにそのフォルダを選択すると、Amazon S3 コンソールから Amazon S3 にプレフィックスに `ListObjects` を指定した `/Development` のリクエストが送信されます。ユーザーにはプレフィックスに `Development` と区切り文字に `/` を指定してオブジェクトを一覧表示するアクセス許可が付与されているため、Amazon S3 からキープレフィックスが `Development/` のオブジェクトの一覧が返されてコンソールに表示されます。

### ステップ 5.2: IAM ユーザーの Alice に Development フォルダでオブジェクトを取得および作成するためのアクセス許可を付与する
<a name="walkthrough-grant-user1-permissions-get-put-object"></a>

Alice が `Development` フォルダ内のオブジェクトを読み書きできるようにするには、`s3:GetObject` および `s3:PutObject` アクションを呼び出すためのアクセス許可が Alice に必要です。次のポリシーステートメントは、そのアクセス許可を付与します (リクエストに `prefix` の値を持つ `Development/` パラメータが設定されているとします)。

```
{
    "Sid":"AllowUserToReadWriteObjectData",
    "Action":["s3:GetObject", "s3:PutObject"],
    "Effect":"Allow",
    "Resource":["arn:aws:s3:::companybucket/Development/*"]
 }
```



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

   IAM ユーザーの認証情報ではなく、AWS アカウントの認証情報を使用してコンソールにサインインします。

1. 前のステップで作成したインラインポリシーを編集します。

   1. 左側のナビゲーションペインで、[**ユーザー**] を選択します。

   1. ユーザー名 [Alice] を選択します。

   1. ユーザーの詳細で、[**アクセス許可**] タブを選択し、[**インラインポリシー**] セクションを展開します。

   1. 前のステップで作成したポリシーの名前の横にある [**Edit Policy (ポリシーの編集)**] をクリックします。

   1. 以下のポリシーをコピーして、 ポリシーテキストフィールドに貼り付け、既存のポリシーと置き換えます。

------
#### [ JSON ]

****  

      ```
      {
           "Version":"2012-10-17",		 	 	 
           "Statement":[
            {
               "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest",
               "Action":["s3:ListBucket"],
               "Effect":"Allow",
               "Resource":["arn:aws:s3:::companybucket"],
               "Condition":{
                  "StringLike":{"s3:prefix":["Development/*"]
                  }
               }
            },
            {
              "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", 
              "Action":["s3:GetObject", "s3:PutObject"],
              "Effect":"Allow",
              "Resource":["arn:aws:s3:::companybucket/Development/*"]
            }
         ]
      }
      ```

------

1. 更新されたポリシーをテストします。

   1. IAM ユーザーのサインインリンク (「[IAM ユーザーにサインインのリンクを提供するには](#walkthrough-sign-in-user-credentials)」を参照) を使用して AWS マネジメントコンソールにサインインします。

   1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

   1. Amazon S3 コンソールで、Alice が `Development` フォルダに対するオブジェクトの追加およびダウンロードを行えるようになったことを確認します。

### ステップ 5.3: バケットの他のフォルダへの IAM ユーザーの Alice のアクセス許可を明示的に拒否する
<a name="walkthrough-grant-user1-explicit-deny-other-access"></a>

ユーザー Alice が `companybucket` バケットのルートレベルの内容を表示できるようになったことを確認します。Alice は `Development` フォルダのオブジェクトを読み書きすることもできます。厳密にアクセス許可を制限したい場合は、バケットの他のフォルダへの Alice のアクセスを明示的に拒否することができます。バケットの他のフォルダへのアクセス許可を Alice に付与する他のポリシー (バケットポリシーまたは ACL) が存在する場合は、この明示的な拒否がそれらのアクセス許可よりも優先されます。

次のステートメントをユーザーの Alice のポリシーに追加すると、Alice が Amazon S3 に送信するすべてのリクエストに `prefix` パラメータを含めて値を `Development/*` または空の文字列にすることを要求できます。



```
{
   "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment",
   "Action": ["s3:ListBucket"],
   "Effect": "Deny",
   "Resource": ["arn:aws:s3:::companybucket"],
   "Condition":{  "StringNotLike": {"s3:prefix":["Development/*",""] },
                  "Null"         : {"s3:prefix":false }
    }
}
```

`Condition` ブロックには 2 つの条件式があります。これらの条件式の結果は、論理 `AND` を使用して結合されます。両方の条件が true の場合、結合された条件の結果は true です。このポリシーの `Effect` が `Deny` であるため、`Condition` が true と評価されると、ユーザーは指定した `Action` を実行できません。
+ `Null` 条件式により、Alice からのリクエストに `prefix` パラメータが含まれていることが保証されます。

  `prefix` パラメータはフォルダに類似したアクセスを必要とします。`prefix` パラメータのないリクエストを送信すると、Amazon S3 によりすべてのオブジェクトキーが返されます。

  リクエストに null 値の `prefix` パラメータが含まれている場合、式の評価結果は true になり、`Condition` 全体の評価結果が true になります。空の文字列を `prefix` パラメータの値として許可する必要があります。null 文字列を許可すると、この前の説明に示したコンソールでの操作と同様に、Alice はルートレベルのバケット項目を取得できるようになります。詳細については、[ステップ 4.2: バケットのルートレベルの内容をユーザーが表示できるようにする](#walkthrough1-grant-permissions-step2) を参照してください。
+ 条件式 `StringNotLike` を使用すると、`prefix` パラメータの値が指定されていて `Development/*` でない場合、リクエストは失敗します。

前のセクションの手順に従って、ユーザー Alice 用に作成したインラインポリシーを再び更新します。

以下のポリシーをコピーして、 ポリシーテキストフィールドに貼り付け、既存のポリシーと置き換えます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest",
         "Action":["s3:ListBucket"],
         "Effect":"Allow",
         "Resource":["arn:aws:s3:::companybucket"],
         "Condition":{
            "StringLike":{"s3:prefix":["Development/*"]
            }
         }
      },
      {
        "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", 
        "Action":["s3:GetObject", "s3:PutObject"],
        "Effect":"Allow",
        "Resource":["arn:aws:s3:::companybucket/Development/*"]
      },
      {
         "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::companybucket"],
         "Condition":{  "StringNotLike": {"s3:prefix":["Development/*",""] },
                        "Null"         : {"s3:prefix":false }
          }
      }
   ]
}
```

------

## ステップ 6: IAM ユーザーの Bob に特定のアクセス許可を付与する
<a name="walkthrough1-grant-permissions-step5"></a>

次に、`Finance` フォルダへのアクセス許可を Bob に付与します。Alice にアクセス許可を付与するときに使用した手順に従います。ただし、`Development` フォルダは `Finance` フォルダに置き換えます。手順については、[ステップ 5: IAM ユーザーの Alice に特定のアクセス許可を付与する](#walkthrough-grant-user1-permissions) を参照してください。

## ステップ 7: Private フォルダをセキュリティで保護する
<a name="walkthrough-secure-private-folder-explicit-deny"></a>

この例では、ユーザーは 2 名だけです。グループレベルで最小限必要なすべてのアクセス許可を付与し、ユーザーレベルのアクセス許可は、個々のユーザーレベルでアクセスを許可することが必要な場合にのみ付与しました。このようにすると、アクセス許可を管理する手間を最小限に抑えることができます。ユーザー数が増えるに従って、アクセス許可の管理は煩雑になります。例えば、この例のどのユーザーも `Private` フォルダの内容にアクセスできないようにします。`Private` フォルダへのアクセス許可を誤って付与しないようにするには、どのような方法があるでしょうか。このフォルダへのアクセスを明示的に拒否するポリシーを追加します。明示的な拒否は他のあらゆるアクセス許可よりも優先されます。

`Private` フォルダを非公開に保つには、次の 2 つの拒否ステートメントをグループポリシーに追加します。
+ 次のステートメントを追加して、`Private` フォルダのリソースに対するあらゆるアクションを明示的に拒否します (`companybucket/Private/*`)。

  ```
  {
    "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup",
    "Action": ["s3:*"],
    "Effect": "Deny",
    "Resource":["arn:aws:s3:::companybucket/Private/*"]
  }
  ```
+ また、リクエストに `Private/` プレフィックスが指定されている場合に、オブジェクトを一覧表示するアクションに必要なアクセス許可を拒否します。コンソールで Bob または Alice が `Private` フォルダを開くと、このポリシーにより Amazon S3 からエラーレスポンスが返されます。

  ```
  {
    "Sid": "DenyListBucketOnPrivateFolder",
    "Action": ["s3:ListBucket"],
    "Effect": "Deny",
    "Resource": ["arn:aws:s3:::*"],
    "Condition":{
        "StringLike":{"s3:prefix":["Private/"]}
     }
  }
  ```

`Consultants` グループポリシーを、前述の拒否ステートメントを含む更新したポリシーに置き換えます。更新したポリシーが適用されると、グループ内のどのユーザーも、バケット内の `Private` フォルダにアクセスできなくなります。

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

   IAM ユーザーの認証情報ではなく、AWS アカウントの認証情報を使用してコンソールにサインインします。

1. `AllowGroupToSeeBucketListInTheConsole` グループにアタッチされている既存の `Consultants` 管理ポリシーを以下のポリシーに置き換えます。ポリシーの *`companybucket`* は、自分のバケットの名前に置き換えてください。

   手順については、「IAM ユーザーガイド」の「[カスタマー管理ポリシーの編集 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html#edit-managed-policy-console)」を参照してください。**手順では、ポリシーがアタッチされているすべてのプリンシパルエンティティに変更を適用する指示に従ってください。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket",
         "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::*"]
       },
       {
         "Sid": "AllowRootLevelListingOfCompanyBucket",
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::companybucket"],
         "Condition":{
             "StringEquals":{"s3:prefix":[""]}
          }
       },
       {
         "Sid": "RequireFolderStyleList",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::*"],
         "Condition":{
             "StringNotEquals":{"s3:delimiter":"/"}
          }
        },
       {
         "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup",
         "Action": ["s3:*"],
         "Effect": "Deny",
         "Resource":["arn:aws:s3:::companybucket/Private/*"]
       },
       {
         "Sid": "DenyListBucketOnPrivateFolder",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::*"],
         "Condition":{
             "StringLike":{"s3:prefix":["Private/"]}
          }
       }
     ]
   }
   ```

------



## ステップ 8: クリーンアップする
<a name="walkthrough-cleanup"></a>

クリーンアップするには、[IAM コンソール](https://console.aws.amazon.com/iam/)を開き、ユーザーの Alice と Bob を削除します。手順については、「IAM ユーザーガイド」の「[IAM ユーザーの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting)」を参照してください。**

ストレージへの不要な請求を防ぐために、この演習で作成したオブジェクトとバケットも削除してください。

## 関連リソース
<a name="RelatedResources-walkthrough1"></a>
+ 「*IAM ユーザーガイド*」の「[IAM ポリシーを管理する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)」

# Amazon S3 のアイデンティティベースのポリシー例
<a name="example-policies-s3"></a>

このセクションでは、Amazon S3 へのユーザーアクセスを管理するための AWS Identity and Access Management (IAM) アイデンティティベースポリシーをいくつか示します。*バケットポリシー* (リソースベースのポリシー) の例については、「[Amazon S3 のバケットポリシー](bucket-policies.md)」を参照してください。IAM ポリシー言語については、「[Amazon S3 のポリシーとアクセス許可](access-policy-language-overview.md)」を参照してください。

次のサンプルポリシーは、プログラムで使用する場合に機能します。ただし、Amazon S3 コンソールでこれらを使用するには、コンソールに必要な追加のアクセス許可を付与する必要があります。このようなポリシーの Amazon S3 コンソールでの使用の詳細については、[ユーザーポリシーを使用したバケットへのアクセスの制御](walkthrough1.md) を参照してください。

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**Topics**
+ [バケット の 1 つへのアクセスを IAM ユーザーに許可する](#iam-policy-ex0)
+ [バケット内のフォルダへのアクセスを各 IAM ユーザーに許可する](#iam-policy-ex1)
+ [Amazon S3 で共有フォルダを持つことをグループに許可する](#iam-policy-ex2)
+ [すべてのユーザーに対し、バケットの特定部分のオブジェクトの読み取りを許可する](#iam-policy-ex3)
+ [パートナーに対し、バケットの特定部分へのファイルのドロップを許可する](#iam-policy-ex4)
+ [特定の AWS アカウント の Amazon S3 バケットへのアクセスを制限する](#iam-policy-ex6)
+ [組織単位内の Amazon S3 バケットへのアクセスを制限する](#iam-policy-ex7)
+ [組織内の Amazon S3 バケットへのアクセスを制限する](#iam-policy-ex8)
+ [AWS アカウント に PublicAccessBlock 設定を取得するアクセス許可を付与する](#using-with-s3-actions-related-to-accountss)
+ [バケット作成を 1 つのリージョンに制限する](#condition-key-bucket-ops-1)

## バケット の 1 つへのアクセスを IAM ユーザーに許可する
<a name="iam-policy-ex0"></a>

この例では、AWS アカウントの IAM ユーザーに *amzn-s3-demo-bucket1* という 1 つのバケットに対する許可を付与して、ユーザーがオブジェクトを追加、更新、削除できるようにします。

このポリシーでは、ユーザーに `s3:PutObject`、`s3:GetObject`、`s3:DeleteObject` のアクセス許可を付与するだけでなく、`s3:ListAllMyBuckets`、`s3:GetBucketLocation`、および `s3:ListBucket` のアクセス許可も付与します。これらが、コンソールで必要とされる追加のアクセス許可です。またコンソール内のオブジェクトのコピー、カット、貼り付けを行うためには、`s3:PutObjectAcl` および `s3:GetObjectAcl` アクションが必要となります。コンソールを使用してユーザーにアクセス許可を付与してテストする例の解説については、[ユーザーポリシーを使用したバケットへのアクセスの制御](walkthrough1.md) を参照してください。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action": "s3:ListAllMyBuckets",
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":["s3:ListBucket","s3:GetBucketLocation"],
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:GetObjectAcl",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/*"
      }
   ]
}
```

------

## バケット内のフォルダへのアクセスを各 IAM ユーザーに許可する
<a name="iam-policy-ex1"></a>

次の例では、Mary と Carlos という 2 人の IAM ユーザーに *amzn-s3-demo-bucket1* というバケットに対するアクセス許可を付与して、この 2 人がオブジェクトを追加、更新、削除できるようにします。ただし、バケット内の単一のプレフィックス (フォルダ) に全ユーザーのアクセスを制限したいとします。フォルダを作成する際、ユーザー名と同じフォルダ名にすることもできます。

```
amzn-s3-demo-bucket1
   Mary/
   Carlos/
```

各ユーザーに本人のフォルダのみへのアクセス権を付与するには、各ユーザー用のポリシーを作成し、個別にアタッチします。例えば、Mary に次のポリシーをアタッチして、`amzn-s3-demo-bucket1/Mary` フォルダに対する専用の Amazon S3 のアクセス許可を付与することができます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/Mary/*"
      }
   ]
}
```

------

その後、ユーザー Carlos に同様のポリシーをアタッチし、`Resource` 値のフォルダ `Carlos` を指定します。

各ユーザーにポリシーをアタッチするのではなく、ポリシー変数を使用する単一のポリシーを作成し、そのポリシーをグループにアタッチできます。まずグループを作成し、Mary と Carlos をいずれもそのグループに追加する必要があります。次のポリシーの例では、`amzn-s3-demo-bucket1/${aws:username}` フォルダに対する Amazon S3 の一連のアクセス許可を付与しています。ポリシーが評価されると、ポリシー変数 `${aws:username}` はリクエスタのユーザー名で置き換えられます。例えば、Mary がオブジェクトの PUT リクエストを送信した場合、Mary が `amzn-s3-demo-bucket1/Mary` フォルダにオブジェクトをアップロードする PUT オペレーションのみが許可されます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/${aws:username}/*"
      }
   ]
}
```

------

**注記**  
ポリシー変数を使用する場合は、`2012-10-17` をポリシー内で明示的に指定する必要があります。IAM ポリシー言語のデフォルトバージョンは 2008−10−17 です。このバージョンでは、ポリシー変数をサポートしていません。

 Amazon S3 コンソールで前述のポリシーをテストする場合、次のポリシーに示すように、追加のアクセス許可が必要となります。これらのアクセス許可をコンソールで使用する方法については、[ユーザーポリシーを使用したバケットへのアクセスの制御](walkthrough1.md) を参照してください。

------
#### [ JSON ]

****  

```
{
 "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGroupToSeeBucketListInTheConsole",
      "Action": [ 
      	"s3:ListAllMyBuckets", 
      	"s3:GetBucketLocation" 
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"  
    },
    {
      "Sid": "AllowRootLevelListingOfTheBucket",
      "Action": "s3:ListBucket",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1",
      "Condition": { 
            "StringEquals": {
                    "s3:prefix": [""], "s3:delimiter": ["/"]
                           }
                 }
    },
    {
      "Sid": "AllowListBucketOfASpecificUserPrefix",
      "Action": "s3:ListBucket",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1",
      "Condition": {  "StringLike": {"s3:prefix": ["${aws:username}/*"] }
       }
    },
      {
     "Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix",
         "Effect": "Allow",
         "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/${aws:username}/*"
      }
  ]
}
```

------

**注記**  
2012−10−17 バージョンのポリシーでは、ポリシー変数の先頭には `$` が付きます。使用するオブジェクトキー (オブジェクト名) に `$` が含まれている場合、この構文の変化により衝突が発生します。  
この競合を回避するには、`$` を使用して `${$}` 文字を指定します。例えば、ポリシーにオブジェクトキー `my$file` を含めるには、`my${$}file` として指定します。

IAM ユーザー名は人間が読んで理解できるわかりやすい識別子ですが、グローバルで一意である必要はありません。例えば、Carlos が退職して別の Carlos が入社した場合、この別の Carlos が前の Carlos の情報にアクセスできます。

フォルダを作成する際に、ユーザー名の代わりに IAM ユーザー ID を使用することもできます。IAM ユーザー ID はそれぞれ一意であるためです。この場合、`${aws:userid}` ポリシー変数を使用するように前述のポリシーを修正する必要があります。ユーザー ID の詳細については、「IAM ユーザーガイド」の「[IAM 識別子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)」を参照してください。**

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/home/${aws:userid}/*"
      }
   ]
}
```

------

### バケット内のフォルダへのアクセスを非 IAM ユーザー (モバイルアプリユーザー) に許可する
<a name="non-iam-mobile-app-user-access"></a>

ユーザーのデータを S3 バケットに保存するモバイルゲームアプリを開発するとします。バケットに各アプリユーザーのフォルダを作成します。また、各ユーザーには本人のフォルダのみにアクセスを制限します。 ただし、ユーザーがアプリをダウンロードしてゲームをプレイし始める前にフォルダを作成することはできません。お客様にはユーザーのユーザー ID がないためです。

この場合、ユーザーには、Login with Amazon、 Facebook、または Google などのパブリックアイデンティプロバイダを使用してアプリにサインインするよう要求できます。ユーザーがこれらのプロバイダの 1 つを使用してアプリにサインインすると、ユーザー ID が設定されるため、お客様はこれを使用して実行時にユーザー固有のフォルダを作成することができます。

これにより、AWS Security Token Service のウェブ認証フェデレーションを使用して、アイデンティプロバイダからの情報をアプリに組み入れ、各ユーザーの一時的なセキュリティ認証情報を取得することができます。続いて、IAM ポリシーを作成して、アプリがバケットにアクセスできるようにしたり、ユーザー固有のフォルダの作成、データのアップロードなどのオペレーションを実行できるようにすることができます。ウェブ ID フェデレーションの詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html)の*ウェブ ID フェデレーションについて*を参照してください。

## Amazon S3 で共有フォルダを持つことをグループに許可する
<a name="iam-policy-ex2"></a>

次のポリシーをグループにアタッチすることで、グループ内の全メンバーに Amazon S3 のフォルダ `amzn-s3-demo-bucket1/share/marketing` へのアクセス権が付与されます。グループメンバーは、この指定のフォルダのオブジェクトに対してのみ、ポリシーに示されている Amazon S3 の特定のアクセス許可を付与されます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/share/marketing/*"
      }
   ]
}
```

------

## すべてのユーザーに対し、バケットの特定部分のオブジェクトの読み取りを許可する
<a name="iam-policy-ex3"></a>

次の例では、`AllUsers` というグループを作成し、AWS アカウントのすべての IAM ユーザーを含めます。次に、`GetObject` フォルダ内のオブジェクトに対してのみ `GetObjectVersion` と `amzn-s3-demo-bucket1/readonly` のアクセス権をグループに付与するポリシーをアタッチします。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/readonly/*"
      }
   ]
}
```

------

## パートナーに対し、バケットの特定部分へのファイルのドロップを許可する
<a name="iam-policy-ex4"></a>

次の例では、パートナー会社を表す `AnyCompany` というグループを作成します。パートナー会社でアクセス許可が必要な個人やアプリケーションのために IAM ユーザーを作成し、そのユーザーをグループに入れます。

次に、バケット内の次のフォルダに対する `PutObject` アクセス権をグループに付与するポリシーをアタッチします。

`amzn-s3-demo-bucket1/uploads/anycompany` 

このバケットに対する他の操作を `AnyCompany` グループに禁止するには、`PutObject`で Amazon S3 のリソースに対する AWS アカウント 以外の Amazon S3 のアクションを明示的に拒否するステートメントを追加します。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/uploads/anycompany/*"
      },
      {
         "Effect":"Deny",
         "Action":"s3:*",
         "NotResource":"arn:aws:s3:::amzn-s3-demo-bucket1/uploads/anycompany/*"
      }
   ]
}
```

------

## 特定の AWS アカウント の Amazon S3 バケットへのアクセスを制限する
<a name="iam-policy-ex6"></a>

Amazon S3 プリンシパルが信頼された内のリソースにのみアクセスしていることを確認する場合AWS アカウントでは、アクセスを制限できます。たとえば、この[アイデンティティベースの IAM ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)は、`Deny` 効果を使用して Amazon S3 アクションへのアクセスをブロックします。ただし、アクセスされている Amazon S3 リソースがアカウント `222222222222` 内の場合は除きます。AWS アカウント の IAM プリンシパルがカウント外の Amazon S3 オブジェクトにアクセスすることを防止するには、次の IAM ポリシーをアタッチします。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyS3AccessOutsideMyBoundary",
      "Effect": "Deny",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": [
            "222222222222"
          ]
        }
      }
    }
  ]
}
```

------

**注記**  
このポリシーは、アクセス権を付与しないため、既存の IAM アクセスコントロールに置き換わるものではありません。代わりに、このポリシーは、他の IAM ポリシーによって付与されたアクセス権限に関係なく、他の IAM アクセス権限の追加ガードレールとして機能します。

ポリシーのアカウント ID `222222222222` を自身のポリシー AWS アカウント に必ず置き換えます。この制限を維持しながら複数のアカウントにポリシーを適用するには、アカウント ID を `aws:PrincipalAccount` 条件キーに置き換えます。この条件では、プリンシパルとリソースが同じアカウントにある必要があります。

## 組織単位内の Amazon S3 バケットへのアクセスを制限する
<a name="iam-policy-ex7"></a>

AWS Organizations でセットアップされた[組織単位 (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html)がある場合、Amazon S3 バケットのアクセスを組織の特定部分に制限することができます。この例では、`aws:ResourceOrgPaths` キーを使って組織の OU へ Amazon S3 バケットのアクセスを制限します。この例では、[OU ID](https://docs.aws.amazon.com/organizations/latest/APIReference/API_OrganizationalUnit.html) は `ou-acroot-exampleou` です。自身のポリシーでこの値を自身の OU ID に置き換えてください。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
     {
       "Sid": "AllowS3AccessOutsideMyBoundary",
       "Effect": "Allow",
       "Action": [
         "s3:*"
       ],
       "Resource": "*",
       "Condition": {
         "ForAllValues:StringLike": {
           "aws:ResourceOrgPaths": [
             "o-acorg/r-acroot/ou-acroot-exampleou/"
           ] 
         }
       }
     }
   ]
 }
```

------

**注記**  
このポリシーは、アクセス許可を付与しません。代わりに、このポリシーは、他の IAM アクセス権限のバックストップとして機能し、プリンシパルが OU 定義の境界外にある Amazon S3 オブジェクトにアクセスするのを防ぎます。

このポリシーは、アクセスされている Amazon S3 オブジェクトが組織内の `ou-acroot-exampleou` OU 内に存在しない場合、Amazon S3 アクションへのアクセスを拒否します。[IAM ポリシー条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)は、リストされた OU パスを含めるのに、複数値を持つ条件キー `aws:ResourceOrgPaths` を要求します。このポリシーは、`ForAllValues:StringNotLike` 演算子を使用して `aws:ResourceOrgPaths` の値をリストされた OU と比較します (大文字と小文字は区別しません)。

## 組織内の Amazon S3 バケットへのアクセスを制限する
<a name="iam-policy-ex8"></a>

組織内の Amazon S3 オブジェクトへのアクセスを制限するには、組織のルートに IAM ポリシーをアタッチし、組織内のすべてのアカウントに適用します。IAM プリンシパルにこのルールに従うように要求するには、[サービスコントロールポリシー (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) を使用します。SCP を使用する場合は、組織のルートにポリシーをアタッチする前に、[SCP のテスト](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html#scp-warning-testing-effect)をしっかりと実行してください。

次のポリシー例では、アクセスされている Amazon S3 オブジェクトが、それにアクセスしている IAM プリンシパルと同じ組織内に存在しない限り、Amazon S3 アクションへのアクセスが拒否されます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
     {
       "Sid": "DenyS3AccessOutsideMyBoundary",
       "Effect": "Deny",
       "Action": [
         "s3:*"
       ],
       "Resource": "arn:aws:s3:::*/*",
       "Condition": {
         "StringNotEquals": {
           "aws:ResourceOrgID": "${aws:PrincipalOrgID}"
         }
       }
     }
   ]
 }
```

------

**注記**  
このポリシーは、アクセス許可を付与しません。代わりに、このポリシーは、他の IAM アクセス権限のバックストップとして機能し、プリンシパルが組織外にある Amazon S3 オブジェクトにアクセスするのを防ぎます。このポリシーは、ポリシーが有効になった後に作成される Amazon S3 リソースにも適用されます。

この例の [IAM ポリシー条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)では、互いに等しい `aws:ResourceOrgID` および `aws:PrincipalOrgID` が必要です。この要件では、リクエストを行うプリンシパルとアクセスされるリソースが同じ組織内になければなりません。

## AWS アカウント に PublicAccessBlock 設定を取得するアクセス許可を付与する
<a name="using-with-s3-actions-related-to-accountss"></a>

以下のアイデンティティベースのポリシーの例は、ユーザーに `s3:GetAccountPublicAccessBlock` のアクセス許可を付与します。これらのアクセス許可については、`Resource` 値を `"*"` に設定します。リソース ARN については、「[Amazon S3 のポリシーリソース](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-resources)」を参照してください。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action":[
            "s3:GetAccountPublicAccessBlock" 
         ],
         "Resource":[
            "*"
         ]
       }
    ]
}
```

------

## バケット作成を 1 つのリージョンに制限する
<a name="condition-key-bucket-ops-1"></a>

例えば、AWS アカウント の管理者がユーザー (Dave) に南米 (サンパウロ) リージョンでのみバケットを作成できる許可を付与するとします。アカウント管理者は、以下のように条件を指定して、`s3:CreateBucket` のアクセス許可を付与する次のユーザーポリシーをアタッチします。`Condition` ブロックのキーと値のペアは、`s3:LocationConstraint` キーと、その値として `sa-east-1` リージョンを指定します。

**注記**  
この例では、バケット所有者はユーザーの 1 人にアクセス許可を付与するため、バケットポリシーまたはユーザーポリシーのどちらでも使用することができます。この例では、ユーザーポリシーを使用します。

Amazon S3 リージョンのリストについては、*AWS 全般のリファレンス* の「[リージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/s3.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "statement1",
         "Effect": "Allow",
         "Action": "s3:CreateBucket",
         "Resource": "arn:aws:s3:::*",
         "Condition": {
             "StringLike": {
                 "s3:LocationConstraint": "sa-east-1"
             }
         }
       }
    ]
}
```

------

**明示的な拒否を追加する**  
上記のポリシーは、ユーザーが `sa-east-1` 以外のリージョンでバケットを作成することを制限します。ただし、他の一部のポリシーで、このユーザーに別のリージョンでバケットを作成するアクセス許可を付与する場合があります。例えば、ユーザーがグループに属している場合、グループのアクセス許可内にいるすべてのユーザーが別のリージョンでバケットを作成できるように、ポリシーがアタッチされている場合があります。ユーザーに別のリージョンでバケットを作成するアクセス許可が付与されないように、上記のポリシーに明示的な拒否のステートメントを追加します。

`Deny` ステートメントは、`StringNotLike` 条件を使用します。つまり、場所の制約が `sa-east-1` でない場合、バケットの作成リクエストは拒否されます。明示的な拒否を使用すれば、どのようなアクセス権限が付与されている場合でも、ユーザーは別のリージョンでバケットを作成できなくなります。次のポリシーには、明示的な拒否ステートメントが含まれています。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action": "s3:CreateBucket",
         "Resource": "arn:aws:s3:::*",
         "Condition": {
             "StringLike": {
                 "s3:LocationConstraint": "sa-east-1"
             }
         }
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Action": "s3:CreateBucket",
         "Resource": "arn:aws:s3:::*",
         "Condition": {
             "StringNotLike": {
                 "s3:LocationConstraint": "sa-east-1"
             }
         }
       }
    ]
}
```

------

**AWS CLI でポリシーをテストする**  
このポリシーは、次の `create-bucket` AWS CLI コマンドを使用してテストできます。この例では、`bucketconfig.txt` ファイルを使用して場所の制約を指定しています。Windows ファイルパスに注目してください。バケットの名前とパスを適切に更新する必要があります。`--profile` パラメータを使用して、ユーザーの認証情報を指定する必要があります。AWS CLI のセットアップと使用の詳細については、「Amazon S3 API リファレンス」の「[Developing with Amazon S3 using the AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html)」を参照してください。**

```
aws s3api create-bucket --bucket examplebucket --profile AccountADave --create-bucket-configuration file://c:/Users/someUser/bucketconfig.txt
```

`bucketconfig.txt` ファイルは、次のように設定を指定します。

```
{"LocationConstraint": "sa-east-1"}
```

# チュートリアル: ポリシーを使用した Amazon S3 リソースへのアクセスの管理
<a name="example-walkthroughs-managing-access"></a>

このトピックでは、Amazon S3 リソースへのアクセスの付与について、次の基本的なチュートリアル例を示します。これらの例では、AWS マネジメントコンソール を使用してリソース (バケット、オブジェクト、ユーザー) を作成し、アクセス許可を付与します。また、これらの例では、コマンドラインツールを使用してアクセス許可を確認する方法を示します。コードを記述する必要はありません。AWS Command Line Interface (AWS CLI) と AWS Tools for Windows PowerShell の両方を使用したコマンドを使用することができます。
+ [例 1: バケット所有者がユーザーにバケットのアクセス許可を付与する](example-walkthroughs-managing-access-example1.md)

  デフォルトでは、使用するアカウントで作成した IAM ユーザーにアクセス許可はありません。この演習では、バケットおよびオブジェクト操作を実行するためのアクセス許可をユーザーに付与します。
+ [例 2: バケット所有者がクロスアカウントのバケットのアクセス許可を付与する](example-walkthroughs-managing-access-example2.md)

  この演習では、バケット所有者 (アカウント A) が別の AWS アカウント (アカウント B) に対してクロスアカウントの許可を付与します。次に、アカウント B でこれらの許可を、そのアカウントのユーザーに委任します。
+ **オブジェクト所有者とバケット所有者が同じではない場合のオブジェクトのアクセス許可の管理**

  このシナリオ例は、バケット所有者が他のユーザーにオブジェクトのアクセス許可を付与しますが、バケット内のすべてのオブジェクトをバケット所有者が所有しているわけではないという場合です。バケット所有者にはどのようなアクセス許可が必要になり、それらのアクセス許可をどのように委任できるのでしょうか。

  バケットを作成する AWS アカウント は、バケット所有者と呼ばれます。**この所有者は、オブジェクトをアップロードする許可を他の AWS アカウントに付与することができ、オブジェクトを作成する AWS アカウントがオブジェクトを所有しています。バケット所有者には、他の AWS アカウントで作成されたオブジェクトに対する許可はありません。バケット所有者がオブジェクトへのアクセス権を付与するバケットポリシーを作成する場合、そのポリシーは他のアカウントが所有するオブジェクトには適用されません。

  この場合、オブジェクト所有者は、オブジェクト ACL を使用して、まずバケット所有者にアクセス許可を付与する必要があります。バケット所有者は、以下の例に示すように、これらのオブジェクトの許可を、他のユーザー、自分のアカウントのユーザー、または別の AWS アカウントに委任できます。
  + [例 3: バケット所有者が自分の所有していないオブジェクトに対するアクセス許可を付与する](example-walkthroughs-managing-access-example3.md)

    この演習では、バケット所有者は最初にオブジェクト所有者からアクセス許可を取得します。次に、バケット所有者は、自分のアカウントのユーザーにそのアクセス許可を委任します。
  + [例 4 - バケット所有者が所有権のないオブジェクトへのクロスアカウントアクセス許可を付与する](example-walkthroughs-managing-access-example4.md)

    オブジェクトの所有者からアクセス許可を取得した後も、クロスアカウントの委任がサポートされていないため、バケット所有者は他の AWS アカウント にアクセス許可を委任できません (「[アクセス許可の委任](access-policy-language-overview.md#permission-delegation)」を参照)。代わりに、バケット所有者は、特定のオペレーション (オブジェクトの取得など) を実行する許可を持つ IAM ロールを作成し、別の AWS アカウントがそのロールを引き受けることを許可できます。このロールを引き受けるすべてのユーザーがオブジェクトにアクセスできます。この例では、バケット所有者が IAM ロールを使用してこのクロスアカウントの委任を有効にする方法を示します。

## チュートリアル例を実行する前に
<a name="before-you-try-example-walkthroughs-manage-access"></a>

これらの例では、AWS マネジメントコンソール を使用してリソースを作成し、アクセス許可を付与します。許可をテストするために、この例ではコマンドラインツール AWS CLI および AWS Tools for Windows PowerShell を使用するため、コードを書く必要はありません。アクセス許可をテストするには、これらのツールのいずれかをセットアップする必要があります。詳細については、「[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md)」を参照してください。

さらに、これらの例では、リソースの作成時に AWS アカウントのルートユーザー認証情報を使用しません。代わりに、アカウントに、これらのタスクを実行するための管理者ユーザーを作成します。

### 管理者ユーザーを使用したリソースの作成とアクセス許可の付与について
<a name="about-using-root-credentials"></a>

AWS Identity and Access Management (IAM) では、AWS アカウントのルートユーザー認証情報を使用してリクエストを行わないようお勧めします。代わりに、IAM ユーザーまたはロールを作成してフルアクセスを許可し、そのユーザーまたはロールの認証情報を使用してリクエストを行います。このユーザーを管理者ユーザーまたはロールと呼びます。詳細については、*AWS 全般のリファレンス* の「[AWS アカウントのルートユーザー の認証情報と IAM ID](https://docs.aws.amazon.com/general/latest/gr/root-vs-iam.html)」と *IAM ユーザーガイド*の「[IAM のベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

このセクションのすべてのチュートリアル例では、管理者ユーザーの認証情報を使用します。まだ AWS アカウントの管理者ユーザーを作成していない場合は、トピックでその方法を説明します。

ユーザーの認証情報を使用して AWS マネジメントコンソール にサインインするには、IAM ユーザーのサインイン URL を使用する必要があります。[IAM コンソール](https://console.aws.amazon.com/iam/)は、AWS アカウント にこの URL を提供します。トピックで、この URL を取得する方法を示します。

# チュートリアル用のツールのセットアップ
<a name="policy-eval-walkthrough-download-awscli"></a>

導入例 ([チュートリアル: ポリシーを使用した Amazon S3 リソースへのアクセスの管理](example-walkthroughs-managing-access.md) を参照) では、AWS マネジメントコンソール を使用してリソースを作成し、アクセス許可を付与します。許可をテストするために、この例ではコマンドラインツール AWS Command Line Interface (AWS Tools for Windows PowerShell)および AWS CLI を使用するため、コードを書く必要はありません。アクセス許可をテストするには、これらのツールのいずれかをセットアップする必要があります。

**AWS CLI をセットアップするには**

1. AWS CLI をダウンロードして設定します。手順については、*「AWS Command Line Interface ユーザーガイド」*の次のトピックを参照してください。

    [ の最新バージョンのインストールまたは更新AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) 

    [ の開始方法AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 

1. デフォルトのプロファイルを設定します。

   ユーザーの認証情報を AWS CLI 設定ファイルに格納します。AWS アカウントの認証情報を使用して設定ファイルにデフォルトのプロファイルを作成します。AWS CLI 設定ファイルの検索と編集の手順については、「[Configuration and credential file settings](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html)」を参照してください。

   ```
   [default]
   aws_access_key_id = access key ID
   aws_secret_access_key = secret access key
   region = us-west-2
   ```

1. コマンドプロンプトで以下のコマンドを入力して、セットアップを確認します。これらのコマンドは、いずれも認証情報を明示的に提供しないため、デフォルトプロファイルの認証情報が使用されます。
   + `help` コマンドを試してみます。

     ```
     aws help
     ```
   + 設定したアカウントのバケットのリストを取得するには、`aws s3 ls` コマンドを使用します。

     ```
     aws s3 ls
     ```

このチュートリアルでは、以下の例に示すように、ユーザーを作成し、プロファイルを作成することによってユーザー認証情報を設定ファイルに保存します。これらのプロファイルには、`AccountAadmin` と `AccountBadmin` の名前があります。

```
[profile AccountAadmin]
aws_access_key_id = User AccountAadmin access key ID
aws_secret_access_key = User AccountAadmin secret access key
region = us-west-2

[profile AccountBadmin]
aws_access_key_id = Account B access key ID
aws_secret_access_key = Account B secret access key
region = us-east-1
```

これらのユーザー認証情報を使用してコマンドを実行するには、プロファイル名を指定する `--profile` パラメータを追加します。次の AWS CLI コマンドは、*`examplebucket`* 内のオブジェクトのリストを取得し、`AccountBadmin` プロファイルを指定します。

```
aws s3 ls s3://examplebucket --profile AccountBadmin
```

また、コマンドプロンプトから `AWS_DEFAULT_PROFILE` 環境変数を変更することで、ユーザー認証情報セットをデフォルトプロファイルとして設定できます。これを行うと、`--profile` パラメータを指定せずに AWS CLI コマンドを実行するたびに、AWS CLI は環境変数でデフォルトプロファイルとして設定したプロファイルを使用します。

```
$ export AWS_DEFAULT_PROFILE=AccountAadmin
```

**AWS Tools for Windows PowerShell をセットアップするには**

1. AWS Tools for Windows PowerShell をダウンロードして設定します。手順については、「**AWS Tools for PowerShell ユーザーガイド」の「[Installing the AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html#pstools-installing-download)」を参照してください。
**注記**  
AWS Tools for Windows PowerShell モジュールをロードするには、PowerShell スクリプトの実行を有効にする必要があります。詳細については、「AWS Tools for PowerShell ユーザーガイド」の「[Enable Script Execution](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html#enable-script-execution)」を参照してください。**

1. これらのチュートリアルでは、`Set-AWSCredentials` コマンドを使用して、セッションごとに AWS 認証情報を指定します。このコマンドは永続的なストア (`-StoreAs `パラメータ) に認証情報を格納します。

   ```
   Set-AWSCredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas string
   ```

1. セットアップを確認します。
   + Amazon S3 オペレーションで使用できるコマンドのリストを取得するには、`Get-Command` コマンドを実行します。

     ```
     Get-Command -module awspowershell -noun s3* -StoredCredentials string
     ```
   + バケット内のオブジェクトのリストを取得するには、`Get-S3Object` コマンドを実行します。

     ```
     Get-S3Object -BucketName bucketname -StoredCredentials string
     ```

コマンドのリストについては、「[AWS Tools for PowerShell Cmdlet Reference](https://docs.aws.amazon.com/powershell/latest/reference/Index.html)」を参照してください。

これで、チュートリアルを行う準備ができました。各セクションの冒頭に示されているリンクをクリックしてください。

# 例 1: バケット所有者がユーザーにバケットのアクセス許可を付与する
<a name="example-walkthroughs-managing-access-example1"></a>

**重要**  
IAM ロールへのアクセス許可の付与は、個別のユーザーへのアクセス許可の付与より優れた方法です。IAM ロールへのアクセス許可の付与方法の詳細については、「[クロスアカウントのアクセス許可の理解と IAM ロールの使用](example-walkthroughs-managing-access-example4.md#access-policies-walkthrough-example4-overview)」を参照してください。

**Topics**
+ [チュートリアルの準備をする](#grant-permissions-to-user-in-your-account-step0)
+ [ステップ 1: アカウント A でリソースを作成して、アクセス許可を付与する](#grant-permissions-to-user-in-your-account-step1)
+ [ステップ 2: アクセス許可をテストする](#grant-permissions-to-user-in-your-account-test)

このチュートリアルでは、AWS アカウント がバケットを所有し、アカウントに IAM ユーザーが含まれています。デフォルトでは、ユーザーにはアクセス許可はありません。何らかのタスクを実行するユーザーには、親アカウントがそのためのアクセス許可をユーザーに付与する必要があります。バケット所有者と親アカウントは同じです。したがって、バケットへの許可をユーザーに付与するには、AWS アカウントは、バケットポリシー、ユーザーポリシー、またはその両方を使用することができます。アカウント所有者は、一部のアクセス許可はバケットポリシーを使用し、他のアクセス許可はユーザーポリシーを使用して付与します。

手順の概要を以下に示します。

![\[AWS アカウントによるアクセス許可の付与を説明している図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/access-policy-ex1.png)


1. アカウント管理者は、ユーザーに一連のアクセス許可を付与するバケットポリシーを作成します。

1. アカウント管理者は、ユーザーポリシーをユーザーにアタッチして、追加のアクセス許可を付与します。

1. これによりユーザーは、バケットポリシーとユーザーポリシーの両方を通じて付与されているアクセス許可を使用できます。

この例では、AWS アカウントが必要です。アカウントのルートユーザー認証情報を使用する代わりに、管理者ユーザーを作成します (「[管理者ユーザーを使用したリソースの作成とアクセス許可の付与について](example-walkthroughs-managing-access.md#about-using-root-credentials)」を参照してください)。ここ例の AWS アカウント および管理者ユーザーは、次のとおりです。


| アカウント ID | アカウントの呼び方 | アカウントの管理者ユーザー | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  アカウント A  |  AccountAadmin  | 

**注記**  
この例では、管理者ユーザーは **AccountAadmin** で、アカウント A を参照しており、**AccountAdmin** ではありません。

ユーザーを作成し、アクセス許可を付与するためのすべてのタスクは、AWS マネジメントコンソール で実行します。このチュートリアルでは、許可を検証するために、コマンドラインツールの AWS Command Line Interface (AWS CLI) と AWS Tools for Windows PowerShell を使用するので、コードを記述する必要はありません。

## チュートリアルの準備をする
<a name="grant-permissions-to-user-in-your-account-step0"></a>

1. AWS アカウントが存在し、管理者権限を持つユーザーが存在することを確認します。

   1. 必要な場合、AWS アカウントにサインアップします。このアカウントをアカウント A と呼びます。

      1.  [https://aws.amazon.com/s3](https://aws.amazon.com/s3) に移動して、**[AWS アカウントの作成]** を選択します。

      1. 画面上の指示に従ってください。

         AWSアカウントがアクティブになり、使用可能な状態になったら、 から E メールで通知が届きます。

   1. アカウント A に管理者ユーザー **AccountAadmin** を作成します。アカウント A の認証情報を使用して、[IAM コンソール](https://console.aws.amazon.com/iam/home?#home)にサインインし、次の操作を行います。

      1. ユーザー **AccountAadmin** を作成して、ユーザーのセキュリティ認証情報を書き留めます。

         手順については、「IAM ユーザーガイド」の「[AWS アカウント での IAM ユーザーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)」を参照してください。**

      1. フルアクセスを付与するユーザーポリシーをアタッチして、管理者に **AccountAadmin** を付与します。

         手順については、「IAM ユーザーガイド」の「[IAM ポリシーを管理する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)」を参照してください。**

      1. **AccountAadmin** の **IAM ユーザーサインイン URL** を書き留めます。この URL は AWS マネジメントコンソール にサインインする際に使用する必要があります。サインイン URL を見つける方法については、「IAM ユーザーガイド」の「[Sign in to the AWS マネジメントコンソール as an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_how-users-sign-in.html)」を参照してください。**URL はアカウントごとにメモしてください。

1. AWS CLI または AWS Tools for Windows PowerShell をセットアップします。管理者ユーザーの認証情報は以下のように保存します。
   + AWS CLI を使用する場合は、設定ファイルに `AccountAadmin` プロファイルを作成します。
   + AWS Tools for Windows PowerShell を使用する場合は、セッションの認証情報を `AccountAadmin` として保存します。

   手順については、「[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md)」を参照してください。

## ステップ 1: アカウント A でリソースを作成して、アクセス許可を付与する
<a name="grant-permissions-to-user-in-your-account-step1"></a>

アカウント A のユーザー `AccountAadmin` の認証情報と、IAM ユーザー専用のサインイン URL を使用して、AWS マネジメントコンソールにサインインし、次の操作を行います。

1. バケットリソースと IAM ユーザーリソースの作成

   1. Amazon S3 コンソールでバケットを作成します。バケットを作成した AWS リージョン を書き留めます。手順については、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

   1. [IAM コンソール](https://console.aws.amazon.com/iam/)で次の操作を行います。

      1. Dave という名前のユーザーを作成します。

         詳細な手順については、「IAM ユーザーガイド」の「[IAM ユーザーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)」を参照してください。**

      1. `UserDave` 認証情報を書き留めます。

      1. ユーザー Dave の Amazon リソースネーム (ARN) を書き留めます。[IAM コンソール](https://console.aws.amazon.com/iam/)でユーザーを選択すると、**[概要]** タブにユーザー ARN が表示されます。

1. アクセス許可を付与します。

   バケット所有者とユーザーが属する親アカウントが同じであるため、AWS アカウントは、バケットポリシー、ユーザーポリシー、またはその両方を使用してユーザーに許可を付与できます。この例では、両方を使用します。オブジェクトの所有者も同じアカウントである場合は、バケット所有者はバケットポリシー (または IAM ポリシー) でオブジェクトのアクセス権を付与することもできます。

   1. Amazon S3 コンソールで、次のバケットポリシーを *awsexamplebucket1* にアタッチします。

      このポリシーには 2 つのステートメントがあります。
      + 最初のステートメントは、バケットオペレーションのアクセス許可 `s3:GetBucketLocation` と `s3:ListBucket` を Dave に付与します。
      + 2 番目のステートメントは、アクセス許可 `s3:GetObject` を付与します。アカウント A はオブジェクトの所有者でもあるので、アカウント管理者はアクセス許可 `s3:GetObject` を付与できます。

      `Principal` ステートメントでは、Dave はユーザー ARN によって識別されます。ポリシーエレメントの詳細については、[Amazon S3 のポリシーとアクセス許可](access-policy-language-overview.md) を参照してください。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "statement1",
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/Dave"
                  },
                  "Action": [
                      "s3:GetBucketLocation",
                      "s3:ListBucket"
                  ],
                  "Resource": [
                      "arn:aws:s3:::awsexamplebucket1"
                  ]
              },
              {
                  "Sid": "statement2",
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/Dave"
                  },
                  "Action": [
                      "s3:GetObject"
                  ],
                  "Resource": [
                      "arn:aws:s3:::awsexamplebucket1/*"
                  ]
              }
          ]
      }
      ```

------

   1. 以下のポリシーを使用して、ユーザー Dave のインラインポリシーを作成します。このポリシーは、`s3:PutObject` アクセス許可を Dave に付与します。バケット名を指定してポリシーを更新する必要があります。

------
#### [ JSON ]

****  

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
            {
               "Sid": "PermissionForObjectOperations",
               "Effect": "Allow",
               "Action": [
                  "s3:PutObject"
               ],
               "Resource": [
                  "arn:aws:s3:::awsexamplebucket1/*"
               ]
            }
         ]
      }
      ```

------

      手順については、「IAM ユーザーガイド」の「[IAM ポリシーを管理する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html)」を参照してください。**コンソールにサインインするには、アカウント A の認証情報を使用する必要があります。

## ステップ 2: アクセス許可をテストする
<a name="grant-permissions-to-user-in-your-account-test"></a>

Dave の認証情報を使用して、アクセス許可が機能することを確認します。次の 2 つの手順のいずれかを使用できます。

**AWS CLI を使用してアクセス許可をテストする**

1. 次の `UserDaveAccountA` プロファイルを追加して、AWS CLI 設定ファイルを更新します。詳細については、「[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md)」を参照してください。

   ```
   [profile UserDaveAccountA]
   aws_access_key_id = access-key
   aws_secret_access_key = secret-access-key
   region = us-east-1
   ```

1. Dave がユーザーポリシーで許可されたオペレーションを実行できることを確認します。次の AWS CLI `put-object` コマンドを使用して、サンプルのオブジェクトをアップロードします。

   アップロードするソースファイルは、コマンドの `--body` パラメータで指定します。例えば、ファイルが Windows 端末の C: ドライブのルートにある場合、`c:\HappyFace.jpg` と指定します。`--key` パラメータは、オブジェクトのキー名を指定します。

   ```
   aws s3api put-object --bucket awsexamplebucket1 --key HappyFace.jpg --body HappyFace.jpg --profile UserDaveAccountA
   ```

   次の AWS CLI コマンドを実行して、オブジェクトを取得します。

   ```
   aws s3api get-object --bucket awsexamplebucket1 --key HappyFace.jpg OutputFile.jpg --profile UserDaveAccountA
   ```

**AWS Tools for Windows PowerShell を使用してアクセス許可をテストする**

1. Dave の認証情報を `AccountADave` という名前で保存します。次に、この認証情報を使用して、オブジェクトの `PUT` と `GET` を実行します。

   ```
   set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountADave
   ```

1. 保存したユーザー Dave の認証情報を使用して、AWS Tools for Windows PowerShell `Write-S3Object` コマンドでサンプルオブジェクトをアップロードします。

   ```
   Write-S3Object -bucketname awsexamplebucket1 -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountADave
   ```

   先にアップロードしたオブジェクトをダウンロードします。

   ```
   Read-S3Object -bucketname awsexamplebucket1 -key HappyFace.jpg -file Output.jpg -StoredCredentials AccountADave
   ```

# 例 2: バケット所有者がクロスアカウントのバケットのアクセス許可を付与する
<a name="example-walkthroughs-managing-access-example2"></a>

**重要**  
アクセス許可は、個々のユーザーではなく、IAM ロールに付与することをお勧めします。これを行う方法については、「[クロスアカウントのアクセス許可の理解と IAM ロールの使用](example-walkthroughs-managing-access-example4.md#access-policies-walkthrough-example4-overview)」を参照してください。

**Topics**
+ [チュートリアルの準備をする](#cross-acct-access-step0)
+ [ステップ 1: アカウント A のタスクを実行する](#access-policies-walkthrough-cross-account-permissions-acctA-tasks)
+ [ステップ 2: アカウント B のタスクを実行する](#access-policies-walkthrough-cross-account-permissions-acctB-tasks)
+ [ステップ 3: (オプション) 明示的な拒否を試す](#access-policies-walkthrough-example2-explicit-deny)
+ [ステップ 4: クリーンアップする](#access-policies-walkthrough-example2-cleanup-step)

ある AWS アカウント (例えば、アカウント A) で、バケットやオブジェクトなど、そのリソースにアクセスするためのアクセス許可を、別の AWS アカウント (アカウント B) に付与できます。アカウント B では、そのアカウントのユーザーに、付与されたアクセス許可を委任できます。この例のシナリオでは、バケット所有者が、特定のバケットオペレーションを実行するためのクロスアカウントアクセス許可を別のアカウントに付与します。

**注記**  
また、バケットポリシーを使用して、アカウント A から直接アカウント B のユーザーにアクセス許可を付与することもできます。ただし、このユーザーには、アカウント B がアカウント A からアクセス許可を付与されていない場合でも、ユーザーが属している親アカウントであるアカウント B からのアクセス許可が必要です。このユーザーがリソース所有者と親アカウントの両方からのアクセス許可を持っている場合にのみ、ユーザーはリソースにアクセスできます。

この手順の概要を以下に示します。

![\[ある AWS アカウント がアカウントのリソースへのアクセス許可を別の AWS アカウント に付与している状況を描いた図。\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/access-policy-ex2.png)


1. アカウント A の管理者ユーザーは、特定のバケットオペレーションを実行するためのクロスアカウントアクセス許可をアカウント B に付与するバケットポリシーをアタッチします。

   アカウント B の管理者ユーザーは、自動的にこのアクセス許可を継承することに注意してください。

1. アカウント B の管理者ユーザーは、アカウント A から受け取ったアクセス許可を委任するユーザーポリシーをユーザーにアタッチします。

1. アカウント B のユーザーは、アカウント A が所有するバケットのオブジェクトにアクセスすることにより、アクセス許可を確認します。

この例では、2 個のアカウントが必要です。次の表に、これらのアカウントとそれぞれの管理者ユーザーの呼び方を示します。IAM ガイドライン (「[管理者ユーザーを使用したリソースの作成とアクセス許可の付与について](example-walkthroughs-managing-access.md#about-using-root-credentials)」を参照) に従い、このチュートリアルではルートユーザー認証情報は使用しません。その代わりに、各アカウントで管理者ユーザーを作成し、その認証情報を使用してリソースを作成し、アクセス許可を付与します。


| AWS アカウント ID | アカウントの呼び方 | アカウントの管理者ユーザー  | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  アカウント A  |  AccountAadmin  | 
|  *2222-2222-2222*  |  アカウント B  |  AccountBadmin  | 

ユーザーを作成し、アクセス許可を付与するためのすべてのタスクは、AWS マネジメントコンソールで実行します。このチュートリアルでは、許可を検証するために、コマンドラインツールの AWS Command Line Interface (CLI) と AWS Tools for Windows PowerShell を使用するので、コードを記述する必要はありません。

## チュートリアルの準備をする
<a name="cross-acct-access-step0"></a>

1. 前のセクションの表に示したように、2 個の AWS アカウントがあり、各アカウントに 1 人ずつの管理者ユーザーが存在することを確認します。

   1. 必要な場合、AWS アカウントにサインアップします。

   1. アカウント A の認証情報を使用して、[IAM コンソール](https://console.aws.amazon.com/iam/home?#home)にサインインし、管理者ユーザーを作成します。

      1. ユーザー **AccountAadmin** を作成して、セキュリティ認証情報を書き留めます。手順については、「*IAM ユーザーガイド*」の「[AWS アカウント での IAM ユーザーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)」を参照してください。

      1. フルアクセスを付与するユーザーポリシーをアタッチして、管理者に **AccountAadmin** を付与します。手順については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)の *IAM ポリシーの管理*を参照してください。

   1. IAM コンソールの **[ダッシュボード]** の **IAM ユーザーサインイン URL** をメモします このアカウントのすべてのユーザーは、AWS マネジメントコンソール にサインインするときにこの URL を使用する必要があります。

      詳細については、*IAM ユーザーガイド*の[ユーザーがお客様のアカウントにサインインする方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_how-users-sign-in.html) を参照してください。

   1. 前述のステップを、アカウント B の認証情報を使用してもう一度実行し、管理者ユーザー **AccountBadmin** を作成します。

1. AWS Command Line Interface (AWS CLI) または AWS Tools for Windows PowerShell をセットアップします。管理者ユーザーの認証情報は以下のように保存します。
   + AWS CLI を使用する場合は、設定ファイルに `AccountAadmin` と `AccountBadmin` の 2 つのプロファイルを作成します。
   + AWS Tools for Windows PowerShell を使用する場合は、セッションの認証情報を `AccountAadmin` および `AccountBadmin` として保存します。

   手順については、「[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md)」を参照してください。

1. プロファイルとも呼ばれる、管理者ユーザーの認証情報を保存します。入力する各コマンドで認証情報を指定する代わりにプロファイル名を使用できます。詳細については、「[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md)」を参照してください。

   1. 2 つのアカウントの管理者ユーザー (`AccountAadmin` および `AccountBadmin`) のそれぞれの AWS CLI 認証情報ファイルにプロファイルを追加します。

      ```
      [AccountAadmin]
      aws_access_key_id = access-key-ID
      aws_secret_access_key = secret-access-key
      region = us-east-1
      
      [AccountBadmin]
      aws_access_key_id = access-key-ID
      aws_secret_access_key = secret-access-key
      region = us-east-1
      ```

   1. AWS Tools for Windows PowerShell を使用している場合は、次のコマンドを実行します。

      ```
      set-awscredentials –AccessKey AcctA-access-key-ID –SecretKey AcctA-secret-access-key –storeas AccountAadmin
      set-awscredentials –AccessKey AcctB-access-key-ID –SecretKey AcctB-secret-access-key –storeas AccountBadmin
      ```

## ステップ 1: アカウント A のタスクを実行する
<a name="access-policies-walkthrough-cross-account-permissions-acctA-tasks"></a>

### ステップ 1.1: AWS マネジメントコンソールにサインインする
<a name="access-policies-walkthrough-cross-account-permissions-acctA-tasks-sign-in"></a>

アカウント A で IAM ユーザーのサインイン URL を使用して、まず **AccountAadmin** ユーザーとして AWS マネジメントコンソール にサインインします。このユーザーはバケットを作成し、ポリシーをアタッチします。

### ステップ 1.2: バケットを作成する
<a name="access-policies-walkthrough-example2a-create-bucket"></a>

1. Amazon S3 コンソールでバケットを作成します。この演習では、米国東部 (バージニア北部) AWS リージョン に `amzn-s3-demo-bucket` という名前でバケットを作成することを前提とします。

   手順については、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

1. サンプルオブジェクトをバケットにアップロードします。

   方法については、[ステップ 2: バケットにオブジェクトをアップロードする](GetStartedWithS3.md#uploading-an-object-bucket) を参照してください。

### ステップ 1.3: クロスアカウントアクセス許可を付与するバケットポリシーをアカウント B にアタッチする
<a name="access-policies-walkthrough-example2a"></a>

このバケットポリシーは、`s3:GetLifecycleConfiguration` および `s3:ListBucket` アクセス許可をアカウント B に付与します。これは、**AccountAadmin** ユーザーの認証情報を使用してコンソールにサインインしていることを前提としています。

1. 次のバケットポリシーを `amzn-s3-demo-bucket` にアタッチします。このポリシーは、アカウント B に `s3:GetLifecycleConfiguration` および `s3:ListBucket` アクションのアクセス許可を付与します。

   手順については、「[Amazon S3 コンソールを使用したバケットポリシーの追加](add-bucket-policy.md)」を参照してください。

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
            "Sid": "Example permissions",
            "Effect": "Allow",
            "Principal": {
               "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
               "s3:GetLifecycleConfiguration",
               "s3:ListBucket"
            ],
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
         }
      ]
   }
   ```

------

1. アカウント B (とその管理ユーザー) がオペレーションを実行できることを確認します。
   + AWS CLI を使用して検証する

     ```
     aws s3 ls s3://amzn-s3-demo-bucket --profile AccountBadmin
     aws s3api get-bucket-lifecycle-configuration --bucket amzn-s3-demo-bucket --profile AccountBadmin
     ```
   + AWS Tools for Windows PowerShell を使用して検証する

     ```
     get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBadmin 
     get-s3bucketlifecycleconfiguration -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBadmin
     ```

## ステップ 2: アカウント B のタスクを実行する
<a name="access-policies-walkthrough-cross-account-permissions-acctB-tasks"></a>

次に、アカウント B の管理者はユーザー Dave を作成し、アカウント A から受け取ったアクセス許可を委任します。

### ステップ 2.1: AWS マネジメントコンソールにサインインする
<a name="access-policies-walkthrough-cross-account-permissions-acctB-tasks-sign-in"></a>

アカウント B の IAM ユーザーのサインイン URL を使用し、**AccountBadmin** ユーザーとして AWS マネジメントコンソール にサインインします。

### ステップ 2.2: アカウント B でユーザー Dave を作成する
<a name="access-policies-walkthrough-example2b-create-user"></a>

[IAM コンソール](https://console.aws.amazon.com/iam/)で、ユーザー **Dave** を作成します。

手順については、「IAM ユーザーガイド」の「[IAM ユーザーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)」を参照してください。**

### ステップ 2.3: ユーザー Dave に許可を委任する
<a name="access-policies-walkthrough-example2-delegate-perm-userdave"></a>

以下のポリシーを使用して、ユーザー Dave のインラインポリシーを作成します。バケット名を指定してポリシーを更新する必要があります。

これは、**AccountBadmin** ユーザーの認証情報を使用してコンソールにサインインしていることを前提としています。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "Example",
         "Effect": "Allow",
         "Action": [
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket"
         ]
      }
   ]
}
```

------

手順については、「IAM ユーザーガイド」の「[IAM ポリシーを管理する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html)」を参照してください。**

### ステップ 2.4: アクセス許可をテストする
<a name="access-policies-walkthrough-example2b-user-dave-access"></a>

これで、アカウント B の Dave はアカウント A が所有する `amzn-s3-demo-bucket` の内容をリストできます。次のいずれかの手順でアクセス許可を確認できます。

**AWS CLI を使用してアクセス許可をテストする**

1. AWS CLI 設定ファイルに `UserDave` プロファイルを追加します。設定ファイルの詳細については、[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md) を参照してください。

   ```
   [profile UserDave]
   aws_access_key_id = access-key
   aws_secret_access_key = secret-access-key
   region = us-east-1
   ```

1. コマンドプロンプトで、次の AWS CLI コマンドを入力して、Dave がアカウント A によって所有される `amzn-s3-demo-bucket` からオブジェクトリストを取得できることを検証します。このコマンドでは、`UserDave` プロファイルを指定していることに注意してください。

   ```
   aws s3 ls s3://amzn-s3-demo-bucket --profile UserDave
   ```

   Dave には他のアクセス許可はありません。したがって、他のオペレーション (次の `get-bucket-lifecycle` 設定など) を実行しようとすると、Amazon S3 はアクセス許可の拒否を返します。

   ```
   aws s3api get-bucket-lifecycle-configuration --bucket amzn-s3-demo-bucket --profile UserDave
   ```

**AWS Tools for Windows PowerShell を使用してアクセス許可をテストする**

1. Dave の認証情報を `AccountBDave` という名前で保存します。

   ```
   set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountBDave
   ```

1. List Bucket コマンドを試してみます。

   ```
   get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave
   ```

   Dave には他のアクセス許可はありません。したがって、他のオペレーション (次の `get-s3bucketlifecycleconfiguration` など) を実行しようとすると、Amazon S3 はアクセス許可の拒否を返します。

   ```
   get-s3bucketlifecycleconfiguration -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave
   ```

## ステップ 3: (オプション) 明示的な拒否を試す
<a name="access-policies-walkthrough-example2-explicit-deny"></a>

アクセスコントロールリスト (ACL)、バケットポリシー、またはユーザーポリシーを使用して、アクセス許可を付与できます。ただし、バケットポリシーまたはユーザーポリシーによって明示的な拒否が設定されている場合、他のアクセス許可よりも明示的な拒否が優先されます。テストのために、バケットポリシーを更新し、アカウント B の `s3:ListBucket` アクセス許可を明示的に拒否してみます。このポリシーでは、`s3:ListBucket` アクセス許可も付与されます。ただし、明示的な拒否が優先され、アカウント B またはアカウント B のユーザーは `amzn-s3-demo-bucket` 内のオブジェクトを一覧表示を行うことはできません。

1. アカウント A のユーザー `AccountAadmin` の認証情報を使用して、バケットポリシーを次のように置き換えます。

1. ここで `AccountBadmin` の認証情報を使用してバケットリストを取得しようとすると、アクセスは拒否されます。
   + AWS CLI を使用して、次のコマンドを実行します。

     ```
     aws s3 ls s3://amzn-s3-demo-bucket --profile AccountBadmin
     ```
   + AWS Tools for Windows PowerShell を使用して、次のコマンドを実行します。

     ```
     get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave
     ```

## ステップ 4: クリーンアップする
<a name="access-policies-walkthrough-example2-cleanup-step"></a>

1. テストが終了したら、次の手順でクリーンアップを行います。

   1. アカウント A の認証情報を使用して AWS マネジメントコンソール ([AWS マネジメントコンソール](https://console.aws.amazon.com/)) にサインインし、次の操作を行います。
     + Amazon S3 コンソールで、`amzn-s3-demo-bucket` にアタッチされているバケットポリシーを削除します。バケットの **[プロパティ]** で、**[アクセス許可]** セクションのポリシーを削除します。
     + バケットをこの演習のために作成した場合は、Amazon S3 コンソールでオブジェクトを削除してから、バケットを削除します。
     + [IAM コンソール](https://console.aws.amazon.com/iam/)で、`AccountAadmin` ユーザーを削除します。

1. アカウント B の認証情報を使用して [IAM コンソール](https://console.aws.amazon.com/iam/)にサインインします。`AccountBadmin` ユーザーを削除します。手順については、「IAM ユーザーガイド」の「[IAM ユーザーの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting)」を参照してください。**

# 例 3: バケット所有者が自分の所有していないオブジェクトに対するアクセス許可を付与する
<a name="example-walkthroughs-managing-access-example3"></a>

**重要**  
アクセス許可は、個々のユーザーではなく、IAM ロールに付与することをお勧めします。これを行う方法については、「[クロスアカウントのアクセス許可の理解と IAM ロールの使用](example-walkthroughs-managing-access-example4.md#access-policies-walkthrough-example4-overview)」を参照してください。

**Topics**
+ [ステップ 0: チュートリアルの準備をする](#access-policies-walkthrough-cross-account-acl-step0)
+ [ステップ 1: アカウント A のタスクを実行する](#access-policies-walkthrough-cross-account-acl-acctA-tasks)
+ [ステップ 2: アカウント B のタスクを実行する](#access-policies-walkthrough-cross-account-acl-acctB-tasks)
+ [ステップ 3: アクセス許可をテストする](#access-policies-walkthrough-cross-account-acl-verify)
+ [ステップ 4: クリーンアップする](#access-policies-walkthrough-cross-account-acl-cleanup)

この例のシナリオでは、バケット所有者はオブジェクトへのアクセス許可を付与しますが、バケット内のオブジェクトの一部はバケット所有者によって所有されていません。この例では、バケット所有者は、自分のアカウントのユーザーにアクセス許可を付与しようとしています。

バケット所有者は、他の AWS アカウントにオブジェクトのアップロードを許可できます。デフォルトでは、バケット所有者は別の AWS アカウント によってバケットに書き込まれたオブジェクトを所有しません。オブジェクトは、S3 バケットに書き込むアカウントによって所有されています。バケット所有者がバケット内のオブジェクトを所有していない場合、オブジェクト所有者は最初にオブジェクトのアクセスコントロールリスト (ACL) を使用してバケット所有者に権限を付与する必要があります。その後、バケット所有者は所有していないオブジェクトのアクセス許可を付与できます。詳細については、「[Amazon S3 のバケットとオブジェクトの所有権](access-policy-language-overview.md#about-resource-owner)」を参照してください。

バケット所有者がバケットの S3 オブジェクト所有権にバケット所有者強制設定を適用すると、バケット所有者は、別の AWS アカウント によって書き込まれたオブジェクトを含む、バケット内のすべてのオブジェクトを所有します。これにより、オブジェクトがバケット所有者によって所有されていないという問題が解決されます。次に、自分のアカウントまたは他の AWS アカウント アカウントのユーザーにアクセス許可を委任できます。

**注記**  
S3 オブジェクト所有権は、Amazon S3 バケットレベルの設定で、バケットにアップロードされる新しいオブジェクト所有権を制御し、ACL を無効にするのに使用できます。デフォルトでは、オブジェクト所有権はバケット所有者の強制設定に設定され、すべての ACL は無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。  
 Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL は無効にしておくことをお勧めします。ACL を無効にすると、誰がオブジェクトをバケットにアップロードしたかに関係なく、ポリシーを使用してバケット内のすべてのオブジェクトへのアクセスを制御できます。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

この例では、バケット所有者がオブジェクト所有権のバケット所有者強制設定を適用していないと仮定します。バケット所有者は、自分のアカウントのユーザーに許可を委任します。この手順の概要を以下に示します。

![\[バケット所有者が自分の所有していないオブジェクトに対するアクセス許可を付与します。\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/access-policy-ex3.png)


1. アカウント A の管理者ユーザーが、2 つのステートメントを持つバケットポリシーをアタッチします。
   + オブジェクトをアップロードするクロスアカウントアクセスをアカウント B に許可します。
   + 自分のアカウントのユーザーにバケット内のオブジェクトへのアクセスを許可します。

1. アカウント B の管理者ユーザーは、アカウント A が所有するバケットにオブジェクトをアップロードします。

1. アカウント B の管理者は、オブジェクト ACL を更新して、オブジェクトに対するフルコントロールアクセス許可をバケット所有者に付与します。

1. アカウント A のユーザーは、所有者に関わりなくバケット内のオブジェクトにアクセスできることを確認します。

この例では、2 個のアカウントが必要です。次の表に、これらのアカウントの呼び方とそれぞれの管理者ユーザーを示します。このチュートリアルでは、推奨される IAM ガイドラインに従って、アカウントのルートユーザー認証情報を使用しません。詳細については、「[管理者ユーザーを使用したリソースの作成とアクセス許可の付与について](example-walkthroughs-managing-access.md#about-using-root-credentials)」を参照してください。その代わりに、各アカウントに管理者を作成し、その認証情報を使用してリソースを作成し、アクセス許可を付与します。


| AWS アカウント ID | アカウントの呼び方 | アカウントの管理者  | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  アカウント A  |  AccountAadmin  | 
|  *2222-2222-2222*  |  アカウント B  |  AccountBadmin  | 

ユーザーを作成し、アクセス許可を付与するためのすべてのタスクは、AWS マネジメントコンソール で実行します。このチュートリアルでは、許可を検証するために、コマンドラインツールの AWS Command Line Interface (AWS CLI) と AWS Tools for Windows PowerShell を使用するので、コードを記述する必要はありません。

## ステップ 0: チュートリアルの準備をする
<a name="access-policies-walkthrough-cross-account-acl-step0"></a>

1. 前のセクションの表に示したように、2 個の AWS アカウントがあり、各アカウントに 1 人ずつの管理者が存在することを確認します。

   1. 必要な場合、AWS アカウントにサインアップします。

   1. アカウント A の認証情報を使用して、[IAM コンソール](https://console.aws.amazon.com/iam/)にサインインし、次の操作を行って管理者ユーザーを作成します。
      + ユーザー **AccountAadmin** を作成し、ユーザーのセキュリティ認証情報を書き留めます。ユーザーの追加の詳細については、「IAM ユーザーガイド」の「[AWS アカウント での IAM ユーザーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)」を参照してください。**
      + **AccountAadmin** にフルアクセスを許可するユーザーポリシーをアタッチして、管理者権限を付与します。手順については、「IAM ユーザーガイド」の「[IAM ポリシーを管理する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)」を参照してください。**
      + [IAM コンソール](https://console.aws.amazon.com/iam/)の **[ダッシュボード]** で、**[IAM ユーザーのサインイン URL]** を書き留めます。このアカウントのユーザーは、この URL を使用して AWS マネジメントコンソール にサインインします。詳細については、*IAM ユーザーガイド*の[ユーザーがお客様のアカウントにサインインする方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_how-users-sign-in.html) を参照してください。

   1. 前述のステップを、アカウント B の認証情報を使用してもう一度実行し、管理者ユーザー **AccountBadmin** を作成します。

1. AWS CLI または Tools for Windows PowerShell をセットアップします。管理者認証情報を必ず次のように保存してください。
   + AWS CLI を使用する場合は、設定ファイルに `AccountAadmin` と `AccountBadmin` の 2 つのプロファイルを作成します。
   + Tools for Windows PowerShell を使用する場合、セッションの認証情報を `AccountAadmin` および `AccountBadmin` として保存します。

   手順については、[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md) を参照してください。

## ステップ 1: アカウント A のタスクを実行する
<a name="access-policies-walkthrough-cross-account-acl-acctA-tasks"></a>

アカウント A に対して、次の手順を実行します。

### ステップ 1.1: コンソールにサインインする
<a name="access-policies-walkthrough-cross-account-permissions-acctA-tasks-sign-in-example3"></a>

アカウント A の IAM ユーザーのサインイン URL を使用して、**AccountAadmin** ユーザーとして AWS マネジメントコンソール にサインインします。このユーザーはバケットを作成し、ポリシーをアタッチします。

### ステップ 1.2: バケットとユーザーを作成し、ユーザーにアクセス許可を付与するバケットポリシーを追加する
<a name="access-policies-walkthrough-cross-account-acl-create-bucket"></a>

1. Amazon S3 コンソールでバケットを作成します。この演習では、米国東部 (バージニア北部) AWS リージョン に `amzn-s3-demo-bucket1` という名前でバケットを作成することを前提とします。

   手順については、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

1. [IAM コンソール](https://console.aws.amazon.com/iam/)で、ユーザー **Dave** を作成します。

   詳細な手順については、「IAM ユーザーガイド」の「[IAM ユーザーの作成 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)」を参照してください。**

1. ユーザー Dave の認証情報を書き留めます。

1. Amazon S3 コンソールで、次のバケットポリシーを `amzn-s3-demo-bucket1` バケットにアタッチします。手順については、[Amazon S3 コンソールを使用したバケットポリシーの追加](add-bucket-policy.md) を参照してください。バケットポリシーを追加するには、このステップに従います。アカウント ID を確認する方法については、[AWS アカウント ID の検索](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingYourAccountIdentifiers) を参照してください。

   このポリシーは、アカウント B に `s3:PutObject` および `s3:ListBucket` アクセス許可を付与します。このポリシーはまた、ユーザー `Dave` に `s3:GetObject` アクセス許可を付与します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Statement1",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:root"
               },
               "Action": [
                   "s3:PutObject",
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                   "arn:aws:s3:::amzn-s3-demo-bucket1"
               ]
           },
           {
               "Sid": "Statement3",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:user/Dave"
               },
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket1/*"
               ]
           }
       ]
   }
   ```

------

## ステップ 2: アカウント B のタスクを実行する
<a name="access-policies-walkthrough-cross-account-acl-acctB-tasks"></a>

これでアカウント B はアカウント A のバケットに対するオペレーション実行のアクセス許可を得ましたので、管理者は次の作業を行います。
+ アカウント A のバケットにオブジェクトをアップロードします。
+ バケット所有者であるアカウント A にそのバケットへのフルコントロールをオブジェクトの ACL で付与します。

**の使用AWS CLI**

1. `put-object` AWS CLI コマンドを使用して、オブジェクトをアップロードします。アップロードするソースファイルは、コマンドの `--body` パラメータで指定します。例えば、ファイルが Windows 端末の `C:` ドライブにある場合、`c:\HappyFace.jpg` のように指定します。`--key` パラメータは、オブジェクトのキー名を指定します。

   ```
   aws s3api put-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --body HappyFace.jpg --profile AccountBadmin
   ```

1. バケット所有者に対するオブジェクトのフルコントロールの許可をオブジェクト ACL に追加します。正規ユーザー ID を検索する方法については、「**AWS Account Management リファレンスガイド」の「[AWS アカウント の正規ユーザー ID を検索する](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId)」を参照してください。

   ```
   aws s3api put-object-acl --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBadmin
   ```

**Tools for Windows PowerShell の使用**

1. `Write-S3Object` コマンドを使用して、オブジェクトをアップロードします。

   ```
   Write-S3Object -BucketName amzn-s3-demo-bucket1 -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin
   ```

1. バケット所有者に対するオブジェクトのフルコントロールの許可をオブジェクト ACL に追加します。

   ```
   Set-S3ACL -BucketName amzn-s3-demo-bucket1 -Key HappyFace.jpg -CannedACLName "bucket-owner-full-control" -StoredCreden
   ```

## ステップ 3: アクセス許可をテストする
<a name="access-policies-walkthrough-cross-account-acl-verify"></a>

アカウント A のユーザー Dave が、アカウント B が所有するオブジェクトにアクセスできることを確認します。

**AWS CLI の使用**

1. ユーザー Dave の認証情報を AWS CLI の設定ファイルに追加して、新しいプロファイル `UserDaveAccountA` を作成します。詳細については、[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md) を参照してください。

   ```
   [profile UserDaveAccountA]
   aws_access_key_id = access-key
   aws_secret_access_key = secret-access-key
   region = us-east-1
   ```

1. `get-object` CLI コマンドを実行して `HappyFace.jpg` をダウンロードし、ローカルに保存します。`--profile` パラメータを追加して、ユーザー Dave の認証情報を指定します。

   ```
   aws s3api get-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg Outputfile.jpg --profile UserDaveAccountA
   ```

**Tools for Windows PowerShell の使用**

1. ユーザー Dave の AWS 認証情報を、`UserDaveAccountA` という名前で永続的ストアに保存します。

   ```
   Set-AWSCredentials -AccessKey UserDave-AccessKey -SecretKey UserDave-SecretAccessKey -storeas UserDaveAccountA
   ```

1. `Read-S3Object` コマンドを実行して `HappyFace.jpg` オブジェクトをダウンロードし、ローカルに保存します。`-StoredCredentials` パラメータを追加して、ユーザー Dave の認証情報を指定します。

   ```
   Read-S3Object -BucketName amzn-s3-demo-bucket1 -Key HappyFace.jpg -file HappyFace.jpg  -StoredCredentials UserDaveAccountA
   ```

## ステップ 4: クリーンアップする
<a name="access-policies-walkthrough-cross-account-acl-cleanup"></a>

1. テストが終了したら、次の手順でクリーンアップを行います。

   1. アカウント A の認証情報を使用して [AWS マネジメントコンソール](https://console.aws.amazon.com/) にサインインし、次の操作を行います。
     + Amazon S3 コンソールで、*amzn-s3-demo-bucket1* にアタッチされているバケットポリシーを削除します。バケットの **[プロパティ]** で、**[アクセス許可]** セクションのポリシーを削除します。
     + バケットをこの演習のために作成した場合は、Amazon S3 コンソールでオブジェクトを削除してから、バケットを削除します。
     + [IAM コンソール](https://console.aws.amazon.com/iam/)で、**[AccountAadmin]** ユーザーを削除します。手順については、「IAM ユーザーガイド」の「[IAM ユーザーの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting)」を参照してください。**

1. アカウント B の認証情報を使用して [AWS マネジメントコンソール](https://console.aws.amazon.com/) にサインインします。[IAM コンソール](https://console.aws.amazon.com/iam/)で、ユーザー **[AccountBadmin]** を削除します。

# 例 4 - バケット所有者が所有権のないオブジェクトへのクロスアカウントアクセス許可を付与する
<a name="example-walkthroughs-managing-access-example4"></a>

**Topics**
+ [クロスアカウントのアクセス許可の理解と IAM ロールの使用](#access-policies-walkthrough-example4-overview)
+ [ステップ 0: チュートリアルの準備をする](#access-policies-walkthrough-example4-step0)
+ [ステップ 1: アカウント A のタスクを実行する](#access-policies-walkthrough-example4-step1)
+ [ステップ 2: アカウント B のタスクを実行する](#access-policies-walkthrough-example4-step2)
+ [ステップ 3: アカウント C のタスクを実行する](#access-policies-walkthrough-example4-step3)
+ [ステップ 4: クリーンアップする](#access-policies-walkthrough-example4-step6)
+ [関連リソース](#RelatedResources-managing-access-example4)

 この例のシナリオでは、バケット所有者が、オブジェクトをアップロードするためのアクセス許可を他の AWS アカウント に付与します。バケットの S3 オブジェクト所有権にバケット所有者強制設定を適用した場合、別の AWS アカウント によって書き込まれたオブジェクトを含む、バケット内のすべてのオブジェクトを所有します。これにより、バケット所有者であるユーザーがオブジェクトを所有していないという問題が解決されます。次に、自分のアカウントまたは他の AWS アカウント アカウントのユーザーにアクセス許可を委任できます。S3 オブジェクト所有権のバケット所有者強制設定が有効になっていないとします。つまり、バケットは、他の AWS アカウントが所有するオブジェクトを含むことができます。

バケット所有者は、オブジェクトの所有者が誰であるかに関係なく、オブジェクトに対するクロスアカウントのアクセス許可を別のアカウントのユーザーに付与しなければならない場合があります。例えば、課金アプリケーションがユーザーとしてオブジェクトのメタデータにアクセスしなければならない場合などです。ここで、主に 2 つの問題が生じます。
+ バケット所有者には、他の AWS アカウントで作成されたオブジェクトに対する許可はありません。バケット所有者が、自分が所有していないオブジェクトに対するアクセス許可を付与するには、オブジェクトの所有者 (オブジェクトを作成した ) は、最初にバケット所有者にアクセス許可を付与する必要があります。この所有者は、オブジェクトを作成した AWS アカウントです。これで、バケット所有者は、それらのアクセス許可を委任できるようになります。
+ バケット所有者は、自分のアカウントのユーザーに許可を委任できます (「[例 3: バケット所有者が自分の所有していないオブジェクトに対するアクセス許可を付与する](example-walkthroughs-managing-access-example3.md)」を参照)。ただし、クロスアカウントの委任はサポートされていないため、バケット所有者アカウントは他の AWS アカウント にアクセス許可を委任できません。

このシナリオでは、バケット所有者はオブジェクトへのアクセス許可を持つ AWS Identity and Access Management (IAM) ロールを作成できます。その後、バケット所有者は別の AWS アカウント にロールを引き受けるアクセス許可を付与して、バケットのオブジェクトへのアクセスを一時的に有効化できます。

**注記**  
S3 オブジェクト所有権は、Amazon S3 バケットレベルの設定で、バケットにアップロードされる新しいオブジェクト所有権を制御し、ACL を無効にするのに使用できます。デフォルトでは、オブジェクト所有権はバケット所有者の強制設定に設定され、すべての ACL は無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。  
 Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL は無効にしておくことをお勧めします。ACL を無効にすると、誰がオブジェクトをバケットにアップロードしたかに関係なく、ポリシーを使用してバケット内のすべてのオブジェクトへのアクセスを制御できます。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

## クロスアカウントのアクセス許可の理解と IAM ロールの使用
<a name="access-policies-walkthrough-example4-overview"></a>

 IAM ロールは、リソースへのアクセスを委任する、いくつかのシナリオで使用されます。なかでも、クロスアカウントアクセスは重要なシナリオです。この例では、バケット所有者 (アカウント A) は、IAM ロールを使用して、他の AWS アカウント (アカウント C) のユーザーに一時的にオブジェクトへのクロスアカウントの許可を委任します。作成された IAM ロールには、次の 2 つのポリシーがアタッチされています。
+ ロールを引き受ける別の AWS アカウントを指定する信頼ポリシー。
+ ロールを引き受けるユーザーに付与されるアクセス許可 (`s3:GetObject` など) を定義するアクセスポリシー。ポリシーで指定できるアクセス許可のリストについては、[Amazon S3 のポリシーアクション](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) を参照してください。

信頼ポリシーで指定された AWS アカウントは、アカウントに属するユーザーにロールを引き受ける許可を付与します。ユーザーは、以下の手順でオブジェクトにアクセスします。
+ ロールを引き受け、その応答として一時的なセキュリティ認証情報を取得します。
+ 一時的なセキュリティ認証情報を使用して、バケットのオブジェクトにアクセスします。

IAM ロールの詳細については、「IAM ユーザーガイド」の「[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)」を参照してください。**

この手順の概要を以下に示します。

![\[IAM ロールを使用したクロスアカウントのアクセス許可\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/access-policy-ex4.png)


1. アカウント A の管理者ユーザーは、バケットポリシーをアタッチし、オブジェクトをアップロードする条件付きのアクセス許可をアカウント B に付与します。

1. アカウント A の管理者ユーザーは、IAM ロールを作成し、アカウント C との間に信頼を確立します。これで、アカウント C のユーザーはアカウント A にアクセスできるようになります。ロールにアタッチされたアクセスポリシーは、アカウント C のユーザーがアカウント A にアクセスするときに実行できる操作を制限します。

1. アカウント B の管理者は、アカウント A が所有するバケットにオブジェクトをアップロードし、バケット所有者にフルコントロールのアクセス許可を付与します。

1. アカウント C の管理者は、ユーザーを作成し、ロールを引き受けるためのユーザーポリシーをアタッチします。

1. アカウント C のユーザーが初めてロールを引き受けると、一時的なセキュリティ認証情報が返されます。ユーザーは、この一時的な認証情報を使用して、バケットのオブジェクトにアクセスします。

この例では、3 つのアカウントが必要です。次の表に、これらのアカウントの呼び方とそれぞれの管理者ユーザーを示します。IAM のガイドライン (「[管理者ユーザーを使用したリソースの作成とアクセス許可の付与について](example-walkthroughs-managing-access.md#about-using-root-credentials)」を参照) に従い、このチュートリアルでは AWS アカウントのルートユーザーの認証情報を使用しません。その代わりに、各アカウントで管理者ユーザーを作成し、その認証情報を使用してリソースを作成し、アクセス許可を付与します。


| AWS アカウント ID | アカウントの呼び方 | アカウントの管理者ユーザー  | 
| --- | --- | --- | 
|  *1111-1111-1111*  |  アカウント A  |  AccountAadmin  | 
|  *2222-2222-2222*  |  アカウント B  |  AccountBadmin  | 
|  *3333-3333-3333*  |  アカウント C  |  AccountCadmin  | 



## ステップ 0: チュートリアルの準備をする
<a name="access-policies-walkthrough-example4-step0"></a>

**注記**  
テキストエディタを開いて、手順を実行しながら、いくつかの情報を書き留めることができます。特に、コンソールに接続する各アカウントのアカウント ID、正規ユーザー ID、IAM ユーザーのサインイン URL、IAM ユーザーとロールの Amazon リソースネーム (ARN) が必要になります。

1. 前のセクションの表に示したように、3 つの AWS アカウント があり、各アカウントに 1 人ずつ管理者ユーザーが存在することを確認します。

   1. 必要に応じて AWS アカウントにサインアップします。ここでは、それぞれのアカウントをアカウント A、アカウント B、アカウント C と呼ぶことにします。

   1. アカウント A の認証情報を使用して、[IAM コンソール](https://console.aws.amazon.com/iam/home?#home)にサインインし、次の操作を行って管理者ユーザーを作成します。
      + ユーザー **AccountAadmin** を作成して、そのセキュリティ認証情報を書き留めます。ユーザーの追加の詳細については、「IAM ユーザーガイド」の「[AWS アカウント での IAM ユーザーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)」を参照してください。**
      + フルアクセスを付与するユーザーポリシーをアタッチして、管理者に **AccountAadmin** を付与します。手順については、「IAM ユーザーガイド」の「[IAM ポリシーを管理する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)」を参照してください。**
      + IAM コンソールの **[ダッシュボード]** で、**[IAM ユーザーのサインイン URL]** を書き留めます。このアカウントのユーザーは、この URL を使用して AWS マネジメントコンソール にサインインします。詳細については、「IAM ユーザーガイド」の「[Sign in to the AWS マネジメントコンソール as an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_how-users-sign-in.html)」を参照してください。**

   1. 前述の手順を繰り返し、アカウント B およびアカウント C の管理者ユーザーを作成します。

1. アカウント C で、正規ユーザー ID を書き留めます。

   アカウント A で IAM ロールを作成したら、信頼ポリシーでアカウント C のアカウント ID を指定して、ロールを引き受けるアクセス許可をアカウント C に付与します。アカウント情報は、次の手順で確認できます。

   1. AWS アカウント ID またはアカウントエイリアス、IAM ユーザー名、パスワードを使用して、[Amazon S3 コンソール](https://console.aws.amazon.com/s3/)にサインインします。

   1. バケットの詳細を確認する Amazon S3 バケットの名前を選択します。

   1. [**Permissions (アクセス許可)**] タブを選択してから、[**アクセスコントロールリスト**] を選択します。

   1. ** AWS アカウント のアクセス**のセッションで、**アカウント** 列は `c1daexampleaaf850ea79cf0430f33d72579fd1611c97f7ded193374c0b163b6` のような長い識別子です。これが正規ユーザー ID です。

1. バケットポリシーを作成するときは、次の情報が必要になります。これらの値を書き留めます。
   + **アカウント A の正規ユーザー ID** – アカウント A の管理者がアカウント B の管理者にオブジェクトをアップロードする条件付きのアクセス許可を付与するとき、オブジェクトに対するフルコントロールを取得するアカウント A のユーザーの正規ユーザー ID を指定します。
**注記**  
正規ユーザー ID は、Amazon S3 固有の概念です。64 文字から成る、難読化されたアカウント ID です。
   + **アカウント B 管理者の ユーザー ARN** - ユーザー ARN は [IAM コンソール](https://console.aws.amazon.com/iam/)にあります。**[概要]** タブでユーザーを選択し、ユーザーの ARN を見つけます。

     バケットポリシーでは、オブジェクトをアップロードするアクセス許可を `AccountBadmin` に付与し、ARN を使用してユーザーを指定します。ARN 値の例を示します。

     ```
     arn:aws:iam::AccountB-ID:user/AccountBadmin
     ```

1. AWS Command Line Interface (CLI) または AWS Tools for Windows PowerShell をセットアップします。管理者ユーザーの認証情報は以下のように保存します。
   + AWS CLI を使用する場合は、設定ファイルに `AccountAadmin` と `AccountBadmin` のプロファイルを作成します。
   + AWS Tools for Windows PowerShell を使用する場合は、セッションの認証情報を `AccountAadmin` および `AccountBadmin` として保存します。

   手順については、「[チュートリアル用のツールのセットアップ](policy-eval-walkthrough-download-awscli.md)」を参照してください。

## ステップ 1: アカウント A のタスクを実行する
<a name="access-policies-walkthrough-example4-step1"></a>

この例では、アカウント A はバケット所有者です。したがって、アカウント A のユーザー AccountAadmin は以下を実行します。
+ バケットを作成します。
+ オブジェクトをアップロードするアクセス許可をアカウント B の管理者に付与するバケットポリシーをアタッチします。
+ バケット内のオブジェクトにアクセスできるように、ロールを引き受けるアクセス許可をアカウント C に付与する IAM ロールを作成します。

### ステップ 1.1: AWS マネジメントコンソールにサインインする
<a name="access-policies-walkthrough-cross-account-permissions-acctA-tasks-sign-in-example4"></a>

アカウント A で IAM ユーザーのサインイン URL を使用して、まず **AccountAadmin** ユーザーとして AWS マネジメントコンソール にサインインします。このユーザーはバケットを作成し、ポリシーをアタッチします。

### ステップ 1.2: バケットを作成してバケットポリシーをアタッチする
<a name="access-policies-walkthrough-example2d-step1-1"></a>

Amazon S3 コンソールで、次の操作を行います。

1. バケットを作成します。この演習では、バケットの名前を `amzn-s3-demo-bucket1` とします。

   手順については、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

1. 次のバケットポリシーをアタッチします。このポリシーは、オブジェクトをアップロードする条件付きのアクセス許可をアカウント B の管理者に付与します。

   `amzn-s3-demo-bucket1`、`AccountB-ID`、`CanonicalUserId-of-AWSaccountA-BucketOwner` に独自の値を指定してポリシーを更新します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "111",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:user/AccountBadmin"
               },
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
           },
           {
               "Sid": "112",
               "Effect": "Deny",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:user/AccountBadmin"
               },
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
               "Condition": {
                   "StringNotEquals": {
                       "s3:x-amz-grant-full-control": "id=CanonicalUserId-of-AWSaccountA-BucketOwner"
                   }
               }
           }
       ]
   }
   ```

------

### ステップ 1.3: アカウント C にクロスアカウントアクセスを許可する IAM ロールをアカウント A に作成する
<a name="access-policies-walkthrough-example2d-step1-2"></a>

[IAM コンソール](https://console.aws.amazon.com/iam/)で、アカウント C にロールを引き受けるアクセス許可を付与する IAM ロール (**examplerole**) を作成します。このロールはアカウント A に作成する必要があるため、アカウント A の管理者としてサインインしていることを再度確認してください。

1. ロールを作成する前に、ロールに必要なアクセス許可を定義する管理ポリシーを準備します。後の手順で、このポリシーをロールにアタッチします。

   1. 左側のナビゲーションペインで **[ポリシー]** を選択し、続いて **[ポリシーの作成]** を選択します。

   1. **[独自のポリシーを作成]** の横で、**[選択]** を選択します。

   1. [**Policy Name** (ポリシー名)] フィールドに「**access-accountA-bucket** 」と入力します。

   1. 以下のアクセスポリシーをコピーして、[**Policy Document (ポリシードキュメント)**] フィールドに貼り付けます。このアクセスポリシーは、ロールに `s3:GetObject` のアクセス許可を付与するため、アカウント C のユーザーがこのロールを引き受けると、`s3:GetObject` オペレーションのみを実行できます。

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
          }
        ]
      }
      ```

------

   1. **[ポリシーを作成]** を選択します。

      新しいポリシーが管理ポリシーの一覧に表示されます。

1. 左側のナビゲーションペインで、**[ロール]**、**[新しいロールの作成]** の順に選択します。

1. **[ロールタイプの選択]** で **[クロスアカウントアクセスのロール]** を選択して、**[所有する AWS アカウント の間のアクセスの提供] **の隣の **[選択]** ボタンを選択します。

1. アカウント C のアカウント ID を入力します。

   このチュートリアルでは、ロールを引き受けるユーザーに多要素認証 (MFA) を必須とする必要がないため、このオプションは選択していない状態のままにしておきます。

1. **[次のステップ]** を選択して、そのロールに関連するアクセス許可を設定します。

1. 

   作成した **access-accountA-bucket** ポリシーの横にあるチェックボックスを選択し、**[次のステップ]** を選択します。

   [Review] ページが表示されます。このページで作成前のロールの設定を確認できます。このページで注意する重要な項目は、このロールを使用する必要があるユーザーに送信できるリンクです。ユーザーがこのリンクをクリックすると、**[ロールの切り替え]** ページがすぐに表示されます。このページには、[アカウント ID] と [ロール名] がすでに設定されています。このリンクは、クロスアカウントロールの **[ロールの概要]** ページで後で確認することもできます。

1. ロール名に「`examplerole`」と入力し、**[次のステップ]** を選択します。

1. ロールを確認したら、**[ロールの作成]** を選択します。

   `examplerole` ロールがロールの一覧に表示されます。

1. ロール名 `examplerole` を選択します。

1. [**Trust Relationships (信頼関係)**] タブを選択します。

1. **[ポリシードキュメントの表示]** を選択して、表示されている信頼ポリシーが次のポリシーと一致するか確認します。

   次の信頼ポリシーは、アカウント C との信頼を確立し、`sts:AssumeRole` アクションを許可します。詳細については、「*AWS Security Token Service API リファレンス*」の「[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)」を参照してください。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:root"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. 作成した `examplerole` ロールの Amazon リソースネーム (ARN) を書き留めます。

   後の手順で、このロールの引き受けを許可するユーザーポリシーを IAM ユーザーにアタッチしますが、ロールは ARN 値で指定します。

## ステップ 2: アカウント B のタスクを実行する
<a name="access-policies-walkthrough-example4-step2"></a>

アカウント A が所有するバケットの例では、他のアカウントが所有するオブジェクトが必要です。このステップでは、アカウント B の管理者は、コマンドラインツールを使用してオブジェクトをアップロードします。
+ `put-object` AWS CLI コマンドを使用して、オブジェクトを `amzn-s3-demo-bucket1` にアップロードします。

  ```
  aws s3api put-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --body HappyFace.jpg --grant-full-control id="canonicalUserId-ofTheBucketOwner" --profile AccountBadmin
  ```

  次の点に注意してください。
  + `--Profile` パラメータは `AccountBadmin` のプロファイルを指定しているため、オブジェクトはアカウント B によって所有されます。
  + `grant-full-control` パラメータは、バケットポリシーに従って、バケット所有者にオブジェクトに対するフルコントロールのアクセス許可を付与します。
  + `--body` パラメータは、アップロードするソースファイルを指定します。例えば、ファイルが Windows コンピュータの C: ドライブにある場合は、「`c:\HappyFace.jpg`」と指定します。

## ステップ 3: アカウント C のタスクを実行する
<a name="access-policies-walkthrough-example4-step3"></a>

これまでの手順で、アカウント A はすでに `examplerole` ロールを作成し、アカウント C との信頼を確立しています。これにより、アカウント C のユーザーは、アカウント A にアクセスすることができます。このステップでは、アカウント C の管理者がユーザー (Dave) を作成し、アカウント A から取得した `sts:AssumeRole` のアクセス許可を委任します。`examplerole` を引き受けた Dave は、一時的にアカウント A へのアクセス権を取得します。アカウント A がロールにアタッチしたアクセスポリシーは、アカウント A にアクセスする Dave が実行できるアクション (特に `amzn-s3-demo-bucket1` のオブジェクトを取得すること) を制限します。

### ステップ 3.1: アカウント C でユーザーを作成し、examplerole を引き受けるアクセス許可を委任する
<a name="cross-acct-access-using-role-step3-1"></a>

1. アカウント C で IAM ユーザーのサインイン URL を使用して、まず **AccountCadmin** ユーザーとして AWS マネジメントコンソール にサインインします。

   

1. [IAM コンソール](https://console.aws.amazon.com/iam/)で、ユーザー Dave を作成します。

   詳細な手順については、「IAM ユーザーガイド」の「[AWS マネジメントコンソール での IAM ユーザーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)」を参照してください。**

1. Dave の認証情報を書き留めます。Dave は、`examplerole` ロールを引き受けるのに、これらの認証情報を必要とします。

1. アカウント A の `sts:AssumeRole` ロールで `examplerole` アクセス許可を Dave に委任する Dave IAM ユーザー用のインラインポリシーを作成します。

   1. 左側のナビゲーションペインで、**[ユーザー]** を選択します。

   1. ユーザー名 **[Dave]** を選択します。

   1. ユーザー詳細ページで [**Permissions (アクセス許可)**] タブを選択し、[**Inline Policies (インラインポリシー)**] セクションを展開します。

   1. [**click here (ここをクリック)**] (または [**Create User Policy (ユーザーポリシーの作成)**]) を選択します。

   1. [**Custom Policy**] を選択し、[**Select**] を選択します。

   1. [**Policy Name (ポリシー名)**] フィールドにポリシーの名前を入力します。

   1. 以下のポリシーをコピーして、[**Policy Document (ポリシードキュメント)**] フィールドに貼り付けます。

      `AccountA-ID` を指定してポリシーを更新する必要があります。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "sts:AssumeRole"
                  ],
                  "Resource": "arn:aws:iam::111122223333:role/examplerole"
              }
          ]
      }
      ```

------

   1. **[ポリシーを適用]** を選びます。

1. 別のプロファイル `AccountCDave` を追加して、Dave の認証情報を AWS CLI の設定ファイルに保存します。

   ```
   [profile AccountCDave]
   aws_access_key_id = UserDaveAccessKeyID
   aws_secret_access_key = UserDaveSecretAccessKey
   region = us-west-2
   ```

### ステップ 3.2: ロール (examplerole) を引き受けてオブジェクトにアクセスする
<a name="cross-acct-access-using-role-step3-2"></a>

Dave は、以下の手順でアカウント A が所有するバケットのオブジェクトにアクセスできます。
+ Dave は、まず自分の認証情報を使用して、`examplerole` を引き受けます。一時的な認証情報が返されます。
+ この一時的な認証情報を使用して、アカウント A のバケットのオブジェクトにアクセスします。

1. コマンドプロンプトで、`AccountCDave` プロファイルを使用して、次の AWS CLI `assume-role` コマンドを実行します。

   `examplerole` が定義されている `AccountA-ID` を指定して、コマンドの ARN 値を更新する必要があります。

   ```
   aws sts assume-role --role-arn arn:aws:iam::AccountA-ID:role/examplerole --profile AccountCDave --role-session-name test
   ```

   AWS Security Token Service (AWS STS) が一時的なセキュリティ認証情報 (アクセスキー ID、シークレットアクセスキー、およびセッショントークン) を返します。

1. 一時的なセキュリティ認証情報を `TempCred` プロファイルの AWS CLI 設定ファイルに保存します。

   ```
   [profile TempCred]
   aws_access_key_id = temp-access-key-ID
   aws_secret_access_key = temp-secret-access-key
   aws_session_token = session-token
   region = us-west-2
   ```

1. コマンドプロンプトで、一時的な認証情報を使用して、次の AWS CLI コマンドを実行してオブジェクトにアクセスします。例えば、コマンドで head−object API を指定すると、`HappyFace.jpg` オブジェクトのオブジェクトメタデータが取得されます。

   ```
   aws s3api get-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg SaveFileAs.jpg --profile TempCred
   ```

   `examplerole` にアタッチされているアクセスポリシーでは、アクションが許可されているため、Amazon S3 はリクエストを処理します。バケットの任意のオブジェクトに対して任意のアクションを試してみましょう。

   例えば、`get-object-acl` のアクションを試すと、このロールではそのアクションは許可されていないため、アクセス許可が拒否されます。

   ```
   aws s3api get-object-acl --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --profile TempCred
   ```

   この例では、ユーザー Dave がロールを引き受け、一時的な認証情報を使用してオブジェクトにアクセスしました。同様に、アカウント C のアプリケーションが `amzn-s3-demo-bucket1` のオブジェクトにアクセスすることも可能です。アプリケーションが一時的なセキュリティ認証情報を取得すれば、アカウント C はこのアプリケーションに `examplerole` を引き受けるアクセス許可を委任できます。

## ステップ 4: クリーンアップする
<a name="access-policies-walkthrough-example4-step6"></a>

1. テストが終了したら、次の手順でクリーンアップを行います。

   1. アカウント A の認証情報を使用して [AWS マネジメントコンソール](https://console.aws.amazon.com/) にサインインし、次の操作を行います。
     + Amazon S3 コンソールで、 にアタッチされているバケットポリシーを削除します`amzn-s3-demo-bucket1` バケットの **[プロパティ]** で、**[アクセス許可]** セクションのポリシーを削除します。
     + バケットをこの演習のために作成した場合は、Amazon S3 コンソールでオブジェクトを削除してから、バケットを削除します。
     + [IAM コンソール](https://console.aws.amazon.com/iam/)で、アカウント A で作成した `examplerole` を削除します。詳細な手順については、「IAM ユーザーガイド」の「[IAM ユーザーの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting)」を参照してください。**
     + [IAM コンソール](https://console.aws.amazon.com/iam/)で、**[AccountAadmin]** ユーザーを削除します。

1. アカウント B の認証情報を使用して [IAM コンソール](https://console.aws.amazon.com/iam/)にサインインします。ユーザー **AccountBadmin** を削除します。

1. アカウント C の認証情報を使用して [IAM コンソール](https://console.aws.amazon.com/iam/)にサインインします。**AccountCadmin** とユーザー Dave を削除します。

## 関連リソース
<a name="RelatedResources-managing-access-example4"></a>

このチュートリアルに関連する詳細については、「IAM ユーザーガイド」の以下のリソースを参照してください。**
+ [IAM ユーザーにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)
+ [チュートリアル: IAM ロールを使用した AWS アカウント 全体でのアクセスの委任](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial-cross-account-with-roles.html)
+ [IAM ポリシーを管理する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)

# Amazon S3 ストレージレンズでのサービスにリンクされたロールの使用
<a name="using-service-linked-roles"></a>

Amazon S3 ストレージレンズを使用して AWS Organizations 内のすべてのアカウントでメトリクスを収集および集約するには、最初に組織の管理アカウントにより有効化された、信頼されたアクセスを S3 Storage Lens が持っていることを確認する必要があります。S3 Storage Lens は、サービスリンクロール (SLR) を作成し、そのロールが組織に属する AWS アカウント のリストを取得できるようにします。このアカウントの一覧は、S3 Storage Lens ダッシュボードまたは設定が作成または更新された場合に、すべてのメンバーアカウントの S3 リソースのメトリクスを収集するため S3 Storage Lens によって使用されます。

Amazon S3 ストレージレンズは AWS Identity and Access Management (IAM) [サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用します。サービスにリンクされたロールは S3 Storage Lens に直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、S3 Storage Lens によって事前定義されており、ユーザーの代わりにサービスから他の AWS のサービス を呼び出す必要のある許可がすべて含まれています。

サービスにリンクされたロールを使用すると、必要なアクセス許可を手動で追加する必要がなくなるため、S3 Storage Lens の設定が簡単になります。S3 Storage Lens は、サービスにリンクされたロールのアクセス許可を定義します。特に定義されている場合を除き、S3 Storage Lens のみがそのロールを引き受けることができます。定義された許可には信頼ポリシーと許可ポリシーが含まれ、その許可ポリシーを他の IAM エンティティにアタッチすることはできません。

関連リソースを削除した後でなければ、このサービスにリンクされたロールを削除することはできません。これにより、リソースにアクセスするためのアクセス許可を不注意で削除することが防止され、S3 Storage Lens リソースは保護されます。

サービスにリンクされたロールをサポートするその他のサービスについては、「[IAM と連携する AWS のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照の上、**[サービスにリンクされたロール]** 列が **[はい]** になっているサービスを検索してください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[**はい**] リンクを選択します。

## Amazon S3 ストレージレンズへのサービスにリンクされたロールのアクセス許可
<a name="slr-permissions"></a>

S3 Storage Lens は、**AWSServiceRoleForS3StorageLens** という名前のサービスにリンクされたロールを使用します。これにより、S3 Storage Lens によって使用または管理される AWS のサービスとリソースにアクセスできます。これにより、S3 Storage Lens は、ユーザーに代わって AWS Organizations のリソースにアクセスできるようになります。

S3 Storage Lens のサービスにリンクされたロールは、組織のストレージ上で次のサービスを信頼します。
+ `storage-lens.s3.amazonaws.com`

ロールのアクセス許可ポリシーは、以下のアクションを実行することを S3 Storage Lens に許可します。
+ `organizations:DescribeOrganization`

  `organizations:ListAccounts`

  `organizations:ListAWSServiceAccessForOrganization`

  `organizations:ListDelegatedAdministrators`

サービスにリンクされたロールの作成、編集、削除を IAM エンティティ (ユーザー、グループ、ロールなど) に許可するには、アクセス許可を設定する必要があります。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)の*サービスにリンクされたロールのアクセス許可*を参照してください。

## S3 Storage Lens へのサービスにリンクされたロールの作成
<a name="create-slr"></a>

サービスにリンクされたロールを手動で作成する必要はありません。AWS Organizations 管理アカウントまたは委任された管理者アカウントにサインインしているときに次のいずれかのタスクを完了すると、S3 Storage Lens がサービスにリンクされたロールを作成します。
+ Amazon S3 コンソールで、組織用の S3 Storage Lens ダッシュボード設定を作成する。
+ REST API、AWS CLI、SDK を使用して組織に S3 Storage Lens 設定を `PUT` する。

**注記**  
S3 Storage Lens は組織ごとに最大 5 人の委任管理者をサポートします。

このサービスにリンクされたロールを削除した場合、前述のアクションによって必要に応じてロールが再作成されます。

### S3 Storage Lens サービスにリンクされたロールのポリシーの例
<a name="slr-sample-policy"></a>

**Example S3 Storage Lens のサービスにリンクされたロールへのアクセス許可ポリシー**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AwsOrgsAccess",
            "Effect": "Allow",
            "Action": [
                "organizations:DescribeOrganization",
                "organizations:ListAccounts",
                "organizations:ListAWSServiceAccessForOrganization",
                "organizations:ListDelegatedAdministrators"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

## Amazon S3 ストレージレンズのサービスにリンクされたロールの編集
<a name="edit-slr"></a>

S3 Storage Lens では、AWSServiceRoleForS3StorageLens サービスリンクロールを編集することはできません。サービスリンクロールを作成すると、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、IAM を使用したロール記述の編集はできます。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)の*サービスにリンクされたロールの編集*を参照してください。

## Amazon S3 ストレージレンズのサービスにリンクされたロールの削除
<a name="delete-slr"></a>

サービスにリンクされたロールが不要になった場合は、そのロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。ただし、手動で削除する前に、サービスにリンクされたロールのリソースをクリーンアップする必要があります。

**注記**  
リソースを削除する際に、Amazon S3 ストレージレンズサービスでそのロールが使用されている場合、削除は失敗することがあります。失敗した場合は、数分待ってから再度オペレーションを実行してください。

AWSServiceRoleForS3StorageLens を削除するには、AWS Organizations 管理アカウントまたは委任された管理者アカウントを使用して、すべての AWS リージョン に存在する組織レベルの S3 Storage Lens 設定をすべて削除する必要があります。

リソースは組織レベルの S3 Storage Lens 設定です。S3 Storage Lens を使用してリソースをクリーンアップし、[IAM コンソール](https://console.aws.amazon.com/iam/)、CLI、REST API、または AWS SDK を使用してロールを削除します。

REST API、AWS CLI、SDK では、`ListStorageLensConfigurations` を使用して組織が S3 Storage Lens 設定を作成したすべてのリージョンで S3 Storage Lens 設定を見つけることができます。`DeleteStorageLensConfiguration` アクションを使用してこれらの設定を削除し、ロールを削除できるようにします。

**注記**  
サービスにリンクされたロールを削除するには、すべてのリージョンに存在する組織レベルの S3 Storage Lens 設定をすべて削除する必要があります。

**AWSServiceRoleForS3StorageLens SLR で使用されている Amazon S3 ストレージレンズリソースを削除するには**

1. 組織レベルの設定一覧を取得するには、S3 Storage Lens 設定があるすべてのリージョンで `ListStorageLensConfigurations` を使用する必要があります。この一覧は Amazon S3 コンソールから取得することもできます。

1. これらの設定は、`DeleteStorageLensConfiguration` API コールを呼び出すか Amazon S3 コンソールを使用して、適切なリージョンのエンドポイントから削除する必要があります。

**サービスリンクロールを IAM で手動削除するには**

設定を削除した後、[IAM コンソール](https://console.aws.amazon.com/iam/)から、または IAM API `DeleteServiceLinkedRole` を呼び出すか、AWS CLI もしくは AWS SDK を使用して、AWSServiceRoleForS3StorageLens SLR を削除できます。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role) の*サービスにリンクされたロールの削除*を参照してください。

## S3 Storage Lens のサービスにリンクされたロールがサポートされるリージョン
<a name="slr-regions"></a>

S3 Storage Lens は、そのサービスを利用できるすべての AWS リージョンで、サービスにリンクされたロールの使用をサポートします。詳細については、[Amazon S3 Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/s3.html) を参照してください。

# Amazon S3 アイデンティティとアクセスのトラブルシューティング
<a name="security_iam_troubleshoot"></a>

以下の情報を使用して、Amazon S3 と IAM の使用時に発生する可能性がある一般的な問題の診断と修正に役立てます。

**Topics**
+ [アクセス拒否エラーが表示された](#access_denied_403)
+ [Amazon S3 でアクションを実行する権限がありません](#security_iam_troubleshoot-no-permissions)
+ [iam:PassRole を実行する権限がありません](#security_iam_troubleshoot-passrole)
+ [自分の AWS アカウント 以外のユーザーに Amazon S3 リソースへのアクセスを許可したい](#security_iam_troubleshoot-cross-account-access)
+ [Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング](troubleshoot-403-errors.md)

## アクセス拒否エラーが表示された
<a name="access_denied_403"></a>

バケットポリシーまたはアイデンティティベースポリシーのいずれにも、アクセス許可を付与するリクエスタに対する明示的な `Deny` ステートメントがないことを確認します。

アクセス拒否エラーのトラブルシューティングの詳細については、「[Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング](troubleshoot-403-errors.md)」を参照してください。

## Amazon S3 でアクションを実行する権限がありません
<a name="security_iam_troubleshoot-no-permissions"></a>

アクションを実行する権限がないというエラーが表示された場合は、そのアクションを実行できるようにポリシーを更新する必要があります。

次のエラー例は、`mateojackson` IAM ユーザーがコンソールを使用して、ある `my-example-widget` リソースに関する詳細情報を表示しようとしたことを想定して、その際に必要な `s3:GetWidget` アクセス許可を持っていない場合に発生するものです。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: s3:GetWidget on resource: my-example-widget
```

この場合、`s3:GetWidget` アクションを使用して `my-example-widget` リソースへのアクセスを許可するように、`mateojackson` ユーザーのポリシーを更新する必要があります。

サポートが必要な場合は、AWS 管理者に問い合わせてください。サインイン認証情報を提供した担当者が管理者です。

## iam:PassRole を実行する権限がありません
<a name="security_iam_troubleshoot-passrole"></a>

`iam:PassRole` アクションを実行する権限がないというエラーが表示された場合は、ポリシーを更新して Amazon S3 にロールを渡せるようにする必要があります。

一部の AWS のサービス では、新しいサービスロールやサービスリンクロールを作成せずに、既存のロールをサービスに渡すことができます。そのためには、サービスにロールを渡すアクセス許可が必要です。

次のエラー例は、`marymajor` という IAM ユーザーがコンソールを使用して Amazon S3 でアクションを実行しようとする場合に発生します。ただし、このアクションをサービスが実行するには、サービスロールから付与されたアクセス許可が必要です。Mary には、ロールをサービスに渡すアクセス許可がありません。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

この場合、Mary のポリシーを更新してメアリーに `iam:PassRole` アクションの実行を許可する必要があります。

サポートが必要な場合は、AWS 管理者に問い合わせてください。サインイン認証情報を提供した担当者が管理者です。

## 自分の AWS アカウント 以外のユーザーに Amazon S3 リソースへのアクセスを許可したい
<a name="security_iam_troubleshoot-cross-account-access"></a>

他のアカウントのユーザーや組織外の人が、リソースにアクセスするために使用できるロールを作成できます。ロールの引き受けを委託するユーザーを指定できます。リソースベースのポリシーまたはアクセスコントロールリスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。

詳細については、以下を参照してください。
+ Amazon S3 がこれらの機能をサポートしているかどうかを確認するには、「[Amazon S3 での IAM の機能](security_iam_service-with-iam.md)」を参照してください。
+ 所有している AWS アカウント 全体のリソースへのアクセス権を提供する方法については、*IAM ユーザーガイド* の [所有している別の AWS アカウント へのアクセス権を IAM ユーザーに提供](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) を参照してください。
+ サードパーティの AWS アカウント にリソースへのアクセス権を提供する方法については、「*IAM ユーザーガイド*」の「[サードパーティが所有する AWS アカウント へのアクセス権を付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)」を参照してください。
+ ID フェデレーションを介してアクセスを提供する方法については、*IAM ユーザーガイド* の [外部で認証されたユーザー (ID フェデレーション) へのアクセスの許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) を参照してください。
+ クロスアカウントアクセスにおけるロールとリソースベースのポリシーの使用方法の違いについては、*IAM ユーザーガイド* の [IAM でのクロスアカウントのリソースへのアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) を参照してください。

# Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング
<a name="troubleshoot-403-errors"></a>

アクセス拒否 (HTTP `403 Forbidden`) エラーは、AWS が認可リクエストを明示的または暗黙的に拒否した場合に表示されます。
+ *明示的な拒否*は、特定の AWS アクションに対する `Deny` ステートメントがポリシーに含まれている場合に発生します。
+ 該当する `Deny` ステートメントがなく、該当する `Allow` ステートメントもない場合に、*暗黙的な拒否*が発生します。

AWS Identity and Access Management (IAM) ポリシーはデフォルトで IAM プリンシパルを暗黙的に拒否するため、ポリシーではプリンシパルのアクションの実行を明示的に許可する必要があります。それ以外の場合、ポリシーは暗黙的にアクセスを拒否します。詳細については、「**IAM ユーザーガイド」の「[明示的な拒否と暗黙的な拒否の違い](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#AccessPolicyLanguage_Interplay)」を参照してください。アクセスリクエストを許可または拒否するかを決定するポリシー評価ロジックの詳細については、「IAM ユーザーガイド」の「[ポリシーの評価ロジック](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

以降のトピックでは、Amazon S3 でのアクセス拒否 (403 Forbidden) エラーの最も一般的な原因について説明します。

**注記**  
アクセス拒否 (HTTP `403 Forbidden`) エラーの場合、バケット所有者の個別の AWS アカウントまたはバケット所有者の AWS 組織の外部でリクエストが開始された場合、バケット所有者に対する Amazon S3 の料金は発生しません。

**Topics**
+ [アクセス拒否メッセージの例とトラブルシューティング方法](#access-denied-message-examples)
+ [リクエスタ支払いの設定によるアクセス拒否](#access-denied-requester-pays)
+ [バケットポリシーと IAM ポリシー](#bucket-iam-policies)
+ [Amazon S3 ACL 設定](#troubleshoot-403-acl-settings)
+ [S3 ブロックパブリックアクセス設定](#troubleshoot-403-bpa)
+ [Amazon S3 の暗号化設定](#troubleshoot-403-encryption)
+ [S3 オブジェクトロック設定](#troubleshoot-403-object-lock)
+ [VPC エンドポイントポリシー](#troubleshoot-403-vpc)
+ [AWS Organizations ポリシー](#troubleshoot-403-orgs)
+ [CloudFront ディストリビューションアクセス](#troubleshoot-403-cloudfront)
+ [アクセスポイント設定](#troubleshoot-403-access-points)
+ [その他のリソース](#troubleshoot-403-additional-resources)

**注記**  
アクセス許可の問題をトラブルシューティングする場合は、[アクセス拒否メッセージの例とトラブルシューティング方法](#access-denied-message-examples) セクションから始めて、[バケットポリシーと IAM ポリシー](#bucket-iam-policies) セクションに移動します。「[アクセス許可を確認するためのヒント](#troubleshoot-403-tips)」のガイダンスに従う必要もあります。

## アクセス拒否メッセージの例とトラブルシューティング方法
<a name="access-denied-message-examples"></a>

Amazon S3 は、同じ AWS アカウント、または同じ AWS Organizations の組織のリソースに対して行われたリクエストのアクセス拒否 (HTTP `403 Forbidden`) エラーに追加コンテキストを含めるようになりました。この新しいコンテキストには、アクセスを拒否したポリシーのタイプ、拒否の理由、リソースへのアクセスをリクエストした IAM ユーザーまたはロールに関する情報が含まれます。

この追加のコンテキストは、アクセス問題のトラブルシューティング、アクセス拒否エラーの根本原因の特定、関連するポリシーの更新による誤ったアクセスコントロールの修正に役立ちます。この追加のコンテキストは、AWS CloudTrail ログでも使用できます。AWS GovCloud (US) Regions および中国リージョンを含むすべての AWS リージョンで、同じアカウントまたは同じ組織のリクエストに対する拡張アクセス拒否エラーメッセージが利用可能になりました。

ほとんどのアクセス拒否のエラーメッセージは、`User user-arn is not authorized to perform action on "resource-arn" because context` の形式です。この例では、*`user-arn`* は、アクセス権がないユーザーの [Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)、*`action`* はポリシーが拒否するサービスアクション、*`resource-arn`* はポリシーが対象とするリソースの ARN です。*`context`* フィールドには、ポリシータイプについての追加のコンテキストが表示され、ポリシーがアクセスを拒否した理由が説明されます。

ポリシー内の `Deny` ステートメントで明示的にポリシーがアクセスを拒否した場合、アクセス拒否エラーメッセージには、`with an explicit deny in a type policy` というフレーズが含まれます。ポリシーがアクセスを暗黙的に拒否する場合、アクセス拒否エラーメッセージには、`because no type policy allows the action action` というフレーズが含まれます。

**重要**  
拡張アクセス拒否メッセージは、同じアカウントリクエストまたは AWS Organizations の同じ組織のリクエストに対してのみ返されます。同じ組織の外のクロスアカウントリクエストは、汎用 `Access Denied` メッセージを返します。  
クロスアカウントアクセスリクエストを許可または拒否するかを決定するポリシー評価ロジックの詳細については、「IAM ユーザーガイド」の「[クロスアカウントのポリシーの評価ロジック](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)」を参照してください。**クロスアカウントアクセスを許可する方法を説明するチュートリアルについては、「[例 2: バケット所有者がクロスアカウントのバケットのアクセス許可を付与する](example-walkthroughs-managing-access-example2.md)」を参照してください。
AWS Organizations の同じ組織内のリクエストの場合。  
仮想プライベートクラウド (VPC) エンドポイントポリシーが原因で拒否が発生した場合、拡張アクセス拒否メッセージは返されません。
拡張アクセス拒否メッセージは、バケット所有者と発信者アカウントの両方が AWS Organizations の同じ組織に属している場合に提供されます。S3 オブジェクト所有者の **[希望するバケット所有者]** または **[オブジェクトライター]** 設定で設定されたバケットには、異なるアカウントが所有するオブジェクトが含まれる場合がありますが、オブジェクトの所有者は、拡張アクセス拒否メッセージには影響しません。バケット所有者と呼び出し元が同じ組織にある限り、拡張アクセス拒否メッセージは、特定のオブジェクトの所有者に関係なく、すべてのオブジェクトリクエストに対して返されます。オブジェクト所有者の設定と設定に関する情報については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。
ディレクトリバケットに対するリクエストに関しては、拡張アクセス拒否エラーメッセージは返されません。ディレクトリバケットリクエストの場合は、汎用の `Access Denied` メッセージが返されます。
ポリシータイプが同じである複数のポリシーが認可リクエストを拒否した場合、アクセスは拒否され、エラーメッセージではポリシーの番号が特定されません。
複数のポリシータイプで認可リクエストが拒否された場合、エラーメッセージには、これらのポリシータイプのうち 1 つだけが含まれます。
複数の理由でアクセスリクエストが拒否された場合でも、エラーメッセージに含まれるのは、いずれか 1 つの拒否理由のみです。

次の例では、さまざまなタイプのアクセス拒否エラーメッセージの形式と、各タイプのメッセージに関するトラブルシューティング方法を説明しています。

### ブロックされた暗号化タイプによりアクセスが拒否されました
<a name="access-denied-due-to-blocked-encryption-type"></a>

汎用バケットで使用できるサーバー側の暗号化タイプを制限するには、バケットのデフォルトの暗号化設定を更新して SSE-C 書き込みリクエストをブロックすることを選択できます。このバケットレベルの設定は、SSE-C を指定するオブジェクトをアップロードするリクエストをブロックします。バケットに対して SSE-C がブロックされている場合、SSE-C 暗号化を指定する `PutObject`、`CopyObject`、`PostObject`、またはマルチパートアップロードまたはレプリケーションリクエストは、HTTP 403 `AccessDenied` エラーで拒否されます。

この設定は `PutBucketEncryption` API のパラメータであり、`s3:PutEncryptionConfiguration` アクセス許可がある場合は S3 コンソール、AWS CLI、および AWS SDK を使用して更新することもできます。有効な値は、汎用バケットの SSE-C 暗号化をブロックする `SSE-C` と、バケットへの書き込みに SSE-C を使用できるようにする `NONE` です。

例えば、`BlockedEncryptionTypes` の設定により SSE-C を指定する書き込みリクエストがブロックされるため、`PutObject` リクエストへのアクセスが拒否された場合、次のメッセージが表示されます。

```
An error occurred (AccessDenied) when calling the PutObject operation:   
User: arn:aws:iam::123456789012:user/MaryMajor  is not   
authorized to perform: s3:PutObject on resource:   
"arn:aws:s3:::amzn-s3-demo-bucket1/object-name" because this   
bucket has blocked upload requests that specify   
Server Side Encryption with Customer provided keys (SSE-C).   
Please specify a different server-side encryption type
```

この設定の詳細については「[汎用バケットの SSE-C のブロックまたはブロック解除](blocking-unblocking-s3-c-encryption-gpb.md)」を参照してください。

### リソースコントロールポリシーによるアクセスの拒否 - 明示的な拒否
<a name="access-denied-rcp-examples-explicit"></a>

1. リソースコントロールポリシー (RCP) 内のアクションの `Deny` ステートメントを確認します。次の例では、`s3:GetObject` がアクションです。

1. `Deny` ステートメントを削除して、RCP を更新してください。詳細については、「*AWS Organizations ユーザーガイド*」の「[リソースコントロールポリシー (RCP) の更新](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_policies_update.html#update_policy-rcp)」を参照してください。

```
An error occurred (AccessDenied) when calling the GetObject operation: 
User: arn:aws:iam::777788889999:user/MaryMajor is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" 
with an explicit deny in a resource control policy
```

### サービスコントロールポリシーによるアクセスの拒否 - 暗黙的な拒否
<a name="access-denied-scp-examples-implicit"></a>

1. サービスコントロールポリシー (SCP) のアクションで、`Allow` ステートメントが欠けていないかを確認します。次の例では、`s3:GetObject` がアクションです。

1. `Allow` ステートメントを追加して、ポリシーを更新してください。詳細については、「*AWS Organizations ユーザーガイド*」の「[SCP の更新](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html#update_policy)」を参照してください。

```
User: arn:aws:iam::777788889999:user/MaryMajor is not authorized to perform:
s3:GetObject because no service control policy allows the s3:GetObject action
```

### サービスコントロールポリシーによるアクセスの拒否 - 明示的な拒否
<a name="access-denied-scp-examples-explicit"></a>

1. サービスコントロールポリシー (SCP) のアクションで、`Deny` ステートメントを確認します。次の例では、`s3:GetObject` がアクションです。

1. `Deny` ステートメントを変更して SCP を更新し、必要なアクセスをユーザーに許可します。これを行う方法の例については、「AWS Organizations ユーザーガイド」の「[特定の管理者ロールを除いて、IAM ユーザーとロールが特定の変更を行わないようにする](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples_general.html#example-scp-restricts-with-exception)」を参照してください。**SCP の更新に関する詳細については、「AWS Organizations ユーザーガイド」の「[SCP の更新](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html#update_policy)」を参照してください。**

```
User: arn:aws:iam::777788889999:user/MaryMajor is not authorized to perform: 
s3:GetObject with an explicit deny in a service control policy
```

### VPC エンドポイントポリシーによるアクセスの拒否 – 暗黙的な拒否
<a name="access-denied-vpc-endpoint-examples-implicit"></a>

1. 仮想プライベートクラウド (VPC) エンドポイントポリシーのアクションで、`Allow` ステートメントが欠落していないかを確認します。次の例では、`s3:GetObject` がアクションです。

1. `Allow` ステートメントを追加して、VPC エンドポイントポリシーを更新します。詳細については、「*AWS PrivateLink ガイド*」の「[Update a VPC endpoint policy](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)」を参照してください。

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject because no VPC endpoint policy allows the s3:GetObject action
```

### VPC エンドポイントポリシーによるアクセスの拒否 – 明示的拒否
<a name="access-denied-vpc-endpoint-examples-explicit"></a>

1. 仮想プライベートクラウド (VPC) エンドポイントポリシーのアクションに、明示的な `Deny` ステートメントがあるかを確認します。次の例では、`s3:GetObject` がアクションです。

1. `Deny` ステートメントを変更して VPC エンドポイントポリシーを更新し、ユーザーに必要なアクセスを許可します。例えば、`Deny` ステートメントを更新して、`aws:PrincipalAccount` 条件キーと `StringNotEquals` 条件演算子を使用し、[例 7: `Deny` ステートメントから特定のプリンシパルを除外する](amazon-s3-policy-keys.md#example-exclude-principal-from-deny-statement) に示すように、特定のプリンシパルアクセスを許可できます。VPC エンドポイントポリシーの更新の詳細については、「AWS PrivateLink ガイド」の「[VPC エンドポイントポリシーの更新](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)」を参照してください。**

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" with 
an explicit deny in a VPC endpoint policy
```

### アクセス許可の境界によりアクセスの拒否 – 暗黙的な拒否
<a name="access-denied-permissions-boundary-examples-implicit"></a>

1. アクセス許可の境界にあるアクションで、`Allow` ステートメントが欠落してないかを確認してください。次の例では、`s3:GetObject` がアクションです。

1. IAM ポリシーに `Allow` ステートメントを追加して、アクセス許可の境界を更新してください。詳細については、「IAM ユーザーガイド」の「[IAM エンティティのアクセス許可の境界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)」と「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" 
because no permissions boundary allows the s3:GetObject action
```

### アクセス許可の境界によりアクセスの拒否 – 明示的拒否
<a name="access-denied-permissions-boundary-examples-explicit"></a>

1. アクセス許可の境界にあるアクションで、明示的な `Deny` ステートメントを確認してください。次の例では、`s3:GetObject` がアクションです。

1. IAM ポリシーの `Deny` ステートメントを変更してアクセス許可の境界を更新し、ユーザーに必要なアクセスを許可します。例えば、「IAM ユーザーガイド」の [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) に示すように、`aws:PrincipalAccount` 条件キーと `StringNotEquals` 条件演算子を使用して、特定のプリンシパルアクセスを許可するように `Deny` ステートメントを更新できます。**詳細については、「IAM ユーザーガイド」の「[IAM エンティティのアクセス許可の境界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)」と「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**

```
User: arn:aws:iam::777788889999:user/MaryMajor is not authorized to perform: 
s3:GetObject with an explicit deny in a permissions boundary
```

### セッションポリシーによるアクセスの拒否 – 暗黙的な拒否
<a name="access-denied-session-policy-examples-implicit"></a>

1. セッションポリシーにあるアクションで、`Allow` ステートメントが欠落していないかを確認してください。次の例では、`s3:GetObject` がアクションです。

1. `Allow` ステートメントを追加して、セッションポリシーを更新してください。詳細については、「IAM ユーザーガイド」の「[セッションポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)」と「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject because no session policy allows the s3:GetObject action
```

### セッションポリシーによるアクセスの拒否 – 明示的拒否
<a name="access-denied-session-policy-examples-explicit"></a>

1. セッションポリシーにあるアクションで、明示的な `Deny` ステートメントがあるのかを確認してください。次の例では、`s3:GetObject` がアクションです。

1. `Deny` ステートメントを変更してセッションポリシーを更新し、ユーザーに必要なアクセスを許可します。例えば、`Deny` ステートメントを更新して、`aws:PrincipalAccount` 条件キーと `StringNotEquals` 条件演算子を使用し、[例 7: `Deny` ステートメントから特定のプリンシパルを除外する](amazon-s3-policy-keys.md#example-exclude-principal-from-deny-statement) に示すように、特定のプリンシパルアクセスを許可できます。セッションポリシーの更新の詳細については、「IAM ユーザーガイド」の「[セッションポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)」および「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" with 
an explicit deny in a session policy
```

### リソースベースのポリシーによるアクセスの拒否 – 暗黙的な拒否
<a name="access-denied-resource-based-policy-examples-implicit"></a>

**注記**  
リソースベースのポリシーとは、バケットポリシーやアクセスポイントポリシーなどのポリシーを指します。**

1. リソースベースのポリシーにあるアクションで、`Allow` ステートメントが欠落してないかを確認してください。`IgnorePublicAcls` S3 ブロックパブリックアクセス設定が、バケット、アクセスポイント、またはアカウントレベルに適用されているかどうかも確認します。次の例では、`s3:GetObject` がアクションです。

1. `Allow` ステートメントを追加して、ポリシーを更新してください。詳細については、「IAM ユーザーガイド」の「[リソースベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)」と「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**

   バケット、アクセスポイント、またはアカウントの `IgnorePublicAcls` ブロックパブリックアクセス設定を調整する必要がある場合もあります。詳細については、「[ブロックパブリックアクセス設定によるアクセス拒否](#access-denied-bpa-examples)」および「[S3 バケットへのパブリックアクセスブロック設定の構成](configuring-block-public-access-bucket.md)」を参照してください。

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject because no resource-based policy allows the s3:GetObject action
```

### リソースベースのポリシーによるアクセスの拒否 – 明示的拒否
<a name="access-denied-resource-based-policy-examples-explicit"></a>

**注記**  
リソースベースのポリシーとは、バケットポリシーやアクセスポイントポリシーなどのポリシーを指します。**

1. リソースベースのポリシーにあるアクションで、明示的な `Deny` ステートメントがあるのかを確認してください。`RestrictPublicBuckets` S3 ブロックパブリックアクセス設定が、バケット、アクセスポイント、またはアカウントレベルに適用されているかどうかも確認します。次の例では、`s3:GetObject` がアクションです。

1. `Deny` ステートメントを変更してポリシーを更新し、ユーザーに必要なアクセスを許可します。例えば、`Deny` ステートメントを更新して、`aws:PrincipalAccount` 条件キーと `StringNotEquals` 条件演算子を使用し、[例 7: `Deny` ステートメントから特定のプリンシパルを除外する](amazon-s3-policy-keys.md#example-exclude-principal-from-deny-statement) に示すように、特定のプリンシパルアクセスを許可できます。リソースベースのポリシーの更新に関する詳細については、「IAM ユーザーガイド」の「[リソースベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)」および「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**

   バケット、アクセスポイント、またはアカウントの `RestrictPublicBuckets` ブロックパブリックアクセス設定を調整する必要がある場合もあります。詳細については、「[ブロックパブリックアクセス設定によるアクセス拒否](#access-denied-bpa-examples)」および「[S3 バケットへのパブリックアクセスブロック設定の構成](configuring-block-public-access-bucket.md)」を参照してください。

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" with 
an explicit deny in a resource-based policy
```

### ID ベースのポリシーによるアクセスの拒否 – 暗黙的な拒否
<a name="access-denied-identity-based-policy-examples-implicit"></a>

1. ID にアタッチされた ID ベースのポリシーにあるアクションに対して、`Allow` ステートメントが欠落していないかを確認してください。次の例のアクションは、ユーザー `MaryMajor` にアタッチされた `s3:GetObject` です。

1. `Allow` ステートメントを追加して、ポリシーを更新してください。詳細については、「IAM ユーザーガイド」の「[アイデンティティベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_id-based)」と「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject because no identity-based policy allows the s3:GetObject action
```

### ID ベースのポリシーによるアクセスの拒否 – 明示的拒否
<a name="access-denied-identity-based-policy-examples-explicit"></a>

1. ID にアタッチされた ID ベースのポリシーにあるアクションに対して、明示的な `Deny` ステートメントがあるのかを確認してください。次の例のアクションは、ユーザー `MaryMajor` にアタッチされた `s3:GetObject` です。

1. `Deny` ステートメントを変更してポリシーを更新し、ユーザーに必要なアクセスを許可します。例えば、「IAM ユーザーガイド」の [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) に示すように、`aws:PrincipalAccount` 条件キーと `StringNotEquals` 条件演算子を使用して、特定のプリンシパルアクセスを許可するように `Deny` ステートメントを更新できます。**詳細については、「IAM ユーザーガイド」の「[アイデンティティベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_id-based)」と「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。**

```
User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" with 
an explicit deny in an identity-based policy
```

### ブロックパブリックアクセス設定によるアクセス拒否
<a name="access-denied-bpa-examples"></a>

Amazon S3 のパブリックアクセスブロック機能は、Amazon S3 のリソースへのパブリックアクセスの管理に役立つ、アクセスポイント、バケット、アカウントの設定を提供します。Amazon S3 が「パブリック」を定義する方法の詳細については、「[「パブリック」の意味](access-control-block-public-access.md#access-control-block-public-access-policy-status)」を参照してください。

デフォルトでは、新しいバケット、アクセスポイント、およびオブジェクトはパブリックアクセスを許可しません。ただし、ユーザーはバケットポリシー、アクセスポイントポリシー、IAM ユーザーポリシー、オブジェクトのアクセス許可、またはアクセスコントロールリスト (ACL) を変更することで、パブリックアクセスを許可できます。S3 ブロックパブリックアクセス設定は、このようなポリシー、アクセス許可、ACL を上書きします。2023 年 4 月以降、すべてのブロックパブリックアクセス設定がデフォルトで新しいバケットに対して有効になります。

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

Amazon S3 のパブリックアクセスブロックには、4 つの設定があります。これらの設定は、独立しており、任意の組み合わせで使用できます。各設定は、アクセスポイント、バケット、または AWS アカウント全体に適用できます。アクセスポイント、バケット、アカウントのパブリックアクセスブロック設定が異なる場合、Amazon S3 は、アクセスポイント、バケット、アカウントの設定の組み合わせで最も制限が厳しいものを適用します。

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

Amazon S3 ブロックパブリックアクセスが提供する 4 つの設定: 
+ `BlockPublicAcls` – この設定は、`PutBucketAcl`、`PutObjectAcl`、`PutObject`、`CreateBucket`、`CopyObject`、`POST Object` のリクエストに適用されます。`BlockPublicAcls` の設定により、次のように動作します。
  + 指定されたアクセスコントロールリスト (ACL) がパブリックである場合、`PutBucketAcl` と `PutObjectAcl` の呼び出しは失敗します。
  + リクエストにパブリック ACL が含まれている場合、`PutObject` の呼び出しは失敗します。
  + この設定がアカウントに適用されている場合、リクエストにパブリック ACL が含まれていると、`CreateBucket` の呼び出しは失敗し、HTTP `400` (`Bad Request`) レスポンスが返されます。

  例えば、`BlockPublicAcls` の設定により `CopyObject` リクエストのアクセスが拒否されると、次のとおりのメッセージが表示されます。

  ```
  An error occurred (AccessDenied) when calling the CopyObject operation: 
  User: arn:aws:sts::123456789012:user/MaryMajor is not authorized to 
  perform: s3:CopyObject on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" 
  because public ACLs are prevented by the BlockPublicAcls setting in S3 Block Public Access.
  ```
+ `IgnorePublicAcls` – `IgnorePublicAcls` 設定を使用すると、Amazon S3 はバケットとバケット内のすべてのオブジェクトのパブリック ACL を無視します。リクエストの許可がパブリック ACL によってのみ付与されている場合は、`IgnorePublicAcls` 設定によってリクエストが拒否されます。

  `IgnorePublicAcls` 設定による拒否は、すべて暗黙的です。例えば、パブリック ACL により、`IgnorePublicAcls` が `GetObject` リクエストを拒否すると、次のとおりのメッセージが返されます。

  ```
  User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
  s3:GetObject because no resource-based policy allows the s3:GetObject action
  ```
+ `BlockPublicPolicy` – この設定は、`PutBucketPolicy` と `PutAccessPointPolicy` のリクエストに適用されます。

  バケットに対して `BlockPublicPolicy` を設定すると、指定されたバケットポリシーでパブリックアクセスが許可されている場合、Amazon S3 は `PutBucketPolicy` への呼び出しを拒否します。この設定により、指定されたポリシーでパブリックアクセスが許可されている場合、Amazon S3 はバケットの同じアカウントのすべてのアクセスポイントに対する `PutAccessPointPolicy` への呼び出しも拒否します。

  アクセスポイントで `BlockPublicPolicy` を設定すると、指定されたポリシー (アクセスポイントまたは基盤となるバケットのいずれか) でパブリックアクセスが許可されている場合、Amazon S3 はアクセスポイント経由で行われる `PutAccessPointPolicy` および `PutBucketPolicy` への呼び出しを拒否します。

  例えば、`BlockPublicPolicy` の設定が原因で `PutBucketPolicy` リクエストのアクセスが拒否されると、次のとおりのメッセージが表示されます。

  ```
  An error occurred (AccessDenied) when calling the PutBucketPolicy operation: 
  User: arn:aws:sts::123456789012:user/MaryMajor is not authorized to 
  perform: s3:PutBucketPolicy on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" 
  because public policies are prevented by the BlockPublicPolicy setting in S3 Block Public Access.
  ```
+ `RestrictPublicBuckets` – `RestrictPublicBuckets` 設定は、パブリックポリシーを持つアクセスポイントまたはバケットへのアクセスを、バケット所有者のアカウントとアクセスポイント所有者のアカウント内の AWS のサービスのプリンシパルと承認済みのユーザーのみに制限します。この設定により、アクセスポイントまたはバケットへのすべてのクロスアカウントアクセスがブロックされます (AWS のサービスのプリンシパルによるアクセスを除く)。ただし、アカウント内のユーザーは引き続きアクセスポイントまたはバケットを管理できます。この設定では、匿名 (または署名なし) のコールもすべて拒否されます。

  `RestrictPublicBuckets` 設定による拒否は、すべて暗黙的です。例えば、`RestrictPublicBuckets` がパブリックバケットまたはアクセスポイントポリシーにより `GetObject` リクエストを拒否した場合、次のメッセージが表示されます。

  ```
  User: arn:aws:iam::123456789012:user/MaryMajor is not authorized to perform: 
  s3:GetObject on resource: "arn:aws:s3:::amzn-s3-demo-bucket1/object-name" with 
  an explicit deny in a resource-based policy
  ```

これらの設定の詳細については、「[パブリックアクセスブロック設定](access-control-block-public-access.md#access-control-block-public-access-options)」をご参照ください。これらの設定を確認して更新するには、「[パブリックアクセスブロックの設定](access-control-block-public-access.md#configuring-block-public-access)」を参照してください。

## リクエスタ支払いの設定によるアクセス拒否
<a name="access-denied-requester-pays"></a>

アクセスしようとしている Amazon S3 バケットでリクエスタ支払い機能が有効になっている場合は、そのバケットにリクエストを行うときに正しいリクエストパラメータを渡す必要があります。Amazon S3 のリクエスタ支払い機能を使用すると、バケット所有者の代わりにリクエスタがバケット内のオブジェクトにアクセスするためのデータ転送とリクエストのコストを支払うことができます。リクエスタ支払いがバケットに対して有効になっている場合、バケット所有者は他の AWS アカウントによって行われたリクエストに対して課金されません。

必要なパラメータを渡さずにリクエスタ支払い対応バケットにリクエストを行うと、アクセス拒否 (403 Forbidden) エラーが発生します。リクエスタ支払いが有効なバケット内のオブジェクトにアクセスするには、以下を実行する必要があります。

1. AWS CLI を使用してリクエストを行う場合は、`--request-payer requester` パラメータを含める必要があります。例えば、`s3://amzn-s3-demo-bucket/` S3 バケットにある `object.txt` キーを持つオブジェクトをローカルマシン上の場所にコピーするには、このバケットでリクエスタ支払いが有効になっている場合も `--request-payer requester` パラメータを渡す必要があります。

   ```
   aws s3 cp s3://amzn-s3-demo-bucket/object.txt /local/path \
   --request-payer requester
   ```

1. AWS SDK を使用してプログラムによるリクエストを行う場合は、`x-amz-request-payer` ヘッダーを値 `requester` に設定します。例については、[リクエスタ支払いバケットからのオブジェクトのダウンロード](ObjectsinRequesterPaysBuckets.md)を参照してください。

1. リクエストを行う IAM ユーザーまたはロールに、`s3:GetObject` や `s3:ListBucket` のアクセス許可など、リクエスタ支払いバケットにアクセスするために必要なアクセス許可があることを確認します。

`--request-payer requester` パラメータを含めるか、`x-amz-request-payer` ヘッダーを設定することで、リクエスタ支払いが有効なバケット内のオブジェクトへのアクセスに関連するコストをリクエスタが支払うことを Amazon S3 に通知します。これにより、アクセス拒否 (403 Forbidden) エラーを防ぐことができます。

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

### バケットレベルの操作
<a name="troubleshoot-403-bucket-level-ops"></a>

バケットポリシーが設定されていない場合、バケットはバケット所有者のアカウントの任意の AWS Identity and Access Management (IAM) アイデンティティからのリクエストを暗黙的に許可します。また、バケットは、他の任意のアカウントからの他の IAM ID からのリクエストや、匿名の (署名されていない) リクエストを暗黙的に拒否します。ただし、IAM ユーザーポリシーが設定されていない場合、リクエスタのすべてのリクエストは (AWS アカウントのルートユーザーでない限り) 暗黙的に拒否されます。詳細については、*IAM ユーザーガイド*の「[アカウント内でのリクエストの許可または拒否の決定](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)」を参照してください。

### オブジェクトレベルの操作
<a name="troubleshoot-403-object-level-ops"></a>

バケット所有アカウントがオブジェクトを所有している場合、バケットポリシーと IAM ユーザーポリシーは、オブジェクトレベルの操作でもバケットレベルの操作と同じように機能します。例えば、バケットポリシーが設定されていない場合、バケットはバケット所有者のアカウントの任意の IAM アイデンティティからのオブジェクトリクエストを暗黙的に許可します。また、バケットは、他の任意のアカウントの他の IAM ID からのオブジェクトリクエストや、匿名 (署名なし) リクエストを暗黙的に拒否します。ただし、IAM ユーザーポリシーが設定されていない場合、リクエスタのすべてのオブジェクトリクエストは (AWS アカウントのルートユーザーでない限り) 暗黙的に拒否されます。

オブジェクトが外部アカウントによって所有されている場合、オブジェクトへのアクセスはオブジェクトアクセスコントロールリスト (ACL) を通じてのみ許可されます。バケットポリシーと IAM ユーザーポリシーは、引き続きオブジェクトリクエストを拒否するために使用できます。

したがって、バケットポリシーまたは IAM ユーザーポリシーによりアクセス拒否 (403 Forbidden) エラーが発生しないことを確認するには、次の要件が満たされていることを確認します。
+ 同じアカウントでアクセスする場合、バケットポリシーまたは IAM ユーザーポリシーのいずれにも、アクセス権限を付与するリクエスタに対する明示的な `Deny` 記述があってはなりません。バケットポリシーと IAM ユーザーポリシーのみを使用してアクセス権限を付与する場合は、これらのポリシーの 1 つに少なくとも 1 つの明示的な `Allow` ステートメントが必要です。
+ クロスアカウントアクセスの場合、バケットポリシーまたは IAM ユーザーポリシーのいずれにも、アクセス許可を付与するリクエスタに対する明示的な `Deny` ステートメントを含めることはできません。バケットポリシーと IAM ユーザーポリシーのみを使用してクロスアカウントアクセス許可を付与する場合は、リクエスタのバケットポリシーと IAM ユーザーポリシーの両方に明示的な `Allow` ステートメントが含まれていることを確認します。

**注記**  
バケットポリシーの `Allow` ステートメントは、[同じバケット所有アカウントが所有する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)オブジェクトにのみ適用されます。ただし、バケットポリシーの `Deny` ステートメントは、オブジェクトの所有権に関係なくすべてのオブジェクトに適用されます。

**バケットポリシーを確認または編集する方法**
**注記**  
バケットポリシーを表示または編集するには、`s3:GetBucketPolicy` アクセス許可が必要です。

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

1. 左側のナビゲーションペインで、**[バケット]** を選択します。

1. **[バケット]** リストで、バケットポリシーを表示または編集するバケットの名前を選択します。

1. **[アクセス許可]** タブを選択します。

1. **[バケットポリシー]** で **[編集]** を選択します。**[バケットポリシーを編集]** ページが表示されます。

AWS Command Line Interface (AWS CLI) を使用してバケットポリシーを確認または編集するには、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html) コマンドを使用します。

**注記**  
バケットポリシーが適正でないためにバケットからロックアウトされた場合は、[AWS アカウントのルートユーザー認証情報を使用してAWS マネジメントコンソールにサインイン](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html)します。バケットへのアクセスを回復するには、必ず AWS アカウントのルートユーザーの認証情報を使用してバケットポリシーを削除します。

### アクセス許可を確認するためのヒント
<a name="troubleshoot-403-tips"></a>

リクエスタが Amazon S3 オペレーションを実行するための適切な権限を持っているかどうかを確認するには、以下を試してください。
+ リクエスタを特定します。署名なしのリクエストの場合、IAM ユーザーポリシーのない匿名リクエストです。署名済み URL を使用したリクエストの場合、ユーザーポリシーは、リクエストに署名した IAM ユーザーまたはロールのポリシーと同じになります。
+ 正しい IAM ユーザーまたはロールを使用していることを確認します。IAM ユーザーまたはロールを確認するには、AWS マネジメントコンソール の右上隅を確認するか、[https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) コマンドを使用することができます。
+ IAM ユーザーまたはロールに関連付けられている IAM ポリシーを確認します。次のいずれかの方法を使用します。
  + [IAM ポリシーシミュレーターを使用して IAM ポリシーをテストします](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html)。
  + さまざまな [IAM ポリシータイプ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)を確認します。
+ 必要に応じて、[IAM ユーザーポリシーを編集します](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。
+ アクセスを明示的に拒否または許可するポリシーについては、以下の例を確認してください。
  + IAM ユーザーポリシーの明示的な許可: [IAM: 複数のサービスへのアクセスをプログラムおよびコンソールで許可および拒否](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam_multiple-services-console.html)
  + バケットポリシーの明示的許可: [オブジェクトをアップロードしたり、パブリックアクセス用のオブジェクト ACL を設定したりする権限を複数のアカウントに付与](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-acl-1)
  + IAM ユーザーポリシーの明示的拒否: [AWS: リクエストされた AWS リージョン に基づいてAWS へのアクセスを拒否](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-requested-region.html)
  + バケットポリシーの明示的拒否: [バケットに書き込まれるすべてのオブジェクトに SSE-KMS が必要](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-encryption-1)

## Amazon S3 ACL 設定
<a name="troubleshoot-403-acl-settings"></a>

ACL 設定を確認するときは、まず[オブジェクト所有権の設定を確認](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-retrieving.html)して、バケットで ACL が有効になっているかどうかを確認してください。ACL アクセス許可を使用できるのは、アクセス許可を付与するためのみであり、リクエストを拒否するためには使用できないことに注意が必要です。ACL は、バケットポリシーや IAM ユーザーポリシーでの明示的拒否によって拒否されたリクエスタにアクセス権を付与する目的でも使用できません。

### オブジェクト所有者の設定にバケット所有者の強制を設定する
<a name="troubleshoot-403-object-ownership-1"></a>

**[バケット所有者の強制]** 設定が有効になっている場合、この設定によってバケットとオブジェクトに適用されるすべての ACL が無効になるため、ACL 設定によってアクセス拒否 (403 Forbidden) エラーが発生する可能性はほとんどありません。Amazon S3 バケットのデフォルト (および推奨) 設定は、**[バケット所有者の強制]** です。

### オブジェクト所有者設定に希望するバケット所有者またはオブジェクトライターを設定する
<a name="troubleshoot-403-object-ownership-2"></a>

ACL 権限は、**[希望するバケット所有者]** 設定または **[オブジェクト作成者]** 設定でも引き続き有効です。ACL には、バケット ACL とオブジェクト ACL の 2 種類があります。この 2 種類の ACL の違いについては、「[ACL アクセス許可とアクセスポリシーのアクセス許可のマッピング](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#acl-access-policy-permission-mapping)」を参照してください。

拒否されたリクエストのアクションに応じて、以下のように[バケットまたはオブジェクトの ACL 権限を確認してください](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)。
+ Amazon S3 が `LIST`、`PUT` オブジェクト、`GetBucketAcl`、または `PutBucketAcl` リクエストを拒否した場合は、[バケットの ACL 権限を確認](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)してください。
**注記**  
バケット ACL 設定では、`GET` オブジェクトのアクセス許可を付与することはできません。
+ Amazon S3 が S3 オブジェクトの `GET` リクエスト、または [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) リクエストを拒否した場合は、[そのオブジェクトの ACL 権限を確認してください](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)。
**重要**  
オブジェクトを所有するアカウントがバケットを所有するアカウントと異なる場合、オブジェクトへのアクセスはバケットポリシーによって制御されません。

### クロスアカウントによるオブジェクト所有権である場合の、`GET` オブジェクトリクエストによるアクセス拒否 (403 Forbidden) エラーのトラブルシューティング
<a name="troubleshoot-403-object-ownership-tips"></a>

バケットの[オブジェクト所有権設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html#object-ownership-overview)を確認して、オブジェクト所有者を判断します。[オブジェクト ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html) へのアクセス権限がある場合は、オブジェクト所有者のアカウントを確認することもできます。(オブジェクト所有者のアカウントを表示するには、Amazon S3 コンソールでオブジェクト ACL 設定を確認します)。または、`GetObjectAcl` リクエストを実行してオブジェクト所有者の[正規 ID](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html) を検索し、オブジェクト所有者のアカウントを確認することもできます。デフォルトでは、ACL はオブジェクト所有者のアカウントへの `GET` リクエストに対する明示的な許可権限を付与します。

オブジェクト所有者がバケット所有者と異なることを確認してから、ユースケースとアクセスレベルに応じて、次のいずれかの方法を選択してアクセス拒否 (403 Forbidden) エラーに対処します。
+ **ACL を無効にする (推奨)** - この方法はすべてのオブジェクトに適用され、バケット所有者が実行できます。この方法では、バケット所有者に所有権が自動的に与えられ、バケット内のすべてのオブジェクトを完全に制御できます。この方法を実行する前に、[ACL を無効にする前提条件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-migrating-acls-prerequisites.html)を確認します。**[バケット所有者の強制]** (推奨) モードにバケットを設定する方法については、「[既存のバケットでのオブジェクトの所有権の設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-existing-bucket.html)」を参照してください。
**重要**  
アクセス拒否 (403 Forbidden) エラーを防ぐには、ACL を無効にする前に、必ず ACL 権限をバケットポリシーに移行してください。詳細については、「[ACL 権限からの移行に関するバケットポリシーの例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-migrating-acls-prerequisites.html#migrate-acl-permissions-bucket-policies)」を参照してください。
+ **オブジェクト所有者をバケット所有者に変更** - この方法は個々のオブジェクトに適用できますが、オブジェクトの所有権を変更できるのはオブジェクト所有者 (または適切な権限を持つユーザー) のみです。追加の `PUT` コストが適用される場合があります。(詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください)。この方法では、バケット所有者にオブジェクトの完全な所有権が付与され、バケット所有者はバケットポリシーを通じてオブジェクトへのアクセスを制御できます。

  オブジェクトの所有権を変更するには、以下のいずれかを実行します。
  + バケット所有者は[オブジェクトをコピーして](https://docs.aws.amazon.com/AmazonS3/latest/userguide/copy-object.html#CopyingObjectsExamples)バケットに戻すことができます。
  + バケットのオブジェクト所有者設定を **[希望するバケット所有者]** に変更できます。バージョニングを無効にすると、バケット内のオブジェクトは上書きされます。バージョニングが有効になっている場合、同じオブジェクトの重複バージョンがバケットに表示され、バケット所有者は[ライフサイクルルールを期限切れに設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)できます。オブジェクト所有権設定を変更する方法については、「[既存のバケットでのオブジェクトの所有権の設定](object-ownership-existing-bucket.md)」を参照してください。
**注記**  
オブジェクト所有者の設定を **[希望するバケット所有者]** に更新すると、その設定はバケットにアップロードされた新しいオブジェクトにのみ適用されます。
  + `bucket-owner-full-control` 既定オブジェクト ACL を使用して、オブジェクト所有者にオブジェクトを再度アップロードさせることができます。
**注記**  
クロスアカウントアップロードの場合、バケットポリシーで `bucket-owner-full-control` 既定オブジェクト ACL を要求することもできます。バケットポリシーの例については、[バケット所有者はフルコントロール権限を持ちながら、オブジェクトをアップロードするためのクロスアカウントアクセス許可を付与する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-acl-2)を参照してください。
+ **オブジェクト作成者をオブジェクト所有者のままにする** - この方法ではオブジェクトの所有者は変更されませんが、オブジェクトへのアクセス権限を個別に付与できます。オブジェクトへのアクセス権限を付与するには、そのオブジェクトに対する `PutObjectAcl` 権限が必要です。次に、アクセス拒否 (403 Forbidden) エラーを修正するために、リクエスタをオブジェクトの ACL 内のオブジェクトへのアクセス権限[付与者](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#specifying-grantee)として追加します。詳細については、「[ACL の設定](managing-acls.md)」を参照してください。

## S3 ブロックパブリックアクセス設定
<a name="troubleshoot-403-bpa"></a>

失敗したリクエストがパブリックアクセスまたはパブリックポリシーに関連している場合は、アカウント、バケット、または S3 アクセスポイントの S3 ブロックパブリックアクセス設定を確認します。S3 パブリックアクセスブロック設定に関連するアクセス拒否エラーのトラブルシューティングの詳細については、「[ブロックパブリックアクセス設定によるアクセス拒否](#access-denied-bpa-examples)」を参照してください。

## Amazon S3 の暗号化設定
<a name="troubleshoot-403-encryption"></a>

Amazon S3 はバケットのサーバー側暗号化をサポートしています。サーバー側の暗号化とは、データを受信するアプリケーションまたはサービスによって、送信先でデータを暗号化することです。Amazon S3 は、AWS データセンターのディスクに書き込まれるときにデータをオブジェクトレベルで暗号化し、お客様がデータにアクセスするときに復号します。

デフォルトで、Amazon S3 では、Amazon S3 のすべてのバケットに対する基本レベルの暗号化として、Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) が適用されるようになりました。Amazon S3 では、オブジェクトをアップロードするときにサーバー側を暗号化する方法も指定できます。

**バケットのサーバー側暗号化ステータスと暗号化設定を確認する方法**

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

1. 左側のナビゲーションペインで、**[バケット]** を選択します。

1. **[バケット]** リストで、暗号化設定を確認するバケットを選択します。

1. **[プロパティ]** タブを選択します。

1. **[デフォルトの暗号化]** セクションまでスクロールして、**[暗号化タイプ]** 設定を表示します。

AWS CLI を使用して暗号化設定を確認するには、[https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-encryption.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-encryption.html) コマンドを使用します。

**オブジェクトの暗号化状態を確認する方法**

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

1. 左側のナビゲーションペインで、**[バケット]** を選択します。

1. **[バケット]** リストで、オブジェクトが含まれるバケットの名前を選択します。

1. **[オブジェクト]** リストで、暗号化を追加または変更するオブジェクトの名前を選択します。

   オブジェクトの詳細ページが表示されます。

1. **[サーバー側の暗号化設定]** セクションまでスクロールすると、オブジェクトのサーバー側暗号化設定が表示されます。

AWS CLI を使用してオブジェクト暗号化ステータスを確認するには、[https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html#examples](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html#examples) コマンドを使用します。

### 暗号化とアクセス許可の要件
<a name="troubleshoot-403-encryption-requirements"></a>

Amazon S3 では 3 種類のサーバー側暗号化がサポートされます。
+ Amazon S3 マネージドキーを用いたサーバー側の暗号化 (SSE-S3)
+ AWS Key Management Service (AWS KMS) キー (SSE-KMS) によるサーバー側の暗号化
+ お客様が用意したキーを使用したサーバー側の暗号化 (SSE-C)

暗号化設定に基づいて、以下のアクセス許可要件が満たされていることを確認します。
+ **SSE-S3** - 追加の権限は必要ありません。
+ **SSE-KMS (カスタマー管理キーを使用)** - オブジェクトをアップロードするには、AWS KMS key に `kms:GenerateDataKey` 権限が必要です。オブジェクトをダウンロードしてオブジェクトのマルチパートアップロードを実行するには、KMS キーに `kms:Decrypt` 権限が必要です。
+ **SSE-KMS (AWS マネージドキー を使用)** - リクエスタは `aws/s3` KMS キーを所有しているのと同じアカウントに属している必要があります。また、リクエスタはオブジェクトにアクセスするための正しい Amazon S3 権限を持っている必要があります。
+ **SSE-C (お客様提供のキーを使用)** - 追加の権限は必要ありません。バケットポリシーを設定すると、バケットのオブジェクトに対して[お客様が用意した暗号化キーでサーバー側の暗号化をリクエストおよび制限できます](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html#ssec-require-condition-key)。

オブジェクトがカスタマーマネージドキーで暗号化されている場合は、KMS キーポリシーによって `kms:GenerateDataKey` または `kms:Decrypt` アクションの実行が許可されていることを確認してください。KMS キーポリシーを確認する手順については、*AWS Key Management Service デベロッパーガイド*の「[キーポリシーの表示](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html)」を参照してください。

## S3 オブジェクトロック設定
<a name="troubleshoot-403-object-lock"></a>

バケットで [S3 Object Lock](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html) が有効になっていて、オブジェクトが[保持期間](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html#object-lock-retention-periods)または[リーガルホールド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html#object-lock-legal-holds)によって保護されている場合、オブジェクトを削除しようとすると、Amazon S3 はオブジェクトの削除方法に応じて次のいずれかのレスポンスを返します。
+ **永続的 `DELETE` なリクエスト** – 永続的な `DELETE` リクエスト (バージョン ID を指定するリクエスト) を発行した場合、オブジェクトを削除しようとすると、Amazon S3 はアクセス拒否 (`403 Forbidden`) エラーを返します。
+ **シンプルな `DELETE` リクエスト** – シンプルな `DELETE` リクエスト (バージョン ID を指定しないリクエスト) を発行した場合、Amazon S3 は `200 OK` レスポンスを返し、バケットに[削除マーカー](DeleteMarker.md)を挿入します。そのマーカーは、新しい ID を持つオブジェクトの最新バージョンになります。

**バケットでオブジェクトロックが有効になっているかどうかを確認する方法**

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

1. 左側のナビゲーションペインで、**[バケット]** を選択します。

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

1. **[プロパティ]** タブを選択します。

1. **[オブジェクトロック]** セクションまでスクロールします。**[オブジェクトロック]** 設定が **[有効]** または **[無効]** であるかを確認します。

オブジェクトが保持期間またはリーガルホールドで保護されているかを判断するには、オブジェクトの[ロック情報を参照](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-view)します。

オブジェクトが保持期間またはリーガルホールドで保護されている場合は、次の点を確認します。
+ オブジェクトバージョンがコンプライアンス保存モードで保護されている場合、それを完全に削除する方法はありません。AWS アカウントのルートユーザーを含む、すべてのリクエスタからの永続的な `DELETE` リクエストは、アクセス拒否 (403 Forbidden) エラーになります。また、コンプライアンス保持モードで保護されているオブジェクトの `DELETE` リクエストを送信すると、Amazon S3 はそのオブジェクトの[削除マーカー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html)を作成することに注意してください。
+ オブジェクトバージョンがガバナンス保持モードで保護されていて `s3:BypassGovernanceRetention` 権限がある場合は、保護をバイパスしてバージョンを完全に削除できます。詳細については、「[ガバナンスモードのバイパス](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-bypass)」を参照してください。
+ オブジェクトバージョンがリーガルホールドで保護されている場合は、永久 `DELETE` リクエストを実行するとアクセス拒否 (403 Forbidden) エラーが発生する可能性があります。オブジェクトバージョンを永久に削除するには、オブジェクトバージョンのリーガルホールドを解除する必要があります。リーガルホールドを解除するには、`s3:PutObjectLegalHold` 許可が必要です。リーガルホールドの解除の詳細については、「[オブジェクトロックの設定](object-lock-configure.md)」を参照してください。

## VPC エンドポイントポリシー
<a name="troubleshoot-403-vpc"></a>

仮想プライベートクラウド (VPC) エンドポイントを使用して Amazon S3 にアクセスする場合は、VPC エンドポイントポリシーによって Amazon S3 リソースへのアクセスがブロックされていないことを確認します。デフォルトでは、VPC エンドポイントポリシーは Amazon S3 へのすべてのリクエストを許可します。特定のリクエストを制限するように VPC エンドポイントポリシーを設定することもできます。VPC エンドポイントポリシーを確認する方法については、次のリソースを参照してください。
+ [VPC エンドポイントポリシーによるアクセスの拒否 – 暗黙的な拒否](#access-denied-vpc-endpoint-examples-implicit)
+ [VPC エンドポイントポリシーによるアクセスの拒否 – 明示的拒否](#access-denied-vpc-endpoint-examples-explicit)
+ 「AWS PrivateLink ガイド」の「[エンドポイントポリシーを使用して VPC エンドポイントへのアクセスを制御する](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)」**

## AWS Organizations ポリシー
<a name="troubleshoot-403-orgs"></a>

あなたの AWS アカウント が組織に所属している場合、AWS Organizations ポリシーによって Amazon S3 リソースへのアクセスがブロックされる場合があります。デフォルトでは、AWS Organizations ポリシーは Amazon S3 へのいずれのリクエストもブロックしません。ただし、AWS Organizations ポリシーが S3 バケットへのアクセスをブロックするように設定されていないことを確認してください。AWS Organizations ポリシーを確認する方法については、以下のリソースを参照してください。
+ [サービスコントロールポリシーによるアクセスの拒否 - 暗黙的な拒否](#access-denied-scp-examples-implicit)
+ [サービスコントロールポリシーによるアクセスの拒否 - 明示的な拒否](#access-denied-scp-examples-explicit)
+ [リソースコントロールポリシーによるアクセスの拒否 - 明示的な拒否](#access-denied-rcp-examples-explicit)
+ 「AWS Organizations ユーザーガイド」の「[すべてのポリシーの一覧表示](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_info-operations.html#list-all-pols-in-org)」**

さらに、S3 バケットへのすべてのユーザーのアクセスを拒否するようにメンバーアカウントのバケットポリシーを誤って設定した場合は、IAM でメンバーアカウントの特権セッションを起動することでバケットをロック解除できます。特権セッションを起動した後、誤って設定したバケットポリシーを削除して、バケットへのアクセスを再開できます。詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[AWS Organizations メンバーアカウントで特権タスクを実行する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user-privileged-task.html)」を参照してください 

## CloudFront ディストリビューションアクセス
<a name="troubleshoot-403-cloudfront"></a>

CloudFront 経由で S3 静的ウェブサイトにアクセスしようとしたときに「アクセス拒否 (403 Forbidden)」エラーが発生した場合は、次の一般的な問題を確認してください。
+ **オリジンドメイン名の形式は正しいですか**
  + REST API エンドポイントではなく S3 ウェブサイトエンドポイント形式 (bucket-name.s3-website-region.amazonaws.com) を使用していることを確認
  + バケットで静的ウェブサイトホスティングが有効になっていることを確認
+ **バケットポリシーで CloudFront アクセスが許可されていますか**
  + バケットポリシーに CloudFront ディストリビューションのオリジンアクセスアイデンティティ (OAI) またはオリジンアクセスコントロール (OAC) のアクセス許可が含まれていることを確認
  + ポリシーに必要な s3:GetObject アクセス許可が含まれていることを確認

エラーページの設定やプロトコル設定など、その他のトラブルシューティング手順や設定については、AWS re:Post 情報センターの「[Amazon S3 ウェブサイトのエンドポイントを CloudFront ディストリビューションのオリジンとして使用すると、"403 access denied" エラーが発生する理由を知りたいです](https://repost.aws/knowledge-center/s3-website-cloudfront-error-403)」を参照してください。

**注記**  
このエラーは、S3 に直接アクセスしたときに発生する可能性のある 403 エラーとは異なります。CloudFront 固有の問題については、CloudFront のディストリビューション設定と S3 の設定の両方を確認してください。

## アクセスポイント設定
<a name="troubleshoot-403-access-points"></a>

Amazon S3 Access Points 経由でリクエストを行っているときにアクセス拒否 (403 Forbidden) エラーが表示される場合は、次の点を確認する必要がある場合があります。
+ アクセスポイントの設定
+ アクセスポイントに使用される IAM ユーザーポリシー
+ クロスアカウントアクセスポイントの管理または設定に使用されるバケットポリシー

**アクセスポイントの設定とポリシー**
+ アクセスポイントを作成するときに、**インターネット**または **VPC** をネットワークオリジンとして指定できます。ネットワークオリジンが VPC のみに設定されている場合、Amazon S3 は指定 VPC 以外のアクセスポイントへのリクエストをすべて拒否します。アクセスポイントのネットワークオリジンを確認するには、[Virtual Private Cloud に制限されたアクセスポイントの作成](access-points-vpc.md) を参照してください。
+ アクセスポイントでは、カスタムのブロックパブリックアクセス設定を構成することもできます。これは、バケットレベルまたはアカウントレベルのブロックパブリックアクセス設定と同様に機能します。カスタムのブロックパブリックアクセス設定を確認する方法は、「[汎用バケットのアクセスポイントへのパブリックアクセスの管理](access-points-bpa-settings.md)」を参照してください。
+ アクセスポイントを使用して Amazon S3 へのリクエストを正常に行うには、リクエスタが必要な IAM 権限を持っていることを確認します。詳細については、「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。
+ リクエストにクロスアカウントアクセスポイントが含まれる場合、バケット所有者がアクセスポイントからのリクエストを許可するようにバケットポリシーを更新済みであることを確認します。詳細については、「[クロスアカウントアクセスポイントへのアクセス許可の付与](access-points-policies.md#access-points-cross-account)」を参照してください。

このトピックのすべての項目を確認してもアクセス拒否 (403 Forbidden) エラーが解決しない場合は、[Amazon S3 リクエスト ID を取得](https://docs.aws.amazon.com/AmazonS3/latest/userguide/get-request-ids.html)して、追加ガイダンスについて サポート まで問い合わせてください。

## その他のリソース
<a name="troubleshoot-403-additional-resources"></a>

アクセス拒否 (403 Forbidden) エラーに関する詳細なガイダンスについては、次のリソースを確認できます。
+ AWS re:Post 情報センターの「[Amazon S3 での、403 Access Denied エラーをトラブルシューティングする方法を教えてください](https://repost.aws/knowledge-center/s3-troubleshoot-403)」。
+ AWS re:Post 情報センターの、「[Amazon S3 にファイルをアップロードしようとすると「403 禁止」エラーが表示されるのはなぜですか](https://repost.aws/knowledge-center/s3-403-forbidden-error)」。
+ AWS re:Post 情報センターの、「[すべてのリソースが同じ AWS アカウントからのものである場合、Amazon S3 バケットからの 403 アクセス拒否エラーをトラブルシューティングする方法を教えてください](https://repost.aws/knowledge-center/s3-troubleshoot-403-resource-same-account)」。
+ AWS re:Post 情報センターの、「[パブリック読み取りアクセス権を持つ Amazon S3 バケットからの 403 アクセス拒否エラーをトラブルシューティングする方法を教えてください](https://repost.aws/knowledge-center/s3-troubleshoot-403-public-read)」。
+ AWS re:Post 情報センターの、「[Amazon S3 の署名済み URL でリクエストを行う際の、SignatureDoesNotMatch または 403 Forbidden エラーをトラブルシューティングする方法を教えてください](https://repost.aws/knowledge-center/s3-presigned-url-signature-mismatch)」。
+ AWS re:Post 情報センターの、「[Amazon S3 バケットで同期コマンドを実行すると、ListObjectsV2 のアクセス拒否エラーが表示されるのはなぜですか](https://repost.aws/knowledge-center/s3-access-denied-listobjects-sync)」。
+ AWS re:Post 情報センターの、「[Amazon S3 ウェブサイトのエンドポイントを CloudFront ディストリビューションのオリジンとして使用すると、"403 access denied" エラーが発生する理由を知りたいです](https://repost.aws/knowledge-center/s3-website-cloudfront-error-403)」。

# AWSAmazon S3 の マネージドポリシー
<a name="security-iam-awsmanpol"></a>

AWS マネージドポリシーは、AWS が作成および管理するスタンドアロンポリシーです。AWS マネージドポリシーは、多くの一般的ユースケースでアクセス許可を提供するように設計されているため、ユーザー、グループ、ロールへのアクセス許可の割り当てを開始できます。

AWS マネージドポリシーは、ご利用の特定のユースケースに対して最小特権のアクセス許可を付与しない場合があることにご注意ください。これは、すべての AWS ユーザーが使用できるようになるのを避けるためです。ユースケースに固有の[カスタマー管理ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)を定義して、アクセス許可を絞り込むことをお勧めします。

AWS マネージドポリシーで定義されたアクセス許可は変更できません。AWS が AWS マネージドポリシーに定義されているアクセス許可を更新すると、更新はポリシーがアタッチされているすべてのプリンシパルアイデンティティ (ユーザー、グループ、ロール) に影響します。新しい AWS のサービス を起動するか、既存のサービスで新しい API オペレーションが使用可能になると、AWS が AWS マネージドポリシーを更新する可能性が最も高くなります。

詳細については、「*IAM ユーザーガイド*」の「[AWS マネージドポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)」を参照してください。

## AWS マネージドポリシー: AmazonS3FullAccess
<a name="security-iam-awsmanpol-amazons3fullaccess"></a>

`AmazonS3FullAccess` ポリシーを IAM IDにアタッチできます。このポリシーは、Amazon S3 への完全なアクセスを可能にする許可を付与します。

このポリシーのアクセス許可を確認するには、「AWS マネジメントコンソール」の「[https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor)」を参照してください。

## AWS マネージドポリシー: AmazonS3ReadOnlyAccess
<a name="security-iam-awsmanpol-amazons3readonlyaccess"></a>

`AmazonS3ReadOnlyAccess` ポリシーを IAM IDにアタッチできます。このポリシーは、Amazon S3 への読み取り専用アクセスを可能にする許可を付与します。

このポリシーのアクセス許可を確認するには、「AWS マネジメントコンソール」の「[https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess$jsonEditor](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess$jsonEditor)」を参照してください。

## AWS マネージドポリシー: AmazonS3ObjectLambdaExecutionRolePolicy
<a name="security-iam-awsmanpol-amazons3objectlambdaexecutionrolepolicy"></a>

S3 Object Lambda アクセスポイントにリクエストが行われたときに S3 Object Lambda にデータを送信するために必要な許可を AWS Lambda 関数に提供します。また、Amazon CloudWatch Logs に書き込む許可を Lambda に付与します。

このポリシーのアクセス許可を確認するには、「AWS マネジメントコンソール」の「[https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy$jsonEditor](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy$jsonEditor)」を参照してください。

## AWS マネージドポリシー: S3UnlockBucketPolicy
<a name="security-iam-awsmanpol-S3UnlockBucketPolicy"></a>

S3 バケットへのすべてのユーザーのアクセスを拒否するようにメンバーアカウントのバケットポリシーを誤って設定した場合は、この AWS マネージドポリシー (`S3UnlockBucketPolicy`) を使用してバケットのロックを解除できます。Amazon S3 バケットへのすべてのプリンシパルのアクセスを拒否するように誤って設定したバケットポリシーを削除する方法の詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[AWS Organizations メンバーアカウントで特権タスクを実行する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user-privileged-task.html)」を参照してください。

## AWS マネージドポリシーに対する Amazon S3 更新
<a name="security-iam-awsmanpol-updates"></a>

Amazon S3 の AWS マネージドポリシーの更新に関する詳細を、このサービスがこれらの変更の追跡を開始した以降の分について表示します。


| 変更 | 説明 | 日付 | 
| --- | --- | --- | 
|  Amazon S3 が `S3UnlockBucketPolicy` を追加  |  バケットのロックを解除して、Amazon S3 バケットへのすべてのプリンシパルのアクセスを拒否するように誤って設定したバケットポリシーを削除するために、Amazon S3 は `S3UnlockBucketPolicy` という新しい AWS マネージドポリシーを追加しています。  | 2024 年 11 月 1 日 | 
|  Amazon S3 が `AmazonS3ReadOnlyAccess` に記述許可を追加しました  |  Amazon S3 が `s3:Describe*` 記述許可を `AmazonS3ReadOnlyAccess` に追加しました。  | 2023 年 8 月 11 日 | 
|  Amazon S3 では、S3 Object Lambda のアクセス許可を `AmazonS3FullAccess` および `AmazonS3ReadOnlyAccess` に追加しました。  |  Amazon S3 は、S3 Object Lambda のアクセス権限を含む `AmazonS3FullAccess` および `AmazonS3ReadOnlyAccess` のポリシーを更新しました。  | 2021 年 9 月 27 日 | 
|  Amazon S3 が `AmazonS3ObjectLambdaExecutionRolePolicy` を追加  |  Amazon S3 は、`AmazonS3ObjectLambdaExecutionRolePolicy` と呼ばれる新しい AWS マネージドポリシーを追加しました。これは、Lambda 関数に S3 Object Lambda とやり取りして CloudWatch Logs に書き込むための許可を提供します。  | 2021 年 8 月 18 日 | 
|  Amazon S3 が変更の追跡を開始  |  Amazon S3 が AWS マネージドポリシーの変更の追跡を開始しました。  | 2021 年 8 月 18 日 | 

# アクセスポイントを使用した共有データセットへのアクセスの管理
<a name="access-points"></a>

Amazon S3 アクセスポイントは、S3 にデータを保存するあらゆる AWS サービスやお客様のアプリケーションのデータアクセスを簡素化します。アクセスポイントは、バケット、Amazon FSx for NetApp ONTAP ボリューム、Amazon FSx for OpenZFS ボリュームなどのデータソースにアタッチされた名前付きネットワークエンドポイントです。バケットの操作方法の詳細については、「[汎用バケットの概要](UsingBucket.md)」を参照してください。FSx for NetApp ONTAP の使用の詳細については、「*FSx for ONTAP ユーザーガイド*」の「[Amazon FSx for NetApp ONTAP とは](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/what-is-fsx-ontap.html)」を参照してください。FSx for OpenZFS の使用の詳細については、「*FSx for OpenZFS ユーザーガイド*」の「[Amazon FSx for OpenZFS とは](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/what-is-fsx.html)」を参照してください。

アクセスポイントを使用して、`GetObject` や `PutObject` などの S3 オブジェクトオペレーションを実行できます。各アクセスポイントには、そのアクセスポイントを介したすべてのリクエストに S3 が適用する個別のアクセス許可とネットワークコントロールがあります。各エンドポイントは、リソース、ユーザー、またはその他の条件別に使用を制御できるカスタマイズされたアクセスポイントポリシーを適用します。アクセスポイントがバケットにアタッチされている場合、アクセスポイントポリシーは基盤となるバケットポリシーと連動して機能します。仮想プライベートクラウド (VPC) からのリクエストのみを受け付けるようにアクセスポイントを設定することで、プライベートネットワークへの Amazon S3 データアクセスを制限できます。また、アクセスポイントごとにカスタムのブロックパブリックアクセスを設定することもできます。

**注記**  
アクセスポイントは、オブジェクトに対するオペレーションの実行にのみ使用できます。アクセスポイントを使用して、バケットの削除や S3 レプリケーション設定の作成など、他の Amazon S3 オペレーションを実行することはできません。アクセスポイントをサポートする S3 オペレーションの詳細なリストについては、「[アクセスポイントの互換性](access-points-service-api-support.md)」を参照してください。

このセクションのトピックでは、Amazon S3 アクセスポイントの操作方法について説明します。ディレクトリバケットでのアクセスポイントの使用に関するトピックについては、「[アクセスポイントを使用したディレクトリバケット内の共有データセットへのアクセスの管理](access-points-directory-buckets.md)」を参照してください。

**Topics**
+ [アクセスポイントの命名規則、制約と制限](access-points-restrictions-limitations-naming-rules.md)
+ [ARN、アクセスポイントエイリアス、または仮想ホスト形式の URI を使用したアクセスポイントの参照](access-points-naming.md)
+ [アクセスポイントの互換性](access-points-service-api-support.md)
+ [アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)
+ [アクセスポイントのモニタリングとログ記録](access-points-monitoring-logging.md)
+ [アクセスポイントの作成](creating-access-points.md)
+ [汎用バケットの Amazon S3 アクセスポイントの管理](access-points-manage.md)
+ [汎用バケットでの Amazon S3 アクセスポイントの使用](using-access-points.md)
+ [汎用バケットでの S3 Access Points の使用](access-points-tagging.md)

# アクセスポイントの命名規則、制約と制限
<a name="access-points-restrictions-limitations-naming-rules"></a>

アクセスポイントは、データの管理を簡素化する Amazon FSx ファイルシステムのバケットまたはボリュームにアタッチされた名前付きネットワークエンドポイントです。アクセスポイントの作成時に、名前と作成先の AWS リージョンを選択します。以下のトピックでは、アクセスポイントの命名規則、制限、および制約に関する情報を提供します。

**Topics**
+ [アクセスポイントの命名規則](#access-points-names)
+ [アクセスポイントの制約と制限](#access-points-restrictions-limitations)
+ [Amazon FSx ファイルシステムのボリュームにアタッチされたアクセスポイントの制約と制限](#access-points-restrictions-limitations-fsx)

## アクセスポイントの命名規則
<a name="access-points-names"></a>

アクセスポイントの作成時に、名前と作成先の AWS リージョンを選択します。汎用バケットとは異なり、アクセスポイント名は AWS アカウントまたは AWS リージョン間で一意である必要はありません。同じ AWS アカウントが異なる AWS リージョンに同じ名前のアクセスポイントを作成したり、2 つの異なる AWS アカウントが同じアクセスポイント名を使用する場合があります。ただし、単一の AWS リージョン内で、AWS アカウントが同じ名前のアクセスポイントを 2 つ持つことはできません。

**注記**  
アクセスポイント名を公開する場合は、アクセスポイント名に機密情報を含めないでください。アクセスポイント名は、ドメインネームシステム (DNS) と呼ばれるパブリックアクセス可能なデータベースに公開されます。

アクセスポイント名は DNS に準拠しており、次の条件を満たす必要があります。
+ 単一の AWS アカウントおよび AWS リージョン内で一意である
+ 数字または小文字で始める
+ 3～50 文字の長さにする
+ 名前をハイフン (`-`) で開始または終了することはできません。
+ 下線 (`_`)、大文字、スペース、ピリオド (`.`) は使用しない
+ サフィックス `-s3alias` または `-ext-s3alias` で終わることはできません。これらのサフィックスは、アクセスポイントのエイリアス名用に予約されています。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

## アクセスポイントの制約と制限
<a name="access-points-restrictions-limitations"></a>

Amazon S3 アクセスポイントには以下の制約と制限があります。
+ 各アクセスポイントは、1 つのバケットまたは FSx for OpenZFS ボリュームにのみ関連付けられます。アクセスポイントを作成するときに、これを指定する必要があります。作成後のアクセスポイントを別のバケット、または FSx for OpenZFS ボリュームに関連付けることはできません。ただし、アクセスポイントを削除して、別のアクセスポイントを同じ名前で作成することはできます。
+ アクセスポイントを作成した後、その Virtual Private Cloud (VPC) 設定を変更することはできません。
+ アクセスポイントのポリシーのサイズは 20 KB に制限されています。
+ AWS アカウントごと、AWS リージョンごとに最大 10,000 個のアクセスポイントを作成できます。1 つのリージョンで 1 つのアカウントに 10,000 個を超えるアクセスポイントが必要な場合は、サービスクォータの引き上げをリクエストできます。サービスクォータと引き上げリクエストの詳細については、「*AWS 全般のリファレンス*」の「[AWS Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)」を参照してください。
+ アクセスポイントを S3 レプリケーションのレプリケーション先として使用することはできません。レプリケーションの詳細については、「[リージョン内およびリージョン間でのオブジェクトのレプリケート](replication.md)」を参照してください。
+ Amazon S3 コンソールの **移動**オペレーションの移動元または移動先として S3 アクセスポイントのエイリアスを使用することはできません。
+ アクセスポイントにアドレス指定できるのは、仮想ホスト形式の URL だけです。仮想ホスティング形式のアドレス指定の詳細については、「[Amazon S3 汎用バケットへのアクセス](access-bucket-intro.md)」を参照してください。
+ アクセスポイントの機能を制御する API オペレーション (`PutAccessPoint` や `GetAccessPointPolicy` など) は、クロスアカウントコールをサポートしていません。
+ REST API を使用してアクセスポイントへのリクエストを行う場合は、AWS Signature Version 4 を使用する必要があります。リクエストの認証の詳細については、*Amazon Simple Storage Service API リファレンス*の[リクエストの承認 (AWS Signature Version 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) を参照してください。
+ アクセスポイントは HTTPS 経由のリクエストのみをサポートしています。Amazon S3 は、HTTP 経由で行われたすべてのリクエストに対して HTTP リダイレクトで自動的に応答し、リクエストを HTTPS にアップグレードします。
+ アクセスポイントは匿名アクセスをサポートしていません。
+ アクセスポイントの作成後は、アクセスポイントパブリックアクセスのブロック設定を変更できません。
+ クロスアカウントアクセスポイントは、バケット所有者から権限が付与されるまで、データへのアクセスを許可しません。バケット所有者は常にデータを完全に管理できるため、クロスアカウントアクセスポイントからのリクエストを許可するにはバケットポリシーを更新する必要があります。バケットポリシーの例を表示するには、「[アクセスポイントを使用するための IAM ポリシーの設定](access-points-policies.md)」を参照してください。
+ 1,000 個以上のアクセスポイントを所有している AWS リージョン では、Amazon S3 コンソールでは、アクセスポイントを名前で検索することはできません。
+ Amazon S3 コンソールでクロスアカウントアクセスポイントを表示すると、**[アクセス]** 列に **[不明]** と表示されます。Amazon S3 コンソールは、関連するバケットとオブジェクトにパブリックアクセスが許可されているかどうかを判断できません。特定のユースケースでパブリック設定が必要でない限り、ユーザーとバケット所有者は、アクセスポイントとバケットへのすべてのパブリックアクセスをブロックすることをお勧めします。詳細については、「[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md)」を参照してください。

## Amazon FSx ファイルシステムのボリュームにアタッチされたアクセスポイントの制約と制限
<a name="access-points-restrictions-limitations-fsx"></a>

Amazon FSx ファイルシステムのボリュームにアタッチされたアクセスポイントを使用する場合の具体的な制限は次のとおりです。
+ アクセスポイントを作成するときは、所有している Amazon FSx ファイルシステムのボリュームにのみアクセスポイントをアタッチできます。別の AWS アカウントが所有するボリュームにアクセスポイントをアタッチすることはできません。
+ Amazon FSx ファイルシステムのボリュームにアクセスポイントを作成してアタッチするときに `CreateAccessPoint` API を使用することはできません。[https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateAndAttachS3AccessPoint.html](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateAndAttachS3AccessPoint.html) API を使用する必要があります。
+ Amazon FSx ファイルシステムのボリュームにアタッチされたアクセスポイントを作成または使用する場合、ブロックパブリックアクセス設定をオフにすることはできません。
+ Amazon FSx ファイルシステムのボリュームにアタッチされたアクセスポイントを使用して、S3 コンソールでオブジェクトを一覧表示したり、**[コピー]** または **[移動]** オペレーションを使用したりすることはできません。
+ `CopyObject` は、送信元と送信先が同じアクセスポイントである場合にのみ、FSx for NetApp ONTAP または FSx for OpenZFS ボリュームにアタッチされたアクセスポイントでサポートされます。アクセスポイントの互換性の詳細については、「[アクセスポイントの互換性](access-points-service-api-support.md)」を参照してください。
+ マルチパートアップロードは 5GB に制限されています。
+ FSx for OpenZFS のデプロイタイプとストレージクラスのサポートは、AWS リージョンによって異なります。詳細については、「*OpenZFS ユーザーガイド*」の「[AWS リージョンごとの可用性](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/available-aws-regions.html)」を参照してください。

# ARN、アクセスポイントエイリアス、または仮想ホスト形式の URI を使用したアクセスポイントの参照
<a name="access-points-naming"></a>

アクセスポイントを作成したら、これらのエンドポイントを使用してさまざまなオペレーションを実行できます。アクセスポイントを参照するときは、Amazon リソースネーム (ARN)、アクセスポイントエイリアス、または仮想ホスト形式の URI を使用できます。

**Topics**
+ [アクセスポイント ARN](#access-points-arns)
+ [アクセスポイントエイリアス](#access-points-alias)
+ [仮想ホスティング形式の URI](#accessing-a-bucket-through-s3-access-point)

## アクセスポイント ARN
<a name="access-points-arns"></a>

アクセスポイントには Amazon リソースネーム (ARN) があります。アクセスポイントの ARN は、バケットの ARN と似ていますが、明示的に型指定され、アクセスポイントの AWS リージョンとアクセスポイントの所有者の AWS アカウント ID をエンコードします。ARN の詳細については「*IAM ユーザーガイド*」の「[Amazon リソースネーム (ARN) で AWS リソースを識別する](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)」を参照してください。

アクセスポイント ARN は、以下の形式を使用します。

```
arn:aws:s3:region:account-id:accesspoint/resource
```
+ `arn:aws:s3:us-west-2:123456789012:accesspoint/test` は、リージョン *`us-west-2`* でアカウント *`123456789012`* が所有する `test` と呼ばれるアクセスポイントを表します。
+ `arn:aws:s3:us-west-2:123456789012:accesspoint/*` は、リージョン *`us-west-2`* 内のアカウント *`123456789012`* のすべてのアクセスポイントを表します。

アクセスポイントを介してアクセスされるオブジェクトの ARN は、以下の形式を使用します。

```
arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource
```
+ `arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/unit-01` は、リージョン *`us-west-2`* でアカウント *`123456789012`* が所有する、*`test`* という名前のアクセスポイントを介してアクセスされるオブジェクト *`unit-01`* を表します。
+ `arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/*` は、リージョン *`us-west-2`* のアカウント *`123456789012`* にある、*`test`* という名前のアクセスポイントのすべてのオブジェクトを表します。
+ `arn:aws:s3:us-west-2:123456789012:accesspoint/test/object/unit-01/finance/*` は、リージョン *`us-west-2`* のアカウント *`123456789012`* にある、*`test`* という名前のアクセスポイントのプレフィックス *`unit-01/finance/`* が付いたすべてのオブジェクトを表します。

## アクセスポイントエイリアス
<a name="access-points-alias"></a>

アクセスポイントを作成すると、Amazon S3 はデータアクセス用の Amazon S3 バケット名の代わりに使用できるエイリアスを自動的に生成します。このアクセスポイントエイリアスは、アクセスポイントのデータプレーンオペレーションにおいて、Amazon リソースネーム (ARN) の代わりに使用することができます。これらのオペレーションのリストについては、「[アクセスポイントの互換性](access-points-service-api-support.md)」を参照してください。

アクセスポイントのエイリアス名は、Amazon S3 バケットと同じ名前空間内に作成されます。このエイリアス名は自動的に生成され、変更できません。アクセスポイントのエイリアス名は、有効な Amazon S3 バケット名のすべての要件を満たしており、次の部分で構成されています。

`ACCESS POINT NAME-METADATA-s3alias` (Amazon S3 バケットにアタッチされたアクセスポイントの場合)

`ACCESS POINT NAME-METADATA-ext-s3alias` (S3 以外のバケットデータソースにアタッチされたアクセスポイントの場合)

**注記**  
`-s3alias` および `-ext-s3alias` サフィックスは、アクセスポイントのエイリアス名用に予約されており、バケット名やアクセスポイント名には使用できません。Amazon S3 バケット命名規則の詳細については、「[汎用バケットの命名規則](bucketnamingrules.md)」を参照してください。

### アクセスポイントエイリアスのユースケースと制限事項
<a name="access-points-alias-use-case"></a>

アクセスポイントを採用する場合、大幅なコード変更を必要とせずに、アクセスポイントのエイリアス名を使用できます。

アクセスポイントを作成すると、次の例に示すように、Amazon S3 によってアクセスポイントのエイリアス名が自動的に生成されます。このコマンドを実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws s3control create-access-point --bucket amzn-s3-demo-bucket1 --name my-access-point --account-id 111122223333
{
    "AccessPointArn": "arn:aws:s3:region:111122223333:accesspoint/my-access-point",
    "Alias": "my-access-point-aqfqprnstn7aefdfbarligizwgyfouse1a-s3alias"
}
```

このアクセスポイントのエイリアス名は、あらゆるデータプレーンオペレーションにおいて、Amazon S3 のバケット名の代わりに使用することができます。これらのオペレーションのリストについては、[アクセスポイントの互換性](access-points-service-api-support.md) を参照してください。

次の `get-object` コマンドの AWS CLI 例では、バケットのアクセスポイントエイリアスを使用して、指定されたオブジェクトに関する情報を返します。このコマンドを実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws s3api get-object --bucket my-access-point-aqfqprnstn7aefdfbarligizwgyfouse1a-s3alias --key dir/my_data.rtf my_data.rtf
            
{
    "AcceptRanges": "bytes",
    "LastModified": "2020-01-08T22:16:28+00:00",
    "ContentLength": 910,
    "ETag": "\"00751974dc146b76404bb7290f8f51bb\"",
    "VersionId": "null",
    "ContentType": "text/rtf",
    "Metadata": {}
}
```

#### アクセスポイントエイリアスの制限
<a name="use-ap-alias-limitations"></a>
+ お客様はエイリアスを設定できません。
+ アクセスポイントでは、エイリアスの削除、変更、無効化はできません。
+ このアクセスポイントのエイリアス名は、一部のデータプレーンオペレーションにおいて、Amazon S3 のバケット名の代わりに使用することができます。これらのオペレーションのリストについては、[S3 オペレーションとアクセスポイントの互換性](access-points-service-api-support.md#access-points-operations-support) を参照してください。
+ アクセスポイントのエイリアス名は Amazon S3 コントロールプレーンオペレーションに使用することはできません。Amazon S3 コントロールプレーンオペレーションの一覧は、「*Amazon Simple Storage Service API リファレンス*」の「[Amazon S3 コントロール](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations_AWS_S3_Control.html)」を参照してください。
+ Amazon S3 コンソールの **移動**オペレーションの移動元または移動先として S3 アクセスポイントのエイリアスを使用することはできません。
+ エイリアスはAWS Identity and Access Management (IAM) ポリシーでは使用できません。
+ エイリアスは S3 サーバーアクセスログのログ記録送信先として使用することはできません。
+ エイリアスは AWS CloudTrail ログのログ記録送信先として使用することはできません。
+ Amazon SageMaker AI GroundTruth は、アクセスポイントのエイリアスをサポートしていません。

## 仮想ホスティング形式の URI
<a name="accessing-a-bucket-through-s3-access-point"></a>

アクセスポイントでは、仮想ホスト形式のアドレス指定のみがサポートされます。仮想ホスティング形式の URI では、アクセスポイント名、AWS アカウント、AWS リージョンは URL のドメイン名の一部です。仮想ホスティングの詳細については、「[汎用バケットの仮想ホスティング](VirtualHosting.md)」を参照してください。

アクセスポイントの仮想ホスト形式の URI は、次の形式を使用します。

```
https://access-point-name-account-id.s3-accesspoint.region.amazonaws.com
```

**注記**  
アクセスポイント名にダッシュ (-) 文字が含まれている場合は、URL にダッシュを含めて、アカウント ID の前に別のダッシュを挿入します。例えば、リージョン *`us-west-2`* で アカウント *`123456789012`* が所有する *`finance-docs`* という名前のアクセスポイントを使用する場合、適切な URL は `https://finance-docs-123456789012.s3-accesspoint.us-west-2.amazonaws.com` になります。
S3 アクセスポイントでは、HTTP 経由のアクセスはサポートされていません。アクセスポイントでは HTTPS 経由のセキュアなアクセスのみがサポートされます。

# アクセスポイントの互換性
<a name="access-points-service-api-support"></a>

アクセスポイントを介して、次の Amazon S3 API のサブセットを使用してオブジェクトにアクセスできます。以下に示すすべてのオペレーションで、アクセスポイント ARN またはアクセスポイントエイリアスのいずれかを許可できます。

アクセスポイントを使用してオブジェクトにオペレーションを行う例については、「[汎用バケットでの Amazon S3 アクセスポイントの使用](using-access-points.md)」を参照してください。

## S3 オペレーションとアクセスポイントの互換性
<a name="access-points-operations-support"></a>

次の表は、Amazon S3 オペレーションの一部リストであり、アクセスポイントと互換性があるかどうかを示しています。以下のすべてのオペレーションは、データソースとして S3 バケットを使用するアクセスポイントでサポートされますが、データソースとして FSx for ONTAP または FSx for OpenZFS ボリュームを使用するアクセスポイントでは一部のオペレーションのみがサポートされます。

詳細については、「[https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/access-points-for-fsxn-object-api-support.html](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/access-points-for-fsxn-object-api-support.html)」または「[https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/access-points-object-api-support.html](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/access-points-object-api-support.html)」のアクセスポイントの互換性を参照してください。


| S3 オペレーション | S3 バケットにアタッチされたアクセスポイント | FSx for OpenZFS ボリュームにアタッチされたアクセスポイント | 
| --- | --- | --- | 
|  `[AbortMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)`  |  サポート対象  |  サポート対象  | 
|  `[CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)`  |  サポート対象  |  サポート  | 
|  `[CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)` (同じリージョンへのコピーのみ)  |  サポート対象  |  送信元と送信先が同じアクセスポイントである場合にサポートされます  | 
|  `[CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)`  |  サポート対象  |  サポート対象  | 
|  `[DeleteObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)`  |  サポート対象  |  サポート対象  | 
|  `[DeleteObjects](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)`  |  サポート対象  |  サポート対象  | 
|  `[DeleteObjectTagging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)`  |  サポート対象  |  サポート対象  | 
|  `[GetBucketAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAcl.html)`  |  サポート  |  サポート外  | 
|  `[GetBucketCors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html)`  |  サポート対象  |  サポート外  | 
|  `[GetBucketLocation](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLocation.html)`  |  サポート対象  |  サポート対象  | 
|  `[GetBucketNotificationConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)`  |  サポート  |  サポート外  | 
|  `[GetBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)`  |  サポート対象  |  サポート外  | 
|  `[GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)`  |  サポート対象  |  サポート対象  | 
|  `[GetObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)`  |  サポート  |  サポート外  | 
|  `[GetObjectAttributes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)`  |  サポート対象  |  サポート対象  | 
|  `[GetObjectLegalHold](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html)`  |  サポート  |  サポート外  | 
|  `[GetObjectRetention](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html)`  |  サポート対象  |  サポート外  | 
|  `[GetObjectTagging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)`  |  サポート対象  |  サポート対象  | 
|  `[HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)`  |  サポート対象  |  サポート対象  | 
|  `[HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)`  |  サポート対象  |  サポート対象  | 
|  `[ListMultipartUploads](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)`  |  サポート対象  |  サポート対象  | 
|  `[ListObjects](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)`  |  サポート対象  |  サポート対象  | 
|  `[ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)`  |  サポート対象  |  サポート対象  | 
|  `[ListObjectVersions](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html)`  |  サポート  |  サポート外  | 
|  `[ListParts](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)`  |  サポート対象  |  サポート対象  | 
|  `[Presign](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)`  |  サポート対象  |  サポート対象  | 
|  `[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)`  |  サポート対象  |  サポート対象  | 
|  `[PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)`  |  サポート  |  サポート外  | 
|  `[PutObjectLegalHold](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLegalHold.html)`  |  サポート対象  |  サポート外  | 
|  `[PutObjectRetention](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectRetention.html)`  |  サポート対象  |  サポート外  | 
|  `[PutObjectTagging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)`  |  サポート対象  |  サポート対象  | 
|  `[RestoreObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)`  |  サポート  |  サポート外  | 
|  `[UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)`  |  サポート対象  |  サポート  | 
|  `[UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)` (同じリージョンへのコピーのみ)  |  サポート対象  |  送信元と送信先が同じアクセスポイントである場合にサポートされます  | 

# アクセスポイントを使用するための IAM ポリシーの設定
<a name="access-points-policies"></a>

Amazon S3 アクセスポイントは AWS Identity and Access Management (IAM) リソースポリシーをサポートしています。これにより、リソース、ユーザー、その他の条件別にアクセスポイントの使用を制御できます。アプリケーションやユーザーがアクセスポイントを介してオブジェクトにアクセスできるようにするには、アクセスポイントと基になるバケットまたは Amazon FSx ファイルシステムの両方でリクエストを許可する必要があります。

**重要**  
アクセスポイントポリシーに含めた制限は、そのアクセスポイントを介したリクエストにのみ適用されます。アクセスポイントをバケットにアタッチしても、基盤となるリソースの動作は変わりません。アクセスポイントを介していないバケットに対する既存のすべてのオペレーションは、以前と同じように動作します。

IAM リソースポリシーを使用する際、ポリシーを保存する前に、AWS Identity and Access Management Access Analyzer からのセキュリティ警告、エラー、一般的な警告、および提案を解決してください。IAM Access Analyzer は、IAM [ポリシーの文法](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)と[ベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)に照らしてポリシーチェックを行います。これらのチェックにより、機能的でセキュリティのベストプラクティスに準拠したポリシーを作成するのに、役立つ結果とレコメンデーションが示されます。

IAM Access Analyzer を使用したポリシーの検証の詳細については、「*IAM ユーザーガイド*」の「[IAM Access Analyzer のポリシーの検証](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)」を参照してください。IAM Access Analyzer によって返される警告、エラー、および提案のリストを表示するには、「[IAM Access Analyzer ポリシーチェックリファレンス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html)」を参照してください。

## アクセスポイントのポリシーの例
<a name="access-points-policy-examples"></a>

以下の例は、アクセスポイントを介したリクエストを制御するための IAM ポリシーの作成方法を示しています。

**注記**  
アクセスポイントポリシーで付与されるアクセス許可は、基になるバケットでも同じアクセスが許可される場合にのみ有効です。このためには以下の 2 つの方法があります。  
**(推奨)**「[アクセスポイントへのアクセスコントロールの委任](#access-points-delegating-control)」の説明に従って、バケットからアクセスポイントにアクセスコントロールを委任します。
アクセスポイントポリシーに含まれているものと同じアクセス許可を、基になるバケットのポリシーに追加します。例 1 のアクセスポイントポリシーの例は、必要なアクセスを許可するように基になるバケットポリシーを変更する方法を示しています。

**Example 1 - アクセスポイントポリシーによる付与**  
以下のアクセスポイントポリシーは、アカウント `123456789012` の IAM ユーザー `Jane` に、アカウント *`123456789012`* のアクセスポイント *`my-access-point`* を介して、オブジェクト (プレフィックスが `Jane/` であるオブジェクト) を `GET` および `PUT` するアクセス許可を付与します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Jane"
        },
        "Action": ["s3:GetObject", "s3:PutObject"],
        "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/Jane/*"
    }]
}
```

**注記**  
アクセスポイントポリシーで *`Jane`* に対して効果的にアクセスを許可するには、基になるバケットでも *`Jane`* に対して同じアクセスを許可する必要があります。「[アクセスポイントへのアクセスコントロールの委任](#access-points-delegating-control)」で説明しているように、バケットからアクセスポイントにアクセスコントロールを委任できます。または、基になるバケットに以下のポリシーを追加して、Jane に必要なアクセス許可を付与できます。`Resource` エントリはアクセスポイントとバケットのポリシーでは異なります。  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Jane"
        },
        "Action": ["s3:GetObject", "s3:PutObject"],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/Jane/*"
    }]    
}
```

**Example 2 - タグ条件付きのアクセスポイントポリシー**  
以下のアクセスポイントポリシーは、アカウント *`123456789012`* の IAM ユーザー *`Mateo`* に、アカウント *`123456789012`* のアクセスポイント *`my-access-point`* を介して、オブジェクト (タグキーが *`data`*、値が *`finance`* であるオブジェクト) を `GET` するアクセス許可を付与します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Mateo"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/*",
        "Condition": {
            "StringEquals": {
                "s3:ExistingObjectTag/data": "finance"
            }
        }
    }]
}
```

**Example 3 – バケットのリスト取得を許可するアクセスポイントポリシー**  
以下のアクセスポイントポリシーでは、アカウント *`123456789012`* の IAM ユーザー `Arnav` に、アカウント *`123456789012`* のアクセスポイント *`my-access-point`* の基になるバケットに含まれるオブジェクトを表示するアクセス許可を付与します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/Arnav"
        },
        "Action": "s3:ListBucket",
        "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point"
    }]
}
```

**Example 4 – サービスコントロールポリシー**  
次のサービスコントロールポリシーは、すべての新しいアクセスポイントを 仮想プライベートクラウド (VPC) ネットワークオリジンで作成することを要求します。このポリシーを適用すると、組織内のユーザーは、インターネットからアクセス可能なアクセスポイントを新規に作成できなくなります。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Deny",
        "Action": "s3:CreateAccessPoint",
        "Resource": "*",
        "Condition": {
            "StringNotEquals": {
                "s3:AccessPointNetworkOrigin": "VPC"
            }
        }
    }]
}
```

**Example 5 – S3 オペレーションを VPC ネットワークオリジンに制限するバケットポリシー**  
次のバケットポリシーは、すべての S3 オペレーションからバケット `amzn-s3-demo-bucket` へのアクセスを、VPC をネットワークオリジンとするアクセスポイントに制限します。  
この例で示しているようなステートメントを使用する前に、アクセスポイントでサポートされない機能 (クロスリージョンレプリケーションなど) が不要であることを確認してください。  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:BypassGovernanceRetention",
                "s3:DeleteObject",
                "s3:DeleteObjectTagging",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectLegalHold",
                "s3:GetObjectRetention",
                "s3:GetObjectTagging",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionTagging",
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectLegalHold",
                "s3:PutObjectRetention",
                "s3:PutObjectTagging",
                "s3:PutObjectVersionAcl",
                "s3:PutObjectVersionTagging",
                "s3:RestoreObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:AccessPointNetworkOrigin": "VPC"
                }
            }
        }
    ]
}
```

## 条件キー
<a name="access-points-condition-keys"></a>

S3 アクセスポイントには、IAM ポリシーでリソースへのアクセスを制御するために使用できる条件キーがあります。以下の条件キーは IAM ポリシーの一部にすぎません。すべてのポリシーの例については、「[アクセスポイントのポリシーの例](#access-points-policy-examples)」、「[アクセスポイントへのアクセスコントロールの委任](#access-points-delegating-control)」および「[クロスアカウントアクセスポイントへのアクセス許可の付与](#access-points-cross-account)」を参照してください。

**`s3:DataAccessPointArn`**  
この例は、アクセスポイントの ARN の照合に使用できる文字列です。次の例では、リージョン *`us-west-2`* の AWS アカウント *`123456789012`* のすべてのアクセスポイントを照合します。  

```
"Condition" : {
    "StringLike": {
        "s3:DataAccessPointArn": "arn:aws:s3:us-west-2:123456789012:accesspoint/*"
    }
}
```

**`s3:DataAccessPointAccount`**  
この例は、アクセスポイントの所有者のアカウント ID を照合するために使用できる文字列演算子です。次の例では、AWS アカウント *`123456789012`* が所有するすべてのアクセスポイントを照合します。  

```
"Condition" : {
    "StringEquals": {
        "s3:DataAccessPointAccount": "123456789012"
    }
}
```

**`s3:AccessPointNetworkOrigin`**  
この例は、ネットワークオリジン (`Internet` または `VPC`) の照合に使用できる文字列演算子です。次の例では、VPC オリジンを持つアクセスポイントのみを照合します。  

```
"Condition" : {
    "StringEquals": {
        "s3:AccessPointNetworkOrigin": "VPC"
    }
}
```

Amazon S3 での条件キーの使用についての詳細は、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

## アクセスポイントへのアクセスコントロールの委任
<a name="access-points-delegating-control"></a>

バケットのアクセスコントロールをバケットのアクセスポイントに委任できます。以下のバケットポリシーの例では、バケット所有者のアカウントが所有するすべてのアクセスポイントへのフルアクセスを許可しています。したがって、このバケットへのすべてのアクセスは、そのアクセスポイントにアタッチされているポリシーによってコントロールされます。バケットへの直接アクセスを必要としないすべてのユースケースでは、この方法でバケットを設定することをお勧めします。

**Example 6 - アクセスコントロールをアクセスポイントに委任するバケットポリシー**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS": "*" },
        "Action" : "*",
        "Resource" : [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*"],
        "Condition": {
            "StringEquals" : { "s3:DataAccessPointAccount" : "111122223333" }
        }
    }]
}
```

## クロスアカウントアクセスポイントへのアクセス許可の付与
<a name="access-points-cross-account"></a>

別のアカウントが所有するバケットへのアクセスポイントを作成するには、まずバケット名とアカウント所有者 ID を指定してアクセスポイントを作成する必要があります。次に、バケット所有者は、アクセスポイントからのリクエストを許可するようにバケットポリシーを更新する必要があります。アクセスポイントの作成は、アクセスポイントがバケットの内容へのアクセスを提供しないという点で DNS CNAME の作成と似ています。すべてのバケットアクセスはバケットポリシーによって制御されます。次のバケットポリシーの例では、信頼できる AWS アカウント が所有するアクセスポイントからのバケットで、`GET` および `LIST` リクエストを許可します。

*Bucket ARN* は、バケットの ARN に置き換えます。

**Example 7 — 別の AWS アカウント にアクセス許可を委任するバケットポリシー**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS": "*" },
        "Action" : ["s3:GetObject","s3:ListBucket"],
        "Resource" : ["arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*"],
        "Condition": {
            "StringEquals" : { "s3:DataAccessPointAccount" : "Access point owner's account ID" }
        }
    }]
}
```
クロスアカウントアクセスポイントは、S3 バケットにアタッチされたアクセスポイントでのみ使用できます。別の AWS アカウントが所有する Amazon FSx ファイルシステムのボリュームにアクセスポイントをアタッチすることはできません。

# アクセスポイントのモニタリングとログ記録
<a name="access-points-monitoring-logging"></a>

Amazon S3 は、アクセスポイントを介して行われたリクエストと、アクセスポイントを管理する API オペレーションに対するリクエスト (`CreateAccessPoint` や `GetAccessPointPolicy` など) をログに記録します。使用パターンをモニタリングおよび管理するために、アクセスポイントの Amazon CloudWatch Logs リクエストメトリクスを設定することもできます。

**Topics**
+ [CloudWatch リクエストメトリクス](#request-metrics-access-points)
+ [AWS CloudTrail アクセスポイントを介して行われたリクエストのログ](#logging-access-points)

## CloudWatch リクエストメトリクス
<a name="request-metrics-access-points"></a>

アクセスポイントを使用しているアプリケーションのパフォーマンスを理解して向上させるために、Amazon S3 リクエストメトリクスで CloudWatch を使用することができます。リクエストメトリクスは、 Amazon S3 リクエストをモニタリングし、オペレーションの問題をすばやく特定して対応するのに役立ちます。

デフォルトでは、 リクエストメトリクスはバケットレベルで利用可能です。ただし、共有プレフィクス、オブジェクトタグ、またはアクセスポイントを使用して、リクエストメトリクスのフィルタを定義できます。アクセスポイントフィルタを作成すると、リクエストメトリクスの設定に、指定したアクセスポイントへのリクエストが含まれます。メトリクスの受信、アラームの設定、およびダッシュボードへのアクセスにより、このアクセスポイントで実行されたオペレーションをリアルタイムで表示できます。

コンソールで設定するか、Amazon S3 API を使用して、リクエストメトリクスをオプトインする必要があります。リクエストメトリクスは、処理のレイテンシーの後に 1 分間隔で使用できます。リクエストメトリクスは、CloudWatch カスタムメトリクスと同じ料金レートで請求されます。詳細については、「[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。

アクセスポイントでフィルタリングするリクエストメトリクスの設定を作成する方法は、[プレフィックス、オブジェクトタグ、またはアクセスポイントでのメトリクス設定の作成](metrics-configurations-filter.md) を参照してください。

## AWS CloudTrail アクセスポイントを介して行われたリクエストのログ
<a name="logging-access-points"></a>

 サーバーアクセスロギングおよび AWS CloudTrail を使用して、アクセスポイントを介して行われたリクエストと、アクセスポイントを管理する API に対するリクエスト (`CreateAccessPoint` や `GetAccessPointPolicy,` など) をログに記録します。



アクセスポイントを介して行われたリクエストの CloudTrail ログエントリには、ログの `resources` セクションにアクセスポイント ARN が含まれます。

例えば、次の設定があるとします。
+ *`my-image.jpg`* という名前のオブジェクトを含むリージョン *`us-west-2`* の *`amzn-s3-demo-bucket1`* という名前のバケット
+ *`amzn-s3-demo-bucket1`* に関連付けられた *`my-bucket-ap`* という名前のアクセスポイント
+ の AWS アカウント ID*`123456789012`*

以下の例は、`resources`前述の設定の CloudTrail ログエントリの セクションを示しています。

```
"resources": [
        {"type": "AWS::S3::Object",
            "ARN": "arn:aws:s3:::amzn-s3-demo-bucket1/my-image.jpg"
        },
        {"accountId": "123456789012",
            "type": "AWS::S3::Bucket",
            "ARN": "arn:aws:s3:::amzn-s3-demo-bucket1"
        },
        {"accountId": "123456789012",
            "type": "AWS::S3::AccessPoint",
            "ARN": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-bucket-ap"
        }
    ]
```

Amazon FSx ファイルシステムのボリュームにアタッチされたアクセスポイントを使用している場合、CloudTrail ログエントリの `resources` セクションは異なります。例えば、次のようになります。

```
"resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::FSx::Volume",
            "ARN": "arn:aws:fsx:us-east-1:123456789012:volume/fs-0123456789abcdef9/fsvol-01234567891112223"
        }
    ]
```

S3 サーバーのアクセスログの詳細については、「[サーバーアクセスログによるリクエストのログ記録](ServerLogs.md)」を参照してください。AWS CloudTrail の詳細については、[AWS CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)の *AWS CloudTrail とは*を参照してください。

# アクセスポイントの作成
<a name="creating-access-points"></a>

S3 アクセスポイントは、AWS マネジメントコンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して作成できます。アクセスポイントは、バケット、Amazon FSx for ONTAP ボリューム、Amazon FSx for OpenZFS ボリュームなどのデータソースにアタッチされた名前付きネットワークエンドポイントです。

デフォルトでは、リージョンごとに AWS アカウントあたり最大 10,000 個のアクセスポイントを作成できます。1 つのリージョンで 1 つのアカウントに 10,000 個を超えるアクセスポイントが必要な場合は、サービスクォータの引き上げをリクエストできます。サービスクォータと引き上げリクエストの詳細については、「*AWS 全般のリファレンス*」の「[AWS Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)」を参照してください。

**Topics**
+ [S3 バケットを使用してアクセスポイントを作成する](#create-access-points)
+ [Amazon FSx を使用してアクセスポイントを作成する](#create-access-points-with-fsx)
+ [Virtual Private Cloud に制限されたアクセスポイントの作成](access-points-vpc.md)
+ [汎用バケットのアクセスポイントへのパブリックアクセスの管理](access-points-bpa-settings.md)

## S3 バケットを使用してアクセスポイントを作成する
<a name="create-access-points"></a>

アクセスポイントは、1 つの Amazon S3 汎用バケットにのみ関連付けられます。AWS アカウント でバケットを使用する場合は、まずバケットを作成する必要があります。バケットの作成の詳細については、[Amazon S3 汎用バケットの作成、設定、操作](creating-buckets-s3.md)」を参照してください。

バケット名とバケット所有者のアカウント ID がわかっていれば、別の AWS アカウント のバケットに関連するクロスアカウントアクセスポイントを作成することもできます。ただし、クロスアカウントアクセスポイントを作成しても、バケット所有者からアクセス権が付与されるまで、バケット内のデータへのアクセスは許可されません。バケット所有者は、バケットポリシーを通じて、アクセスポイント所有者のアカウント (お客様のアカウント) にバケットへのアクセス権を付与する必要があります。詳細については、「[クロスアカウントアクセスポイントへのアクセス許可の付与](access-points-policies.md#access-points-cross-account)」を参照してください。

### S3 コンソールの使用
<a name="access-points-create-ap"></a>

**アクセスポイントを作成するには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントを作成するリージョンを選択します。アクセスポイントは、関連付けられたバケットと同じリージョンに作成する必要があります。

1. 左のナビゲーションペインで、[**アクセスポイント**] を選択します。

1. [**アクセスポイント**] ページで、[**アクセスポイントの作成**] を選択します。

1. **[アクセスポイント名]** フィールドに、アクセスポイントの名前を入力します。アクセスポイントの名前付けの詳細については、「[アクセスポイントの命名規則](access-points-restrictions-limitations-naming-rules.md#access-points-names)」を参照してください。

1. **[データソース]** には、アクセスポイントで使用する S3 バケットを指定します。

   アカウントのバケットを使用するには、**[このアカウント内のバケットを選択]** を選択し、バケット名を入力または参照します。

   別の AWS アカウント でバケットを使用するには、**[別のアカウントのバケットを指定]** を選択し、バケットの AWS アカウント ID と名前を入力します。別の AWS アカウント でバケットを使用している場合は、バケット所有者がアクセスポイントからのリクエストを許可するようにバケットポリシーを更新する必要があります。バケットポリシーの例については、「[クロスアカウントアクセスポイントへのアクセス許可の付与](access-points-policies.md#access-points-cross-account)」を参照してください。
**注記**  
FSx for OpenZFS ボリュームをデータソースとして使用する方法については、「[Amazon FSx を使用してアクセスポイントを作成する](#create-access-points-with-fsx)」を参照してください。

1. **[インターネット]** または **[仮想プライベートクラウド (VPC)]** のいずれかの **[ネットワークオリジン]** を選択します。**[仮想プライベートクラウド (VPC)]** を選択した場合は、アクセスポイントで使用する **[VPC ID]** を入力します。

   アクセスポイントのネットワークオリジンの詳細については、「[Virtual Private Cloud に制限されたアクセスポイントの作成](access-points-vpc.md)」を参照してください。

1. [**Block Public Access settings for this Access Point**] (このアクセスポイントのパブリックアクセス設定をブロック) で、アクセスポイントに適用するパブリックアクセスブロック設定を選択します。デフォルトでは、新しいアクセスポイントに対してすべてのブロックパブリックアクセス設定が有効になります。これらの設定を特に無効にする必要がある場合を除いて、すべての設定を有効にしておくことをお勧めします。
**注記**  
アクセスポイントの作成後は、アクセスポイントパブリックアクセスのブロック設定を変更できません。

   アクセスポイントで Amazon S3 パブリックアクセスブロックを使用することについて詳細は、「[汎用バケットのアクセスポイントへのパブリックアクセスの管理](access-points-bpa-settings.md)」を参照してください。

1. (オプション) [**Access Point policy - *optional***] (アクセスポイントポリシー - オプション) で、アクセスポイントポリシーを指定します。ポリシーを保存する前に、セキュリティ警告、エラー、一般的な警告、および提案を解決してください。アクセスポイントポリシーの指定の詳細については、「[アクセスポイントのポリシーの例](access-points-policies.md#access-points-policy-examples)」を参照してください。

1. [**アクセスポイントの作成**] を選択します。

### AWS CLI の使用
<a name="creating-access-point-cli"></a>

以下の例では、アカウント *`111122223333`* のバケット *`amzn-s3-demo-bucket`* に「*`example-ap`*」という名前のアクセスポイントを作成します。アクセスポイントを作成するには、以下を指定するリクエストを Amazon S3 に送信します。
+ アクセスポイント名。命名規則の詳細については、「[アクセスポイントの命名規則](access-points-restrictions-limitations-naming-rules.md#access-points-names)」を参照してください。
+ アクセスポイントを関連付けるバケットの名前。
+ アクセスポイントを所有している AWS アカウントのアカウント ID。

```
aws s3control create-access-point --name example-ap --account-id 111122223333 --bucket amzn-s3-demo-bucket
```

別の AWS アカウント でバケットを使用してアクセスポイントを作成する場合は、`--bucket-account-id` パラメータを含めてください。次のコマンド例では、AWS アカウント *`444455556666`* にあるバケット *`amzn-s3-demo-bucket2`* を使用してAWS アカウント *`111122223333`* にアクセスポイントを作成します。

```
aws s3control create-access-point --name example-ap --account-id 111122223333 --bucket amzn-s3-demo-bucket --bucket-account-id 444455556666
```

### REST API の使用
<a name="creating-access-point-rest-api"></a>

REST API を使用してアクセスポイントを作成できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html)」を参照してください。

## Amazon FSx を使用してアクセスポイントを作成する
<a name="create-access-points-with-fsx"></a>

Amazon FSx コンソール、AWS CLI、または API を使用して、アクセスポイントを作成して FSx for OpenZFS ボリュームにアタッチできます。アタッチしたら、S3 オブジェクト API を使用してファイルデータにアクセスできます。データは引き続き Amazon FSx ファイルシステムに存在し、既存のワークロードから直接アクセスできます。バックアップ、スナップショット、ユーザーおよびグループのクォータ、圧縮など、すべての FSx for OpenZFS ストレージ管理機能を使用してストレージを管理し続けます。

アクセスポイントを作成して FSx for OpenZFS ボリュームにアタッチする手順については、「*FSx for OpenZFS ユーザーガイド*」の「[アクセスポイントの作成](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/create-access-points.html)」を参照してください。

# Virtual Private Cloud に制限されたアクセスポイントの作成
<a name="access-points-vpc"></a>

アクセスポイントを作成するときに、そのアクセスポイントをインターネットからアクセス可能にするか、特定の 仮想プライベートクラウド (VPC) からのリクエストにのみアクセスを制限するかを指定できます。インターネットからアクセス可能なアクセスポイントは、`Internet` をネットワークオリジンとすると言います。この種のアクセスポイントは、インターネット上のどこからでも利用できます。ただし、このアクセスポイントや、基となるデータソース、関連リソース (リクエストされたオブジェクトなど) に関する他のすべてのアクセス制限に従うことを条件とします。指定された VPC からのみアクセス可能なアクセスポイントは `VPC` をネットワークオリジンとします。Amazon S3 は、アクセスポイントに対するその VPC からのリクエストを除いて、他のすべてのリクエストを拒否します。

**重要**  
アクセスポイントのネットワークオリジンは、アクセスポイントの作成時にのみ指定できます。アクセスポイントの作成後は、そのネットワークオリジンを変更できません。

アクセスポイントを VPC からのアクセスにのみ制限するには、アクセスポイントを作成するリクエストに `VpcConfiguration` パラメータを含めます。`VpcConfiguration` パラメータには、アクセスポイントを使用できるようにする VPC ID を指定します。アクセスポイントを介してリクエストが行われた場合、リクエストは VPC から発信されている必要があり、そうでない場合、Amazon S3 はそれを拒否します。

アクセスポイントのネットワークオリジンを取得するには、AWS CLI、AWS SDK、または REST API を使用します。アクセスポイントに VPC 設定が指定されている場合、そのネットワークオリジンは `VPC` です。それ以外の場合、アクセスポイントのネットワークオリジンは `Internet` です。

## 例: アクセスポイントの作成と VPC ID への制限
<a name="access-points-vpc-example1"></a>

次の例では、アカウント `123456789012` のバケット `amzn-s3-demo-bucket` に対して `vpc-1a2b3c` VPC からのアクセスのみを許可する `example-vpc-ap` という名前のアクセスポイントを作成します。次に、新しいアクセスポイントのネットワークオリジンが `VPC` であることを確認します。

------
#### [ AWS CLI ]

```
aws s3control create-access-point --name example-vpc-ap --account-id 123456789012 --bucket amzn-s3-demo-bucket --vpc-configuration VpcId=vpc-1a2b3c
```

```
aws s3control get-access-point --name example-vpc-ap --account-id 123456789012

{
    "Name": "example-vpc-ap",
    "Bucket": "amzn-s3-demo-bucket",
    "NetworkOrigin": "VPC",
    "VpcConfiguration": {
        "VpcId": "vpc-1a2b3c"
    },
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": true,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    },
    "CreationDate": "2019-11-27T00:00:00Z"
}
```

------

VPC でアクセスポイントを使用するには、VPC エンドポイントのアクセスポリシーを変更する必要があります。VPC エンドポイントは、VPC から Amazon S3 へのトラフィックフローを許可します。これらのエンドポイントには、VPC 内のリソースに対して Amazon S3 とのやり取りを許可する方法を制御するアクセスコントロールポリシーがあります。アクセスポイントを経由した VPC から Amazon S3 へのリクエストが成功するのは、VPC エンドポイントポリシーがアクセスポイントおよび基となるバケットの両方へのアクセスを許可した場合のみです。

**注記**  
VPC 内でのみリソースにアクセスできるようにするには、VPC エンドポイントエンドポイントに対して[プライベートホストゾーン](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html)を必ず作成してください。プライベートホストゾーンを使うには、[VPC 設定を変更](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)して、[VPC のネットワーク属性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support) `enableDnsHostnames` と `enableDnsSupport` を `true` に設定してください。

次のポリシーステートメントの例では、`GetObject` という名前のバケットと `awsexamplebucket1` という名前のアクセスポイントに対する `example-vpc-ap` の呼び出しを許可するように VPC エンドポイントを設定します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Principal": "*",
        "Action": [
            "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::awsexamplebucket1/*",
            "arn:aws:s3:us-west-2:123456789012:accesspoint/example-vpc-ap/object/*"
        ]
    }]
}
```

------

**注記**  
この例の `"Resource"` 宣言では、Amazon リソースネーム (ARN) を使用してアクセスポイントを指定します。アクセスポイントの ARN の詳細については、「[ARN、アクセスポイントエイリアス、または仮想ホスト形式の URI を使用したアクセスポイントの参照](access-points-naming.md)」を参照してください。

VPC エンドポイントポリシーの詳細については、*VPC ユーザーガイド*の「[Amazon S3 のエンドポイントポリシーの使用](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3)」を参照してください。

VPC エンドポイントを使用してアクセスポイントを作成するチュートリアルについては、「[Managing Amazon S3 access with VPC endpoints and access points](https://aws.amazon.com/blogs/storage/managing-amazon-s3-access-with-vpc-endpoints-and-s3-access-points/)」を参照してください。

## 例: FSx for OpenZFS ボリュームにアタッチされたアクセスポイントを作成して VPC ID に制限する
<a name="access-points-vpc-example2"></a>

Amazon FSx コンソール、AWS CLI、または API を使用して、FSx for OpenZFS ボリュームにアタッチされたアクセスポイントを作成できます。アタッチしたら、S3 オブジェクト API を使用して、指定された VPC からファイルデータにアクセスできます。

FSx for OpenZFS ボリュームにアタッチされたアクセスポイントを作成および制限する手順については、「*FSx for OpenZFS ユーザーガイド*」の「[仮想プライベートクラウド (VPC) に制限されたアクセスポイントの作成](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/create-access-points.html)」を参照してください。

## 例: FSX for ONTAP ボリュームにアタッチされたアクセスポイントを作成して VPC ID に制限する
<a name="access-points-vpc-example3"></a>

Amazon FSx コンソール、AWS CLI、または API を使用して、FSx for ONTAP ボリュームにアタッチされたアクセスポイントを作成できます。アタッチしたら、S3 オブジェクト API を使用して、指定された VPC からファイルデータにアクセスできます。

FSx for ONTAP ボリュームにアタッチされたアクセスポイントを作成および制限する手順については、「[https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/access-points-for-fsxn-vpc.html](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/access-points-for-fsxn-vpc.html)」を参照してください。

# 汎用バケットのアクセスポイントへのパブリックアクセスの管理
<a name="access-points-bpa-settings"></a>

Amazon S3 アクセスポイントは、アクセスポイントごとに独立した*ブロックパブリックアクセス*設定をサポートしています。アクセスポイントを作成するときに、そのアクセスポイントに適用するブロックパブリックアクセス設定を指定できます。アクセスポイントを経由するすべてのリクエストについて、Amazon S3 は、そのアクセスポイント、基となるバケット、およびバケット所有者のアカウントに関するパブリックアクセスブロック設定を評価します。これらの設定のいずれかで、リクエストをブロックする必要があることが示されると、Amazon S3 はリクエストを拒否します。

S3 のブロックパブリックアクセス機能の詳細については、「[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md)」を参照してください。

**重要**  
デフォルトでは、アクセスポイントに対してすべてのブロックパブリックアクセス設定が有効になります。アクセスポイント作成時に、不要な設定を明示的に無効にする必要があります。
Amazon FSx ファイルシステムにアタッチされたアクセスポイントを作成または使用する場合、ブロックパブリックアクセス設定をオフにすることはできません。
アクセスポイントの作成後は、アクセスポイントパブリックアクセスのブロック設定を変更できません。

**Example**  
***例: カスタムのブロックパブリックアクセス設定を使用してアクセスポイントを作成する***  
この例では、デフォルトではないブロックパブリックアクセス設定を使用して、アカウント `example-ap` のバケット `amzn-s3-demo-bucket` に対して`123456789012` という名前のアクセスポイントを作成します。次に、新しいアクセスポイントの設定を取得して、ブロックパブリックアクセス設定を確認します。  

```
aws s3control create-access-point --name example-ap --account-id 123456789012 --bucket amzn-s3-demo-bucket--public-access-block-configuration BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=true,RestrictPublicBuckets=true
```

```
aws s3control get-access-point --name example-ap --account-id 123456789012

{
    "Name": "example-ap",
    "Bucket": "amzn-s3-demo-bucket",
    "NetworkOrigin": "Internet",
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": false,
        "IgnorePublicAcls": false,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    },
    "CreationDate": "2019-11-27T00:00:00Z"
}
```

# 汎用バケットの Amazon S3 アクセスポイントの管理
<a name="access-points-manage"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットの Amazon S3 アクセスポイントを管理する方法について説明します。FSx for OpenZFS ボリュームにアタッチされたアクセスポイントの管理については、「*FSx for OpenZFS ユーザーガイド*」の「[Amazon S3 アクセスポイントの管理](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/access-points-manage.html)」を参照してください。

**注記**  
アクセスポイントは、オブジェクトに対するオペレーションの実行にのみ使用できます。アクセスポイントを使用して、バケットの削除や S3 レプリケーション設定の作成など、他の Amazon S3 オペレーションを実行することはできません。アクセスポイントをサポートする S3 オペレーションの詳細なリストについては、「[アクセスポイントの互換性](access-points-service-api-support.md)」を参照してください。

**Topics**
+ [汎用バケットのアクセスポイントを一覧表示する](access-points-list.md)
+ [汎用バケットのアクセスポイントの詳細を表示する](access-points-details.md)
+ [汎用バケットのアクセスポイントを削除する](access-points-delete.md)

# 汎用バケットのアクセスポイントを一覧表示する
<a name="access-points-list"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイントを一覧表示する方法について説明します。

## S3 コンソールの使用
<a name="access-points-list-console"></a>

**AWS アカウント内のすべてのアクセスポイントを一覧表示するには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

## の使用AWS CLI
<a name="access-points-list-cli"></a>

次の `list-access-points` コマンド例は、AWS CLI を使用してアクセスポイントを一覧表示する方法を示しています。

次のコマンドは、AWS アカウント *111122223333* のアクセスポイントを一覧表示します。

```
aws s3control list-access-points --account-id 111122223333      
```

次のコマンドは、バケット *amzn-s3-demo-bucket* にアタッチされている AWS アカウント *111122223333* のアクセスポイントを一覧表示します。

```
aws s3control list-access-points --account-id 111122223333 --bucket amzn-s3-demo-bucket     
```

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

## REST API の使用
<a name="access-points-list-rest"></a>

REST API を使用してアクセスポイントを一覧表示できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPoints.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPoints.html)」を参照してください。

# 汎用バケットのアクセスポイントの詳細を表示する
<a name="access-points-details"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイントの詳細を表示する方法について説明します。

## S3 コンソールの使用
<a name="access-points-details-console"></a>

**AWS アカウント内のアクセスポイントの詳細を表示するには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

1. **[プロパティ]** タブを選択すると、選択したアクセスポイントのアクセスポイントデータソース、アカウント ID、AWS リージョン、作成日、ネットワークオリジン、S3 URI、ARN、アクセスポイントエイリアスが表示されます。

1. **[アクセス許可]** タブを選択すると、選択したアクセスポイントの [ブロックパブリックアクセス] 設定とアクセスポイントポリシーが表示されます。
**注記**  
アクセスポイントの作成後は、アクセスポイントの [ブロックパブリックアクセス] 設定を変更することはできません。

## の使用AWS CLI
<a name="access-points-details-cli"></a>

次の `get-access-point` コマンド例は、AWS CLI を使用してアクセスポイントの詳細を表示する方法を示しています。

次のコマンドは、S3 バケット *amzn-s3-demo-bucket* にアタッチされた AWS アカウント *111122223333* のアクセスポイント *my-access-point* の詳細を一覧表示します。

```
aws s3control get-access-point --name my-access-point --account-id 111122223333         
```

出力例:

```
{
    "Name": "my-access-point",
    "Bucket": "amzn-s3-demo-bucket",
    "NetworkOrigin": "Internet",
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": true,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    },
    "CreationDate": "2016-08-29T22:57:52Z",
    "Alias": "my-access-point-u1ny6bhm7moymqx8cuon8o1g4mwikuse2a-s3alias",
    "AccessPointArn": "arn:aws:s3:AWS リージョン:111122223333:accesspoint/my-access-point",
    "Endpoints": {
        "ipv4": "s3-accesspoint.AWS リージョン.amazonaws.com",
        "fips": "s3-accesspoint-fips.AWS リージョン.amazonaws.com",
        "fips_dualstack": "s3-accesspoint-fips.dualstack.AWS リージョン.amazonaws.com",
        "dualstack": "s3-accesspoint.dualstack.AWS リージョン.amazonaws.com"
    },
    "BucketAccountId": "111122223333"
}
```

次のコマンドは、AWS アカウント *444455556666* のアクセスポイント *example-fsx-ap* の詳細を一覧表示します。このアクセスポイントは Amazon FSx ファイルシステムにアタッチされます。

```
aws s3control get-access-point --name example-fsx-ap --account-id 444455556666         
```

出力例:

```
{
    "Name": "example-fsx-ap",
    "Bucket": "",
    "NetworkOrigin": "Internet",
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": true,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    },
    "CreationDate": "2025-01-19T14:16:12Z",
    "Alias": "example-fsx-ap-qrqbyebjtsxorhhaa5exx6r3q7-ext-s3alias",
    "AccessPointArn": "arn:aws:s3:AWS リージョン:444455556666:accesspoint/example-fsx-ap",
    "Endpoints": {
        "ipv4": "s3-accesspoint.AWS リージョン.amazonaws.com",
        "fips": "s3-accesspoint-fips.AWS リージョン.amazonaws.com",
        "fips_dualstack": "s3-accesspoint-fips.dualstack.AWS リージョン.amazonaws.com",
        "dualstack": "s3-accesspoint.dualstack.AWS リージョン.amazonaws.com"
    },
    "DataSourceId": "arn:aws::fsx:AWS リージョン:444455556666:file-system/fs-5432106789abcdef0/volume/vol-0123456789abcdef0",
    "DataSourceType": "FSX_OPENZFS"
}
```

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

## REST API の使用
<a name="access-points-details-rest"></a>

REST API を使用して、アクセスポイントの詳細を表示できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html)」を参照してください。

# 汎用バケットのアクセスポイントを削除する
<a name="access-points-delete"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイントを削除する方法について説明します。

## S3 コンソールの使用
<a name="access-points-delete-console"></a>

**AWS アカウント内のアクセスポイントを削除するには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

1. **[アクセスポイント]** ページから、**[削除]** を選択して、選択したアクセスポイントを削除します。

1. 削除を確認するには、アクセスポイントの名前を入力し、**[削除]** を選択します。

## の使用AWS CLI
<a name="access-points-delete-cli"></a>

次の `delete-access-point` コマンド例は、AWS CLI を使用してアクセスポイントを削除する方法を示しています。

次のコマンドは、AWS アカウント *111122223333* のアクセスポイント *my-access-point* を削除します。

```
aws s3control delete-access-point --name my-access-point --account-id 111122223333      
```

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

## REST API の使用
<a name="access-points-delete-rest"></a>

REST API を使用して、アクセスポイントの詳細を表示できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html)」を参照してください。

# 汎用バケットでの Amazon S3 アクセスポイントの使用
<a name="using-access-points"></a>

以下の例は、Amazon S3 の互換性のあるオペレーションで汎用バケットのアクセスポイントを使用する方法を示しています。

**注記**  
S3 は、すべてのアクセスポイントに対してアクセスポイントエイリアスを自動的に生成します。これらのエイリアスは、バケット名を使用してオブジェクトレベルのオペレーションを実行する任意の場所で使用できます。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

汎用バケットのアクセスポイントは、オブジェクトに対するオペレーションの実行にのみ使用できます。アクセスポイントを使用して、バケットの変更や削除など、他の Amazon S3 オペレーションを実行することはできません。アクセスポイントをサポートする S3 オペレーションの詳細なリストについては、「[アクセスポイントの互換性](access-points-service-api-support.md)」を参照してください。

**Topics**
+ [汎用バケットのアクセスポイントを介してオブジェクトを一覧表示する](list-object-ap.md)
+ [汎用バケットのアクセスポイントを介してオブジェクトをダウンロードする](get-object-ap.md)
+ [汎用バケットのアクセスポイントを介してアクセスコントロールリスト (ACL) を設定する](put-acl-permissions-ap.md)
+ [汎用バケットのアクセスポイントを介してオブジェクトをアップロードする](put-object-ap.md)
+ [汎用バケットのアクセスポイントを介してタグセットを追加する](add-tag-set-ap.md)
+ [汎用バケットのアクセスポイントを介してオブジェクトを削除する](delete-object-ap.md)

# 汎用バケットのアクセスポイントを介してオブジェクトを一覧表示する
<a name="list-object-ap"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイントを介してオブジェクトを一覧表示する方法について説明します。

## S3 コンソールの使用
<a name="list-object-ap-console"></a>

**AWS アカウントのアクセスポイント経由でオブジェクトを一覧表示するには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

1. **[オブジェクト]** タブで、アクセスポイント経由でアクセスするオブジェクトの名前を表示できます。アクセスポイントを使用する際は、アクセスポイントのアクセス許可で許可されているオブジェクト操作のみを実行できます。
**注記**  
コンソールビューには、バケット内のすべてのオブジェクトが常に表示されます。この手順で説明しているようにアクセスポイントを使用すると、これらのオブジェクトに実行できるオペレーションは制限されますが、オブジェクトがバケット内に存在するかどうかの確認は制限されません。
AWS マネジメントコンソールでは、仮想プライベートクラウド (VPC) アクセスポイントを使用したバケットリソースへのアクセスはサポートされていません。VPC アクセスポイントからバケットのリソースにアクセスするには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用します。

## の使用AWS CLI
<a name="list-object-ap-cli"></a>

次の `list-objects-v2` コマンド例は、AWS CLI を使用してアクセスポイント経由でオブジェクトを一覧表示する方法を示しています。

次のコマンドは、アクセスポイント *my-access-point* を使用して AWS アカウント *111122223333* のオブジェクトを一覧表示します。

```
aws s3api list-objects-v2 --bucket arn:aws:s3:AWS リージョン:111122223333:accesspoint/my-access-point      
```

**注記**  
S3 は、すべてのアクセスポイントに対してアクセスポイントエイリアスを自動的に生成します。これらのエイリアスは、バケット名を使用してオブジェクトレベルのオペレーションを実行する任意の場所で使用できます。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

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

## REST API の使用
<a name="list-object-ap-rest"></a>

REST API を使用してアクセスポイントを一覧表示できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)」を参照してください。

# 汎用バケットのアクセスポイントを介してオブジェクトをダウンロードする
<a name="get-object-ap"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイントを介してオブジェクトをダウンロードする方法について説明します。

## S3 コンソールの使用
<a name="get-object-ap-console"></a>

**AWS アカウント内のアクセスポイント経由でオブジェクトをダウンロードするには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

1. **[オブジェクト]** タブで、ダウンロードするオブジェクトの名前を選択します。

1. [**ダウンロード**] を選択します。

## の使用AWS CLI
<a name="get-object-ap-cli"></a>

次の `get-object` コマンド例は、AWS CLI を使用してアクセスポイント経由でオブジェクトをダウンロードする方法を示しています。

次のコマンドは、アクセスポイント *my-access-point* を使用して AWS アカウント *111122223333* のオブジェクト `puppy.jpg` をダウンロードします。`my_downloaded_image.jpg` など、ダウンロードしたオブジェクトのファイル名である `outfile` を含める必要があります。

```
aws s3api get-object --bucket arn:aws:s3:AWS リージョン:111122223333:accesspoint/my-access-point --key puppy.jpg my_downloaded_image.jpg      
```

**注記**  
S3 は、すべてのアクセスポイントに対してアクセスポイントエイリアスを自動的に生成します。これらのエイリアスは、バケット名を使用してオブジェクトレベルのオペレーションを実行する任意の場所で使用できます。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

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

## REST API の使用
<a name="get-object-ap-rest"></a>

REST API を使用して、アクセスポイントを介してオブジェクトをダウンロードできます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)」を参照してください。

## AWS SDK の使用
<a name="download-object-ap-SDKs"></a>

AWS SDK for Python を使用して、アクセスポイントを介してオブジェクトをダウンロードできます。

------
#### [ Python ]

次の例では、*my-access-point* という名前のアクセスポイントを使用して、`hello.txt` という名前のファイルが AWS アカウント *111122223333* 用にダウンロードされます。

```
import boto3
s3 = boto3.client('s3')
s3.download_file('arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point', 'hello.txt', '/tmp/hello.txt')
```

------

# 汎用バケットのアクセスポイントを介してアクセスコントロールリスト (ACL) を設定する
<a name="put-acl-permissions-ap"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイント経由で ACL を設定する方法について説明します。ACL の詳細については、「[アクセスコントロールリスト (ACL) の概要](acl-overview.md)」を参照してください。

## S3 コンソールの使用
<a name="put-acl-permissions-ap-console"></a>

**AWS アカウント内のアクセスポイント経由で ACL を設定するには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

1. **[オブジェクト]** タブで、ACL を設定するオブジェクトの名前を選択します。

1. **[アクセス許可]** タブで、**[編集]** を選択してオブジェクト ACL を設定します。
**注記**  
Amazon S3 は、現在、アクセスポイントの作成後におけるアクセスポイントのブロックパブリックアクセス設定の変更をサポートしていません。

## の使用AWS CLI
<a name="put-acl-permissions-ap-cli"></a>

次の `put-object-acl` コマンド例は、AWS CLI を使用して、ACL を使ってアクセスポイント経由でアクセス許可を設定する方法を示しています。

次のコマンドは、AWS アカウント *111122223333* が所有するアクセスポイント経由で既存のオブジェクト `puppy.jpg` に ACL を適用します。

```
aws s3api put-object-acl --bucket arn:aws:s3:AWS リージョン:111122223333:accesspoint/my-access-point --key puppy.jpg --acl private      
```

**注記**  
S3 は、すべてのアクセスポイントに対してアクセスポイントエイリアスを自動的に生成します。これらのエイリアスは、バケット名を使用してオブジェクトレベルのオペレーションを実行する任意の場所で使用できます。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

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

## REST API の使用
<a name="put-acl-permissions-ap-rest"></a>

REST API を使用して、ACL を使ってアクセスポイント経由でアクセス許可を設定できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)」を参照してください。

# 汎用バケットのアクセスポイントを介してオブジェクトをアップロードする
<a name="put-object-ap"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイントを介してオブジェクトをアップロードする方法について説明します。

## S3 コンソールの使用
<a name="put-object-ap-console"></a>

**AWS アカウント内のアクセスポイント経由でオブジェクトをアップロードするには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

1. **[オブジェクト]** タブで、**[アップロード]** を選択します。

1. アップロードするファイルやフォルダをここにドラッグアンドドロップするか、**[ファイルを追加]** または **[フォルダの追加]** を選択します。
**注記**  
Amazon S3 コンソールを使用すると、アップロードできるファイルの最大サイズが 160 GB になります。160 GB を超えるファイルをアップロードするには、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用します。

1. アクセスコントロールリストの許可を変更するには、**[Permissions]** (許可) を選択します。

1. **[Access control list (ACL)]** (アクセスコントロールリスト (ACL) で、許可を編集します。

   オブジェクトのアクセス許可については、[S3 コンソールを使用した、オブジェクトの ACL アクセス権限の設定](managing-acls.md#set-object-permissions) を参照してください。アップロードするすべてのファイルについて、オブジェクトの読み取りアクセスをパブリック (世界中のすべてのユーザー) に付与できます。ただし、パブリック読み取りアクセスのデフォルト設定を変更しないことをお勧めします。パブリック読み取りアクセス権限の付与は、バケットがウェブサイトなどに使用されるなど、ユースケースの小さいサブセットに適用されます。オブジェクトをアップロードした後で、オブジェクトの許可をいつでも変更できます。

1. その他の追加プロパティを設定するには、**[Properties]** (プロパティ) を選択します。

1. **[ストレージクラス]** で、アップロードするファイルのストレージクラスを選択します。

   ストレージクラスの詳細については、[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md) を参照してください。

1. オブジェクトの暗号化設定を更新するには、[**Server−side encryption settings**] (サーバー側の暗号化設定) で、次の操作を行います。

   1. **[Specify an encryption key]** (暗号化キーを指定する) を選択します。

   1. **[暗号化設定]** で、**[デフォルトの暗号化にバケット設定を使用する]** または **[デフォルトの暗号化にバケット設定を上書きする]** を選択します。

   1. **[デフォルトの暗号化にバケット設定を上書きする]** を選択した場合は、次の暗号化設定を設定する必要があります。
      + Amazon S3 管理のキーを使用してアップロードされたファイルを暗号化するには、**[Amazon S3 マネージドキー (SSE−S3)]** を選択します。

        詳細については、「[Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)](UsingServerSideEncryption.md)」を参照してください。
      + AWS Key Management Service (AWS KMS) に保存されているキーを使用してアップロード済みファイルを暗号化するには、**AWS Key Management Service キー (SSE−KMS)** を選択します。次に、**AWS KMS キー**について、以下のいずれかのオプションを選択します。
        + 使用可能な KMS キーのリストから選択するには、**[AWS KMS keys から選択する]** を選択し、使用可能なキーのリストから自分の **KMS** キーを選択します。

          AWS マネージドキー (`aws/s3`) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、*AWS Key Management Serviceデベロッパーガイド*の「[カスタマーキーと AWS キー](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)」を参照してください。
        + KMS キー ARN を入力するには、**[AWS KMS key ARN を入力]** を選択し、表示されるフィールドに KMS キー ARN を入力します。
        + AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、**[KMS キーを作成]** を選択します。

          AWS KMS key の作成の詳細については、**「AWS Key Management Service デベロッパーガイド」の「[キーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)」を参照してください。
**重要**  
バケットと同じ AWS リージョン で使用可能な KMS キーのみを使用できます。Amazon S3 コンソールには、バケットと同じリージョンで最初の 100 個の KMS キーしか表示されません。リストに存在しない KMS キーを使用するには、KMS キー ARN を入力する必要があります。別のアカウントが所有している KMS キーを使用する場合は、まずそのキーを使用するアクセス許可が必要であり、次に KMS キー ARN を入力する必要があります。  
Amazon S3 では、対称暗号化 KMS キーのみがサポートされ、非対称暗号化 KMS キーはサポートされません。詳細については、*AWS Key Management Service デベロッパーガイド*の「[Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)」(対称および非対称 KMS キーの識別) を参照してください。

1. 追加のチェックサムを使用するには、**[On]** (オン) を選択します。次に、**[Checksum function]** (チェックサム関数) で、使用する関数を選択します。Amazon S3 は、オブジェクト全体を受け取った後、チェックサム値を計算して保存します。**[Precalculated value]** (事前計算された値) ボックスを使用して、事前計算された値を指定できます。その場合、Amazon S3 は、指定した値と計算した値を比較します。2 つの値が一致しない場合、Amazon S3 はエラーを生成します。

   追加のチェックサムを使用すると、データの検証に使用するチェックサムアルゴリズムを指定できます。追加のチェックサムの詳細については、「[Amazon S3 でのオブジェクトの整合性のチェック](checking-object-integrity.md)」を参照してください。

1. アップロードするすべてのオブジェクトにタグを追加するには、[**Add tag (タグの追加)**] を選択します。**[キー]** フィールドにタグ名を入力します。タグの値を入力します。

   オブジェクトのタグ付けにより、ストレージを分類する方法が提供されます。各タグはキーと値のペアです。キーとタグ値は大文字と小文字が区別されます。オブジェクトごとに最大 10 個のタグを持つことができます。タグキーには最大 128 個の Unicode 文字、タグ値には最大 255 個の Unicode 文字を使用できます。オブジェクトタグの詳細については、[タグを使用したオブジェクトの分類](object-tagging.md)を参照してください。

1. メタデータを追加するには、[**Add metadata**] (メタデータの追加) を選択します。

   1. [**Type**] (タイプ) で、[**System defined**] (システム定義) または [**User defined**] (ユーザー定義) を選択します。

      システム定義のメタデータの場合は、**Content−Type** や **Content−Disposition** などの一般的な HTTP ヘッダーを選択できます。システム定義のメタデータのリストと値を追加できるかどうかについては、[システムで定義されたオブジェクトメタデータ](UsingMetadata.md#SysMetadata) を参照してください。プレフィックス `x-amz-meta-` で始まるメタデータはすべてユーザー定義のメタデータとして扱われます。ユーザー定義メタデータはオブジェクトと共に保存され、オブジェクトのダウンロード時に返されます。キーと値の両方が US−ASCII 標準に従っている必要があります。ユーザー定義メタデータのサイズは最大 2 KB です。システム定義メタデータとユーザー定義メタデータの詳細については、[オブジェクトメタデータの使用](UsingMetadata.md) を参照してください。

   1. [**Key**] (キー) で、キーを選択します。

   1. キーの値を入力します。

1. オブジェクトをアップロードするには、[**Upload**] (アップロード) を選択します。

   Amazon S3 はオブジェクトをアップロードします。アップロードが完了すると、[**Upload: status**] (アップロード: ステータス) ページに成功のメッセージが表示されます。

## の使用AWS CLI
<a name="put-object-ap-cli"></a>

次の `put-object` コマンド例は、AWS CLI を使用してアクセスポイント経由でオブジェクトをアップロードする方法を示しています。

次のコマンドは、アクセスポイント *my-access-point* を使用して AWS アカウント *111122223333* のオブジェクト `puppy.jpg` をアップロードします。

```
aws s3api put-object --bucket arn:aws:s3:AWS リージョン:111122223333:accesspoint/my-access-point --key puppy.jpg --body puppy.jpg      
```

**注記**  
S3 は、すべてのアクセスポイントに対してアクセスポイントエイリアスを自動的に生成します。アクセスポイントエイリアスは、バケット名を使用してオブジェクトレベルのオペレーションを実行する任意の場所で使用できます。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

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

## REST API の使用
<a name="put-object-ap-rest"></a>

REST API を使用して、アクセスポイントを介してオブジェクトをアップロードできます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)」を参照してください。

## AWS SDK の使用
<a name="put-object-ap-SDKs"></a>

AWS SDK for Python を使用して、アクセスポイントを介してオブジェクトをアップロードできます。

------
#### [ Python ]

次の例では、*my-access-point* という名前のアクセスポイントを使用して、`hello.txt` という名前のファイルが AWS アカウント *111122223333* 用にアップロードされます。

```
import boto3
s3 = boto3.client('s3')
s3.upload_file('/tmp/hello.txt', 'arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point', 'hello.txt')
```

------

# 汎用バケットのアクセスポイントを介してタグセットを追加する
<a name="add-tag-set-ap"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイントを介してタグセットを追加する方法について説明します。詳細については、「[タグを使用したオブジェクトの分類](object-tagging.md)」を参照してください。

## S3 コンソールの使用
<a name="add-tag-set-ap-console"></a>

**AWS アカウント内でのアクセスポイントを使用したタグセットの追加**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

1. **[オブジェクト]** タブで、タグセットを追加するオブジェクトの名前を選択します。

1. **[プロパティ]** タブで、**[タグ]** サブヘッダーを検索して、**[編集]** を選択します。

1. リストされたオブジェクトを確認し、**[タグの追加]** を選択します。

1. 各オブジェクトタグはキーと値のペアです。**キー**と**値**を入力します。別のタグを追加するには、[**タグの追加**] を選択します。

   オブジェクトには最大 10 個のタグを入力できます。

1. **[Save changes]** (変更の保存) をクリックします。

## の使用AWS CLI
<a name="add-tag-set-ap-cli"></a>

次の `put-object-tagging` コマンド例は、AWS CLI を使用してアクセスポイント経由でタグセットを追加する方法を示しています。

次のコマンドは、アクセスポイント *my-access-point* を使用して既存のオブジェクト `puppy.jpg` のタグセットを追加します。

```
aws s3api put-object-tagging --bucket arn:aws:s3:AWS リージョン:111122223333:accesspoint/my-access-point --key puppy.jpg --tagging TagSet=[{Key="animal",Value="true"}]     
```

**注記**  
S3 は、すべてのアクセスポイントに対してアクセスポイントエイリアスを自動的に生成します。アクセスポイントエイリアスは、バケット名を使用してオブジェクトレベルのオペレーションを実行する任意の場所で使用できます。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

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

## REST API の使用
<a name="add-tag-set-ap-rest"></a>

REST API を使用して、アクセスポイント経由でオブジェクトにタグセットを追加できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)」を参照してください。

# 汎用バケットのアクセスポイントを介してオブジェクトを削除する
<a name="delete-object-ap"></a>

このセクションでは、AWS マネジメントコンソール、AWS Command Line Interface、または REST API を使用して汎用バケットのアクセスポイントを介してオブジェクトを削除する方法について説明します。

## S3 コンソールの使用
<a name="delete-object-ap-console"></a>

**AWS アカウント内のアクセスポイント経由でオブジェクトを削除するには**

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、アクセスポイントをリスト表示するリージョンを選択します。

1. コンソールの左側のナビゲーションペインで、**[アクセスポイント]** を選択します。

1. (オプション) アクセスポイントを名前で検索します。選択した AWS リージョンのアクセスポイントのみがここに表示されます。

1. 管理または使用するアクセスポイントの名前を選択します。

1. **[オブジェクト]** タブで、削除するオブジェクトの名前を選択します。

1. 削除対象としてリストされているオブジェクトを確認し、確認ボックスに「*削除*」と入力します。

1. **オブジェクトの削除** を選択します。

## の使用AWS CLI
<a name="delete-object-ap-cli"></a>

次の `delete-object` コマンド例は、AWS CLI を使用してアクセスポイント経由でオブジェクトを削除する方法を示しています。

次のコマンドは、アクセスポイント *my-access-point* を使用して既存のオブジェクト `puppy.jpg` を削除します。

```
aws s3api delete-object --bucket arn:aws:s3:AWS リージョン:111122223333:accesspoint/my-access-point --key puppy.jpg      
```

**注記**  
S3 は、すべてのアクセスポイントに対してアクセスポイントエイリアスを自動的に生成します。アクセスポイントエイリアスは、バケット名を使用してオブジェクトレベルのオペレーションを実行する任意の場所で使用できます。詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

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

## REST API の使用
<a name="delete-object-ap-rest"></a>

REST API を使用して、アクセスポイント経由でオブジェクトを削除できます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)」を参照してください。

# 汎用バケットでの S3 Access Points の使用
<a name="access-points-tagging"></a>

AWS タグは、リソースに関するメタデータを保持するキーと値のペアで、この場合は Amazon S3 Access Points です。アクセスポイントは、作成時にタグ付けしたり、既存のアクセスポイントでタグを管理したりできます。タグに関する一般情報については、「[コスト配分または属性ベースのアクセス制御 (ABAC) のタグ付け](tagging.md)」を参照してください。

**注記**  
アクセスポイントでタグを使用することによる追加料金は、標準の S3 API リクエスト料金を超えて発生しません。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

## アクセスポイントでタグを使用する一般的な方法
<a name="common-ways-to-use-tags-directory-bucket"></a>

属性ベースのアクセス制御 (ABAC) は、アクセス許可をスケールし、タグに基づいてアクセスポイントへのアクセスを許可することを可能にします。Amazon S3 の ABAC の詳細については、「[Using tags for ABAC](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#)」を参照してください。

### S3 Access Points の ABAC
<a name="abac-for-access-points"></a>

Amazon S3 Access Points は、タグを使用した属性ベースのアクセス制御 (ABAC) をサポートしています。AWS Organizations、IAM、Access Points ポリシーでタグベースの条件キーを使用します。エンタープライズの場合、Amazon S3 の ABAC は複数の AWS アカウントにわたる認可をサポートしています。

IAM ポリシーでは、次の[グローバル条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys)を使用して、アクセスポイントのタグに基づいてアクセスポイントへのアクセスを制御できます。
+ `aws:ResourceTag/key-name`
**重要**  
`aws:ResourceTag` 条件キーは、汎用バケットのアクセスポイント ARN を介して実行される S3 アクションにのみ使用でき、基盤となるアクセスポイントタグのみを対象とします。
  + このキーを使用して、ポリシーで指定したタグキーバリューのペアと、リソースにアタッチされているキーバリューのペアを比較します。たとえば、リソースに値 `Dept` の付いたタグキー `Marketing` がアタッチされている場合にのみ、そのリソースへのアクセスを許可するように要求することができます。詳細については、「[AWS のリソースに対するアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)」を参照してください。
+ `aws:RequestTag/key-name`
  + このキーを使用して、リクエストで渡されたタグキーバリューのペアと、ポリシーで指定したタグペアを比較します。たとえば、リクエストに「`Dept`」タグキーが含まれ、「`Accounting`」という値が含まれているかどうかを確認できます。詳細については、「[AWS リクエスト時のアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)」を参照してください。この条件キーを使用して、`TagResource` および `CreateAccessPoint` API オペレーション中に渡すことができるタグのキーと値のペアを制限できます。
+ `aws:TagKeys`
  + このキーを使用して、リクエスト内のタグキーとポリシーで指定したキーを比較します。ポリシーでタグを使用してアクセスを制御する場合は、`aws:TagKeys` 条件キーを使用して、許可されるタグキーを定義することをお勧めします。サンプルポリシーおよび詳細については、「[タグキーに基づいたアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)」を参照してください。タグを使用してアクセスポイントを作成できます。`CreateAccessPoint` API オペレーション中にタグ付けを許可するには、`s3:TagResource` と `s3:CreateAccessPoint` アクションの両方を含むポリシーを作成する必要があります。次に、`aws:TagKeys` 条件キーを使用して、`CreateAccessPoint` リクエストで特定のタグキーを使用して適用できます。
+ `s3:AccessPointTag/tag-key`
  + この条件キーを使用して、タグを使用してアクセスポイントを介して特定のデータにアクセス許可を付与します。IAM ポリシーで `aws:ResourceTag/tag-key` を使用する場合、アクセスポイントと、アクセスポイントが承認時に考慮されるのと同じタグを持つ必要があるバケットの両方。アクセスポイントタグを介してのみデータへのアクセスを制御する場合は、`s3:AccessPointTag/tag-key` 条件キーを使用できます。

### アクセスポイントの ABAC ポリシーの例
<a name="example-access-points-abac-policies"></a>

Amazon S3 Access Points の ABAC ポリシーの次の例を参照してください。

#### 1.1 - 特定のタグを持つバケットを作成または変更するための IAM ポリシー
<a name="example-access-points-user-policy-request-tag"></a>

この IAM ポリシーでは、このポリシーを持つユーザーまたはロールは、アクセスポイントの作成リクエストでタグキー `project` とタグ値 `Trinity` を使用してアクセスポイントにタグを付ける場合にのみ、アクセスポイントを作成できます。また、`TagResource` リクエストにタグのキーと値のペア `project:Trinity` が含まれている限り、既存のアクセスポイントのタグを追加または変更できます。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateAccessPointWithTags",
      "Effect": "Allow",
      "Action": [
        "s3:CreateAccessPoint",
        "s3:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

#### 1.2 - タグを使用してアクセスポイントでのオペレーションを制限するアクセスポイントポリシー
<a name="example-access-points-user-policy-resource-tag"></a>

このアクセスポイントポリシーでは、IAM プリンシパル (ユーザーとロール) は、アクセスポイントの `project` タグの値がプリンシパルの `project` タグの値と一致する場合にのみ、アクセスポイントの `GetObject` アクションを使用してオペレーションを実行できます。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowObjectOperations",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws::s3:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
```

#### 1.3 - タグ付け管理を維持する既存リソースのタグを変更するための IAM ポリシー
<a name="example-access-points-user-policy-tag-keys"></a>

この IAM ポリシーでは、IAM プリンシパル (ユーザーまたはロール) は、アクセスポイントの `project` タグの値がプリンシパルの `project` タグの値と一致する場合にのみ、アクセスポイントのタグを変更できます。条件キー `aws:TagKeys` で指定された `project`、`environment`、`owner`、および `cost-center` の 4 つのタグのみが、これらのアクセスポイントに対して許可されます。これにより、タグガバナンスの適用、不正なタグ変更の防止、およびアクセスポイント間でのタグ付けスキーマの一貫性の維持が可能になります。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3:TagResource"
      ],
      "Resource": "arn:aws::s3:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

#### 1.4 - s3:AccessPointTag 条件キーを使用する
<a name="example-access-points-policy-bucket-tag"></a>

この IAM ポリシーでは、条件ステートメントは、アクセスポイントにタグキー `Environment` とタグ値 `Production` がある場合、バケットのデータへのアクセスを許可します。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificAccessPoint",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "s3:AccessPointTag/Environment": "Production"
        }
      }
    }
  ]
}
```

#### 1.5 - バケット委任ポリシーの使用
<a name="example-access-points-policy-delegate"></a>

Amazon S3 では、S3 バケットポリシーへのアクセスまたはコントロールを別の AWS アカウント、または別のアカウントの特定の AWS Identity and Access Management (IAM) ユーザーもしくはロールに委任できます。委任バケットポリシーは、この他のアカウント、ユーザー、またはロールにバケットとそのオブジェクトへのアクセス許可を付与します。詳細については、「[アクセス許可の委任](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html#permission-delegation)」を参照してください。

次のような委任バケットポリシーを使用している場合: 

```
{
  "Version": "2012-10-17",		 	 	 
    "Statement": {
      "Principal": {"AWS": "*"},
        "Effect": "Allow",
        "Action": ["s3:*"],
        "Resource":["arn:aws::s3:::amzn-s3-demo-bucket/*", "arn:aws::s3:::amzn-s3-demo-bucket"],
           "Condition": {
             "StringEquals" : {
                "s3:DataAccessPointAccount" : "111122223333"
             }
           }
    }
}
```

次の IAM ポリシーでは、条件ステートメントは、アクセスポイントにタグキー `Environment` とタグ値 `Production` がある場合、バケットのデータへのアクセスを許可します。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToSpecificAccessPoint",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3:region:111122223333:accesspoint/my-access-point",
      "Condition": {
        "StringEquals": {
          "s3:AccessPointTag/Environment": "Production"
        }
      }
    }
  ]
}
```

## 汎用バケットのアクセスポイントのタグを使用する
<a name="working-with-tags-access-points"></a>

Amazon S3コンソール、AWS コマンドラインインターフェイス (CLI)、AWS SDK、または S3 API、[TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)、[UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html)、[ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html) を使用して、アクセスポイントのタグを追加または管理できます。詳細については、以下を参照してください。

**Topics**
+ [アクセスポイントでタグを使用する一般的な方法](#common-ways-to-use-tags-directory-bucket)
+ [汎用バケットのアクセスポイントのタグを使用する](#working-with-tags-access-points)
+ [タグ付きアクセスポイントを作成する](access-points-create-tag.md)
+ [アクセスポイントへのタグの追加](access-points-tag-add.md)
+ [アクセスポイントタグの表示](access-points-tag-view.md)
+ [アクセスポイントからのタグの削除](access-points-tag-delete.md)

# タグ付きアクセスポイントを作成する
<a name="access-points-create-tag"></a>

アクセスポイントは、作成時にタグ付けできます。アクセスポイントでタグを使用することによる追加料金は、標準の S3 API リクエスト料金を超えて発生しません。詳細については、「[Amazon S3 の料金](https://docs.aws.amazon.com/s3/pricing/)」を参照してください。アクセスポイントのタグ付けの詳細については、「[汎用バケットでの S3 Access Points の使用](access-points-tagging.md)」を参照してください。

## アクセス許可
<a name="access-points-create-tag-permissions"></a>

タグ付きアクセスポイントを作成するには、次のアクセス許可が必要です。
+ `s3:CreateBucket`
+ `s3:TagResource`

## エラーのトラブルシューティング
<a name="access-points-create-tag-troubleshooting"></a>

タグ付きアクセスポイントを作成しようとしたときにエラーが発生した場合は、以下を実行できます。
+ アクセスポイントを作成し、それにタグを追加するために必要な [アクセス許可](#access-points-create-tag-permissions) アクセス許可があることを確認します。
+ 属性ベースのアクセス制御 (ABAC) 条件については、IAM ユーザーポリシーを確認してください。アクセスポイントには、特定のタグキーと値のみを使用してラベルを付ける必要がある場合があります。詳細については、「[属性ベースのアクセス制御 (ABAC) のタグを使用する](tagging.md#using-tags-for-abac)」を参照してください。

## Steps
<a name="access-points-create-tag-steps"></a>

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、AWS SDK を使用して、タグ付きアクセスポイントを作成できます。

## S3 コンソールの使用
<a name="access-points-create-tag-console"></a>

Amazon S3 コンソールを使用してタグ付きアクセスポイントを作成するには

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) にサインインします。

1. 左のナビゲーションペインで、**[汎用バケットの Access Points]** を選択します。

1. **[アクセスポイントの作成]** を選択して、新しいアクセスポイントを作成します。

1. **[アクセスポイントの作成]** ページで、**[タグ]** は新しいアクセスポイントを作成する際のオプションです。

1. アクセスポイントポイントの名前を入力します。詳細については、「[アクセスポイントの命名規則、制約と制限](access-points-restrictions-limitations-naming-rules.md)」を参照してください。

1. **[新しいタグを追加]** を選択して **[タグ]** エディタを開き、タグのキーと値のペアを入力します。タグキーは必須ですが、値はオプションです。

1. 別のタグを追加するには、**[新しいタグを追加]** を再度選択します。最大 50 個のタグのキーと値のペアを入力できます。

1. 新しいアクセスポイントのオプションを指定したら、**[アクセスポイントの作成]** を選択します。

## AWS SDK の使用
<a name="access-points-create-tag-sdks"></a>

------
#### [ SDK for Java 2.x ]

この例では、AWS SDK for Java 2.x を使用してタグ付きのアクセスポイントを作成する方法を示します。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
CreateAccessPointRequest createAccessPointRequest = CreateAccessPointRequest.builder()
                .accountId(111122223333)
                .name(my-access-point)
                .bucket(amzn-s3-demo-bucket)
                .tags(Collections.singletonList(Tag.builder().key("key1").value("value1").build()))
                .build();
 awss3Control.createAccessPoint(createAccessPointRequest);
```

------

## REST API の使用
<a name="access-points-tag-delete-api"></a>

Amazon S3 REST API でのタグ付きアクセスポイント作成のサポートの詳細については、「*Amazon Simple Storage Service API リファレンス*」の次のセクションを参照してください。
+ [CreateAccessPoint](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html)

## の使用AWS CLI
<a name="access-points-create-tag-cli"></a>

AWS CLI をインストールする方法については、「*AWS Command Line Interface ユーザーガイド*」の「[AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

以下の CLI の例は、AWS CLI を使用してタグ付きアクセスポイントを作成する方法を示しています。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

**リクエスト]**

```
aws s3control create-access-point --name my-access-point \
--bucket amzn-s3-demo-bucket \
--account-id 111122223333 \ --profile personal \
--tags [{Key=key1,Value=value1},{Key=key2,Value=value2}] \
--region region
```

# アクセスポイントへのタグの追加
<a name="access-points-tag-add"></a>



Amazon S3 Access Points にタグを追加し、これらのタグを変更できます。アクセスポイントでタグを使用することによる追加料金は、標準の S3 API リクエスト料金を超えて発生しません。詳細については、「[Amazon S3 の料金](https://docs.aws.amazon.com/s3/pricing/)」を参照してください。アクセスポイントのタグ付けの詳細については、「[汎用バケットでの S3 Access Points の使用](access-points-tagging.md)」を参照してください。

## アクセス許可
<a name="access-points-tag-add-permissions"></a>

アクセスポイントにタグを追加するには、次のアクセス許可が必要です。
+ `s3:TagResource`

## エラーのトラブルシューティング
<a name="access-points-tag-add-troubleshooting"></a>

アクセスポイントにタグを追加しようとしたときにエラーが発生した場合は、以下を実行できます。
+ アクセスポイントにタグを追加するために必要な [アクセス許可](#access-points-tag-add-permissions) があることを確認します。
+ AWS 予約済みプレフィックス `aws:` で始まるタグキーを追加しようとした場合は、タグキーを変更して再試行してください。

## Steps
<a name="access-points-tag-add-steps"></a>

Amazon S3 コンソール、AWS コマンドラインインターフェイス (AWS CLI)、Amazon S3 REST API、AWS SDK を使用して、アクセスポイントにタグを追加できます。

## S3 コンソールの使用
<a name="access-points-tag-add-console"></a>

Amazon S3 コンソールを使用してアクセスポイントにタグを追加するには

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) にサインインします。

1. 左のナビゲーションペインで、**[汎用バケットの Access Points]** を選択します。

1. アクセスポイント名を選択します。

1. **[プロパティ]** タブを選択します。

1. **[タグ]** セクションにスクロールして、**[新しいタグを追加する]** を選択します。

1. **[タグの追加]** ページが開きます。最大 50 個のタグのキーと値のペアを入力できます。

1. 既存のタグとキー名が同じ新しいタグを追加すると、既存のタグの値は新しいタグの値で上書きされます。

1. このページで、既存のタグの値を編集することもできます。

1. タグを追加したら、**[変更の保存]** を選択します。

## AWS SDK の使用
<a name="access-points-tag-add-sdks"></a>

------
#### [ SDK for Java 2.x ]

この例では、AWS SDK for Java 2.x を使用してアクセスポイントにタグを追加する方法を示します。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
TagResourceRequest tagResourceRequest = TagResourceRequest.builder().resourceArn(arn:aws::s3:region:111122223333:accesspoint/my-access-point/*)
.accountId(111122223333)
.tags(List.of(Tag.builder().key("key1").value("value1").build(),
Tag.builder().key("key2").value("value2").build()))
.build();
awss3Control.tagResource(tagResourceRequest);
```

------

## REST API の使用
<a name="access-points-tag-add-api"></a>

アクセスポイントへタグを追加するためのAmazon S3 REST API のサポートの詳細については、「*Amazon Simple Storage Service API リファレンス*」の次のセクションを参照してください。
+ [TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)

## の使用AWS CLI
<a name="access-points-tag-add-cli"></a>

AWS CLI をインストールする方法については、「*AWS Command Line Interface ユーザーガイド*」の「[AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

以下の CLI の例は、AWS CLI を使用してアクセスポイントにタグを追加する方法を示しています。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

**リクエスト:**

```
aws s3control tag-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3:region:111122223333:accesspoint/my-access-point/* \
--tags "Key=key1,Value=value1"
```

**レスポンス:**

```
{
  "ResponseMetadata": {
      "RequestId": "EXAMPLE123456789",
      "HTTPStatusCode": 200,
      "HTTPHeaders": {
          "date": "Wed, 19 Jun 2025 10:30:00 GMT",
          "content-length": "0"
      },
      "RetryAttempts": 0
  }
}
```

# アクセスポイントタグの表示
<a name="access-points-tag-view"></a>

アクセスポイントに適用されたタグを表示または一覧表示できます。タグの詳細については、[汎用バケットでの S3 Access Points の使用](access-points-tagging.md)を参照してください。

## アクセス許可
<a name="access-points-tag-view-permissions"></a>

アクセスポイントに適用されたタグを表示するには、次のアクセス許可が必要です。
+ `s3:ListTagsForResource`

## エラーのトラブルシューティング
<a name="access-points-tag-view-troubleshooting"></a>

アクセスポイントのタグを一覧表示または表示しようとしたときにエラーが発生した場合は、以下を実行できます。
+ アクセスポイントのタグを表示または一覧表示するために必要な [アクセス許可](#access-points-tag-view-permissions) があることを確認します。

## Steps
<a name="access-points-tag-view-steps"></a>

アクセスポイントに適用されたタグは、Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、および AWS SDK を使用して表示できます。

## S3 コンソールの使用
<a name="access-points-tag-view-console"></a>

Amazon S3 コンソールを使用してアクセスポイントにタグを追加するには

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) にサインインします。

1. 左のナビゲーションペインで、**[汎用バケットの Access Points]** を選択します。

1. アクセスポイント名を選択します。

1. **[プロパティ]** タブを選択します。

1. **[タグ]** セクションにスクロールして、アクセスポイントに適用されているすべてのタグを表示します。

1. **[タグ]** セクションには、デフォルトで **[ユーザー定義タグ]** が表示されます。**[AWS 生成タグ]** タブを選択すると、AWS サービスによってアクセスポイントに適用されたタグを表示できます。

## AWS SDK の使用
<a name="access-points-tag-view-sdks"></a>

このセクションでは、AWS SDK を使用してアクセスポイントに適用されたタグを表示する方法の例を示します。

------
#### [ SDK for Java 2.x ]

この例では、AWS SDK for Java 2.x を使用して、アクセスポイントに適用されたタグを表示する方法を示します。

```
ListTagsForResourceRequest listTagsForResourceRequest = ListTagsForResourceRequest
.builder().resourceArn(arn:aws::s3:region:111122223333:accesspoint/my-access-point/*)
                .accountId(111122223333).build();
awss3Control.listTagsForResource(listTagsForResourceRequest);
```

------

## REST API の使用
<a name="access-points-tag-view-api"></a>

Amazon S3 REST API でのアクセスポイントに適用されたタグの表示のサポートの詳細については、「*Amazon Simple Storage Service API リファレンス*」の次のセクションを参照してください。
+ [ListTagsforResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html)

## の使用AWS CLI
<a name="access-points-tag-view-cli"></a>

AWS CLI をインストールする方法については、「*AWS Command Line Interface ユーザーガイド*」の「[AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次の CLI の例は、アクセスポイントに適用されたタグを表示する方法を示しています。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

**リクエスト]**

```
aws s3control list-tags-for-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3:region:444455556666:bucket/prefix--use1-az4--x-s3 \
```

**レスポンス - タグがあります。**

```
{
  "Tags": [
      {
          "Key": "MyKey1",
          "Value": "MyValue1"
      },
      {
          "Key": "MyKey2",
          "Value": "MyValue2"
      },
      {
          "Key": "MyKey3",
          "Value": "MyValue3"
      }
  ]
}
```

**レスポンス - タグがありません。**

```
{
  "Tags": []
}
```

# アクセスポイントからのタグの削除
<a name="access-points-tag-delete"></a>

Amazon S3 Access Points からタグを削除できます。AWS タグは、リソースに関するメタデータを保持するキーと値のペアで、この場合は Access Points です。タグの詳細については、[汎用バケットでの S3 Access Points の使用](access-points-tagging.md)を参照してください。

**注記**  
タグを削除し、後でコストの追跡やアクセスコントロールに使用されていたことがわかった場合は、そのタグをアクセスポイントに戻すことができます。

## アクセス許可
<a name="access-points-tag-delete-permissions"></a>

アクセスポイントからタグを削除するには、次のアクセス許可が必要です。
+ `s3:UntagResource`

## エラーのトラブルシューティング
<a name="access-points-tag-delete-troubleshooting"></a>

アクセスポイントからタグを削除しようとしたときにエラーが発生した場合は、以下を実行できます。
+ アクセスポイントからタグを削除するために必要な [アクセス許可](access-points-db-tag-delete.md#access-points-db-tag-delete-permissions) があることを確認します。

## Steps
<a name="access-points-tag-delete-steps"></a>

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、および AWS SDK を使用してアクセスポイントからタグを削除できます。

## S3 コンソールの使用
<a name="access-points-tag-delete-console"></a>

Amazon S3 コンソールを使用してアクセスポイントからタグを削除するには：

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) にサインインします。

1. 左のナビゲーションペインで、**[汎用バケットの Access Points]** を選択します。

1. アクセスポイント名を選択します。

1. **[プロパティ]** タブを選択します。

1. **[タグ]** セクションまでスクロールし、削除するタグの横にあるチェックボックスをオンにします。

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

1. **[ユーザー定義タグを削除]** ポップアップが表示され、選択したタグを削除してよいか確認するように求められます。

1. [**Delete**] を選択して確定します。

## AWS SDK の使用
<a name="access-points-tag-delete-sdks"></a>

------
#### [ SDK for Java 2.x ]

この例では、AWS SDK for Java 2.x を使用してアクセスポイントからタグを削除する方法を示します。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
UntagResourceRequest tagResourceRequest = UntagResourceRequest.builder()
                .resourceArn(arn:aws::s3:region:111122223333:accesspoint/my-access-point/*)
                .accountId(111122223333)
                .tagKeys(List.of("key1", "key2")).build();
awss3Control.untagResource(tagResourceRequest);
```

------

## REST API の使用
<a name="access-points-tag-delete-api"></a>

Amazon S3 REST API でのアクセスポイントからのタグ削除に関するサポートの詳細については、「*Amazon Simple Storage Service API リファレンス*」の次のセクションを参照してください。
+ [UnTagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html)

## の使用AWS CLI
<a name="access-points-tag-delete-cli"></a>

AWS CLI をインストールする方法については、「*AWS Command Line Interface ユーザーガイド*」の「[AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

以下の CLI の例は、AWS CLI を使用してアクセスポイントからタグを削除する方法を示しています。このコマンドを使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

**リクエスト:**

```
aws s3control untag-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3:region:444455556666:access-point/my-access-point \
--tag-keys "tagkey1" "tagkey2"
  
  
  aws s3control untag-resource \
--account-id 111122223333 \
--resource-arn arn:aws::s3:region:444455556666:accesspointmy-access-point/* \
--tag-keys "key1" "key2"
```

**レスポンス:**

```
{
  "ResponseMetadata": {
    "RequestId": "EXAMPLE123456789",
    "HTTPStatusCode": 204,
    "HTTPHeaders": {
        "date": "Wed, 19 Jun 2025 10:30:00 GMT",
        "content-length": "0"
    },
    "RetryAttempts": 0
  }
}
```

# S3 Access Grants でのアクセス管理
<a name="access-grants"></a>

最小特権の原則に従うには、アプリケーション、ペルソナ、グループ、または組織単位に基づいて Amazon S3 データへのきめ細かなアクセスを定義します。アクセスパターンの規模と複雑さに応じて、さまざまなアプローチを使用して Amazon S3 のデータへのきめ細いアクセスを実現できます。

Amazon S3 内の少数から中程度の数のデータセットへのアクセスを AWS Identity and Access Management (IAM) プリンシパルで管理する最も簡単な方法は、[IAM アクセス許可ポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/user-policies.html) と [S3 バケットポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) を定義することです。この戦略は、必要なポリシーが S3 バケットポリシー (20 KB) と IAM ポリシー (5 KB) のポリシーサイズ制限内に収まり、[アカウントごとに許可されている IAM プリンシパルの数](https://docs.aws.amazon.com/general/latest/gr/iam-service.html)内である限り有効です。

データセットの数やユースケースの数が増えるにつれて、より多くのポリシースペースが必要になる場合があります。ポリシーステートメントの容量を大幅に増やすには、S3 バケットの追加エンドポイントとして [S3 アクセスポイント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html)を使用する方法があります。これは、各アクセスポイントに独自のポリシーを設定できるためです。アカウントにつき AWS リージョン ごとに数千のアクセス ポイントを設定でき、アクセスポイントごとに最大 20 KB のサイズのポリシーを設定できるため、非常にきめ細かいアクセスコントロール パターンを定義できます。S3 Access Points を使用すると、使用可能なポリシースペースの量が増えますが、クライアントが適切なデータセットに適したアクセスポイントを検出するためのメカニズムが必要になります。

3 番目の方法は、[IAM セッションブローカー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)パターンの実装です。このパターンでは、アクセス決定ロジックを実装し、アクセスセッションごとに短期の IAM セッション認証情報を動的に生成します。IAM セッションブローカーの方法の場合、任意の動的なアクセス許可パターンをサポートして、効果的にスケールできる一方、アクセスパターンロジックを構築する必要があります。

このようなアプローチを使用する代わりに、S3 Access Grants を使用して、Amazon S3 データへのアクセスを管理できます。S3 Access Grants は、Amazon S3 内のデータへのアクセス許可をプレフィックス、バケット、またはオブジェクトごとに定義するための簡略化されたモデルを提供します。さらに、S3 Access Grants を使用して IAM プリンシパルにアクセスを付与することも、社内ディレクトリのユーザーまたはグループに直接アクセスを付与することもできます。

Amazon S3 のデータへのアクセス許可は、通常、ユーザーとグループをデータセットにマップすることで定義します。S3 Access Grants を使用して、Amazon S3 バケットとオブジェクト内のユーザーとロールへの S3 プレフィックスごとに直接アクセスマッピングを定義できます。S3 Access Grants のシンプルなアクセススキームを使用すると、読み取り専用、書き込み専用、または読み取り/書き込みのアクセス権限を S3 プレフィックスごとに IAM プリンシパルに付与することも、社内ディレクトリのユーザーまたはグループに直接付与することもできます。このような S3 Access Grants 機能を使用すると、アプリケーションはアプリケーションの現在の認証済みユーザーに代わって Amazon S3 にデータをリクエストできます。

S3 Access Grants を AWS IAM アイデンティティセンター の[信頼されたアイデンティティプロパゲーション](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html)機能と統合すると、アプリケーションは、認証済みの社内ディレクトリユーザーに代わって (S3 Access Grants を含む) AWS のサービス に直接リクエストすることができます。アプリケーションは最初にユーザーを IAM プリンシパルにマッピングする必要がなくなります。さらに、エンドユーザーのアイデンティティが Amazon S3 にまでプロパゲートされるため、どのユーザーがどの S3 オブジェクトにアクセスしたかの監査が簡素化されます。さまざまなユーザーと IAM セッション間の関係性を再構築する必要がなくなりました。S3 Access Grants と IAM アイデンティティセンターの信頼されたアイデンティティプロパゲーションを連携すると、Amazon S3 の各 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) データイベントにデータアクセスがどのエンドユーザーの代わりなのかについての直接のリファレンスが含まれます。

[信頼された ID の伝播](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overview.html)は、接続された AWS のサービス の管理者がサービスデータへのアクセスを許可および監査するために使用できる AWS IAM アイデンティティセンター 機能です。このデータへのアクセスは、グループの関連付けなどのユーザー属性に基づいています。信頼された ID の伝播を設定するには、接続された AWS のサービス の管理者と IAM アイデンティティセンターの管理者とのコラボレーションが必要です。詳細については、「[Prerequisites and considerations](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html)」を参照してください。

S3 Access Grants の詳細については、後続のトピックを参照してください。

**Topics**
+ [S3 Access Grants の概念](access-grants-concepts.md)
+ [S3 Access Grants と社内ディレクトリのアイデンティティ](access-grants-directory-ids.md)
+ [S3 Access Grants の開始方法](access-grants-get-started.md)
+ [S3 Access Grants インスタンスの使用](access-grants-instance.md)
+ [S3 Access Grants ロケーションの使用](access-grants-location.md)
+ [S3 Access Grants での許可の使用](access-grants-grant.md)
+ [Access Grants を使用した S3 データの取得](access-grants-data.md)
+ [S3 Access は、クロスアカウントアクセスを許可します。](access-grants-cross-accounts.md)
+ [S3 Access Grants のタグの管理](access-grants-tagging.md)
+ [S3 Access Grants の制約](access-grants-limitations.md)
+ [S3 Access Grants の統合](access-grants-integrations.md)

# S3 Access Grants の概念
<a name="access-grants-concepts"></a>

**S3 Access Grants のワークフロー**  
S3 Access Grants のワークフローは次のとおりです。

1. S3 Access Grants インスタンスを作成します。「[S3 Access Grants インスタンスの使用](access-grants-instance.md)」を参照してください。

1. S3 Access Grants インスタンスに、Amazon S3 データ内のロケーションを登録し、これらのロケーションを AWS Identity and Access Management (IAM) ロールにマッピングします。「[ロケーションを登録する](access-grants-location-register.md)」を参照してください。

1. 被付与者用の権限を作成し、被付与者に S3 リソースへのアクセス許可を付与します。「[S3 Access Grants での許可の使用](access-grants-grant.md)」を参照してください。

1. 被付与者が S3 Access Grants の一時的な認証情報をリクエストします。「[S3 Access Grants を介して Amazon S3 データへのアクセスをリクエストする](access-grants-credentials.md)」を参照してください。

1. 被付与者が、これらの一時的な認証情報を使用して S3 データにアクセスします。「[S3 Access Grants が提供する認証情報を使用した S3 データへのアクセス](access-grants-get-data.md)」を参照してください。

詳細については、「[S3 Access Grants の開始方法](access-grants-get-started.md)」を参照してください。

 **S3 Access Grants インスタンス**   
S3 Access Grants インスタンス**は、個々の権限の論理コンテナです**。S3 Access Grants インスタンスを作成するときは、AWS リージョンを指定する必要があります。AWS アカウントの AWS リージョンごとに、1 つの S3 Access Grants インスタンスを作成できます。詳細については、「[S3 Access Grants インスタンスの使用](access-grants-instance.md)」を参照してください。  
S3 Access Grants を使用して社内ディレクトリ内のユーザーとグループのアイデンティティにアクセス許可を付与する場合は、S3 Access Grants インスタンスを AWS IAM アイデンティティセンター インスタンスに関連付ける必要もあります。詳細については、「[S3 Access Grants と社内ディレクトリのアイデンティティ](access-grants-directory-ids.md)」を参照してください。  
新規作成された S3 Access Grants インスタンスは空です。インスタンス内で、ロケーションを登録する必要があります。S3 デフォルトパス (`s3://`）、バケット、またはバケット内のプレフィックスを使用できます。少なくとも 1 つのロケーションを登録したら、この登録したロケーションのデータへのアクセスを許可するアクセス権限を作成できます。

 **ロケーション**   
S3 Access Grants のロケーション**によって、バケットまたはプレフィックスが AWS Identity and Access Management (IAM) ロールにマッピングされます。S3 Access Grants は、この IAM ロールを引き受けて、その特定のロケーションにアクセスする被付与者に一時的な認証情報を提供します。アクセス権限を作成する前に、まず S3 Access Grants インスタンスに少なくとも 1 つのロケーションを登録する必要があります。  
デフォルトのロケーション (`s3://`) を登録し、IAM ロールにマッピングすることをお勧めします。デフォルトの S3 パスのロケーション (`s3://`) を使用すると、アカウントの AWS リージョン内のすべての S3 バケットへのアクセスがカバーされます。アクセス権限を作成するときに、権限の範囲をデフォルトのロケーション内のバケット、プレフィックス、またはオブジェクトに絞り込むことができます。  
より複雑なアクセス管理のユースケースでは、デフォルトのロケーション以外の登録が必要になる場合があります。例として、次のようなユースケースが挙げられます。  
+ *amzn-s3-demo-bucket* が S3 Access Grants インスタンスの登録済みロケーションで、IAM ロールがマッピングされているが、この IAM ロールがバケット内の特定のプレフィックスへのアクセスを拒否されるとします。この場合、IAM ロールがアクセスできないプレフィックスを別のロケーションとして登録し、そのロケーションを、必要なアクセス権を持つ別の IAM ロールにマッピングできます。
+ 仮想プライベートクラウド (VPC) エンドポイント内のユーザーのみにアクセスを制限する権限を作成するとします。この場合、IAM ロールで VPC エンドポイントのみにアクセスを制限するバケットのロケーションを登録できます。後で、被付与者が S3 Access Grants に認証情報を要求すると、S3 Access Grants はロケーションの IAM ロールを引き受けて一時的な認証情報を提供します。この認証情報は、呼び出し元が VPC エンドポイント内のユーザーでない限り、特定のバケットへのアクセスを拒否します。こうした拒否のアクセス許可は、権限で指定された通常の READ、WRITE、または READWRITE のアクセス許可に加えて適用されます。
ユースケースで S3 Access Grants インスタンスに複数のロケーションを登録する必要がある場合は、次のいずれかを登録できます。  
+ デフォルトの S3 ロケーション (`s3://`)
+ 1 つのバケット (*amzn-s3-demo-bucket* など) または複数のバケット
+ 1 つのバケットと 1 つのプレフィックス (`amzn-s3-demo-bucket/prefix*` など）、または複数のプレフィックス
S3 Access Grants インスタンスに登録できるロケーションの最大数については、「[S3 Access Grants の制約](access-grants-limitations.md)」を参照してください。S3 Access Grants のロケーション登録の詳細については「[ロケーションを登録する](access-grants-location-register.md)」を参照してください。  
S3 Access Grants インスタンスに最初のロケーションを登録しても、インスタンスに個別のアクセス権限はありません。そのため、S3 データへのアクセスはまだ許可されていません。この時点で、アクセス権限を作成してアクセスを許可できます。権限の作成方法の詳細については、「[S3 Access Grants での許可の使用](access-grants-grant.md)」を参照してください。

 **権限**   
S3 Access Grants インスタンス内の個々の「**権限」は、特定のアイデンティティ (IAM プリンシパル、社内ディレクトリのユーザーやグループ) に、S3 Access Grants インスタンスに登録されたロケーション内でのアクセスを許可するものです。  
権限を作成する際、登録されたロケーション全体へのアクセス許可を付与する必要はありません。ロケーション内で権限のアクセス範囲を絞り込むことができます。登録されたロケーションがデフォルトの S3 パス (`s3://`) である場合は、バケット、バケット内のプレフィックス、または特定のオブジェクトに権限の範囲を絞り込む必要があります。権限に登録されたロケーションがバケットまたはプレフィックスである場合は、バケットまたはプレフィックス全体へのアクセスを許可することも、オプションで、権限の範囲をプレフィックス、サブプレフィックス、またはオブジェクトに絞り込むこともできます。  
権限では、権限のアクセスレベルを READ、WRITE、または READWRITE に設定します。例えば、社内ディレクトリグループ `01234567-89ab-cdef-0123-456789abcdef` にバケット `s3://amzn-s3-demo-bucket/projects/items/*` への READ アクセスを許可する権限があるとします。この場合、そのグループのユーザーには、*amzn-s3-demo-bucket* という名前のバケット内の、プレフィックス `projects/items/` が付いたオブジェクトキー名を持つすべてのオブジェクトへの READ アクセスが付与されます。  
S3 Access Grants インスタンスで作成できる権限の最大数については、「[S3 Access Grants の制約](access-grants-limitations.md)」を参照してください。権限の作成方法の詳細については、「[権限を作成する](access-grants-grant-create.md)」を参照してください。

 **S3 Access Grants の一時的な認証情報**   
権限を作成すると、権限で指定されたアイデンティティを利用する承認済みアプリケーションは、*ジャストインタイムアクセス認証情報*をリクエストできるようになります。これを行うために、アプリケーションは [GetDataAccess](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html) S3 API オペレーションを呼び出します。被付与者は、この API オペレーションを使用して、共有された S3 データへのアクセスをリクエストできます。  
S3 Access Grants インスタンスは、`GetDataAccess` リクエストを保持する権限に照会して評価します。リクエスタに一致する権限がある場合、S3 Access Grants は、一致する権限の登録ロケーションに関連付けられた IAM ロールを引き受けます。S3 Access Grants は一時的な認証情報のアクセス許可の範囲を、権限の範囲で指定されている S3 バケット、プレフィックス、またはオブジェクトのみに限定します。  
一時アクセス認証情報の有効期限はデフォルトで 1 時間です。ただし、15 分から 12 時間までの任意の値に設定できます。[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) の API リファレンスでセッションの最長時間について確認してください。

## 仕組み
<a name="access-grants-concepts-how"></a>

次の図では、範囲が `s3://` のデフォルトの Amazon S3 ロケーションが IAM ロール `s3ag-location-role` に登録されています。この IAM ロールには、S3 Access Grants を介して認証情報が取得されると、アカウント内で Amazon S3 アクションを実行するアクセス許可があります。

このロケーションでは、2 人の IAM ユーザーに対して 2 つの個別のアクセス権限が作成されます。IAM ユーザー Bob には、`DOC-BUCKET-EXAMPLE` バケット内のプレフィックス `bob/` への `READ` と `WRITE` のアクセス権の両方が付与されます。別の IAM ロールである Alice には、`DOC-BUCKET-EXAMPLE` バケット内のプレフィックス `alice/` への `READ` アクセス許可のみが付与されます。Bob が `DOC-BUCKET-EXAMPLE` バケット内のプレフィックス `bob/` にアクセスするための権限は青色で定義されています。Alice が `DOC-BUCKET-EXAMPLE` バケット内のプレフィックス `alice/` にアクセスするための権限は緑色で定義されています。

Bob がデータの `READ` を行う場合、Bob の権限が付与されているロケーションに関連付けられている IAM ロールが S3 Access Grants の [GetDataAccess](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html) API オペレーションを呼び出します。Bob が `s3://DOC-BUCKET-EXAMPLE/bob/*` で始まる S3 プレフィックスまたはオブジェクトに対して `READ` を行おうとすると、`GetDataAccess` リクエストは `s3://DOC-BUCKET-EXAMPLE/bob/*` へのアクセス許可がある一時的な IAM セッション認証情報セットを返します。Bob は、権限により許可されているため、`s3://DOC-BUCKET-EXAMPLE/bob/*` で始まる任意の S3 プレフィックスまたはオブジェクトに対して `WRITE` を同様に実行できます。

同じように、Alice は、`s3://DOC-BUCKET-EXAMPLE/alice/` で始まるすべてに対して `READ` を実行できます。ただし、`s3://` 内のバケット、プレフィックス、オブジェクトに対して `WRITE` を実行しようすると、Access Denied (403 Forbidden) エラーが発生します。これは、どのデータに対する `WRITE` アクセスを Alice に付与する権限がないためです。さらに、Alice が `s3://DOC-BUCKET-EXAMPLE/alice/` 外部のデータに対して何らかのアクセスレベル (`READ` または `WRITE`) をリクエストしても、同様に Access Denied エラーが表示されます。

![\[S3 Access Grants の仕組み\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/s3ag-how-it-works.png)


このパターンは多数のユーザーとバケットに応じてスケールでき、アクセス許可の管理を簡素化します。個別のユーザーとプレフィックスのアクセス関係を追加または削除するたびに、サイズが大きくなる可能性のある S3 バケットポリシーを編集する代わりに、個別の権限を別々に追加したり削除したりできます。

# S3 Access Grants と社内ディレクトリのアイデンティティ
<a name="access-grants-directory-ids"></a>

Amazon S3 Access Grants を使用すると、同じ AWS アカウント 内と他のアカウントの両方で、AWS Identity and Access Management (IAM) プリンシパル (ユーザーまたはロール) へのアクセスを許可できます。ただし、多くの場合、データにアクセスするエンティティは社内ディレクトリのエンドユーザーです。IAM プリンシパルにアクセスを付与する代わりに、S3 Access Grants を使用して社内のユーザーやグループに直接アクセスを許可できます。S3 Access Grants を使用すると、社内アプリケーションを介して S3 データにアクセスするために、社内アイデンティティを中間となる IAM プリンシパルにマッピングする必要がなくなります。

エンドユーザーのアイデンティティの使用したデータへのアクセスをサポートするこの新機能は、S3 Access Grants インスタンスを AWS IAM アイデンティティセンター インスタンスに関連付けることで実現します。IAM アイデンティティセンターは、標準ベースのアイデンティティプロバイダーをサポートし、S3 Access Grants を含め、エンドユーザーアイデンティティをサポートするあらゆるサービスや機能の AWS のハブとなります。IAM アイデンティティセンターは、信頼されているアイデンティティプロパゲーション機能を介して社内アイデンティティの認証をサポートします。詳細については、「[アプリケーション間での信頼されたアイデンティティのプロパゲーション](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html)」を参照してください。

S3 Access Grants でワークフォースアイデンティティサポートの使用を開始するには、前提条件として、まず IAM アイデンティティセンターで、社内アイデンティティプロバイダーと IAM アイデンティティセンターの間のアイデンティティのプロビジョニングを設定します。IAM アイデンティティセンターは、Okta、Microsoft Entra ID (旧称 Azure Active Directory) などの社内アイデンティティプロバイダー、またはクロスドメインアイデンティティ管理システム (SCIM) プロトコルをサポートするその他の外部アイデンティティプロバイダー (IdP) をサポートしています。IAM アイデンティティセンターを IdP に接続して自動プロビジョニングを有効にすると、IdP のユーザーとグループが IAM アイデンティティセンターのアイデンティティストアに同期されます。このステップが完了すると、IAM アイデンティティセンターにはユーザーとグループに関する独自のビューが表示されるため、S3 Access Grants などのその他の AWS のサービス と機能を使用してユーザーやグループを参照できます。IAM アイデンティティセンターの自動プロビジョニングの設定に関する詳細は、「**AWS IAM アイデンティティセンター ユーザーガイド」の「[自動プロビジョニング](https://docs.aws.amazon.com/singlesignon/latest/userguide/provision-automatically.html)」を参照してください。

IAM アイデンティティセンターは、AWS Organizations と統合されているため、各アカウントを手動で設定する必要なく、複数の AWS アカウント にわたるアクセス許可を一元管理できます。通常、組織では、アイデンティティ管理者が組織全体で単一の IAM アイデンティティセンターのインスタンスをアイデンティティ同期の単一ポイントとして、設定します。この IAM アイデンティティセンターのインスタンスは通常、組織内の専用 AWS アカウント インスタンスで実行されます。このような一般的な設定では、組織内のどの AWS アカウント からでも S3 Access Grants のユーザーアイデンティティとグループアイデンティティを参照できます。

ただし、AWS Organizations 管理者が中央の IAM アイデンティティセンターのインスタンスをまだ設定していない場合は、S3 Access Grants インスタンスと同じアカウントと AWS リージョンにローカルの IAM アイデンティティセンターインスタンスを作成できます。別の AWS リージョンに IAM Identity Center インスタンスを設定している場合は、このインスタンスを S3 Access Grants インスタンスと同じ AWS リージョンに[レプリケート](https://docs.aws.amazon.com/singlesignon/latest/userguide/replicate-to-additional-region.html)することもできます。このような設定は、概念実証やローカルの開発環境でのユースケースで一般的です。いずれの場合も、IAM アイデンティティセンターのインスタンスは、関連付けられる S3 Access Grants インスタンスと同じ AWS リージョン に配置する必要があります。

次の図の外部 IdP を使用する IAM アイデンティティセンター設定では、IdP は SCIM で設定され、IdP のアイデンティティストアを IAM アイデンティティセンターのアイデンティティストアと同期します。

![\[自動プロビジョニングによる IAM アイデンティティセンターと外部アイデンティティストアの統合\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/s3ag-identity-store.png)


社内ディレクトリのアイデンティティを S3 Access Grants で使用するには、次を実行します。
+ IAM アイデンティティセンターで [自動プロビジョニング](https://docs.aws.amazon.com/singlesignon/latest/userguide/provision-automatically.html) を設定して、IdP からのユーザーとグループの情報を IAM アイデンティティセンターに同期します。
+ IAM アイデンティティセンター内の外部アイデンティティソースを信頼できるトークン発行者として設定します。詳細については、「**AWS IAM アイデンティティセンター ユーザーガイド」の「[アプリケーション間での信頼されたアイデンティティのプロパゲーション](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html)」を参照してください。
+ S3 Access Grants インスタンスを IAM アイデンティティセンターインスタンスに関連付けます。これは、[S3 Access Grants インスタンス作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance.html) 時に実行できます。S3 Access Grants インスタンスをすでに作成している場合は、「[IAM アイデンティティセンターインスタンスの関連付けまたは関連付けを解除します。](access-grants-instance-idc.md)」を参照してください。

## ディレクトリのアイデンティティが S3 データにアクセスする方法
<a name="access-grants-directory-ids-details"></a>

S3 データに社内アプリケーションを介してアクセスする必要がある社内ディレクトリのユーザーがいるとします。例えば、このアプリケーションは、(Okta などの) ユーザー認証を行う外部 IdP と統合されたドキュメントビューアだとします。これらのアプリケーションでのユーザーの認証は、通常、ユーザーのウェブブラウザのリダイレクトによって行われます。ディレクトリ内のユーザーは IAM プリンシパルではないため、アプリケーションには、S3 Access Grants `GetDataAccess` API オペレーションを呼び出し、ユーザーに代わって [S3 データへのアクセス認証情報を取得](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-credentials.html) できる IAM 認証情報が必要です。認証情報を自身で取得する IAM ユーザーやロールとは異なり、アプリケーションには IAM ロールにマップされていないディレクトリユーザーを示す方法が必要です。これにより、ユーザーは S3 Access Grants を通じてデータにアクセスできるようになります。

認証されたディレクトリユーザーから、ディレクトリユーザーに代わって S3 Access Grants へのリクエストを実行できる IAM 呼び出し元へのこの移行は、アプリケーションが IAM アイデンティティセンターの信頼できるトークン発行者機能を通じて行います。アプリケーションは、ディレクトリユーザーを認証すると、(Okta などの) IdP からのアイデンティティトークンを取得し、Okta に従ってディレクトリユーザーを示します。IAM アイデンティティセンターの信頼されたトークン発行者の設定により、アプリケーションはこの Okta トークン (Okta テナントが「信頼できる発行者」として設定されている) を、AWS のサービス 内でディレクトリユーザーを安全に示す IAM アイデンティティセンターの別のアイデンティティトークンと交換できます。その後、データアプリケーションは IAM ロールを引き受け、IAM アイデンティティセンターからのディレクトリユーザーのトークンを追加のコンテキストとして提供します。アプリケーションは、結果として得られる IAM セッションを使用して S3 Access Grants を呼び出すことができます。このトークンは、アプリケーションのアイデンティティ (IAM プリンシパル自体) とディレクトリユーザーのアイデンティティの両方を示します。

この移行の主なステップはトークンの交換です。アプリケーションは IAM アイデンティティセンターの `CreateTokenWithIAM` API オペレーションを呼び出して、このトークン交換を実行します。当然、これもまた AWS API 呼び出しであり、署名には IAM プリンシパルが必要です。このリクエストを行う IAM プリンシパルは、通常、アプリケーションに関連付けられた IAM ロールです。例えば、アプリケーションが Amazon EC2 で実行されている場合、`CreateTokenWithIAM` リクエストは通常、アプリケーションが実行されている EC2 インスタンスに関連付けられている IAM ロールによって実行されます。`CreateTokenWithIAM` 呼び出しが正常に完了すると、新しいアイデンティティトークンが生成され、AWS のサービス 内でそのトークンが認識されます。

アプリケーションがディレクトリユーザーに代わって `GetDataAccess` を呼び出す前の次のステップは、アプリケーションがディレクトリユーザーのアイデンティティを含む IAM セッションを取得することです。アプリケーションは、追加のアイデンティティコンテキストとしてディレクトリユーザーの IAM アイデンティティセンターのトークンも含めた AWS Security Token Service (AWS STS) `AssumeRole` リクエストを使用してこれを実行します。この追加コンテキストにより、IAM アイデンティティセンターはディレクトリユーザーのアイデンティティを次のステップにプロパゲートできるようになります。アプリケーションが引き受ける IAM ロールは、`GetDataAccess` オペレーションを呼び出すために IAM アクセス権限を必要とするロールです。

追加のコンテキストとしてディレクトリユーザーのための IAM アイデンティティセンターのトークンを使用して アイデンティティベアラー IAM ロールを引き受けたため、アプリケーションには、認証されたディレクトリユーザーに代わって `GetDataAccess` に署名付きリクエストを行うために必要なものがすべて揃っています。

トークンのプロパゲーションは次のステップに基づいています。

**IAM アイデンティティセンターのアプリケーションを作成する**

まず、IAM アイデンティティセンターに新しいアプリケーションを作成します。このアプリケーションは、使用できるアプリケーション設定タイプを IAM アイデンティティセンターが識別できるテンプレートを使用します。アプリケーションを作成するコマンドでは、IAM アイデンティティセンターインスタンスの Amazon リソースネーム (ARN)、アプリケーション名、アプリケーションプロバイダー ARN を指定する必要があります。アプリケーションプロバイダーは、アプリケーションが IAM アイデンティティセンターを呼び出すために使用する SAML または OAuth アプリケーションプロバイダーです。

次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws sso-admin create-application \
 --instance-arn "arn:aws:sso:::instance/ssoins-ssoins-1234567890abcdef" \
 --application-provider-arn "arn:aws:sso::aws:applicationProvider/custom" \
 --name MyDataApplication
```

レスポンス:

```
{
   "ApplicationArn": "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d"
}
```

**信頼できるトークン発行者を作成します**

IAM アイデンティティセンターアプリケーションが完成したところで、次のステップは、IdP `IdToken` からの値を IAM アイデンティティセンターのトークンと交換するために使用される信頼できるトークン発行者を設定することです。このステップを完了するには、以下の項目が必要です。
+ アイデンティティプロバイダーの発行者の URL
+ 信頼されたトークン発行者名
+ クレーム属性パス
+ アイデンティティストア属性パス
+ JSON Web Key Set (JWKS) 取り出しオプション

クレーム属性パスは、アイデンティティストア属性へのマッピングに使用されるアイデンティティプロバイダー属性です。通常、クレーム属性パスはユーザーのメールアドレスであるとはいえ、その他の属性を使用してマッピングを実行することもできます。

`oidc-configuration.json` というファイルを次の内容で作成します。このポリシーを使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
{
  "OidcJwtConfiguration":
     {
      "IssuerUrl": "https://login.microsoftonline.com/a1b2c3d4-abcd-1234-b7d5-b154440ac123/v2.0",
      "ClaimAttributePath": "preferred_username",
      "IdentityStoreAttributePath": "userName",
      "JwksRetrievalOption": "OPEN_ID_DISCOVERY"
     }
}
```

信頼できるトークン発行者を作成するには、次のコマンドを実行します。このコマンド例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws sso-admin create-trusted-token-issuer \
  --instance-arn "arn:aws:sso:::instance/ssoins-1234567890abcdef" \
  --name MyEntraIDTrustedIssuer \
  --trusted-token-issuer-type OIDC_JWT \
  --trusted-token-issuer-configuration file://./oidc-configuration.json
```

応答

```
{
  "TrustedTokenIssuerArn": "arn:aws:sso::123456789012:trustedTokenIssuer/ssoins-1234567890abcdef/tti-43b4a822-1234-1234-1234-a1b2c3d41234"
}
```

**IAM アイデンティティセンターアプリケーションを信頼できるトークン発行者に接続します**

信頼されたトークン発行者が機能するには、さらにいくつかの設定が必要です。信頼できるトークン発行者が信頼する対象者を設定します。対象者はキーによって識別される `IdToken` 内部の値で、アイデンティティプロバイダーの設定で確認できます。例えば、次のようになります。

```
1234973b-abcd-1234-abcd-345c5a9c1234
```

次のコンテンツを含む `grant.json` という名前のファイルを作成します。このファイルを使用するには、アイデンティティプロバイダーの設定と一致するように対象者を変更し、前のコマンドで返された信頼できるトークン発行者 ARN を指定します。

```
{
   "JwtBearer":
     {
       "AuthorizedTokenIssuers":
         [
           {
             "TrustedTokenIssuerArn": "arn:aws:sso::123456789012:trustedTokenIssuer/ssoins-1234567890abcdef/tti-43b4a822-1234-1234-1234-a1b2c3d41234",
               "AuthorizedAudiences":
                 [
                   "1234973b-abcd-1234-abcd-345c5a9c1234"
                 ]
            }
         ]
     }
 }
```

次のコマンド例を実行します。このコマンドを使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws sso-admin put-application-grant \
  --application-arn "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" \
  --grant-type "urn:ietf:params:oauth:grant-type:jwt-bearer" \
  --grant file://./grant.json \
```

このコマンドは、`grant.json` ファイル内の対象者を信頼する設定を使用して、信頼されたトークン発行者を設定し、このオーディエンスを、タイプ `jwt-bearer` のトークンを交換するための最初のステップで作成されたアプリケーションにリンクします。`urn:ietf:params:oauth:grant-type:jwt-bearer` の文字列は任意の文字列ではありません。これは、OAuth SON Web Token (JWT) アサーションプロファイルに登録されている名前空間です。この名前空間の詳細については、[RFC 7523](https://datatracker.ietf.org/doc/html/rfc7523) を参照してください。

次のコマンドを使用して、信頼できるトークン発行者が アイデンティティプロバイダーからの `IdToken` 値を交換する際にどの範囲を含めるかを設定します。S3 Access Grants の場合、`--scope` パラメータの値は `s3:access_grants:read_write` です。

```
aws sso-admin put-application-access-scope \
  --application-arn "arn:aws:sso::111122223333:application/ssoins-ssoins-111122223333abcdef/apl-abcd1234a1b2c3d" \
  --scope "s3:access_grants:read_write"
```

最後のステップは、リソースポリシーを IAM アイデンティティセンターのアプリケーションにアタッチすることです。このポリシーにより、アプリケーションの IAM ロールが `sso-oauth:CreateTokenWithIAM` API オペレーションにリクエストを行い、IAM アイデンティティセンター から `IdToken` 値を受け取ることができるようになります。

次のコンテンツを含む `authentication-method.json` という名前のファイルを作成します。`123456789012` をアカウント ID に置き換えます。

```
{
   "Iam":
       {
         "ActorPolicy":
             {
                "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
                    "Statement":
                    [
                        {
                           "Effect": "Allow",
                            "Principal":
                            {
                              "AWS": "arn:aws:iam::123456789012:role/webapp"
                            },
                           "Action": "sso-oauth:CreateTokenWithIAM",
                            "Resource": "*"
                        }
                    ]
                }
            }
        }
```

ポリシーを IAM アイデンティティセンターアプリケーションにアタッチするには、次のコマンドを実行します。

```
aws sso-admin put-application-authentication-method \
   --application-arn "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d" \
   --authentication-method-type IAM \
   --authentication-method file://./authentication-method.json
```

これで、ウェブアプリケーションを通じてディレクトリユーザーに S3 Access Grants を使用するための設定が完了しました。この設定はアプリケーション内で直接テストすることも、IAM アイデンティティセンターアプリケーションポリシーで許可されている IAM ロールから次のコマンドを使用して `CreateTokenWithIAM` API オペレーションを呼び出しても行えます。

```
aws sso-oidc create-token-with-iam \
   --client-id "arn:aws:sso::123456789012:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d"  \
   --grant-type urn:ietf:params:oauth:grant-type:jwt-bearer \
   --assertion IdToken
```

結果は次のとおりになります。

```
{
    "accessToken": "<suppressed long string to reduce space>",
    "tokenType": "Bearer",
    "expiresIn": 3600,
    "refreshToken": "<suppressed long string to reduce space>",
    "idToken": "<suppressed long string to reduce space>",
    "issuedTokenType": "urn:ietf:params:oauth:token-type:refresh_token",
    "scope": [
      "sts:identity_context",
      "s3:access_grants:read_write",
      "openid",
      "aws"
    ]
}
```

base64 でエンコードされた `IdToken` 値をデコードすると、JSON 形式のキーバリューペアが表示されます。キー `sts:identity_context` には、アプリケーションがディレクトリ ユーザーのアイデンティティ情報を含めるために `sts:AssumeRole` リクエストで送信する必要がある値が含まれています。デコードされた `IdToken` の例は次のとおりです。

```
{
    "aws:identity_store_id": "d-996773e796",
    "sts:identity_context": "AQoJb3JpZ2luX2VjEOTtl;<SUPRESSED>",
    "sub": "83d43802-00b1-7054-db02-f1d683aacba5",
    "aws:instance_account": "123456789012",
    "iss": "https://identitycenter.amazonaws.com/ssoins-1234567890abcdef",
    "sts:audit_context": "AQoJb3JpZ2luX2VjEOT<SUPRESSED>==",
    "aws:identity_store_arn": "arn:aws:identitystore::232642235904:identitystore/d-996773e796",
    "aud": "abcd12344U0gi7n4Yyp0-WV1LWNlbnRyYWwtMQ",
    "aws:instance_arn": "arn:aws:sso:::instance/ssoins-6987d7fb04cf7a51",
    "aws:credential_id": "EXAMPLEHI5glPh40y9TpApJn8...",
    "act": {
       "sub": "arn:aws:sso::232642235904:trustedTokenIssuer/ssoins-6987d7fb04cf7a51/43b4a822-1020-7053-3631-cb2d3e28d10e"
    },
    "auth_time": "2023-11-01T20:24:28Z",
    "exp": 1698873868,
    "iat": 1698870268
}
```

`sts:identity_context` から値を取得し、この情報を `sts:AssumeRole` 呼び出しで渡すことができます。CLI 出力例は次のとおりです。引き受けるロールは、`s3:GetDataAccess` 呼び出しアクセス許可のある一時的なロールです。

```
aws sts assume-role \
   --role-arn "arn:aws:iam::123456789012:role/temp-role" \
   --role-session-name "TempDirectoryUserRole" \
   --provided-contexts ProviderArn="arn:aws:iam::aws:contextProvider/IdentityCenter",ContextAssertion="value from sts:identity_context"
```

これで、この呼び出しで受け取った認証情報を使用して `s3:GetDataAccess` API オペレーションを呼び出し、S3 リソースにアクセスできる最終的な認証情報を受け取ることができます。

# S3 Access Grants の開始方法
<a name="access-grants-get-started"></a>

Amazon S3 Access Grants は、S3 データにスケーラブルなアクセスコントロールソリューションを提供する Amazon S3 の機能です。S3 Access Grants は S3 認証情報ベンダーです。つまり、許可のリストとレベルを S3 Access Grants に登録することになります。その後、ユーザーまたはクライアントが S3 データにアクセスする必要が生じると、まず S3 Access Grants に認証情報を要求します。アクセスを許可する対応する権限がある場合、S3 Access Grants は一時的な最小特権のアクセス認証情報を送信します。その後、ユーザーまたはクライアントは S3 Access Grants から提供された認証情報を使用して S3 データにアクセスできます。これを踏まえて、S3 データ要件で複雑または大規模なアクセス許可設定が必要となる場合は、S3 Access Grants を使用して、ユーザー、グループ、ロール、アプリケーションの S3 データ権限をスケーリングできます。

ほとんどのユースケースでは、AWS Identity and Access Management (IAM) バケットポリシーまたは IAM アイデンティティベースのポリシーを使用して S3 データのアクセスコントロールを管理できます。

ただし、次のような複雑な S3 アクセスコントロール要件がある場合は、S3 Access Grants を使用すると多大な利点が得られます。
+ バケットポリシーのサイズ制限である 20 KB に達している場合。
+ 分析やビッグデータのために S3 データへのアクセス許可をヒューマンアイデンティティで付与している場合。例えば、Microsoft Entra ID (旧称 Azure Active Directory)、Okta、または Ping など。
+ IAM ポリシーを頻繁に更新せずに、クロスアカウントアクセスを提供する必要がある場合。
+ データが構造化されておらず、構造化されていない行と列の形式で、オブジェクトレベルの場合。

S3 Access Grants のワークフローは次のとおりです。


| Steps | Description | 
| --- | --- | 
| 1 | [S3 Access Grants インスタンスを作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance.html) 開始するには、個別のアクセス許可を含む S3 Access Grants インスタンスを起動します。  | 
| 2 | [ロケーションを登録する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html) 次に、S3 データロケーション (デフォルトの `s3://` など) を登録して、S3 データロケーションへのアクセスを提供する際に S3 Access Grants が引き受けるデフォルトの IAM ロールを指定します。また、特定のバケットまたはプレフィックスにカスタムロケーションを追加し、それらをカスタム IAM ロールにマッピングすることもできます。  | 
| 3 | [権限を作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html) 個別のアクセス許可権限を作成します。これらのアクセス権限では、登録されている S3 ロケーション、そのロケーション内のデータアクセス範囲、権限被付与者のアイデンティティ、アクセスレベル (`READ`、`WRITE`、または`READWRITE`) を指定します。  | 
| 4 | [S3 データへのアクセスをリクエストする](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-credentials.html) ユーザー、アプリケーション、S3 AWS のサービス データへのアクセスには、まずアクセスリクエストを行います。S3 Access Grants が、リクエストを承認すべきかどうかを決定します。アクセスを許可する対応する権限がある場合、S3 Access Grants は、その権限に関連付けられている登録済みロケーションの IAM ロールを使用して、一時的な認証情報をリクエスタに返送します。  | 
| 5 | [S3 データにアクセスする](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-get-data.html) アプリケーションは S3 Access Grants が提供する一時的な認証情報を使用して S3 データにアクセスします。  | 

# S3 Access Grants インスタンスの使用
<a name="access-grants-instance"></a>

Amazon S3 Access Grants の使用を開始するには、まず S3 Access Grants インスタンスを作成します。作成できるのは、アカウントにつき AWS リージョン ごとに単一の S3 Access Grants インスタンス のみです。S3 Access Grants インスタンスは、登録されたロケーションや権限を含む S3 Access Grants リソースのコンテナとして機能します。

S3 Access Grants を使用すると、AWS Identity and Access Management (IAM) ユーザーとロールに S3 データへのアクセス許可を付与することができます。AWS IAM アイデンティティセンター に [社内アイデンティティディレクトリを追加](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html)した場合は、社内ディレクトリのこの IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付けることができます。その後、社内ユーザーとグループにアクセス権限を作成できます。社内ディレクトリを IAM アイデンティティセンターにまだ追加していない場合は、後で S3 Access Grants インスタンスを IAM アイデンティティセンターインスタンスに関連付けることができます。

**Topics**
+ [S3 Access Grants インスタンスを作成する](access-grants-instance-create.md)
+ [S3 Access Grants インスタンスの詳細を取得する](access-grants-instance-view.md)
+ [S3 Access Grants インスタンスを一覧表示する](access-grants-instance-list.md)
+ [IAM アイデンティティセンターインスタンスの関連付けまたは関連付けを解除します。](access-grants-instance-idc.md)
+ [S3 Access Grants インスタンスを削除する](access-grants-instance-delete.md)

# S3 Access Grants インスタンスを作成する
<a name="access-grants-instance-create"></a>

Amazon S3 Access Grants の使用を開始するには、まず S3 Access Grants インスタンスを作成します。作成できるのは、アカウントにつき AWS リージョン ごとに単一の S3 Access Grants インスタンス のみです。S3 Access Grants インスタンスは、登録されたロケーションや権限を含む S3 Access Grants リソースのコンテナとして機能します。

S3 Access Grants を使用すると、AWS Identity and Access Management (IAM) ユーザーとロールに S3 データへのアクセス許可を付与することができます。AWS IAM アイデンティティセンター に [社内アイデンティティディレクトリを追加](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html)した場合は、社内ディレクトリのこの IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付けることができます。その後、社内ユーザーとグループにアクセス権限を作成できます。社内ディレクトリを IAM アイデンティティセンターにまだ追加していない場合は、後で S3 Access Grants インスタンスを IAM アイデンティティセンターインスタンスに関連付けることができます。

Amazon S3 コンソール、AWS Command Line Interface、(AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して S3 Storage Lens グループを作成および管理できます。

## S3 コンソールの使用
<a name="access-grants-instance-create-console"></a>

S3 Access Grants を使用して S3 データへのアクセスを許可する前に、まず S3 データと同じ AWS リージョン に S3 Access Grants インスタンスを作成する必要があります。

**前提条件**  
社内ディレクトリのアイデンティティを使用して S3 データへのアクセスを許可する場合は、AWS IAM アイデンティティセンター に[社内アイデンティティディレクトリを追加](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html)します。まだ追加の準備が整っていない場合は、後で S3 Access Grants インスタンスを IAM アイデンティティセンターインスタンスに関連付けることができます。

**S3 Access Grants インスタンスを作成するには**

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

1. ナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、切り替え先のリージョンを選択します。

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、**[Create S3 Access Grants instance]** をクリックします。

   1. **[Access Grants インスタンスをセットアップ]** ウィザードの **[ステップ 1]** で、現在の AWS リージョン でインスタンスを作成することを確認します。S3 データが配置されているのと同じ AWS リージョン であることを確認します。作成できるのは、アカウントにつき AWS リージョン ごとに単一の S3 Access Grants インスタンス です。

   1. (オプション) AWS IAM アイデンティティセンター に [社内アイデンティティディレクトリを追加](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html)した場合は、社内ディレクトリのこの IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付けることができます。

      これを実行するには、**[Add IAM Identity Center instance in *region*]** を選択します。次に、IAM アイデンティティセンターインスタンスの Amazon リソースネーム (ARN) を入力します。

      社内ディレクトリを IAM アイデンティティセンターにまだ追加していない場合は、後で S3 Access Grants インスタンスを IAM アイデンティティセンターインスタンスに関連付けることができます。

   1. S3 Access Grants インスタンスを作成するには、**[次へ]** をクリックします。ロケーションの登録については、「[ステップ 2 - ロケーションを登録する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance.html)」を参照してください。

1. **[次へ]** または **[Create S3 Access Grants instance]** が無効になっている場合:

**インスタンスは作成できません**
   + 同じ AWS リージョン に S3 Access Grants インスタンスが既にある可能性があります。左側のナビゲーションペインで、**[Access Grants]** を選択します。**[S3 Access Grants]** ページで、**[S3 Access Grants instance in your account]** セクションまで下にスクロールして、インスタンスが既に存在しているかを確認します。
   + S3 Access Grants インスタンスを作成するのに必要な `s3:CreateAccessGrantsInstance` アクセス許可がない可能性があります。アカウント管理者に連絡してください。IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付ける場合に必要な追加のアクセス許可については、「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsInstance.html)」を参照してください。

## の使用AWS CLI
<a name="access-grants-instance-create-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example S3 Access Grants インスタンスを作成する**  

```
aws s3control create-access-grants-instance \
--account-id 111122223333 \
--region us-east-2
```
レスポンス:  

```
{
    "CreatedAt": "2023-05-31T17:54:07.893000+00:00",
    "AccessGrantsInstanceId": "default",
    "AccessGrantsInstanceArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default"
}
```

## REST API の使用
<a name="access-grants-instance-create-rest-api"></a>

Amazon S3 REST API を使用して S3 Access Grants インスタンスを作成できます。REST API での ACL の管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_AssociateAccessGrantsIdentityCenter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_AssociateAccessGrantsIdentityCenter.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsInstance.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstance.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DissociateAccessGrantsIdentityCenter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DissociateAccessGrantsIdentityCenter.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstance.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceForPrefix.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceForPrefix.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceResourcePolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceResourcePolicy.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsInstances.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsInstances.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessGrantsInstanceResourcePolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessGrantsInstanceResourcePolicy.html)

## AWS SDK の使用
<a name="access-grants-instance-create-using-sdk"></a>

このセクションでは、AWS SDK を使用して S3 Access Grants インスタンスを作成する方法の例を説明します。

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

この例では、個別のアクセス許可のコンテナとして機能する S3 Access Grants インスタンスを作成します。作成できるのは、アカウントにつき AWS リージョン ごとに単一の S3 Access Grants インスタンスです。応答には、S3 Access Grants インスタンス用に生成されたインスタンス ID `default` と Amazon リソースネーム (ARN) が含まれます。

**Example S3 Access Grants インスタンスリクエストを作成する**  

```
public void createAccessGrantsInstance() {
CreateAccessGrantsInstanceRequest createRequest = CreateAccessGrantsInstanceRequest.builder().accountId("111122223333").build();
CreateAccessGrantsInstanceResponse createResponse = s3Control.createAccessGrantsInstance(createRequest);LOGGER.info("CreateAccessGrantsInstanceResponse: " + createResponse);
}
```
レスポンス:  

```
CreateAccessGrantsInstanceResponse(
CreatedAt=2023-06-07T01:46:20.507Z,
AccessGrantsInstanceId=default,
AccessGrantsInstanceArn=arn:aws:s3:us-east-2:111122223333:access-grants/default)
```

------

# S3 Access Grants インスタンスの詳細を取得する
<a name="access-grants-instance-view"></a>

特定の AWS リージョン の Amazon S3 Access Grants インスタンスの詳細を取得できます。Amazon S3 コンソール、AWS Command Line Interface、(AWS CLI)、Amazon S3 REST API、AWS SDK を使用して S3 Access Grants インスタンスの詳細を取得できます。

## S3 コンソールの使用
<a name="access-grants-instance-view-console"></a>

**S3 Access Grants インスタンスの詳細を取得する方法**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. **[S3 Access Grants]** ページには、S3 Access Grants インスタンスと、アカウントと共有されているクロスアカウントインスタンスが一覧表示されます。インスタンスの詳細を表示するには、**[詳細の表示]** を選択します。

## の使用AWS CLI
<a name="access-grants-instance-view-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example — S3 Access Grants インスタンスの詳細を取得する**  

```
aws s3control get-access-grants-instance \
 --account-id 111122223333 \
 --region us-east-2
```
レスポンス:  

```
{
    "AccessGrantsInstanceArn": "arn:aws:s3:us-east-2: 111122223333:access-grants/default",
    "AccessGrantsInstanceId": "default",
    "CreatedAt": "2023-05-31T17:54:07.893000+00:00"
}
```

## REST API の使用
<a name="access-grants-instance-view-rest-api"></a>

Amazon REST API での S3 Access Grants インスタンスの管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstance.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceForPrefix.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceForPrefix.html) 

## AWS SDK の使用
<a name="access-grants-instance-view-using-sdk"></a>

このセクションでは、AWS SDK を使用して S3 Access Grants インスタンスの詳細を取得する方法の例を説明します。

次の例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

**Example – S3 Access Grants インスタンスを取得する**  

```
public void getAccessGrantsInstance() {
GetAccessGrantsInstanceRequest getRequest = GetAccessGrantsInstanceRequest.builder()
.accountId("111122223333")
.build();
GetAccessGrantsInstanceResponse getResponse = s3Control.getAccessGrantsInstance(getRequest);
LOGGER.info("GetAccessGrantsInstanceResponse: " + getResponse);
}
```
レスポンス:  

```
GetAccessGrantsInstanceResponse(
AccessGrantsInstanceArn=arn:aws:s3:us-east-2: 111122223333:access-grants/default,
CreatedAt=2023-06-07T01:46:20.507Z)
```

------

# S3 Access Grants インスタンスを一覧表示する
<a name="access-grants-instance-list"></a>

AWS Resource Access Manager (AWS RAM) で共有されたインスタンスなど、S3 Access Grants インスタンスを一覧表示することができます。

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、AWS SDK を使用することで、S3 Access Grants インスタンスを一覧表示できます。

## S3 コンソールの使用
<a name="access-grants-instance-list-console"></a>

**S3 Access Grants インスタンスを一覧表示する方法**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. **[S3 Access Grants]** ページには、S3 Access Grants インスタンスと、アカウントと共有されているクロスアカウントインスタンスが一覧表示されます。インスタンスの詳細を表示するには、**[詳細の表示]** を選択します。

## の使用AWS CLI
<a name="access-grants-instance-list-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example — アカウントのすべての S3 Access Grants インスタンスを一覧表示する**  
このアクションでは、アカウントのすべての S3 Access Grants インスタンスを一覧表示します。AWS リージョン ごとに単一の S3 Access Grants インスタンスを持つことができます。このアクションでは、アカウントがアクセスできる他のクロスアカウント S3 Access Grants インスタンスも一覧表示されます。  

```
aws s3control list-access-grants-instances \
 --account-id 111122223333 \
 --region us-east-2
```
レスポンス:  

```
{
    "AccessGrantsInstanceArn": "arn:aws:s3:us-east-2: 111122223333:access-grants/default",
    "AccessGrantsInstanceId": "default",
    "CreatedAt": "2023-05-31T17:54:07.893000+00:00"
}
```

## REST API の使用
<a name="access-grants-instance-list-rest-api"></a>

Amazon REST API での S3 Access Grants インスタンスの管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsInstances.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsInstances.html) 

## AWS SDK の使用
<a name="access-grants-instance-list-using-sdk"></a>

このセクションでは、AWS SDK を使用して S3 Access Grants インスタンスの詳細を取得する方法の例を説明します。

次の例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

**Example — アカウントのすべての S3 Access Grants インスタンスを一覧表示する**  
このアクションでは、アカウントのすべての S3 Access Grants インスタンスを一覧表示します。リージョンごとに単一の S3 Access Grants インスタンスを持つことができます。このアクションでは、アカウントがアクセスできる他のクロスアカウント S3 Access Grants インスタンスも一覧表示されます。  

```
public void listAccessGrantsInstances() {
ListAccessGrantsInstancesRequest listRequest = ListAccessGrantsInstancesRequest.builder()
.accountId("111122223333")
.build();
ListAccessGrantsInstancesResponse listResponse = s3Control.listAccessGrantsInstances(listRequest);
LOGGER.info("ListAccessGrantsInstancesResponse: " + listResponse);
}
```
レスポンス:  

```
ListAccessGrantsInstancesResponse(
AccessGrantsInstancesList=[
ListAccessGrantsInstanceEntry(
AccessGrantsInstanceId=default,
AccessGrantsInstanceArn=arn:aws:s3:us-east-2:111122223333:access-grants/default,
CreatedAt=2023-06-07T04:28:11.728Z
)
]
)
```

------

# IAM アイデンティティセンターインスタンスの関連付けまたは関連付けを解除します。
<a name="access-grants-instance-idc"></a>

Amazon S3 Access Grants では、企業アイデンティティディレクトリの AWS IAM アイデンティティセンター インスタンスを S3 Access Grants インスタンスに関連付けることができます。その後、社内ユーザーとグループ、AWS Identity and Access Management (IAM) ユーザーとロールにアクセス権限を作成できます。

社内ディレクトリのユーザーとグループにアクセス権限を作成する必要がなくなった場合は、IAM アイデンティティセンターインスタンスと S3 Access Grants インスタンスの関連付けを解除できます。

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、AWS SDK を使用して、IAM アイデンティティセンターインスタンスを関連付けたり、関連付けを解除したりできます。

## S3 コンソールの使用
<a name="access-grants-instance-idc-console"></a>

IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付ける前に、社内アイデンティティディレクトリを IAM アイデンティティセンターに追加する必要があります。詳細については、「[S3 Access Grants と社内ディレクトリのアイデンティティ](access-grants-directory-ids.md)」を参照してください。

**IAM アイデンティティセンターインスタンスを S3 アクセス許可インスタンスに関連付けるには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. インスタンスの **[詳細の表示]** をクリックします。

1. 詳細ページの **[IAM アイデンティティセンター]** セクションで、IAM アイデンティティセンターインスタンスを **[追加]** するか、既に IAM アイデンティティセンターインスタンスに関連付けられているインスタンスを **[登録解除]** します。

## の使用AWS CLI
<a name="access-grants-instance-idc-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example – IAM アイデンティティセンターインスタンスを S3 アクセス許可インスタンスに関連付ける**  

```
aws s3control associate-access-grants-identity-center \
 --account-id 111122223333 \
 --identity-center-arn arn:aws:sso:::instance/ssoins-1234a567bb89012c \
 --profile access-grants-profile \
 --region eu-central-1
     
// No response body
```

**Example – IAM アイデンティティセンターインスタンスの S3 アクセス許可インスタンスへの関連付けを解除する**  

```
aws s3control dissociate-access-grants-identity-center \
 --account-id 111122223333 \
 --profile access-grants-profile \
 --region eu-central-1
     
// No response body
```

## REST API の使用
<a name="access-grants-instance-idc-rest-api"></a>

Amazon S3 REST API での IAM アイデンティティセンターと S3 Access Grants 間の関連付けの管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_AssociateAccessGrantsIdentityCenter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_AssociateAccessGrantsIdentityCenter.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DissociateAccessGrantsIdentityCenter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DissociateAccessGrantsIdentityCenter.html) 

# S3 Access Grants インスタンスを削除する
<a name="access-grants-instance-delete"></a>

削除できるのは、アカウントの AWS リージョン の S3 Access Grants インスタンスです。ただし、S3 Access Grants インスタンスを削除する前に、まず次を完了する必要があります。
+ S3 Access Grants インスタンス内の (すべての権限とロケーションを含む) すべてのリソースを削除します。詳細については、「[権限を削除する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant-delete.html)」と「[ロケーションを削除する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant-location.html)」を参照してください。
+ AWS IAM アイデンティティセンター インスタンスを S3 Access Grants インスタンスに関連付けた場合は、IAM アイデンティティセンターインスタンスの関連付けを解除する必要があります。詳細については、「[IAM アイデンティティセンターインスタンスの関連付けまたは関連付けの解除](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-idc.html)」を参照してください。

**重要**  
S3 Access Grants インスタンスの削除は永続的であり、元に戻すことができません。この S3 Access Grants インスタンスの権限を通じてアクセス権を付与されたすべての権限被付与者は、S3 データにアクセスできなくなります。

Amazon S3 コンソール、AWS Command Line Interface、(AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して S3 Storage Lens グループを削除できます。

## S3 コンソールの使用
<a name="access-grants-instance-delete-console"></a>

**S3 Access Grants インスタンスを削除するには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. インスタンスの **[詳細の表示]** をクリックします。

1. インスタンスの詳細ページで、右上隅の **[インスタンスを削除]** を選択します。

1. 表示されたダイアログボックスで、**[削除]** を選択します。この操作は元に戻すことができません。

## の使用AWS CLI
<a name="access-grants-instance-delete-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**注記**  
S3 Access Grants インスタンスを削除する前に、まず S3 Access Grants インスタンス内で作成されたすべての権限とロケーションを削除する必要があります。IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付けている場合は、まずその関連付けを解除する必要があります。

**Example – S3 Access Grants インスタンスを削除する**  

```
aws s3control delete-access-grants-instance \
--account-id 111122223333 \
--profile access-grants-profile \
--region us-east-2 \
--endpoint-url https://s3-control.us-east-2.amazonaws.com \
 
 // No response body
```

## REST API の使用
<a name="access-grants-instance-delete-rest-api"></a>

Amazon REST API での S3 Access Grants インスタンスの削除のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstance.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstance.html)」を参照してください。

## AWS SDK の使用
<a name="access-grants-instance-delete-using-sdk"></a>

このセクションでは、AWS SDK を使用して S3 Access Grants インスタンスを作成する方法の例を説明します。

次の例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

**注記**  
S3 Access Grants インスタンスを削除する前に、まず S3 Access Grants インスタンス内で作成されたすべての権限とロケーションを削除する必要があります。IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付けている場合は、まずその関連付けを解除する必要があります。

**Example – S3 Access Grants インスタンスを削除する**  

```
public void deleteAccessGrantsInstance() {
DeleteAccessGrantsInstanceRequest deleteRequest = DeleteAccessGrantsInstanceRequest.builder()
.accountId("111122223333")
.build();
DeleteAccessGrantsInstanceResponse deleteResponse = s3Control.deleteAccessGrantsInstance(deleteRequest);
LOGGER.info("DeleteAccessGrantsInstanceResponse: " + deleteResponse);
}
```

------

# S3 Access Grants ロケーションの使用
<a name="access-grants-location"></a>

アカウントの AWS リージョンで [Amazon S3 Access Grants インスタンスを作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-create.html) したら、そのインスタンスに S3 ロケーションを登録できます。S3 Access Grants のロケーションは、デフォルトの S3 ロケーション (`s3://`）、バケット、またはプレフィックスを AWS Identity and Access Management (IAM) ロールにマッピングします。S3 Access Grants は、この IAM ロールを引き受けて、その特定の場所にアクセスする被付与者に一時的な認証情報を提供します。アクセス権限を作成する前に、まず S3 Access Grants インスタンスに少なくとも 1 つのロケーションを登録する必要があります。

ロケーションの登録、ロケーションの詳細の表示、ロケーションの編集、ロケーションの削除を行うことができます。

**注記**  
 S3 Access Grants インスタンスに最初のロケーションを登録しても、インスタンスに個別のアクセス権限はありません。アクセス権限を作成するには、「[権限を作成する](access-grants-grant-create.md)」を参照してください。

**Topics**
+ [ロケーションを登録する](access-grants-location-register.md)
+ [登録済みロケーションの詳細を表示する](access-grants-location-view.md)
+ [登録されたロケーションを更新する](access-grants-location-edit.md)
+ [登録されたロケーションを削除する](access-grants-location-delete.md)

# ロケーションを登録する
<a name="access-grants-location-register"></a>

アカウントの AWS リージョンで [Amazon S3 Access Grants インスタンスを作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-create.html) したら、そのインスタンスに S3 ロケーションを登録できます。S3 Access Grants のロケーションは、デフォルトの S3 ロケーション (`s3://`）、バケット、またはプレフィックスを AWS Identity and Access Management (IAM) ロールにマッピングします。S3 Access Grants は、この IAM ロールを引き受けて、その特定の場所にアクセスする被付与者に一時的な認証情報を提供します。アクセス権限を作成する前に、まず S3 Access Grants インスタンスに少なくとも 1 つのロケーションを登録する必要があります。

**推奨されるユースケース**  
デフォルトのロケーション (`s3://`) を登録し、IAM ロールにマッピングすることをお勧めします。デフォルトの S3 パスのロケーション (`s3://`) を使用すると、アカウントの AWS リージョン内のすべての S3 バケットへのアクセスがカバーされます。アクセス権限を作成するときに、権限の範囲をデフォルトのロケーション内のバケット、プレフィックス、またはオブジェクトに絞り込むことができます。

**アクセス管理が複雑なユースケース**  
より複雑なアクセス管理のユースケースでは、デフォルトのロケーション以外の登録が必要になる場合があります。例として、次のようなユースケースが挙げられます。
+ *amzn-s3-demo-bucket* が S3 Access Grants インスタンスの登録済みロケーションで、IAM ロールがマッピングされているが、この IAM ロールがバケット内の特定のプレフィックスへのアクセスを拒否されるとします。この場合、IAM ロールがアクセスできないプレフィックスを別のロケーションとして登録し、そのロケーションを、必要なアクセス権を持つ別の IAM ロールにマッピングできます。
+ 仮想プライベートクラウド (VPC) エンドポイント内のユーザーのみにアクセスを制限する権限を作成するとします。この場合、IAM ロールで VPC エンドポイントのみにアクセスを制限するバケットのロケーションを登録できます。後で、被付与者が S3 Access Grants に認証情報を要求すると、S3 Access Grants はロケーションの IAM ロールを引き受けて一時的な認証情報を提供します。この認証情報は、呼び出し元が VPC エンドポイント内のユーザーでない限り、特定のバケットへのアクセスを拒否します。こうした拒否のアクセス許可は、権限で指定された通常の READ、WRITE、または READWRITE のアクセス許可に加えて適用されます。

ロケーションを登録するときには、S3 Access Grants が一時的な認証情報を提供したり、特定の権限のアクセス許可の範囲を設定したりするために引き受ける IAM ロールも指定する必要があります。

ユースケースで S3 Access Grants インスタンスに複数のロケーションを登録する必要がある場合は、次のいずれかを登録できます。


| S3 URI | IAM ロール | 説明 | 
| --- | --- | --- | 
| s3:// | Default-IAM-role |  デフォルトのロケーション `s3://` には、AWS リージョン 内のすべてのバケットが含まれます。  | 
| s3://amzn-s3-demo-bucket1/ | IAM-role-For-bucket |  このロケーションには、指定したバケット内のすべてのオブジェクトが含まれます。  | 
| s3://amzn-s3-demo-bucket1/prefix-name | IAM-role-For-prefix |  このロケーションには、指定されたプレフィックスで始まるオブジェクトキー名を持つ、バケット内のすべてのオブジェクトが含まれます。  | 

特定のバケットまたはプレフィックスを登録する前に、次の手順を実行する必要があります。
+ アクセスを許可するデータを含むバケットを 1 つまたは複数作成します。これらのバケットは、S3 Access Grants インスタンスと同じ AWS リージョン にある必要があります。詳細については、「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。

  プレフィックスの追加はオプションの手順です。プレフィックスは、オブジェクトキー名の先頭にある文字列で、これらを使用して、バケット内のオブジェクトを整理したり、アクセスを管理したりできます。バケットにプレフィックスを追加するには、「[オブジェクトキー名の作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html)」を参照してください。
+ AWS リージョン内の S3 データにアクセスするためのアクセス権限を持つ IAM ロールを作成します。詳細については、「AWS IAM アイデンティティセンターユーザーガイド」の「[IAM ロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)」を参照してください。**
+  IAM ロールの信頼ポリシーで、作成した IAM ロールに対して、S3 Access Grants サービス (`access-grants.s3.amazonaws.com`) のプリンシパルアクセス権を付与します。これを実行するために、次のステートメントを含む JSON ファイルを作成できます。アカウントに信頼ポリシーを追加するには、「[カスタム信頼ポリシーを使用したロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)」を参照してください。

  *TestRolePolicy.json*

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
      "Statement": [
      {
        "Sid": "TestRolePolicy",
        "Effect": "Allow",
        "Principal": {
          "Service": "access-grants.s3.amazonaws.com"
        },
        "Action": [
          "sts:AssumeRole", 
          "sts:SetSourceIdentity"
        ],
        "Condition": {
          "StringEquals": {
            "aws:SourceAccount": "111122223333",
            "aws:SourceArn": "arn:aws:s3::111122223333:access-grants/default"
          }
        }
      }
    ]
  }
  ```

------

  または、IAM Identity Center のユースケースでは、2 番目のステートメントを含む次のポリシーを使用します。
+ 作成した IAM ロールに Amazon S3 アクセス許可をアタッチする IAM ポリシーを作成します。次の `iam-policy.json` ファイルを例にｓｈじて、`user input placeholders` を実際の情報と置き換えます。
**注記**  
次の例では、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化を使用してデータを暗号化する場合に、ポリシーに IAM ロールに必要な AWS KMS アクセス許可を含めています。この機能を使用しない場合は、IAM ポリシーからこのようなアクセス許可を削除できます。
IAM ロールが S3 データにアクセスするように制限できるのは、S3 Access Grants が認証情報を提供する場合に限られます。この例では、特定の S3 Access Grants インスタンスに `Condition` ステートメントを追加する方法を説明します。この `Condition` を使用するには、`Condition` ステートメント内の S3 Access Grants インスタンス ARN を、`arn:aws:s3:region:accountId:access-grants/default` の形式の S3 Access Grants インスタンス ARN に置き換えます。

  *iam-policy.json*

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
           "Sid": "ObjectLevelReadPermissions",
           "Effect":"Allow",
           "Action":[
              "s3:GetObject",
              "s3:GetObjectVersion",
              "s3:GetObjectAcl",
              "s3:GetObjectVersionAcl",
              "s3:ListMultipartUploadParts"
           ],
           "Resource":[ 
              "arn:aws:s3:::*"  
           ],
           "Condition":{
              "StringEquals": { "aws:ResourceAccount": "accountId" },
              "ArnEquals": {
                  "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"]
              }
          } 
        },
        {
           "Sid": "ObjectLevelWritePermissions",
           "Effect":"Allow",
           "Action":[
              "s3:PutObject",
              "s3:PutObjectAcl",
              "s3:PutObjectVersionAcl",
              "s3:DeleteObject",
              "s3:DeleteObjectVersion",
              "s3:AbortMultipartUpload"
           ],
           "Resource":[
              "arn:aws:s3:::*"  
           ],
           "Condition":{
              "StringEquals": { "aws:ResourceAccount": "accountId" },
              "ArnEquals": {
                  "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS リージョン:accountId:access-grants/default"]
              }
           } 
        },
        {
           "Sid": "BucketLevelReadPermissions",
           "Effect":"Allow",
           "Action":[
              "s3:ListBucket"
           ],
           "Resource":[
              "arn:aws:s3:::*"
           ],
           "Condition":{
              "StringEquals": { "aws:ResourceAccount": "accountId" },
              "ArnEquals": {
                  "s3:AccessGrantsInstanceArn": ["arn:aws:s3:AWS リージョン:accountId:access-grants/default"]
              }
           }     
        },
  	  //Optionally add the following section if you use SSE-KMS encryption
        {
           "Sid": "KMSPermissions",
           "Effect":"Allow",
           "Action":[
              "kms:Decrypt",
              "kms:GenerateDataKey"
           ],
           "Resource":[
              "*"
           ]
        }
     ]
  }
  ```

Amazon S3 コンソール、AWS Command Line Interface、(AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して S3 Access Grants インスタンスにロケーションを登録できます。

**注記**  
 S3 Access Grants インスタンスに最初のロケーションを登録しても、インスタンスに個別のアクセス権限はありません。アクセス権限を作成するには、「[権限を作成する](access-grants-grant-create.md)」を参照してください。

## S3 コンソールの使用
<a name="access-grants-location-register-console"></a>

S3 Access Grants を使用して S3 データへのアクセスを許可するには、少なくとも 1 つのロケーションを登録しておく必要があります。

**S3 Access Grants インスタンスでロケーションを登録するには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

   S3 Access Grants インスタンスを初めて使用する場合は、「[Step 1 - S3 Access Grants インスタンスを作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-create.html)」を実行し、**[Access Grants インスタンスをセットアップ]** ウィザードの **[ステップ 2]** に進んでいる必要があります。S3 Access Grants インスタンスが既にある場合は、**[詳細の表示]** を選択して、**[ロケーション]** タブで、**[ロケーションを登録]** をクリックします。

   1. **[ロケーション範囲]** では、**[Browse S3]** をクリックするか、登録先のロケーションへの S3 URI パスを入力します。S3 URI の形式については、[ロケーション形式](#location-types) 表を参照してください。URI の入力後、**[表示]** をクリックして、ロケーションを参照します。

   1. **[IAM ロール]** で、次のいずれかを選択します。
      + **既存の IAM ロールから選択**

        ドロップダウンリストから IAM ロールを選択します。ロールを選択したら、**[表示]** を選択して、登録するロケーションを管理するのに必要なアクセス許可がこのロールにあることを確認します。具体的には、このロールが S3 Access Grants にアクセス許可 `sts:AssumeRole` と `sts:SetSourceIdentity` を付与していることを確認します。
      + **IAM ロールの ARN の入力**

        [[IAM コンソール]](https://console.aws.amazon.com/iam/) に入ります。IAM ロールの Amazon リソースネーム (ARN) をコピーして、このボックスに貼り付けます。

   1. 終了するには、**[次へ]** または **[ロケーションを登録]** を選択します。

1. トラブルシューティング:

**ロケーションを登録できない**
   + そのロケーションが既に登録されている可能性があります。

     ロケーションを登録する `s3:CreateAccessGrantsLocation` アクセス許可がない可能性があります。アカウント管理者に連絡してください。

## の使用AWS CLI
<a name="access-grants-location-register-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

S3 Access Grants インスタンスには`s3://`、デフォルトの場所、またはカスタムロケーションを登録できます。その場所へのプリンシパルアクセス権を持つ IAM ロールを作成し、次に S3 Access Grants にこのロールを引き受ける権限を付与する必要があります。

次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example リソースポリシーを作成する**  
S3 Access Grants が IAM ロールを引き受けることを許可するポリシーを作成します。これを実行するために、次のステートメントを含む JSON ファイルを作成できます。リソースポリシーをアカウントに追加するには、「[最初のカスタマー管理ポリシーの作成とアタッチ](https://docs.aws.amazon.com//IAM/latest/UserGuide/tutorial_managed-policies.html)」を参照してください。  
*TestRolePolicy.json*    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Stmt1234567891011",
      "Action": ["sts:AssumeRole", "sts:SetSourceIdentity"],
      "Effect": "Allow",
      "Principal": {"Service": "access-grants.s3.amazonaws.com"}
    }
  ]
}
```

**Example ロールを作成する**  
次の IAM コマンドを実行して、ロールを作成します。  

```
aws iam create-role --role-name accessGrantsTestRole \
 --region us-east-2 \
 --assume-role-policy-document file://TestRolePolicy.json
```
`create-role` コマンドを実行すると、次のとおりポリシーが返されます。  

```
{
    "Role": {
        "Path": "/",
        "RoleName": "accessGrantsTestRole",
        "RoleId": "AROASRDGX4WM4GH55GIDA",
        "Arn": "arn:aws:iam::111122223333:role/accessGrantsTestRole",
        "CreateDate": "2023-05-31T18:11:06+00:00",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",		 	 	 
            "Statement": [
                {
                    "Sid": "Stmt1685556427189",
                    "Action": [
                        "sts:AssumeRole",
                        "sts:SetSourceIdentity"
                    ],
                    "Effect": "Allow",
                    "Principal": {
                        "Service":"access-grants.s3.amazonaws.com"
                    }
                }
            ]
        }
    }
}
```

**Example**  
Amazon S3 バケットへのアクセス許可を持つ IAM ポリシーを作成します。次の `iam-policy.json` ファイルを例にｓｈじて、`user input placeholders` を実際の情報と置き換えます。  
AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化を使用してデータを暗号化する場合、次の例ではポリシーに IAM ロールに必要な AWS KMS アクセス許可を追加します。この機能を使用しない場合は、IAM ポリシーからこのようなアクセス許可を削除できます。  
認証情報が S3 Access Grants によって提供される場合、IAM ロールが S3 内のデータへのアクセスにのみ使用できるようにするために、この例では、S3 Access Grants インスタンス (`s3:AccessGrantsInstance: InstanceArn`) を指定する `Condition` ステートメントを IAM ポリシーに追加する方法を示します。次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。
*iam-policy.json*    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
         "Sid": "ObjectLevelReadPermissions",
         "Effect": "Allow",
         "Action": [
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:GetObjectAcl",
            "s3:GetObjectVersionAcl",
            "s3:ListMultipartUploadParts"
         ],
         "Resource": [ 
            "arn:aws:s3:::*"  
         ],
         "Condition": {
            "StringEquals": { "aws:ResourceAccount": "111122223333" },
            "ArnEquals": {
                "s3:AccessGrantsInstanceArn": ["arn:aws:s3:us-east-1::access-grants/default"]
            }
        } 
      },
      {
         "Sid": "ObjectLevelWritePermissions",
         "Effect": "Allow",
         "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:PutObjectVersionAcl",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion",
            "s3:AbortMultipartUpload"
         ],
         "Resource": [
            "arn:aws:s3:::*"  
         ],
         "Condition": {
            "StringEquals": { "aws:ResourceAccount": "111122223333" },
            "ArnEquals": {
                "s3:AccessGrantsInstanceArn": ["arn:aws:s3:us-east-1::access-grants/default"]
            }
         } 
      },
      {
         "Sid": "BucketLevelReadPermissions",
         "Effect": "Allow",
         "Action": [
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::*"
         ],
         "Condition": {
            "StringEquals": { "aws:ResourceAccount": "111122223333" },
            "ArnEquals": {
                "s3:AccessGrantsInstanceArn": ["arn:aws:s3:us-east-1::access-grants/default"]
            }
         }     
      },
      {
         "Sid": "KMSPermissions",
         "Effect": "Allow",
         "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
         ],
         "Resource": [
            "*"
         ],
         "Condition": {
            "StringEquals": {
               "kms:ViaService": "s3.us-east-1.amazonaws.com"
            }
         }
      }
   ]
}
```

**Example**  
次のコマンドを実行します。  

```
aws iam put-role-policy \
--role-name accessGrantsTestRole \
--policy-name accessGrantsTestRole \
--policy-document file://iam-policy.json
```

**Example デフォルトロケーションを登録します。**  

```
aws s3control create-access-grants-location \
 --account-id 111122223333 \
 --location-scope s3:// \
 --iam-role-arn arn:aws:iam::111122223333:role/accessGrantsTestRole
```
レスポンス:  

```
{"CreatedAt": "2023-05-31T18:23:48.107000+00:00",
    "AccessGrantsLocationId": "default",
    "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default",
    "LocationScope": "s3://" 
    "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole"
}
```

**Example カスタムロケーションを登録する**  

```
aws s3control create-access-grants-location \
 --account-id 111122223333 \
 --location-scope s3://DOC-BUCKET-EXAMPLE/ \
 --iam-role-arn arn:aws:iam::123456789012:role/accessGrantsTestRole
```
レスポンス:  

```
{"CreatedAt": "2023-05-31T18:23:48.107000+00:00",
    "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456",
    "AccessGrantsLocationArn": "arn:aws:s3:us-east-2: 111122223333:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888",
    "LocationScope": "s3://DOC-BUCKET-EXAMPLE/",
    "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole"
}
```

## REST API の使用
<a name="access-grants-location-register-rest-api"></a>

Amazon S3 REST API での S3 Access Grants インスタンスの管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsLocation.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsLocation.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsLocations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsLocations.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateAccessGrantsLocation.html) 

## AWS SDK の使用
<a name="access-grants-location-register-using-sdk"></a>

このセクションでは、AWS SDK を使用してロケーションを登録する方法の例を説明します。

次の例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

S3 Access Grants インスタンスには`s3://`、デフォルトの場所、またはカスタムロケーションを登録できます。その場所へのプリンシパルアクセス権を持つ IAM ロールを作成し、次に S3 Access Grants にこのロールを引き受ける権限を付与する必要があります。

次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example デフォルトロケーションを登録する**  
リクエスト:  

```
public void createAccessGrantsLocation() {
CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder()
.accountId("111122223333")
.locationScope("s3://")
.iamRoleArn("arn:aws:iam::123456789012:role/accessGrantsTestRole")
.build();
CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest);
LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse);
}
```
レスポンス:  

```
CreateAccessGrantsLocationResponse(
CreatedAt=2023-06-07T04:35:11.027Z,
AccessGrantsLocationId=default,
AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default,
LocationScope=s3://,
IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole
)
```

**Example カスタムロケーションを登録する**  
リクエスト:  

```
public void createAccessGrantsLocation() {
CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder()
.accountId("111122223333")
.locationScope("s3://DOC-BUCKET-EXAMPLE/")
.iamRoleArn("arn:aws:iam::111122223333:role/accessGrantsTestRole")
.build();
CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest);
LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse);
}
```
レスポンス:  

```
CreateAccessGrantsLocationResponse(
CreatedAt=2023-06-07T04:35:10.027Z,
AccessGrantsLocationId=18cfe6fb-eb5a-4ac5-aba9-8d79f04c2012,
AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/18cfe6fb-eb5a-4ac5-aba9-8d79f04c2666,
LocationScope= s3://test-bucket-access-grants-user123/,
IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole
)
```

------

# 登録済みロケーションの詳細を表示する
<a name="access-grants-location-view"></a>

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、AWS SDK を使用して、S3 Access Grants インスタンスに登録されているロケーションの詳細を取得できます。

## S3 コンソールの使用
<a name="access-grants-location-edit-console"></a>

**S3 Access Grants インスタンスに登録済みのロケーションを表示するには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. インスタンスの **[詳細の表示]** をクリックします。

1. インスタンスの詳細ページで、**[ロケーション]** タブをクリックします。

1. 確認する登録済みのロケーションを検索します。登録済みロケーションの一覧にフィルターを適用するには、検索ボックスを使用します。

## の使用AWS CLI
<a name="access-grants-location-edit-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example – 登録済みロケーションの詳細を取得する**  

```
aws s3control get-access-grants-location \
--account-id 111122223333 \
--access-grants-location-id default
```
レスポンス:  

```
{
    "CreatedAt": "2023-05-31T18:23:48.107000+00:00",
    "AccessGrantsLocationId": "default",
    "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default",
    "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole"
}
```

**Example – S3 Access Grants インスタンスに登録済みのロケーションをすべて一覧表示する**  
結果を S3 プレフィックスまたはバケットで限定するには、必要に応じて `--location-scope s3://bucket-and-or-prefix` パラメータを使用できます。  

```
aws s3control list-access-grants-locations \
--account-id 111122223333 \
--region us-east-2
```
レスポンス:  

```
{"AccessGrantsLocationsList": [
  {
    "CreatedAt": "2023-05-31T18:23:48.107000+00:00",
    "AccessGrantsLocationId": "default",
    "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default",
    "LocationScope": "s3://" 
    "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole"
     },
  {
    "CreatedAt": "2023-05-31T18:23:48.107000+00:00",
    "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456",
    "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888",
    "LocationScope": "s3://amzn-s3-demo-bucket/prefixA*",
    "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole"
     }
   ]
  }
```

## REST API の使用
<a name="access-grants-location-edit-rest-api"></a>

Amazon S3 REST API で登録済みのロケーションの詳細を入手したり、S3 Access Grants インスタンスに登録されたロケーションのすべてを一覧表示する方法の詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsLocation.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsLocations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsLocations.html) 

## AWS SDK の使用
<a name="access-grants-location-edit-using-sdk"></a>

このセクションでは、AWS SDK を使用して S3 Access Grants インスタンスに登録済みのロケーションの詳細を取得したり、すべての登録済みのロケーションを一覧表示する方法の例を説明します。

次の例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

**Example – 登録済みロケーションの詳細を取得する**  

```
public void getAccessGrantsLocation() {
GetAccessGrantsLocationRequest getAccessGrantsLocationRequest = GetAccessGrantsLocationRequest.builder()
.accountId("111122223333")
.accessGrantsLocationId("default")
.build();
GetAccessGrantsLocationResponse getAccessGrantsLocationResponse = s3Control.getAccessGrantsLocation(getAccessGrantsLocationRequest);
LOGGER.info("GetAccessGrantsLocationResponse: " + getAccessGrantsLocationResponse);
}
```
レスポンス:  

```
GetAccessGrantsLocationResponse(
CreatedAt=2023-06-07T04:35:10.027Z,
AccessGrantsLocationId=default,
AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default,
LocationScope= s3://,
IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole
)
```

**Example – S3 Access Grants インスタンスに登録済みのロケーションをすべて一覧表示する**  
結果を S3 プレフィックスまたはバケットで限定するには、必要に応じて `LocationScope` パラメータで `s3://bucket-and-or-prefix` などの S3 URI を使用できます。  

```
public void listAccessGrantsLocations() {

ListAccessGrantsLocationsRequest listRequest =   ListAccessGrantsLocationsRequest.builder()
.accountId("111122223333")
.build();

ListAccessGrantsLocationsResponse listResponse = s3Control.listAccessGrantsLocations(listRequest);
LOGGER.info("ListAccessGrantsLocationsResponse: " + listResponse);
}
```
レスポンス:  

```
ListAccessGrantsLocationsResponse(
AccessGrantsLocationsList=[
ListAccessGrantsLocationsEntry(
CreatedAt=2023-06-07T04:35:11.027Z,
AccessGrantsLocationId=default,
AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default,
LocationScope=s3://,
IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole
),
ListAccessGrantsLocationsEntry(
CreatedAt=2023-06-07T04:35:10.027Z,
AccessGrantsLocationId=635f1139-1af2-4e43-8131-a4de006eb456,
AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888,
LocationScope=s3://amzn-s3-demo-bucket/prefixA*,
IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole
)
]
)
```

------

# 登録されたロケーションを更新する
<a name="access-grants-location-edit"></a>

Amazon S3 Access Grants インスタンスに登録済みのロケーションの AWS Identity and Access Management (IAM) ロールは更新できます。S3 Access Grants にロケーションを登録するために使用する新しい IAM ロールごとに、このロールへの S3 Access Grants サービスプリンシパル (`access-grants.s3.amazonaws.com`) にアクセス権限を付与する必要があります。これを行うには、最初に[ロケーションを登録](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html) した際に使用したのと同じ信頼ポリシー JSON ファイルに、新しい IAM ロールのエントリを追加します。

Amazon S3 コンソール、AWS Command Line Interface、(AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して S3 Access Grants インスタンスのロケーションを更新できます。

## S3 コンソールの使用
<a name="access-grants-location-edit-console"></a>

**Amazon S3 Access Grants インスタンスに登録済みのロケーションの IAM ロールを更新するには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. インスタンスの **[詳細の表示]** をクリックします。

1. インスタンスの詳細ページで、**[ロケーション]** タブをクリックします。

1. 更新するロケーションを検索します。ロケーション一覧にフィルターを適用するには、検索ボックスを使用します。

1. 更新する登録済みのロケーションの隣にあるオプションボタンをクリックします。

1. IAM ロールを更新してから、**[変更の保存]** をクリックします。

## の使用AWS CLI
<a name="access-grants-location-edit-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example – 登録済みロケーションの IAM ロールを更新する**  

```
aws s3control update-access-grants-location \
--account-id 111122223333 \
--access-grants-location-id 635f1139-1af2-4e43-8131-a4de006eb999 \
--iam-role-arn arn:aws:iam::777788889999:role/accessGrantsTestRole
```
レスポンス:  

```
{
    "CreatedAt": "2023-05-31T18:23:48.107000+00:00",
    "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb999",
    "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:777788889999:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888",
    "LocationScope": "s3://amzn-s3-demo-bucket/prefixB*",
    "IAMRoleArn": "arn:aws:iam::777788889999:role/accessGrantsTestRole"
}
```

## REST API の使用
<a name="access-grants-location-edit-rest-api"></a>

Amazon S3 REST API での S3 Access Grants のロケーション更新のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateAccessGrantsLocation.html)」を参照してください。

## AWS SDK の使用
<a name="access-grants-location-edit-using-sdk"></a>

このセクションでは、AWS SDK を使用して登録済みのロケーションを更新する方法の例を説明します。

次の例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

**Example – 登録済みロケーションのIAM ロールを更新する**  

```
public void updateAccessGrantsLocation() {
UpdateAccessGrantsLocationRequest updateRequest = UpdateAccessGrantsLocationRequest.builder()
.accountId("111122223333")
.accessGrantsLocationId("635f1139-1af2-4e43-8131-a4de006eb999")
.iamRoleArn("arn:aws:iam::777788889999:role/accessGrantsTestRole")
.build();
UpdateAccessGrantsLocationResponse updateResponse = s3Control.updateAccessGrantsLocation(updateRequest);
LOGGER.info("UpdateAccessGrantsLocationResponse: " + updateResponse);
}
```
レスポンス:  

```
UpdateAccessGrantsLocationResponse(
CreatedAt=2023-06-07T04:35:10.027Z,
AccessGrantsLocationId=635f1139-1af2-4e43-8131-a4de006eb999,
AccessGrantsLocationArn=arn:aws:s3:us-east-2:777788889999:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888,
LocationScope=s3://amzn-s3-demo-bucket/prefixB*,
IAMRoleArn=arn:aws:iam::777788889999:role/accessGrantsTestRole
)
```

------

# 登録されたロケーションを削除する
<a name="access-grants-location-delete"></a>

S3 Access Grants インスタンスからロケーション登録を削除することもできます。ロケーションを削除すると、S3 アクセス許可インスタンスから登録が解除されます。

S3 Access Grants インスタンスからロケーション登録を削除する前に、そのロケーションに関連付けられているすべての権限を削除する必要があります。権限を削除する方法については、「[権限を削除する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant-delete.html)」を参照してください。

Amazon S3 コンソール、AWS Command Line Interface、(AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して S3 Access Grants インスタンスのロケーションを削除できます。

## S3 コンソールの使用
<a name="access-grants-location-delete-console"></a>

**S3 Access Grants インスタンスからロケーション登録を削除するには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. インスタンスの **[詳細の表示]** をクリックします。

1. インスタンスの詳細ページで、**[ロケーション]** タブをクリックします。

1. 更新するロケーションを検索します。ロケーション一覧にフィルターを適用するには、検索ボックスを使用します。

1. 削除する登録済みのロケーションの隣にあるオプションボタンをクリックします。

1. **[登録解除]** を選択します。

1. この操作は元に戻せないことを警告するダイアログボックスが表示されます。ロケーションを削除するには、**[登録解除]** を選択します。

## の使用AWS CLI
<a name="access-grants-location-delete-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example — ロケーション登録を削除する**  

```
aws s3control delete-access-grants-location \
--account-id 111122223333 \
--access-grants-location-id  a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 
 // No response body
```

## REST API の使用
<a name="access-grants-location-delete-rest-api"></a>

Amazon S3 REST API での S3 Access Grants からのロケーション削除のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html)」を参照してください。

## AWS SDK の使用
<a name="access-grants-location-delete-using-sdk"></a>

このセクションでは、AWS SDK を使用してロケーションを削除する方法の例を説明します。

次の例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

**Example — ロケーション登録を削除する**  

```
public void deleteAccessGrantsLocation() {
DeleteAccessGrantsLocationRequest deleteRequest = DeleteAccessGrantsLocationRequest.builder()
.accountId("111122223333")
.accessGrantsLocationId("a1b2c3d4-5678-90ab-cdef-EXAMPLE11111")
.build();
DeleteAccessGrantsLocationResponse deleteResponse = s3Control.deleteAccessGrantsLocation(deleteRequest);
LOGGER.info("DeleteAccessGrantsLocationResponse: " + deleteResponse);
}
```
レスポンス:  

```
DeleteAccessGrantsLocationResponse()
```

------

# S3 Access Grants での許可の使用
<a name="access-grants-grant"></a>

S3 Access Grants インスタンス内の個々のアクセス**「権限」は、AWS Identity and Access Management (IAM) プリンシパルや、社内ディレクトリのユーザーまたはグループといった特定のアイデンティティに、S3 Access Grants インスタンスに登録されたロケーション内でのアクセスを許可するものです。ロケーションによって、バケットまたはプレフィックスが IAM ロールにマッピングされます。S3 Access Grants は、この IAM ロールを引き受けて被付与者に一時的な認証情報を提供します。

Amazon S3 Access Grants インスタンスに[少なくとも 1 つのロケーションを登録](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html)すると、アクセス権限を作成できます。

被付与者は、IAM ユーザーまたはロール、またはディレクトリユーザーまたはグループにすることができます。ディレクトリユーザーは、[S3 Access Grants インスタンスに関連付けられた](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-idc.html)、社内ディレクトリまたは外部アイデンティティソースのユーザーです。詳細については、「[S3 Access Grants と社内ディレクトリのアイデンティティ](access-grants-directory-ids.md)」を参照してください。IAM アイデンティティセンターから特定のディレクトリユーザーまたはグループに対する権限を作成するには、IAM アイデンティティセンターでそのユーザーを識別するために使用する GUID (例: `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`) を検索します。IAM アイデンティティセンターを使用してユーザー情報を表示する方法については、「AWS IAM アイデンティティセンターユーザーガイド」の「[ユーザーとグループの割り当てを表示する](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-view-assignments.html)」を参照してください。**

バケット、プレフィックス、またはオブジェクトへのアクセスを付与できます。Amazon S3 のプレフィックスは、バケット内のオブジェクトを整理するために使用されるオブジェクトキー名の先頭にある文字列です。これには、使用可能な任意の文字列を使用できます。例えば、バケット内の `engineering/` プレフィックスで始まるオブジェクトキー名などです。

**Topics**
+ [権限を作成する](access-grants-grant-create.md)
+ [権限を表示する](access-grants-grant-view.md)
+ [権限を削除する](access-grants-grant-delete.md)

# 権限を作成する
<a name="access-grants-grant-create"></a>

S3 Access Grants インスタンス内の個々のアクセス**「権限」は、AWS Identity and Access Management (IAM) プリンシパルや、社内ディレクトリのユーザーまたはグループといった特定のアイデンティティに、S3 Access Grants インスタンスに登録されたロケーション内でのアクセスを許可するものです。ロケーションによって、バケットまたはプレフィックスが IAM ロールにマッピングされます。S3 Access Grants は、この IAM ロールを引き受けて被付与者に一時的な認証情報を提供します。

Amazon S3 Access Grants インスタンスに[少なくとも 1 つのロケーションを登録](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html)すると、アクセス権限を作成できます。

被付与者は、IAM ユーザーまたはロール、またはディレクトリユーザーまたはグループにすることができます。ディレクトリユーザーは、[S3 Access Grants インスタンスに関連付けられた](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-idc.html)、社内ディレクトリまたは外部アイデンティティソースのユーザーです。詳細については、「[S3 Access Grants と社内ディレクトリのアイデンティティ](access-grants-directory-ids.md)」を参照してください。IAM アイデンティティセンターから特定のディレクトリユーザーまたはグループに対する権限を作成するには、IAM アイデンティティセンターでそのユーザーを識別するために使用する GUID (例: `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`) を検索します。IAM アイデンティティセンターを使用してユーザー情報を表示する方法については、「AWS IAM アイデンティティセンターユーザーガイド」の「[ユーザーとグループの割り当てを表示する](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-view-assignments.html)」を参照してください。**

バケット、プレフィックス、またはオブジェクトへのアクセスを付与できます。Amazon S3 のプレフィックスは、バケット内のオブジェクトを整理するために使用されるオブジェクトキー名の先頭にある文字列です。これには、使用可能な任意の文字列を使用できます。例えば、バケット内の `engineering/` プレフィックスで始まるオブジェクトキー名などです。

## サブプレフィックス
<a name="subprefix"></a>

登録されたロケーションへのアクセスを許可する場合、`Subprefix` フィールドを使用して、アクセス範囲をロケーション範囲のサブセットに絞り込むことができます。ロケーションとしてデフォルトの S3 パス (`s3://`) を登録した場合は、権限の範囲を絞り込む必要があります。デフォルトのロケーション (`s3://`) に対するアクセス権限は、被付与者が AWS リージョンのすべてのバケットにアクセスできることになるため、作成することはできません。代わりに、権限の範囲を次のいずれかに絞り込む必要があります。
+ バケット: `s3://bucket/*`
+ バケット内のプレフィックス: `s3://bucket/prefix*`
+ プレフィックス内のプレフィックス: `s3://bucket/prefixA/prefixB*`
+ オブジェクト: `s3://bucket/object-key-name`

登録済みロケーションがバケットであるアクセス権限を作成する場合、`Subprefix` フィールドに次のいずれかを渡して、権限の範囲を絞り込むことができます。
+ バケット内のプレフィックス: `prefix*`
+ プレフィックス内のプレフィックス: `prefixA/prefixB*`
+ オブジェクト: `/object-key-name`

権限の作成後、Amazon S3 コンソールに表示される権限の範囲、または API や AWS Command Line Interface (AWS CLI) のレスポンスで返される `GrantScope` は、ロケーションパスと `Subprefix` を連結したものになります。この連結されたパスが、アクセスを許可する S3 バケット、プレフィックス、またはオブジェクトに適切にマップされていることを確認します。

**注記**  
1 つのオブジェクトにのみアクセスを許可するアクセス権限を作成する必要がある場合は、権限のタイプをオブジェクト用に指定する必要があります。API コールまたは CLI コマンドでこれを行うには、`s3PrefixType` パラメータに値 `Object` を渡します。Amazon S3 コンソールで権限を作成する場合は、ロケーションを選択した後、**[権限範囲]** で **[権限範囲がオブジェクト]** チェックボックスを選択します。
バケットがまだ存在していない場合、そのバケットへの許可は作成できません。ただし、存在しないプレフィックスに対して権限を作成することはできます。
S3 Access Grants インスタンスで作成できる権限の最大数については、「[S3 Access Grants の制約](access-grants-limitations.md)」を参照してください。

Amazon S3 コンソール、AWS CLI、Amazon S3 REST API、AWS SDK を使用して アクセス権限を作成できます。

## S3 コンソールの使用
<a name="access-grants-grant-create-console"></a>

**アクセス権限を作成するには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

   S3 Access Grants インスタンスを初めて使用する場合は、「[Step 2 - ロケーションを登録する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html)」を実行し、**Access Grants インスタンスをセットアップ** ウィザードの **[ステップ 3]** に進んでいる必要があります。S3 Access Grants インスタンスが既にある場合は、**[詳細の表示]** を選択して、**[権限]** タブで、**[権限を作成]** をクリックします。

   1. **[権限範囲]** セクションで、登録済みのロケーションを選択または入力します。

      デフォルトロケーションの `s3://` を選択した場合は、**[サブプレフィックス]** ボックスを使用してアクセス権限の範囲を絞り込むことができます。詳細については、「[サブプレフィックス](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html#subprefix)」を参照してください。単一のオブジェクトのみへのアクセスを付与するには、**[Grant scope is an object]** を選択します。

   1. **[許可とアクセス]** で、**[アクセス許可]** レベルに **[読み取り]**、**[書き込み]**、または両方を選択します。

      次に、**[被付与者タイプを選択]** をクリックします。社内ディレクトリを IAM アイデンティティセンターに追加して、この IAM アイデンティティセンターインスタンスを S3 Access Grants インスタンスに関連付けた場合は、**[IAM アイデンティティセンターからのディレクトリ ID]** を選択できます。このオプションを選択した場合は、IAM アイデンティティセンターからユーザーまたはグループのアイデンティティを取得し、このセクションに入力します。

      **[被付与者タイプ]** が IAM ユーザーまたはロールの場合は、**[IAM プリンシパル]** を選択します。**[IAM プリンシパルタイプ]** で **[ユーザー]** または **[ロール]** を選択します 次に、**[IAM プリンシパルユーザー]** で、リストから選択するか、アイデンティティを入力します。

   1. S3 Access Grants 権限を作成するには、**[次へ]** または **[権限を作成]** をクリックします。

1. **[次へ]** または **[権限を作成]** が無効になっている場合:

**権限が作成できない**
   + まず、S3 Access Grants インスタンスで [ロケーションを登録](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html) する必要がある場合があります。
   + アクセス権限を作成するのに必要な `s3:CreateAccessGrant` アクセス許可がない可能性があります。アカウント管理者に連絡してください。

## の使用AWS CLI
<a name="access-grants-grant-create-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

IAM プリンシパルのアクセス許可リクエストを作成する方法と、社内ディレクトリのユーザーまたはグループにアクセス権限リクエストを作成する方法の例は、次のとおりです。

次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**注記**  
単一のオブジェクトのみへのアクセスを許可するアクセス権限を作成する場合は、必要な `--s3-prefix-type Object` パラメータを含めます。

**Example IAM プリンシパルのアクセス権限リクエストを作成する**  

```
aws s3control create-access-grant \
--account-id 111122223333 \
--access-grants-location-id a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \
--access-grants-location-configuration S3SubPrefix=prefixB* \
--permission READ \
--grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::123456789012:user/data-consumer-3
```

**Example アクセス権限のレスポンスを作成する**  

```
{"CreatedAt": "2023-05-31T18:41:34.663000+00:00",
    "AccessGrantId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "AccessGrantArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "Grantee": {
        "GranteeType": "IAM",
        "GranteeIdentifier": "arn:aws:iam::111122223333:user/data-consumer-3"
    },
    "AccessGrantsLocationId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "AccessGrantsLocationConfiguration": {
        "S3SubPrefix": "prefixB*"
    },
    "GrantScope": "s3://amzn-s3-demo-bucket/prefix*",
    "Permission": "READ"
}
```

**ディレクトリユーザーやグループのためのアクセス権限リクエストを作成する**  
ディレクトリユーザーまたはグループのアクセス許可リクエストを作成するには、まず次のコマンドのいずれかを実行してディレクトリユーザーまたはグループの GUID を取得する必要があります。

**Example ディレクトリユーザーやグループの GUID を取得する**  
IAM アイデンティティセンターユーザーの GUID は、IAM アイデンティティセンターコンソール、AWS CLI、または AWS SDK を使用して検索できます。次のコマンドは、指定した IAM アイデンティティセンターインスタンス内のユーザーを名前とアイデンティティとともに一覧表示します。  

```
aws identitystore list-users --identity-store-id d-1a2b3c4d1234 
```
このコマンドは、指定した IAM アイデンティティセンターインスタンスのグループを一覧表示します。  

```
aws identitystore list-groups --identity-store-id d-1a2b3c4d1234
```

**Example ディレクトリユーザーまたはグループのためのアクセス権限を作成する**  
このコマンドは IAM ユーザーまたはロールの権限の作成と似ています。ただし、被付与者タイプは `DIRECTORY_USER` または `DIRECTORY_GROUP` で、被付与者識別子がディレクトリユーザーまたはグループの GUID である点が異なります。  

```
aws s3control create-access-grant \
--account-id 123456789012 \
--access-grants-location-id default \
--access-grants-location-configuration S3SubPrefix="amzn-s3-demo-bucket/rafael/*" \
--permission READWRITE \
--grantee GranteeType=DIRECTORY_USER,GranteeIdentifier=83d43802-00b1-7054-db02-f1d683aacba5 \
```

## REST API の使用
<a name="access-grants-grant-create-rest-api"></a>

REST API でのアクセス権限管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [CreateAccessGrant](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrant.html) 
+  [DeleteAccessGrant](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrant.html) 
+  [GetAccessGrant](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrant.html) 
+  [ListAccessGrants](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrants.html)

## AWS SDK の使用
<a name="access-grants-grant-create-using-sdk"></a>

このセクションでは、AWS SDK を使用してアクセス権限を作成する方法の例を説明します。

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

次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**注記**  
単一のオブジェクトのみへのアクセスを許可するアクセス権限を作成する場合は、必要な `.s3PrefixType(S3PrefixType.Object)` パラメータを含めます。

**Example アクセス権限リクエストを作成する**  

```
public void createAccessGrant() {
CreateAccessGrantRequest createRequest = CreateAccessGrantRequest.builder()
.accountId("111122223333")
.accessGrantsLocationId("a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa")
.permission("READ")
.accessGrantsLocationConfiguration(AccessGrantsLocationConfiguration.builder().s3SubPrefix("prefixB*").build())
.grantee(Grantee.builder().granteeType("IAM").granteeIdentifier("arn:aws:iam::111122223333:user/data-consumer-3").build())
.build();
CreateAccessGrantResponse createResponse = s3Control.createAccessGrant(createRequest);
LOGGER.info("CreateAccessGrantResponse: " + createResponse);
}
```

**Example アクセス権限のレスポンスを作成する**  

```
CreateAccessGrantResponse(
CreatedAt=2023-06-07T05:20:26.330Z,
AccessGrantId=a1b2c3d4-5678-90ab-cdef-EXAMPLE33333,
AccessGrantArn=arn:aws:s3:us-east-2:444455556666:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333,
Grantee=Grantee(
GranteeType=IAM,
GranteeIdentifier=arn:aws:iam::111122223333:user/data-consumer-3
),
AccessGrantsLocationId=a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa,
AccessGrantsLocationConfiguration=AccessGrantsLocationConfiguration(
S3SubPrefix=prefixB*
),
GrantScope=s3://amzn-s3-demo-bucket/prefixB,
Permission=READ
)
```

------

# 権限を表示する
<a name="access-grants-grant-view"></a>

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、AWS SDK を使用して、S3 Access Grants インスタンスのアクセス権限の詳細を表示できます。

## S3 コンソールの使用
<a name="access-grants-grant-view-console"></a>

**アクセス権限の詳細を表示するには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. インスタンスの **[詳細の表示]** をクリックします。

1. [詳細] ページで、**[権限]** タブをクリックします。

1. **[権限]** セクションで、確認するアクセス権限を検索します。権限一覧にフィルターを適用するには、検索ボックスを使用します。

## の使用AWS CLI
<a name="access-grants-grant-view-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example — アクセス権限の詳細を取得する**  

```
aws s3control get-access-grant \
--account-id 111122223333 \
--access-grant-id a1b2c3d4-5678-90ab-cdef-EXAMPLE22222
```
レスポンス:  

```
{
    "CreatedAt": "2023-05-31T18:41:34.663000+00:00",
    "AccessGrantId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "AccessGrantArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant-a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "Grantee": {
        "GranteeType": "IAM",
        "GranteeIdentifier": "arn:aws:iam::111122223333:user/data-consumer-3"
    },
    "Permission": "READ",
    "AccessGrantsLocationId": "12a6710f-5af8-41f5-b035-0bc795bf1a2b",
    "AccessGrantsLocationConfiguration": {
        "S3SubPrefix": "prefixB*"
    },
    "GrantScope": "s3://amzn-s3-demo-bucket/"
}
```

**Example – S3 Access Grants インスタンスのアクセス権限をすべて一覧表示する**  
必要に応じて次のパラメータを使用して、結果を S3 プレフィックスまたは AWS Identity and Access Management (IAM) ID に限定できます。  
+ **サブプレフィックス** – `--grant-scope s3://bucket-name/prefix*`
+ **IAM アイデンティティ** – `--grantee-type IAM` と `--grantee-identifier arn:aws:iam::123456789000:role/accessGrantsConsumerRole`

```
aws s3control list-access-grants \
--account-id 111122223333
```
レスポンス:  

```
{
    "AccessGrantsList": [{"CreatedAt": "2023-06-14T17:54:46.542000+00:00",
            "AccessGrantId": "dd8dd089-b224-4d82-95f6-975b4185bbaa",
            "AccessGrantArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/dd8dd089-b224-4d82-95f6-975b4185bbaa",
            "Grantee": {
                "GranteeType": "IAM",
                "GranteeIdentifier": "arn:aws:iam::111122223333:user/data-consumer-3"
            },
            "Permission": "READ",
            "AccessGrantsLocationId": "23514a34-ea2e-4ddf-b425-d0d4bfcarda1",
            "GrantScope": "s3://amzn-s3-demo-bucket/prefixA*"
        },
        {"CreatedAt": "2023-06-24T17:54:46.542000+00:00",
            "AccessGrantId": "ee8ee089-b224-4d72-85f6-975b4185a1b2",
            "AccessGrantArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/ee8ee089-b224-4d72-85f6-975b4185a1b2",
            "Grantee": {
                "GranteeType": "IAM",
                "GranteeIdentifier": "arn:aws:iam::111122223333:user/data-consumer-9"
            },
            "Permission": "READ",
            "AccessGrantsLocationId": "12414a34-ea2e-4ddf-b425-d0d4bfcacao0",
            "GrantScope": "s3://amzn-s3-demo-bucket/prefixB*"
        },

    ]
}
```

## REST API の使用
<a name="access-grants-grant-view-rest-api"></a>

Amazon S3 API オペレーションを使用して、アクセス権限の詳細を表示し、S3 Access Grants インスタンス内のすべてのアクセス権限を一覧表示できます。REST API でのアクセス権限管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrant.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrant.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrants.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrants.html) 

## AWS SDK の使用
<a name="access-grants-grant-view-using-sdk"></a>

このセクションでは、AWS SDK を使用してアクセス権限の詳細を取得する方法の例を説明します。

次の例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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



**Example — アクセス権限の詳細を取得する**  

```
public void getAccessGrant() {
GetAccessGrantRequest getRequest = GetAccessGrantRequest.builder()
.accountId("111122223333")
.accessGrantId("a1b2c3d4-5678-90ab-cdef-EXAMPLE22222")
.build();
GetAccessGrantResponse getResponse = s3Control.getAccessGrant(getRequest);
LOGGER.info("GetAccessGrantResponse: " + getResponse);
}
```
レスポンス:  

```
GetAccessGrantResponse(
CreatedAt=2023-06-07T05:20:26.330Z,
AccessGrantId=a1b2c3d4-5678-90ab-cdef-EXAMPLE22222,
AccessGrantArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/grant-fd3a5086-42f7-4b34-9fad-472e2942c70e,
Grantee=Grantee(
GranteeType=IAM,
GranteeIdentifier=arn:aws:iam::111122223333:user/data-consumer-3
),
Permission=READ,
AccessGrantsLocationId=12a6710f-5af8-41f5-b035-0bc795bf1a2b,
AccessGrantsLocationConfiguration=AccessGrantsLocationConfiguration(
S3SubPrefix=prefixB*
),
GrantScope=s3://amzn-s3-demo-bucket/ 
)
```

**Example – S3 Access Grants インスタンスのアクセス権限をすべて一覧表示する**  
必要に応じて次のパラメータを使用して、結果を S3 プレフィックスまたは IAM アイデンティティに限定できます。  
+ **範囲** – `GrantScope=s3://bucket-name/prefix*`
+ **被付与者 ** – `GranteeType=IAM` と `GranteeIdentifier= arn:aws:iam::111122223333:role/accessGrantsConsumerRole`

```
public void listAccessGrants() {
ListAccessGrantsRequest listRequest = ListAccessGrantsRequest.builder()
.accountId("111122223333")
.build();
ListAccessGrantsResponse listResponse = s3Control.listAccessGrants(listRequest);
LOGGER.info("ListAccessGrantsResponse: " + listResponse);
}
```
レスポンス:  

```
ListAccessGrantsResponse(
AccessGrantsList=[
ListAccessGrantEntry(
CreatedAt=2023-06-14T17:54:46.540z,
AccessGrantId=dd8dd089-b224-4d82-95f6-975b4185bbaa,
AccessGrantArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/dd8dd089-b224-4d82-95f6-975b4185bbaa,
Grantee=Grantee(
GranteeType=IAM, GranteeIdentifier= arn:aws:iam::111122223333:user/data-consumer-3
),
Permission=READ,
AccessGrantsLocationId=23514a34-ea2e-4ddf-b425-d0d4bfcarda1,
GrantScope=s3://amzn-s3-demo-bucket/prefixA 
),
ListAccessGrantEntry(
CreatedAt=2023-06-24T17:54:46.540Z,
AccessGrantId=ee8ee089-b224-4d72-85f6-975b4185a1b2,
AccessGrantArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/ee8ee089-b224-4d72-85f6-975b4185a1b2,
Grantee=Grantee(
GranteeType=IAM, GranteeIdentifier= arn:aws:iam::111122223333:user/data-consumer-9
),
Permission=READ,
AccessGrantsLocationId=12414a34-ea2e-4ddf-b425-d0d4bfcacao0,
GrantScope=s3://amzn-s3-demo-bucket/prefixB* 
)
]
)
```

------

# 権限を削除する
<a name="access-grants-grant-delete"></a>

S3 Access Grants インスタンスからアクセス権限を削除することもできます。アクセス権限の削除は元に戻すことができません。アクセス権限を削除すると、被付与者は Amazon S3 データにアクセスできなくなります。

Amazon S3 コンソール、AWS Command Line Interface、(AWS CLI)、AWS SDK、または Amazon S3 REST API を使用してアクセス権限を削除できます。

## S3 コンソールの使用
<a name="access-grants-grant-delete-console"></a>

**アクセス権限を削除するには**

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

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. **[S3 Access Grants]** ページで、取り組む S3 Access Grants インスタンスが含まれるリージョンを選択します。

1. インスタンスの **[詳細の表示]** をクリックします。

1. [詳細] ページで、**[権限]** タブをクリックします。

1. 削除する権限を検索します。権限を見つけたら、その横にあるラジオボタンをオンにします。

1. **[削除]** を選択します。この操作は元に戻せないことを警告するダイアログボックスが表示されます。もう一度 **[削除]** をクリックすると、権限が削除されます。

## の使用AWS CLI
<a name="access-grants-grant-delete-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example – アクセス権限を削除する**  

```
aws s3control delete-access-grant \
--account-id 111122223333 \
--access-grant-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 

// No response body
```

## REST API の使用
<a name="access-grants-grant-delete-rest-api"></a>

Amazon REST API でのアクセス権限管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrant.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrant.html)」を参照してください。

## AWS SDK の使用
<a name="access-grants-grant-delete-using-sdk"></a>

このセクションでは、AWS SDK を使用してアクセス権限を削除する方法の例を説明します。次の例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

**Example – アクセス権限を削除する**  

```
public void deleteAccessGrant() {
DeleteAccessGrantRequest deleteRequest = DeleteAccessGrantRequest.builder()
.accountId("111122223333")
.accessGrantId("a1b2c3d4-5678-90ab-cdef-EXAMPLE11111")
.build();
DeleteAccessGrantResponse deleteResponse = s3Control.deleteAccessGrant(deleteRequest);
LOGGER.info("DeleteAccessGrantResponse: " + deleteResponse);
}
```
レスポンス:  

```
DeleteAccessGrantResponse()
```

------

# Access Grants を使用した S3 データの取得
<a name="access-grants-data"></a>

S3 Access Grants を通じて S3 データへのアクセスを許可された被付与者は、S3 Access Grants に一時的な認証情報をリクエストする必要があります。これは、S3 データへのアクセスに使用されます。詳細については、「[S3 Access Grants を介して Amazon S3 データへのアクセスをリクエストする](access-grants-credentials.md)」を参照してください。次に、被付与者は一時的な認証情報を使用して、S3 データに対して許可される S3 アクションを実行します。詳細については、「[S3 Access Grants が提供する認証情報を使用した S3 データへのアクセス](access-grants-get-data.md)」を参照してください。必要に応じて、被付与者は、これらの認証情報をリクエストする前に AWS アカウント のアクセス許可のリストをリクエストできます。詳細については、「[発信者のアクセス許可を一覧表示する](access-grants-list-grants.md)」を参照してください。

**Topics**
+ [S3 Access Grants を介して Amazon S3 データへのアクセスをリクエストする](access-grants-credentials.md)
+ [S3 Access Grants が提供する認証情報を使用した S3 データへのアクセス](access-grants-get-data.md)
+ [発信者のアクセス許可を一覧表示する](access-grants-list-grants.md)

# S3 Access Grants を介して Amazon S3 データへのアクセスをリクエストする
<a name="access-grants-credentials"></a>

S3 Access Grants を使用して[アクセス許可付与](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html)を作成した後、被付与者は、アクセス許可が付与された S3 データにアクセスするための認証情報をリクエストできます。被付与者は AWS Identity and Access Management (IAM) プリンシパル、企業ディレクトリアイデンティティ、または認可されたアプリケーションです。

アプリケーションまたは AWS のサービス は、S3 Access Grants `GetDataAccess` API オペレーションを使用して、被付与者に代わって S3 データへのアクセスを S3 Access Grants にリクエストできます。`GetDataAccess` はまず、この ID にそのデータへのアクセス権が付与されたことを確認します。次に S3 Access Grants は [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API オペレーションを使用して一時的な認証トークンを取得し、それをリクエスタに送信します。この一時的な認証情報トークンは AWS Security Token Service (AWS STS) トークンです。

`GetDataAccess` リクエストには、一時的な認証情報が適用される S3 `target` データの範囲を指定するパラメータを含める必要があります。この `target` スコープは許可付与のスコープと同一でも、そのスコープのサブセットでもかまいません。ただし、`target` スコープは被付与者の許可付与のスコープ内であることが必要です。このリクエストでは、一時認証情報の権限レベル (`READ`、`WRITE`、`READWRITE`、など) を示す `permission` パラメータも指定する必要があります。

**特権**  
リクエスタは、認証情報リクエストで一時トークンの特権レベルを指定できます。リクエスタはこの `privilege` パラメータを使用して、一時的な認証情報のアクセス範囲を付与範囲内で拡大または縮小できます。`privilege` パラメータのデフォルト値は `Default` であり、返される認証情報のターゲット範囲は元の権限範囲です。`privilege` でこれ以外に指定できる値は、`Minimal` です。`target` 範囲が元の権限範囲から縮小される場合、`target` 範囲が権限範囲内にある限り、一時的な認証情報は `target` 範囲と一致するように範囲が再定義されます。

2 つの権限に対する `privilege` パラメータの効果の詳細は、次のテーブルのとおりです。一方の権限の範囲は、`S3://amzn-s3-demo-bucket1/bob/*`で、`amzn-s3-demo-bucket1` バケットの `bob/` プレフィックス全体が含まれます。もう一方の権限の範囲は、`S3://amzn-s3-demo-bucket1/bob/reports/*` で、`amzn-s3-demo-bucket1` バケットの `bob/reports/` プレフィックスのみが含まれます。


|  権限範囲  |  リクエスト範囲  |  特権  |  返される範囲  |  効果  | 
| --- | --- | --- | --- | --- | 
| S3://amzn-s3-demo-bucket1/bob/\$1 | amzn-s3-demo-bucket1/bob/\$1 | Default  | amzn-s3-demo-bucket1/bob/\$1  |  リクエスタは、`amzn-s3-demo-bucket1` バケット内のプレフィックス `bob/` で始まるキー名を持つすべてのオブジェクトにアクセスできます。  | 
| S3://amzn-s3-demo-bucket1/bob/\$1 | amzn-s3-demo-bucket1/bob/  | Minimal  | amzn-s3-demo-bucket1/bob/  |  プレフィックス名 `bob/` の後にワイルドカードの \$1 文字がないと、リクエスタがアクセスできるのは、`amzn-s3-demo-bucket1` バケット内のオブジェクト名 `bob/` のみです。このようなオブジェクトは通常存在しません。リクエスタは、`bob/` プレフィックスで始まるキー名を持つオブジェクトを含め、その他のオブジェクトにはアクセスできません。  | 
| S3://amzn-s3-demo-bucket1/bob/\$1 | amzn-s3-demo-bucket1/bob/images/\$1  | Minimal  | amzn-s3-demo-bucket1/bob/images/\$1  |  リクエスタは、`amzn-s3-demo-bucket1` バケット内のプレフィックス `bob/images/*` で始まるキー名を持つすべてのオブジェクトにアクセスできます。  | 
| S3://amzn-s3-demo-bucket1/bob/reports/\$1 | amzn-s3-demo-bucket1/bob/reports/file.txt  | Default  | amzn-s3-demo-bucket1/bob/reports/\$1  |  リクエスタは、`amzn-s3-demo-bucket1` バケット内の `bob/reports` プレフィックスで始まるキー名を持つすべてのオブジェクトにアクセスできます。これは、権限と一致する範囲です。  | 
| S3://amzn-s3-demo-bucket1/bob/reports/\$1 | amzn-s3-demo-bucket1/bob/reports/file.txt  | Minimal  | amzn-s3-demo-bucket1/bob/reports/file.txt  |  リクエスタは、`amzn-s3-demo-bucket1` バケット内のキー名 `bob/reports/file.txt` のオブジェクトにのみアクセスできます。リクエスタは、その他のオブジェクトにはアクセスできません。  | 

**ディレクトリアイデンティティ**  
`GetDataAccess` は、適切な許可付与を照合するときに、リクエストに関連するすべての ID を考慮します。企業ディレクトリアイデンティティの場合、`GetDataAccess` は、ID 対応セッションに使用される IAM アイデンティティの許可付与も返します。ID 対応セッションの詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[ID 対応コンソールセッションを使用するアクセス許可の付与](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_sts-setcontext.html)」を参照してください。`GetDataAccess` は、次の表に示すように、最も制限の厳しい許可付与にスコープを絞り込む認証情報を生成します。


|  IAM アイデンティティの許可付与スコープ |  ディレクトリアイデンティティの許可付与スコープ |  リクエスト範囲  |  返される範囲  |  特権  |  効果  | 
| --- | --- | --- | --- | --- | --- | 
| S3://amzn-s3-demo-bucket1/bob/\$1 | amzn-s3-demo-bucket1/bob/images/\$1 | S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg  | S3://amzn-s3-demo-bucket1/bob/images/\$1  | Default |  リクエスト元は、IAM ロールの許可付与の一環として、プレフィックス *bob/* で始まるキー名の付いたすべてのオブジェクトにアクセスできますが、ディレクトリアイデンティティの許可付与の一環として、プレフィックス *bob/images/* で制限されます。IAM ロールとディレクトリアイデンティティの両方がリクエストされた範囲 (`bob/images/image1.jpeg`) へのアクセスを提供しますが、ディレクトリアイデンティティにはより制限の厳しい許可付与があります。したがって、返されるスコープはディレクトリアイデンティティのより制限の厳しい許可付与で絞り込まれます。  | 
| S3://amzn-s3-demo-bucket1/bob/\$1 | amzn-s3-demo-bucket1/bob/images/\$1 | S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg  | S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg  | Minimal |  権限が `Minimal` に設定されているため、ID がより大きなスコープにアクセスできる場合でも、リクエストされたスコープ `bob/images/image1.jpeg` のみが返されます。  | 
| S3://amzn-s3-demo-bucket1/bob/images/\$1 | amzn-s3-demo-bucket1/bob/\$1 | S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg  | S3://amzn-s3-demo-bucket1/bob/images/\$1  | Default |  リクエスト元は、ディレクトリアイデンティティの許可付与の一環として、プレフィックス *bob/* で始まるキー名の付いたすべてのオブジェクトにアクセスできますが、IAM ロールの許可付与の一環として、プレフィックス *bob/images/* で制限されます。IAM ロールとディレクトリアイデンティティの両方がリクエストされた範囲 (`bob/images/image1.jpeg`) へのアクセスを提供しますが、IAM ロールにはより制限の厳しい許可付与があります。したがって、返されるスコープは IAM ロールのより制限の厳しい許可付与で絞り込まれます。  | 
| S3://amzn-s3-demo-bucket1/bob/images/\$1 | amzn-s3-demo-bucket1/bob/\$1 | S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg  | S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg  | Minimal |  権限が `Minimal` に設定されているため、ID がより大きなスコープにアクセスできる場合でも、リクエストされたスコープ `bob/images/image1.jpeg` のみが返されます。  | 

**時間**  
`durationSeconds` パラメータでは一時認証情報の有効期間を秒単位で設定します。デフォルト値は `3600` 秒 (1 時間) です。リクエスタ (被付与者) は `900` 秒 (15 分) から `43200` 秒 (12 時間) までの範囲を指定できます。被付与者がこの最大値よりも高い値をリクエストすると、そのリクエストは失敗します。

**注記**  
一時トークンのリクエストで、ロケーションがオブジェクトの場合は、`targetType` リクエスト内のパラメータの値を `Object` に設定します。このパラメータは、ロケーションがオブジェクトで、特権レベルが `Minimal` の場合にのみ必要です。ロケーションがバケットまたはプレフィックスの場合、このパラメータを指定する必要はありません。

**例**  
AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、AWS SDK を使用して一時的な認証情報をリクエストできます。これらの例を参照してください。

詳細については、「*Amazon Simple Storage Service API リファレンス*」の「[GetDataAccess](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html)」を参照してください。

## の使用AWS CLI
<a name="access-grants-credentials-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example 一時認証情報のリクエスト**  
リクエスト:  

```
aws s3control get-data-access \
--account-id 111122223333 \
--target s3://amzn-s3-demo-bucket/prefixA* \
--permission READ \
--privilege Default \
--region us-east-2
```
レスポンス:  

```
{
"Credentials": {
"AccessKeyId": "Example-key-id",
"SecretAccessKey": "Example-access-key",
"SessionToken": "Example-session-token",
"Expiration": "2023-06-14T18:56:45+00:00"},
"MatchedGrantTarget": "s3://amzn-s3-demo-bucket/prefixA**",
"Grantee": {
    "GranteeType": "IAM",
    "GranteeIdentifier": "arn:aws:iam::111122223333:role/role-name"
 }
}
```

## REST API の使用
<a name="access-grants-credentials-rest-api"></a>

Amazon S3 REST API での S3 Access Grants からの一時認証情報のリクエストのサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetDataAccess.html)」を参照してください。

## AWS SDK の使用
<a name="access-grants-credentials-using-sdk"></a>

このセクションでは、AWS SDK を使用して被付与者が一時認証情報をリクエストする方法の例を説明します。

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

次のコード例は、被付与者が S3 データにアクセスするために使用する一時的な認証情報を返します。次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example 一時認証情報を入手する**  
リクエスト:  

```
public void getDataAccess() {
GetDataAccessRequest getDataAccessRequest = GetDataAccessRequest.builder()
.accountId("111122223333")
.permission(Permission.READ)
.privilege(Privilege.MINIMAL)
.target("s3://amzn-s3-demo-bucket/prefixA*")
.build();
GetDataAccessResponse getDataAccessResponse = s3Control.getDataAccess(getDataAccessRequest);
LOGGER.info("GetDataAccessResponse: " + getDataAccessResponse);
}
```
レスポンス:  

```
GetDataAccessResponse(
Credentials=Credentials(
AccessKeyId="Example-access-key-id",
SecretAccessKey="Example-secret-access-key",
SessionToken="Example-session-token",
Expiration=2023-06-07T06:55:24Z
))
```

------

# S3 Access Grants が提供する認証情報を使用した S3 データへのアクセス
<a name="access-grants-get-data"></a>

被付与者が[アクセス許可を通じて一時的な認証情報を取得](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-credentials.html) すると、その一時的な認証情報を使用して Amazon S3 API オペレーションを呼び出し、データにアクセスできます。

被付与者は、AWS Command Line Interface (AWS CLI)、AWS SDK、Amazon S3 REST API を使用して、S3 データにアクセスできます。さらに、AWS [Python](https://github.com/aws/boto3-s3-access-grants-plugin) および [Java](https://github.com/aws/aws-s3-accessgrants-plugin-java-v2) プラグインを使用して S3 Access Grants を呼び出すことができます。

## の使用AWS CLI
<a name="access-grants-get-data-cli"></a>

被付与者は S3 Access Grants から一時的な認証情報を取得したら、その認証情報を使用してプロファイルを設定してデータを取得できます。

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example – プロファイルを設定する**  

```
aws configure set aws_access_key_id "$accessKey" --profile access-grants-consumer-access-profile
aws configure set aws_secret_access_key "$secretKey" --profile access-grants-consumer-access-profile
aws configure set aws_session_token "$sessionToken" --profile access-grants-consumer-access-profile
```

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example – S3 データを取得する**  
被付与者は、[https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) AWS CLI コマンドを使用して、データにアクセスできます。被付与者は、[https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html)、[https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html)、その他の S3 AWS CLI コマンドも使用できます。  

```
aws s3api get-object \
--bucket amzn-s3-demo-bucket1 \
--key myprefix \
--region us-east-2 \
--profile access-grants-consumer-access-profile
```

## AWS SDK の使用
<a name="access-grants-get-data-using-sdk"></a>

このセクションでは、AWS SDK を使用して S3 データにアクセスする方法の例を説明します。

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

次の Java コード例では、S3 バケットからオブジェクトを取得します。作業サンプルの作成およびテストの手順については、「AWS SDK for Java デベロッパーガイド」の「[使用開始](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html)」を参照してください。**

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;
import com.amazonaws.services.s3.model.S3Object;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class GetObject2 {

    public static void main(String[] args) throws IOException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String key = "*** Object key ***";

        S3Object fullObject = null, objectPortion = null, headerOverrideObject = null;
        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();

            // Get an object and print its contents.
            System.out.println("Downloading an object");
            fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key));
            System.out.println("Content-Type: " + fullObject.getObjectMetadata().getContentType());
            System.out.println("Content: ");
            displayTextInputStream(fullObject.getObjectContent());

            // Get a range of bytes from an object and print the bytes.
            GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key)
                    .withRange(0, 9);
            objectPortion = s3Client.getObject(rangeObjectRequest);
            System.out.println("Printing bytes retrieved.");
            displayTextInputStream(objectPortion.getObjectContent());

            // Get an entire object, overriding the specified response headers, and print
            // the object's content.
            ResponseHeaderOverrides headerOverrides = new ResponseHeaderOverrides()
                    .withCacheControl("No-cache")
                    .withContentDisposition("attachment; filename=example.txt");
            GetObjectRequest getObjectRequestHeaderOverride = new GetObjectRequest(bucketName, key)
                    .withResponseHeaders(headerOverrides);
            headerOverrideObject = s3Client.getObject(getObjectRequestHeaderOverride);
            displayTextInputStream(headerOverrideObject.getObjectContent());
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        } finally {
            // To ensure that the network connection doesn't remain open, close any open
            // input streams.
            if (fullObject != null) {
                fullObject.close();
            }
            if (objectPortion != null) {
                objectPortion.close();
            }
            if (headerOverrideObject != null) {
                headerOverrideObject.close();
            }
        }
    }

    private static void displayTextInputStream(InputStream input) throws IOException {
        // Read the text input stream one line at a time and display each line.
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line = null;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println();
    }
}
```

------

## S3 Access Grants でサポートされている S3 アクション
<a name="access-grants-s3-actions"></a>

被付与者は、S3 Access Grants によって提供される一時的な認証情報を使用して、アクセスできる S3 データに対して S3 アクションを実行できます。以下は、被付与者が実行できる S3 アクションのリストです。許可されるアクションは、アクセス許可で付与されるアクセス許可のレベル、`READ`、`WRITE` または `READWRITE` によって異なります。

**注記**  
以下に示す Amazon S3 アクセス許可に加えて、Amazon S3 は AWS Key Management Service (AWS KMS) [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) (`kms:decrypt`) `READ` アクセス許可または AWS KMS [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) (`kms:generateDataKey`) `WRITE` アクセス許可を呼び出すことができます。これらのアクセス許可では、AWS KMS キーへの直接アクセスは許可されません。


****  

| S3 IAM アクション | API アクションとドキュメント | S3 Access Grants アクセス許可 | S3 リソース | 
| --- | --- | --- | --- | 
| s3:GetObject | [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) | READ | オブジェクト | 
| s3:GetObjectVersion | [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) | READ | オブジェクト | 
| s3:GetObjectAcl | [GetObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html) | READ | オブジェクト | 
| s3:GetObjectVersionAcl | [GetObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html) | READ | オブジェクト | 
| s3:ListMultipartUploads | [ListParts](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html) | READ | オブジェクト | 
| s3:PutObject | [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)、[CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)、[UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)、[UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) | WRITE | オブジェクト | 
| s3:PutObjectAcl | [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) | WRITE | オブジェクト | 
| s3:PutObjectVersionAcl | [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) | WRITE | オブジェクト | 
| s3:DeleteObject | [DeleteObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html) | WRITE | オブジェクト | 
| s3:DeleteObjectVersion | [DeleteObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html) | WRITE | オブジェクト | 
| s3:AbortMultipartUpload | [AbortMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html) | WRITE | オブジェクト | 
| s3:ListBucket | [HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)、[ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)、[ListObjects](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html) | READ | バケット | 
| s3:ListBucketVersions | [ListObjectVersions](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html) | READ | バケット | 
| s3:ListBucketMultipartUploads | [ListMultipartUploads](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html) | READ | バケット | 

# 発信者のアクセス許可を一覧表示する
<a name="access-grants-list-grants"></a>

S3 データ所有者は、S3 Access Grants を使用して、AWS Identity and Access Management (IAM) ID または AWS IAM アイデンティティセンター 企業ディレクトリ ID のアクセス許可を作成できます。IAM アイデンティティと IAM Identity Center ディレクトリ ID は、次に `ListCallerAccessGrants` API を使用して、S3 Access Grants で定義したとおり、アクセスできる Amazon S3 バケット、プレフィックス、およびオブジェクトを一覧表示できます。この API を使用して、IAM またはディレクトリ ID が S3 Access Grants を介してアクセスできるすべての S3 データを検出します。

この機能を使用すると、特定のエンドユーザーがアクセスできるデータを表示するアプリケーションを構築できます。例えば、お客様が S3 バケットにアクセスするために使用するオープンソース UI コンポーネントである AWS Storage Browser for S3 は、この機能を使用して、S3 Access Grants に基づいて Amazon S3 でアクセスできるデータをエンドユーザーに提示します。もう 1 つの例として、Amazon S3 でデータを参照、アップロード、またはダウンロードするためのアプリケーションを構築する場合、この機能を使用して、エンドユーザーが参照できるツリー構造をアプリケーションに構築できます。

**注記**  
企業ディレクトリアイデンティティの場合、呼び出し元のアクセス許可付与を一覧表示する際に、S3 Access Grants は ID 対応セッションに使用される IAM アイデンティティの許可付与を返します。ID 対応セッションの詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[ID 対応コンソールセッションを使用するアクセス許可の付与](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_control-access_sts-setcontext.html)」を参照してください。

IAM アイデンティティまたは社内ディレクトリアイデンティティのいずれかである被付与者が、AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、および AWS SDK を使用することで、付与されたアクセス許可を一覧表示できます。

## の使用AWS CLI
<a name="access-grants-list-grants-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example 発信者のアクセス許可を一覧表示する**  
リクエスト:  

```
aws s3control list-caller-access-grants \
--account-id 111122223333 \
--region us-east-2
--max-results 5
```
レスポンス:  

```
{
	"NextToken": "6J9S...",
	"CallerAccessGrantsList": [
		{
			"Permission": "READWRITE",
			"GrantScope": "s3://amzn-s3-demo-bucket/prefix1/sub-prefix1/*",
			"ApplicationArn": "NA"
		},
		{
			"Permission": "READWRITE",
			"GrantScope": "s3://amzn-s3-demo-bucket/prefix1/sub-prefix2/*",
			"ApplicationArn": "ALL"
		},
		{
			"Permission": "READWRITE",
			"GrantScope": "s3://amzn-s3-demo-bucket/prefix1/sub-prefix3/*",
			"ApplicationArn": "arn:aws:sso::111122223333:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d"
		}
	]
}
```

**Example バケットに対する発信者のアクセス許可を一覧表示する**  
`grantscope` パラメータを使用して結果を絞り込むことができるようになりました。  
リクエスト:  

```
aws s3control list-caller-access-grants \
--account-id 111122223333 \
--region us-east-2
--grant-scope "s3://amzn-s3-demo-bucket""
--max-results 1000
```
レスポンス:  

```
{
	"NextToken": "6J9S...",
	"CallerAccessGrantsList": [
		{
			"Permission": "READ",
			"GrantScope": "s3://amzn-s3-demo-bucket*",
			"ApplicationArn": "ALL"
		},
		{
			"Permission": "READ",
			"GrantScope": "s3://amzn-s3-demo-bucket/prefix1/*",
			"ApplicationArn": "arn:aws:sso::111122223333:application/ssoins-ssoins-1234567890abcdef/apl-abcd1234a1b2c3d"
		}
	]
}
```

## REST API の使用
<a name="access-grants-list-grants-rest-api"></a>

API 発信者のアクセス許可リストを取得するための Amazon S3 REST API サポートの詳細については、「Amazon Simple Storage Service API リファレンス」の「[ListCallerAccessGrants](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListCallerAccessGrants.html)」を参照してください。**

## AWS SDK の使用
<a name="access-grants-list-grants-using-sdk"></a>

このセクションでは、AWS SDK を使用して被付与者が一時認証情報をリクエストする方法の例を説明します。

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

次のコード例は、特定の AWS アカウントの S3 データに対する API 発信者のアクセス許可を返します。次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example 発信者のアクセス許可を一覧表示する**  
リクエスト:  

```
Public void ListCallerAccessGrants() {
	ListCallerAccessGrantsRequest listRequest = ListCallerAccessGrantsRequest.builder()
				.withMaxResults(1000)
				.withGrantScope("s3://")
				.accountId("111122223333");
	ListCallerAccessGrantsResponse listResponse = s3control.listCallerAccessGrants(listRequest);
	LOGGER.info("ListCallerAccessGrantsResponse: " + listResponse);
	}
```
レスポンス:  

```
ListCallerAccessGrantsResponse(
CallerAccessGrantsList=[
	ListCallerAccessGrantsEntry(
		S3Prefix=s3://amzn-s3-demo-bucket/prefix1/,
		Permission=READ,
		ApplicationArn=ALL
	)
])
```

------

# S3 Access は、クロスアカウントアクセスを許可します。
<a name="access-grants-cross-accounts"></a>

S3 Access Grants を使用すると、Amazon S3 データアクセスを以下に付与できます。
+ AWS Identity and Access Management アカウント内の (IAM) アイデンティティ
+ 他の AWS アカウントの IAM アイデンティティ
+ AWS IAM アイデンティティセンター インスタンス内のディレクトリユーザーまたはグループ

まず、他のアカウントでのクロスアカウントアクセスを設定します。これには、リソースポリシーを使用して S3 Access Grants インスタンスへのアクセス許可の付与などがあります。次に、許可を使用して S3 データ (バケット、プレフィックス、オブジェクト) へのアクセス許可を付与します。

クロスアカウントアクセスの設定後、他のアカウントは S3 Access Grants から Amazon S3 データへの一時的なアクセス認証情報をリクエストできるようになります。次の図は、S3 Access Grants によるクロスアカウント S3 アクセスのユーザーフローを説明しています。

![\[S3 Access Grants のクロスアカウントユーザーフロー\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/access-grants-cross-account.png)


1. 2 番目のアカウント (B) のユーザーまたはアプリケーションは、Amazon S3 データが保存されているアカウント (A) の S3 Access Grants インスタンスに認証情報をリクエストします。詳細については、「[S3 Access Grants を介して Amazon S3 データへのアクセスをリクエストする](access-grants-credentials.md)」を参照してください。

1. アカウント (A) の S3 Access Grants インスタンスは、2 番目のアカウントに Amazon S3 データへのアクセスを付与する許可がある場合、一時的な認証情報を返します。Access Grants の詳細については、「[S3 Access Grants での許可の使用](access-grants-grant.md)」を参照してください。

1. 2 番目のアカウント (B) のユーザーまたはアプリケーションは、S3 Access Grants が提供する認証情報を使用して、アカウント (A) の S3 データにアクセスします。

**S3 Access Grants クロスアカウントアクセスの設定**  
S3 Access Grants を介してクロスアカウント S3 アクセスを付与するには、次の手順を実行します。
+ **ステップ 1:** S3 データが保存されているアカウント ID `111122223333` など、S3 Access Grants インスタンスをアカウントに設定します。
+ **ステップ 2:** アカウント `111122223333` の S3 Access Grants インスタンスのリソースポリシーを設定して、2 番目のアカウント (アカウント ID `444455556666` など) へのアクセスを許可します。
+ **ステップ 3:** 2 番目のアカウント `444455556666` の IAM プリンシパルの IAM アクセス許可を設定し、アカウント `111122223333` の S3 Access Grants インスタンスに認証情報をリクエストします。
+ **ステップ 4:** 2 番目のアカウント `444455556666` の IAM プリンシパルに `111122223333` アカウント内の S3 データの一部へのアクセスを付与する許可を `111122223333` アカウントに作成します。

## ステップ 1: アカウントで S3 Access Grants インスタンスを設定する
<a name="access-grants-cross-accounts-configure-1"></a>

Amazon S3 へのアクセスを管理するには、まずアカウント `111122223333` に S3 Access Grants インスタンスが必要です。共有する S3 データが保存されている各 AWS リージョン に S3 Access Grants インスタンスを作成する必要があります。データを複数の AWS リージョン 間で共有する場合は、各 AWS リージョン について、この設定手順を繰り返します。共有する S3 データが保存されている AWS リージョン に S3 Access Grants インスタンスが既にある場合は、次のステップに進みます。S3 Access Grants インスタンスを設定していない場合は、「[S3 Access Grants インスタンスの使用](access-grants-instance.md)」を参照してこのステップを完了します。

## ステップ 2: クロスアカウントアクセスを許可するに S3 Access Grants インスタンスを許可するように、S3 Access Grants インスタンスのリソースポリシーを設定する
<a name="access-grants-cross-accounts-configure-2"></a>

アカウント `111122223333` でクロスアカウントアクセス用の S3 Access Grants インスタンスを作成したら、アカウント `111122223333` 内の S3 Access Grants インスタンスのリソースベースのポリシーを設定して、クロスアカウントアクセスを許可します。S3 Access Grants インスタンス自体は、リソースベースのポリシーをサポートしています。適切なリソースベースのポリシーを施行すると、その他の AWS アカウント の AWS Identity and Access Management (IAM) ユーザーまたはロールに S3 Access Grants インスタンスへのアクセスを付与できます。クロスアカウントアクセスで付与されるのは、次のアクセス許可 (アクション) のみです。
+ `s3:GetAccessGrantsInstanceForPrefix` — ユーザー、ロール、またはアプリは、特定のプレフィックスを持つ S3 Access Grants インスタンスを取得できます。
+ `s3:ListAccessGrants`
+ `s3:ListAccessLocations`
+ `s3:ListCallerAccessGrants`
+ `s3:GetDataAccess` — ユーザー、ロール、またはアプリは、S3 Access Grants を介して付与されたアクセスに基づいて一時的な認証情報をリクエストできます。これらの認証情報を使用して、アクセスが付与されている S3 データにアクセスする。

このようなアクセス許可のいずれかをリソースポリシーに含めることができます。S3 Access Grants インスタンスのこのリソースポリシーは、通常のリソースベースのポリシーであり、[IAM ポリシー言語](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)がサポートするすべてをサポートします。同じポリシーで、例えば `aws:PrincipalArn` 条件を使用して、アカウント `111122223333` の特定の IAM アイデンティティにアクセスを付与することはできるとはいえ、S3 Access Grants ではその必要はありません。代わりに、S3 Access Grants インスタンス内で、自身のアカウントおよびその他のアカウントの個別の IAM アイデンティティに対する付与を作成できます。S3 Access Grants を使用して各アクセス権限を個別に管理することにより、アクセス許可をスケールできます。

[AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) (AWS RAM) を既に使用している場合は、これを使用して、[https://docs.aws.amazon.com/ram/latest/userguide/shareable.html#shareable-s3](https://docs.aws.amazon.com/ram/latest/userguide/shareable.html#shareable-s3) リソースをその他のアカウントや組織内で共有できます。詳細については、「[共有 AWS リソースの使用](https://docs.aws.amazon.com/ram/latest/userguide/working-with.html)」を参照してください。AWS RAM を使用しない場合は、S3 Access Grants API オペレーションと AWS Command Line Interface (AWS CLI) を使用してリソースポリシーを追加することもできます。

### S3 コンソールの使用
<a name="access-grants-cross-accounts-console"></a>

`s3:AccessGrants` リソースをその他のアカウントや組織内で共有するには、AWS Resource Access Manager (AWS RAM) コンソールを使用することをお勧めします。S3 Access Grants をクロスアカウントで共有するには、以下を実行します。

**S3 Access Grants インスタンスのリソースポリシーを設定するには:**

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

1. AWS リージョン セレクタから AWS リージョン を選択します。

1. 左側のナビゲーションペインで、**[Access Grants]** を選択します。

1. Access Grants インスタンスページの **[このアカウントのインスタンス]** セクションで、**[インスタンスを共有]** をクリックします。これにより、AWS RAM コンソールにリダイレクトされます。

1. **[リソース共有を作成]** をクリックします。

1. AWS RAM ステップを実行して、リソース共有を作成します。詳細については、「AWS RAM ユーザーガイド」の「[リソース共有の作成](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-create.html)」を参照してください。

### の使用AWS CLI
<a name="access-grants-cross-accounts-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

リソースポリシーは、`put-access-grants-instance-resource-policy` CLI コマンドを使用して追加できます。

アカウント `111122223333` の S3 Access Grants インスタンスへのクロスアカウントアクセスを 2 番目のアカウント `444455556666` に付与する場合、アカウント `111122223333` の S3 Access Grants インスタンスのリソースポリシーは、2 番目のアカウント `444455556666` に次のアクションを実行するアクセス許可を付与する必要があります。
+ `s3:ListAccessGrants`
+ `s3:ListAccessGrantsLocations`
+ `s3:GetDataAccess`
+ `s3:GetAccessGrantsInstanceForPrefix`

S3 Access Grants インスタンスのリソースポリシーで、S3 Access Grants インスタンスの ARN を `Resource` として指定し、2 番目のアカウント `444455556666` を `Principal` として指定します。次の例を使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
{
"Version": "2012-10-17",		 	 	 
"Statement": [
{
	"Effect": "Allow", 
	"Principal": {
	"AWS": "444455556666"
}, 
	"Action": [
		"s3:ListAccessGrants",
		"s3:ListAccessGrantsLocations",
		"s3:GetDataAccess",
		"s3:GetAccessGrantsInstanceForPrefix"
	],
	"Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default"
} ]
}
```

S3 Access Grants インスタンスのリソースポリシーを追加または更新するには、次のコマンドを使用します。次のコマンド例を使用する際は、`user input placeholders` を独自の情報に置き換えます。

**Example S3 Access Grants インスタンスのリソースポリシーを追加または更新する**  

```
	aws s3control put-access-grants-instance-resource-policy \
	--account-id 111122223333 \
	--policy file://resourcePolicy.json \
	--region us-east-2
	{
		"Policy": "{\n 
		  \"Version\": \"2012-10-17\",\n 
		  \"Statement\": [{\n  
			\"Effect\": \"Allow\",\n
			\"Principal\": {\n
			  \"AWS\": \"444455556666\"\n
			},\n  
			\"Action\": [\n
			  \"s3:ListAccessGrants\",\n
			  \"s3:ListAccessGrantsLocations\",\n
			  \"s3:GetDataAccess\",\n
			  \"s3:GetAccessGrantsInstanceForPrefix\",\n
			  \"s3:ListCallerAccessGrants"\n
			],\n
			\"Resource\": \"arn:aws:s3:us-east-2:111122223333:access-grants/default\"\n
		   }\n  
		  ]\n
		  }\n",
		"CreatedAt": "2023-06-16T00:07:47.473000+00:00"
	}
```

**Example S3 Access Grants リソースポリシーを取得する**  
CLI を使用して、S3 Access Grants インスタンスのリソースポリシーを取得または削除することもできます。  
S3 Access Grants リソースポリシーを取得するには、次のサンプルコマンドを使用します。このコマンド例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。  

```
aws s3control get-access-grants-instance-resource-policy \
--account-id 111122223333 \
--region us-east-2

{
"Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:root\"},\"Action\":[\"s3:ListAccessGrants\",\"s3:ListAccessGrantsLocations\",\"s3:GetDataAccess\",\"s3:GetAccessGrantsInstanceForPrefix\",\"s3:ListCallerAccessGrants\"],\"Resource\":\"arn:aws:
s3:us-east-2:111122223333:access-grants/default\"}]}",
"CreatedAt": "2023-06-16T00:07:47.473000+00:00"
}
```

**Example S3 Access Grants リソースポリシーを削除する**  
S3 Access Grants リソースポリシーを削除するには、次のサンプルコマンドを使用します。このコマンド例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。  

```
aws s3control delete-access-grants-instance-resource-policy \
--account-id 111122223333 \
--region us-east-2

// No response body
```

### REST API の使用
<a name="access-grants-cross-accounts-rest-api"></a>

[PutAccessGrantsInstanceResourcePolicy API](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessGrantsInstanceResourcePolicy.html) を使用してリソースポリシーを追加できます。

アカウント `111122223333` の S3 Access Grants インスタンスへのクロスアカウントアクセスを 2 番目のアカウント `444455556666` に付与する場合、アカウント `111122223333` の S3 Access Grants インスタンスのリソースポリシーは、2 番目のアカウント `444455556666` に次のアクションを実行するアクセス許可を付与する必要があります。
+ `s3:ListAccessGrants`
+ `s3:ListAccessGrantsLocations`
+ `s3:GetDataAccess`
+ `s3:GetAccessGrantsInstanceForPrefix`

S3 Access Grants インスタンスのリソースポリシーで、S3 Access Grants インスタンスの ARN を `Resource` として指定し、2 番目のアカウント `444455556666` を `Principal` として指定します。次の例を使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
{
"Version": "2012-10-17",		 	 	 
"Statement": [
{
	"Effect": "Allow", 
	"Principal": {
	"AWS": "444455556666"
}, 
	"Action": [
		"s3:ListAccessGrants",
		"s3:ListAccessGrantsLocations",
		"s3:GetDataAccess",
		"s3:GetAccessGrantsInstanceForPrefix"
	],
	"Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default"
} ]
}
```

その後、[PutAccessGrantsInstanceResourcePolicy API](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessGrantsInstanceResourcePolicy.html) を使用して、ポリシーを設定できます。

S3 Access Grants インスタンスのリソースポリシーを更新、取得、または削除するための REST API サポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [PutAccessGrantsInstanceResourcePolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessGrantsInstanceResourcePolicy.html) 
+  [GetAccessGrantsInstanceResourcePolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsInstanceResourcePolicy.html) 
+  [DeleteAccessGrantsInstanceResourcePolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsInstanceResourcePolicy.html) 

### AWS SDK の使用
<a name="access-grants-cross-accounts-using-sdk"></a>

このセクションでは、S3 アクセス許可リソース ポリシーを設定して 2 番目の AWS アカウントに S3 データの一部へのアクセスを許可する方法の AWS SDK の例を示します。

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

リソースポリシーを追加、更新、取得、または削除して、S3 Access Grants インスタンスへのクロスアカウントアクセスを管理します。

**Example S3 Access Grants インスタンスのリソースポリシーを追加または更新する**  
アカウント `111122223333` の S3 Access Grants インスタンスへのクロスアカウントアクセスを 2 番目のアカウント `444455556666` に付与する場合、アカウント `111122223333` の S3 Access Grants インスタンスのリソースポリシーは、2 番目のアカウント `444455556666` に次のアクションを実行するアクセス許可を付与する必要があります。  
+ `s3:ListAccessGrants`
+ `s3:ListAccessGrantsLocations`
+ `s3:GetDataAccess`
+ `s3:GetAccessGrantsInstanceForPrefix`
S3 Access Grants インスタンスのリソースポリシーで、S3 Access Grants インスタンスの ARN を `Resource` として指定し、2 番目のアカウント `444455556666` を `Principal` として指定します。次の例を使用する際は、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。  

```
{
"Version": "2012-10-17",		 	 	 
"Statement": [
{
	"Effect": "Allow", 
	"Principal": {
	"AWS": "444455556666"
}, 
	"Action": [
		"s3:ListAccessGrants",
		"s3:ListAccessGrantsLocations",
		"s3:GetDataAccess",
		"s3:GetAccessGrantsInstanceForPrefix"
	],
	"Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default"
} ]
}
```
S3 Access Grants インスタンスのリソースポリシーを追加または更新するには、次のサンプルコードを使用します。  

```
public void putAccessGrantsInstanceResourcePolicy() {
	PutAccessGrantsInstanceResourcePolicyRequest putRequest = PutAccessGrantsInstanceResourcePolicyRequest.builder()
	.accountId(111122223333)
	.policy(RESOURCE_POLICY)
	.build();
	PutAccessGrantsInstanceResourcePolicyResponse putResponse = s3Control.putAccessGrantsInstanceResourcePolicy(putRequest);
	LOGGER.info("PutAccessGrantsInstanceResourcePolicyResponse: " + putResponse);
	}
```
レスポンス:  

```
PutAccessGrantsInstanceResourcePolicyResponse(
	Policy={
	"Version": "2012-10-17",		 	 	 
	"Statement": [{
	"Effect": "Allow",
	"Principal": {
	"AWS": "444455556666"
	},
	"Action": [
	"s3:ListAccessGrants",
	"s3:ListAccessGrantsLocations",
	"s3:GetDataAccess",
	"s3:GetAccessGrantsInstanceForPrefix",
	"s3:ListCallerAccessGrants"
	],
	"Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default"
	}]
	}
	)
```

**Example S3 Access Grants リソースポリシーを取得する**  
S3 Access Grants リソースポリシーを取得するには、次のサンプルコマンドを使用します。次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。  

```
public void getAccessGrantsInstanceResourcePolicy() {
	GetAccessGrantsInstanceResourcePolicyRequest getRequest = GetAccessGrantsInstanceResourcePolicyRequest.builder()
	.accountId(111122223333)
	.build();
	GetAccessGrantsInstanceResourcePolicyResponse getResponse = s3Control.getAccessGrantsInstanceResourcePolicy(getRequest);
	LOGGER.info("GetAccessGrantsInstanceResourcePolicyResponse: " + getResponse);
	}
```
レスポンス:  

```
GetAccessGrantsInstanceResourcePolicyResponse(
	Policy={"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::444455556666:root"},"Action":["s3:ListAccessGrants","s3:ListAccessGrantsLocations","s3:GetDataAccess","s3:GetAccessGrantsInstanceForPrefix","s3:ListCallerAccessGrants"],"Resource":"arn:aws:s3:us-east-2:111122223333:access-grants/default"}]},
	CreatedAt=2023-06-15T22:54:44.319Z
	)
```

**Example S3 Access Grants リソースポリシーを削除する**  
S3 Access Grants リソースポリシーを削除するには、次のサンプルコマンドを使用します。次のコマンド例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。  

```
public void deleteAccessGrantsInstanceResourcePolicy() {
	DeleteAccessGrantsInstanceResourcePolicyRequest deleteRequest = DeleteAccessGrantsInstanceResourcePolicyRequest.builder()
	.accountId(111122223333)
	.build();
	DeleteAccessGrantsInstanceResourcePolicyResponse deleteResponse = s3Control.putAccessGrantsInstanceResourcePolicy(deleteRequest);
	LOGGER.info("DeleteAccessGrantsInstanceResourcePolicyResponse: " + deleteResponse);
	}
```
レスポンス:  

```
DeleteAccessGrantsInstanceResourcePolicyResponse()
```

------

## ステップ 3: 2 番目のアカウントの IAM アイデンティティに、アカウント内の S3 Access Grants インスタンスを呼び出すためのアクセス許可を付与する
<a name="access-grants-cross-accounts-configure-3"></a>

Amazon S3 データの所有者がアカウント `111122223333` の S3 Access Grants インスタンスのクロスアカウントポリシーを設定した後、2 番目のアカウント `444455556666` の所有者は、IAM ユーザーまたはロールのアイデンティティベースのポリシーを作成し、S3 Access Grants インスタンスへのアクセスを付与する必要があります。S3 Access Grants インスタンスのリソースポリシーで付与されている内容と付与するアクセス許可に応じて、アイデンティティベースのポリシーに次のアクションを 1 つまたは複数含めます。
+ `s3:ListAccessGrants`
+ `s3:ListAccessGrantsLocations`
+ `s3:GetDataAccess`
+ `s3:GetAccessGrantsInstanceForPrefix`
+ `s3:ListCallerAccessGrants`

「[AWS cross-account access pattern](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)」に従って、2 番目のアカウント `444455556666` の IAM ユーザーまたはロールは、このようなアクセス許可を明示的に 1 つまたは複数持つ必要があります。例えば、IAM ユーザーまたはロールがアカウント `111122223333` 内の S3 Access Grants インスタンスを呼び出して認証情報をリクエストできるように、`s3:GetDataAccess` アクセス許可を付与します。

このコマンド例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
{
	"Version": "2012-10-17",		 	 	 
	"Statement": [
	{
		"Effect": "Allow", 
		"Action": [
			"s3:GetDataAccess",
		],
			"Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default"
		} 
	]
}
```

IAM アイデンティティベースのポリシーの編集については、「**AWS Identity and Access Management ガイド」の「[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)」を参照してください。

## ステップ 4: アカウントの S3 Access Grants インスタンスで許可を作成して、2 番目のアカウントの IAM アイデンティティに S3 データの一部へのアクセスを許可します。
<a name="access-grants-cross-accounts-configure-4"></a>

最後の設定ステップでは、アカウント 111122223333 の S3 Access Grants インスタンスに許可を作成します。これにより、2 番目のアカウント 444455556666 の IAM アイデンティティに、アカウント内の S3 データの一部へのアクセスが付与されます。これを行うには、Amazon S3 コンソール、CLI、API、SDK を使用できます。詳細については、「[権限を作成する](access-grants-grant-create.md)」を参照してください。

許可では、2 番目のアカウントの IAM アイデンティティの AWS ARN を指定して、アクセスを許可する S3 データの場所 (バケット、プレフィックス、またはオブジェクト) を指定します。この場所は、S3 Access Grants インスタンスに既に登録されている必要があります。詳細については、「[ロケーションを登録する](access-grants-location-register.md)」を参照してください。必要に応じて、サブプレフィックスを指定することができます。例えば、アクセスを許可する場所がバケットで、そのバケット内の特定のオブジェクトへのアクセスをさらに制限したい場合は、オブジェクトキー名を `S3SubPrefix` フィールドで渡します。または、キー名が特定のプレフィックス (`2024-03-research-results/` など) で始まるバケット内のオブジェクトへのアクセスを制限したい場合は、`S3SubPrefix=2024-03-research-results/` を渡します。

2 番目のアカウントのアイデンティティに対するアクセス許可を作成するための CLI コマンドの例は、次のとおりです。詳細については「[権限を作成する](access-grants-grant-create.md)」を参照してください。このコマンド例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws s3control create-access-grant \
--account-id 111122223333 \
--access-grants-location-id default \
--access-grants-location-configuration S3SubPrefix=prefixA* \
--permission READ \
--grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::444455556666:role/data-consumer-1
```

クロスアカウントアクセスを設定したら、2 番目のアカウントのユーザーまたはロールは次を実行できます。
+ AWS RAM を介して共有されている S3 Access Grants インスタンスを一覧表示する `ListAccessGrantsInstances` を呼び出します。詳細については、「[S3 Access Grants インスタンスの詳細を取得する](access-grants-instance-view.md)」を参照してください。
+ S3 Access Grants の一時的な認証情報をリクエストします。このようなリクエストを行う方法については、「[S3 Access Grants を介して Amazon S3 データへのアクセスをリクエストする](access-grants-credentials.md)」を参照してください。

# S3 Access Grants のタグの管理
<a name="access-grants-tagging"></a>

Amazon S3 Access Grants のタグは、Amazon S3 の [オブジェクトタグ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) と類似の特性を持ちます。各タグはキーバリューのペアです。タグ付けできる S3 Access Grants のリソースは、S3 Access Grants [インスタンス](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance.html)、[ロケーション](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html)、[権限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html) です。

**注記**  
S3 アクセス権限でのタグ付けは、オブジェクトのタグ付けとは異なる API オペレーションを使用します。S3 Access Grants では、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html) API オペレーションを使用します。リソースは、S3 Access Grants インスタンス、登録済みロケーション、またはアクセス権限です。

[オブジェクトタグ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) 同様、次の制限が適用されます。
+ 新しい S3 Access Grants リソースにタグを追加したり、既存のリソースにタグを追加したりできます。
+ 単一のリソースに関連付けることができるのは、最大 10 タグまでです。複数のタグを同じリソースに関連付ける場合は、一意のタグキーが必要となります。
+ タグキーには最大 128 個の Unicode 文字、タグ値には最大 256 個の Unicode 文字を使用できます。Amazon S3 オブジェクトタグは、内部的に UTF-16 で表現されます。UTF-16 では、文字は 1 文字または 2 文字分を使用することに注意が必要です。
+ キーバリューでは大文字と小文字が区別されます。

タグの制限については、「**AWS Billing ユーザーガイド」の「[ユーザー定義のタグの制限](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html)」を参照してください。

AWS Command Line Interface (AWS CLI)、Amazon S3 REST API、または AWS SDK を使用して S3 Access Grants のリソースにタグ付けできます。

## の使用AWS CLI
<a name="access-grants-tagging-cli"></a>

AWS CLI をインストールするには、**「AWS Command Line Interface ユーザーガイド」の「[AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

S3 Access Grants リソースは、作成時または作成後にタグ付けできます。S3 Access Grants のタグ付けまたはタグの削除方法の説明は、次の例のとおりです。登録済みのロケーションとアクセスグラントに対しても同様のオペレーションを実行できます。

次のコマンド例を使用する際は、`user input placeholders` をユーザー自身の情報に置き換えます。

**Example – タグ付けされた S3 Access Grants インスタンスを作成する**  

```
aws s3control create-access-grants-instance \
 --account-id 111122223333 \
 --profile access-grants-profile \
 --region us-east-2 \
 --tags Key=tagKey1,Value=tagValue1
```
レスポンス:  

```
 {
    "CreatedAt": "2023-10-25T01:09:46.719000+00:00",
    "AccessGrantsInstanceId": "default",
    "AccessGrantsInstanceArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default"
}
```

**Example – 既に作成済みの S3 Access Grants インスタンスにタグ付けする**  

```
aws s3control tag-resource \
--account-id 111122223333 \
--resource-arn "arn:aws:s3:us-east-2:111122223333:access-grants/default" \
--profile access-grants-profile \
--region us-east-2 \
--tags Key=tagKey2,Value=tagValue2
```

**Example – S3 Access Grants インスタンスのタグを一覧表示する**  

```
aws s3control list-tags-for-resource \
--account-id 111122223333 \
--resource-arn "arn:aws:s3:us-east-2:111122223333:access-grants/default" \
--profile access-grants-profile \
--region us-east-2
```
レスポンス:  

```
{
    "Tags": [
        {
            "Key": "tagKey1",
            "Value": "tagValue1"
        },
        {
            "Key": "tagKey2",
            "Value": "tagValue2"
        }
    ]
}
```

**Example – S3 Access Grants インスタンスのタグ付けを解除する**  

```
aws s3control untag-resource \
 --account-id 111122223333 \
 --resource-arn "arn:aws:s3:us-east-2:111122223333:access-grants/default" \
 --profile access-grants-profile \
 --region us-east-2 \
 --tag-keys "tagKey2"
```

## REST API の使用
<a name="access-grants-tagging-rest-api"></a>

Amazon S3 API を使用して、S3 Access Grants インスタンス、登録済みのロケーション、またはアクセス権限のタグを付けたり、タグを解除したり、タグを一覧表示したりできます。REST API での S3 Access Grants タグ管理のサポートの詳細については、「**Amazon Simple Storage Service API リファレンス」の次のセクションを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html)

# S3 Access Grants の制約
<a name="access-grants-limitations"></a>

[S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html) には、次のとおりの制約があります。

**注記**  
ユースケースがこのような制限を超える場合は、[AWS サポート](https://aws.amazon.com/contact-us/?cmpid=docs_headercta_contactus) に連絡して制限の引き上げをリクエストしてください。

 **S3 Access Grants インスタンス**   
作成できるのは、アカウントにつき AWS リージョン ごとに**単一の S3 Access Grants インスタンス** です。「[S3 Access Grants インスタンスを作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-create.html)」を参照してください。

 **S3 Access Grants ロケーション**   
S3 Access Grants インスタンスごとに登録できるのは、**1,000 S3 Access Grants ロケーション** です。「[S3 Access Grants ロケーションを登録する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-location.html)」を参照してください。

 **権限**   
S3 Access Grants インスタンスごとに作成できるのは、**100,000 権限** です。「[権限を作成する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-grant.html)」を参照してください。

## S3 Access Grants の AWS リージョン
<a name="access-grants-limitations-regions"></a>

 S3 Access Grants は現在、次の AWS リージョンで利用できます。


| AWS リージョン コード | AWS リージョン 名 | 
| --- | --- | 
| us-east-1 | 米国東部 (バージニア北部) | 
| us-east-2 | 米国東部 (オハイオ) | 
| us-west-1 | 米国西部 (北カリフォルニア) | 
| us-west-2 | 米国西部 (オレゴン) | 
| af-south-1 | アフリカ (ケープタウン) | 
| ap-east-1 | アジアパシフィック (香港) | 
| ap-east-2 | アジアパシフィック (台北) | 
| ap-northeast-1 | アジアパシフィック (東京) | 
| ap-northeast-2 | アジアパシフィック (ソウル) | 
| ap-northeast-3 | アジアパシフィック (大阪) | 
| ap-south-1 | アジアパシフィック (ムンバイ) | 
| ap-south-2 | アジアパシフィック (ハイデラバード) | 
| ap-southeast-1 | アジアパシフィック (シンガポール) | 
| ap-southeast-2 | アジアパシフィック (シドニー) | 
| ap-southeast-3 | アジアパシフィック (ジャカルタ) | 
| ap-southeast-4 | アジアパシフィック (メルボルン) | 
| ap-southeast-7 | アジアパシフィック (タイ) | 
| ca-central-1 | カナダ (中部) | 
| ca-west-1 | カナダ西部 (カルガリー) | 
| eu-central-1 | 欧州 (フランクフルト) | 
| eu-central-2 | 欧州 (チューリッヒ) | 
| eu-north-1 | 欧州 (ストックホルム) | 
| eu-south-1 | 欧州 (ミラノ) | 
| eu-south-2 | 欧州 (スペイン) | 
| eu-west-1 | 欧州 (アイルランド) | 
| eu-west-2 | 欧州 (ロンドン) | 
| eu-west-3 | 欧州 (パリ) | 
| il-central-1 | イスラエル (テルアビブ) | 
| me-central-1 | 中東 (アラブ首長国連邦) | 
| me-south-1 | 中東 (バーレーン) | 
| mx-central-1 | メキシコ (中部) | 
| sa-east-1 | 南米 (サンパウロ) | 
| us-gov-east-1 | AWS GovCloud (米国東部) | 
| us-gov-west-1 | AWS GovCloud (米国西部) | 

# S3 Access Grants の統合
<a name="access-grants-integrations"></a>

S3 Access Grants は、次の AWS サービスと機能と連携できます。このページは、新しい統合が利用可能になると更新されます。

**ヒント**  
この[S3 Access Grants の AWS ワークショップ](https://catalog.us-east-1.prod.workshops.aws/workshops/77b0af63-6ad2-4c94-bfc0-270eb9358c7a/en-US/0-getting-started)では、AWS Identity and Access Management (IAM) ユーザー、IAM Identity Center ユーザー、Amazon EMR、および AWS Transfer Family で S3 Access Grants を使用する方法について説明します。

 **Amazon Athena**   
[IAM アイデンティティセンターが有効になっている Athena ワークグループの使用](https://docs.aws.amazon.com/athena/latest/ug/workgroups-identity-center.html)

 **Amazon EMR**   
[S3 Access Grants を使用した Amazon EMR クラスターの起動](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-access-grants.html)

 **Amazon EMR on EKS**   
[S3 Access Grants を使用した Amazon EMR on EKS クラスターの起動](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/access-grants.html)

 **Amazon EMR Serverless アプリケーション**   
[S3 Access Grants を使用した Amazon EMR Serverless アプリケーションの起動](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/access-grants.html)

 **Amazon Redshift** \$1   
[Amazon Redshift と Amazon S3 Access Grants の統合](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-sso-s3idc.html)

 **Amazon SageMaker AI Studio**   
[Amazon SageMaker AI Unified Studio への Amazon S3 データの追加](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/adding-existing-s3-data.html)  
Amazon SageMaker AI Unified Studio で S3 Access Grants を使用すると、Amazon S3 データを複数のプロジェクトで共有できます。S3 Access Grants を使用してデータへのアクセスを許可するには、S3 Access Grants インスタンスが必要です。Amazon SageMaker AI Unified Studio は、S3 Access Grants インスタンスが既に利用可能であるか、インスタンスを作成できる場合、S3 Access Grants インスタンスを使用します。まず、Amazon S3 データを追加してから、データをカタログに公開するか、コンシューマーと直接共有します。  
[Amazon S3 Access Grants を Amazon SageMaker AI Studio および SDK for Python (Boto3) プラグインで使用](https://aws.amazon.com/about-aws/whats-new/2024/07/amazon-s3-access-grants-integrate-sagemaker-studio/)  
SDK for Python (Boto3) プラグインを使用することで、Amazon SageMaker AI Studio ノートブックでの S3 Access Grants の使用がより簡単になります。IAM プリンシパルと AWS IAM アイデンティティセンター ディレクトリユーザーのアクセス許可を事前に設定します。Amazon SageMaker AI Studio は ID プロバイダーディレクトリユーザーをネイティブにサポートしていませんが、これらの ID が S3 Access Grants を介して S3 データにアクセスできるようにするプラグインを使用することで、カスタム Python コードを記述できます。データアクセスは、Amazon SageMaker AI ではなくプラグインを使用して行われます。

 **AWS Glue**   
[Amazon S3 Access Grants と AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/security-s3-access-grants.html)

 **AWS IAM アイデンティティセンター**   
[アプリケーション間での信頼できる ID の伝播](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html)

 **AWS Transfer Family**   
AWS Transfer Family 用に [Amazon S3 Access Grants を設定する](https://docs.aws.amazon.com/transfer/latest/userguide/webapp-access-grant.html)

 **Storage Browser for S3**   
Storage Browser for S3 を使用した[大規模なデータアクセスの管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setup-storagebrowser.html#setup-storagebrowser-method3)

 **オープンソースの Python フレームワーク**   
[Amazon S3 Access Grants とオープンソースの Python フレームワークの統合](https://aws.amazon.com/about-aws/whats-new/2024/07/amazon-s3-access-grants-integrate-open-source-python/)

# ACL によるアクセス管理
<a name="acls"></a>

 アクセスコントロールリスト (ACL) はリソースベースのオプションの 1 つであり、バケットとオブジェクトへのアクセスを管理するために使用できます。ACL を使用して、基本的な読み取り/書き込み許可を他の AWS アカウントに付与できます。ACL によるアクセス許可の管理にはいくつかの制限があります。

例えば、アクセス許可を付与できるのは他の AWS アカウント だけで、自分のアカウントのユーザーには付与できません。条件付きアクセス許可を付与することはできず、アクセス許可を明示的に拒否することもできません。ACL が適しているのは、特定のいくつかのシナリオです。例えば、バケット所有者が他の AWS アカウント にオブジェクトのアップロードを許可している場合、これらのオブジェクトへのアクセス許可を管理する方法は、オブジェクトを所有する AWS アカウント によるオブジェクト ACL を使用する以外にありません。

S3 オブジェクト所有権は、Amazon S3 バケットレベルの設定で、バケットにアップロードされる新しいオブジェクト所有権を制御し、ACL を無効にするのに使用できます。デフォルトでは、オブジェクト所有権はバケット所有者の強制設定に設定され、すべての ACL は無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。

 Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL は無効にしておくことをお勧めします。ACL を無効にすると、誰がオブジェクトをバケットにアップロードしたかに関係なく、ポリシーを使用してバケット内のすべてのオブジェクトへのアクセスを制御できます。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

**重要**  
汎用バケットで S3 のオブジェクト所有者に [バケット所有者の強制] 設定を使用する場合は、ポリシーを使用して汎用バケットとその中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、`AccessControlListNotSupported` エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。

ACL の詳細については、次のトピックを参照してください。

**Topics**
+ [アクセスコントロールリスト (ACL) の概要](acl-overview.md)
+ [ACL の設定](managing-acls.md)
+ [ACL のポリシーの例](example-bucket-policies-condition-keys.md)

# アクセスコントロールリスト (ACL) の概要
<a name="acl-overview"></a>

Amazon S3 のアクセスコントロールリスト (ACL) では、バケットとオブジェクトへのアクセスを管理できます。各バケットとオブジェクトには、サブリソースとして ACL がアタッチされています。これにより、アクセスが許可される AWS アカウントまたはグループと、アクセスの種類が定義されます。リソースに対するリクエストを受け取ると、Amazon S3 は該当する ACL を確認して、リクエスタに必要なアクセス許可があることを確かめます。

S3 オブジェクト所有権は、Amazon S3 バケットレベルの設定で、バケットにアップロードされる新しいオブジェクト所有権を制御し、ACL を無効にするのに使用できます。デフォルトでは、オブジェクト所有権はバケット所有者の強制設定に設定され、すべての ACL は無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。

 Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL は無効にしておくことをお勧めします。ACL を無効にすると、誰がオブジェクトをバケットにアップロードしたかに関係なく、ポリシーを使用してバケット内のすべてのオブジェクトへのアクセスを制御できます。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

**重要**  
汎用バケットで S3 のオブジェクト所有者に [バケット所有者の強制] 設定を使用する場合は、ポリシーを使用して汎用バケットとその中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、`AccessControlListNotSupported` エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。

バケットまたはオブジェクトを作成すると、Amazon S3 はリソースのフルコントロールをリソースの所有者に付与するデフォルトの ACL を作成します。これを、以下のバケット ACL のサンプルで示します (デフォルトのオブジェクト ACL は同じ構造です)。

**Example**  

```
 1. <?xml version="1.0" encoding="UTF-8"?>
 2. <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
 3.   <Owner>
 4.     <ID>*** Owner-Canonical-User-ID ***</ID>
 5.   </Owner>
 6.   <AccessControlList>
 7.     <Grant>
 8.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 9.                xsi:type="Canonical User">
10.         <ID>*** Owner-Canonical-User-ID ***</ID>
11.       </Grantee>
12.       <Permission>FULL_CONTROL</Permission>
13.     </Grant>
14.   </AccessControlList>
15. </AccessControlPolicy>
```

サンプル ACL には、`Owner` の正規ユーザー ID を通じて所有者を識別する AWS アカウント エレメントが含まれています。正規ユーザー ID を見つける手順については、「[AWS アカウントの正規ユーザー ID の検索](#finding-canonical-id)」を参照してください。`Grant` エレメントは、被付与者 (AWS アカウント またはあらかじめ定義されたグループ) と付与されたアクセス許可を識別します。このデフォルトの ACL には、所有者に対する 1 つの `Grant` エレメントがあります。`Grant` エレメントを追加してアクセス許可を付与します。各許可は被付与者とアクセス許可を識別します。

**注記**  
1 つの ACL には最大 100 個の許可を指定することができます。

**Topics**
+ [被付与者とは](#specifying-grantee)
+ [付与できるアクセス許可](#permissions)
+ [一般的な Amazon S3 リクエストの `aclRequired` 値](#aclrequired-s3)
+ [サンプル ACL](#sample-acl)
+ [既定 ACL](#canned-acl)

## 被付与者とは
<a name="specifying-grantee"></a>

アクセス権限を付与する場合は、各被付与者を `type="value"` のペアとして指定します。`type` は以下のいずれかです。
+ `id` – 指定された値が AWS アカウントの正規ユーザー ID である場合
+ `uri` - 事前定義されたグループにアクセス許可を付与する場合

**警告**  
他の AWS アカウントに自分のリソースへのアクセスを許可した場合、その AWS アカウントはアカウント内のユーザーに許可を委任できることに注意してください。これは*クロスアカウントアクセス*と呼ばれています。クロスアカウントアクセスの使用については、「[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)」の「*IAM ユーザーにアクセス許可を委任するロールの作成*」を参照してください。

### AWS アカウントの正規ユーザー ID の検索
<a name="finding-canonical-id"></a>

正規ユーザー ID は、AWS アカウントに関連付けられています。この ID は、次のような長い文字列です。

`79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`

アカウントの正規ユーザー ID を検索する方法については、「**AWS Account Management リファレンスガイド」の「[AWS アカウント の正規ユーザー ID を検索する](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId)」を参照してください。

また、AWS アカウントがアクセス許可を持つバケットまたはオブジェクトの ACL を読み取って、AWS アカウントの正規ユーザー ID を検索することもできます。許可リクエストによって個別の AWS アカウントに許可が付与された場合、ACL にはアカウントの正規ユーザー ID が含まれた許可エントリが追加されます。

**注記**  
バケットをパブリックにした場合 (非推奨)、認証されていないどのユーザーもバケットにオブジェクトをアップロードできます。これらの匿名ユーザーは AWS アカウントを持っていません。匿名ユーザーがバケットにオブジェクトをアップロードすると、Amazon S3 によって特殊な正規ユーザー ID (`65a011a29cdf8ec533ec3d1ccaae921c`) がそのオブジェクトの所有者として ACL で追加されます。詳細については、「[Amazon S3 のバケットとオブジェクトの所有権](access-policy-language-overview.md#about-resource-owner)」を参照してください。

### Amazon S3 の事前定義済みのグループ
<a name="specifying-grantee-predefined-groups"></a>

Amazon S3 には、事前定義済みの一連のグループがあります。グループにアカウントアクセスを許可するときは、正規ユーザー ID の代わりに Amazon S3 のいずれかの URI を指定します。Amazon S3 には、以下の事前に定義されたグループが用意されています。
+ ****Authenticated Users グループ**** – `http://acs.amazonaws.com/groups/global/AuthenticatedUsers` で表されます。

  このグループはすべて AWS アカウントを表しています。**このグループへのアクセス許可により、AWS アカウント がリソースにアクセスできます。**ただし、すべてのリクエストは署名(認証)されている必要があります。
**警告**  
**Authenticated Users グループ**にアクセスを許可すると、世界中の認証された AWS ユーザーがリソースにアクセスできます。
+ ****All Users グループ**** – `http://acs.amazonaws.com/groups/global/AllUsers` で表されます。

  **このグループへのアクセス許可により、世界中の誰でもリソースにアクセスすることが許可されます。**リクエストは署名(認証)済み、または署名なし(匿名)とすることができます。署名なしのリクエストでは、リクエストの Authentication ヘッダーが省略されます。
**警告**  
**All Users グループ**には、`WRITE`、`WRITE_ACP`、または `FULL_CONTROL` アクセス許可を一切付与しないことを強くお勧めします。例えば、`WRITE` アクセス許可は所有者以外のユーザーが既存のオブジェクトを上書きまたは削除することを許可しませんが、`WRITE` アクセス許可はすべてのユーザーがバケットにオブジェクトを格納することを許可し、この料金はお客様に請求されます。これらのアクセス許可の詳細については、次のセクション [付与できるアクセス許可](#permissions) を参照してください。
+ ****Log Delivery グループ**** – `http://acs.amazonaws.com/groups/s3/LogDelivery` で表されます。

  バケットに対する `WRITE` アクセス許可により、このグループはサーバーアクセスログ (「[サーバーアクセスログによるリクエストのログ記録](ServerLogs.md)」を参照) をバケットに書き込むことができます。

**注記**  
ACL を使用する場合、被付与者は AWS アカウントまたは事前定義済みのいずれかの Amazon S3 グループです。被付与者を IAM ユーザーとすることはできません。IAM 内の AWS ユーザーおよびアクセス許可の詳細については、「[AWS Identity and Access Management の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/)」を参照してください。

## 付与できるアクセス許可
<a name="permissions"></a>

以下の表に、Amazon S3 の ACL でサポートされている一連のアクセス許可を示します。ACL アクセス許可のセットは、オブジェクト ACL とバケット ACL で同じです。ただし、コンテキスト (バケット ACL かオブジェクト ACL か) に応じて、これらの ACL アクセス許可は特定のバケットまたはオブジェクトオペレーションのためのアクセス許可を付与します。この表では、アクセス許可の一覧と、オブジェクトとバケットにおけるその意味について説明しています。

Amazon S3 コンソールでの ACL アクセス権限の詳細については、「[ACL の設定](managing-acls.md)」を参照してください。


| アクセス許可 | バケット上で付与された場合 | オブジェクト上で付与された場合 | 
| --- | --- | --- | 
| READ | 被付与者がバケット内のオブジェクトをリストすることを許可します | 被付与者がオブジェクトデータとそのメタデータを読み込むことを許可します | 
| WRITE | 被付与者がバケット内に新しいオブジェクトを作成できるようにします。既存のオブジェクトのバケット所有者およびオブジェクト所有者には、これらのオブジェクトの削除と上書きも許可します。 | 該当しません | 
| READ\$1ACP | 被付与者がバケット ACL を読み込むことを許可します | 被付与者がオブジェクト ACL を読み込むことを許可します | 
| WRITE\$1ACP | 被付与者が該当するバケットの ACL を書き込むことを許可します | 被付与者が該当するオブジェクトの ACL を書き込むことを許可します | 
| FULL\$1CONTROL | バケットに対する READ、WRITE、READ\$1ACP、WRITE\$1ACP のアクセス許可を被付与者に付与します | オブジェクトに対する READ、READ\$1ACP、WRITE\$1ACP のアクセス許可を被付与者に付与します | 

**警告**  
S3 バケットとオブジェクトにアクセス許可を付与するときは注意が必要です。例えば、あるバケットに対する `WRITE` のアクセス権を付与すると、被付与者はそのバケットにオブジェクトを作成できます。アクセス許可を付与する前に、「[アクセスコントロールリスト (ACL) の概要](#acl-overview)」セクション全体を読むことを強くお勧めします。

### ACL アクセス許可とアクセスポリシーのアクセス許可のマッピング
<a name="acl-access-policy-permission-mapping"></a>

前の表に示したように、ACL で使用できるアクセス許可のセットは、アクセスポリシーで設定できるアクセス許可に比べると限定されています (「[Amazon S3 のポリシーアクション](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions)」を参照してください)。これらのアクセス許可はそれぞれ、Amazon S3 の 1 つ以上のオペレーションを許可します。

次の表は、ACL アクセス権限のそれぞれが、対応するアクセスポリシーのアクセス許可にどのようにマッピングされるかを示します。ご覧のように、アクセスポリシーでは ACL よりも多くのアクセス許可が付与されています。ACL は主に、ファイルシステムのアクセス許可と同様に、基本的な読み取り/書き込みアクセス許可を付与するために使用されます。ACL の使用が適している場合の詳細については、[Amazon S3 用 Identity and Access Management](security-iam.md) を参照してください。

Amazon S3 コンソールでの ACL アクセス権限の詳細については、[ACL の設定](managing-acls.md) を参照してください。


| ACL アクセス許可 | ACL アクセス許可がバケットに付与される場合の、対応するアクセスポリシーのアクセス許可  | ACL アクセス許可がオブジェクトに付与される場合の、対応するアクセスポリシーのアクセス許可 | 
| --- | --- | --- | 
| READ | s3:ListBucket、s3:ListBucketVersions、および s3:ListBucketMultipartUploads  | s3:GetObject および s3:GetObjectVersion | 
| WRITE |  `s3:PutObject` バケット所有者は、バケット内の任意のオブジェクトを作成、上書き、削除でき、オブジェクト所有者はそのオブジェクトに対する `FULL_CONTROL` を有します。 さらに、被付与者がバケット所有者であるときは、バケットの ACL で `WRITE` アクセス許可を付与すると、そのバケット内の任意のバージョンに対して `s3:DeleteObjectVersion` アクションを実行できるようになります。  | 該当しません | 
| READ\$1ACP | s3:GetBucketAcl  | s3:GetObjectAcl および s3:GetObjectVersionAcl | 
| WRITE\$1ACP | s3:PutBucketAcl | s3:PutObjectAcl および s3:PutObjectVersionAcl | 
| FULL\$1CONTROL | これは、READ、WRITE、READ\$1ACP、および WRITE\$1ACP ACL アクセス許可を付与するのと同等です。したがって、この ACL アクセス許可は、対応するアクセスポリシーのアクセス許可の組み合わせにマッピングされます。 | これは、READ、READ\$1ACP、および WRITE\$1ACP ACL アクセス許可を付与するのと同等です。したがって、この ACL アクセス許可は、対応するアクセスポリシーのアクセス許可の組み合わせにマッピングされます。 | 

### 条件キー
<a name="acl-specific-condition-keys"></a>

アクセスポリシー権限を付与する場合、条件キーを使用して、バケットポリシーを使用するオブジェクトの ACL の値を制限できます。以下のコンテキストキーは ACL に対応しています。これらのコンテキストキーを使用して、リクエストで特定の ACL の使用を強制することができます。
+ `s3:x-amz-grant-read` ‐ 読み取りアクセスが必要です。
+ `s3:x-amz-grant-write` ‐ 書き込みアクセスが必要です。
+ `s3:x-amz-grant-read-acp` ‐ バケットの ACL への読み取りアクセスが必要です。
+ `s3:x-amz-grant-write-acp` ‐ バケットの ACL への書き込みアクセスが必要です。
+ `s3:x-amz-grant-full-control` ‐ フルコントロールが必要です。
+ `s3:x-amz-acl` ‐ が必要です。[既定 ACL](#canned-acl)

ACL 固有のヘッダーを含むポリシーの例については、「[バケット所有者にフルコントロールを与えることを条件として s3:PutObject のアクセス許可を付与する](example-bucket-policies-condition-keys.md#grant-putobject-conditionally-1)」を参照してください。Amazon S3 固有の条件キーの完全なリストについては、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

## 一般的な Amazon S3 リクエストの `aclRequired` 値
<a name="aclrequired-s3"></a>

承認に ACL を必要とした Amazon S3 リクエストを特定するには、Amazon S3 サーバーアクセスログまたは AWS CloudTrail の `aclRequired` 値を使用できます。CloudTrail または Amazon S3 サーバーアクセスログに表示される `aclRequired` 値は、呼び出されたオペレーションと、リクエスター、オブジェクト所有者、バケット所有者に関する特定の情報によって異なります。ACL が不要であったか、`bucket-owner-full-control` の既定 ACL を設定するか、リクエストがバケットポリシーで許可されている場合、`aclRequired` 値の文字列は Amazon S3 サーバーアクセスログでは「`-`」となり、CloudTrail では存在しません。

以下の表は、さまざまな Amazon S3 API オペレーションに対して CloudTrail または Amazon S3 サーバーアクセスログで期待される `aclRequired` 値を示しています。この情報から、どの Amazon S3 オペレーションが承認に関して ACL に依存しているかを理解できます。以下の表で、A、B、C は、リクエスター、オブジェクト所有者、バケット所有者と関連する各アカウントを表しています。アスタリスク (\$1) が付いているエントリは、A、B、C のうち、任意のアカウントを示します。

**注記**  
次の表の `PutObject` オペレーションは、特に明記しない限り、ACL を設定しないリクエストを示します。ただし、ACL が `bucket-owner-full-control` ACL である場合を除きます。`aclRequired` の値が NULL の場合、`aclRequired` は AWS CloudTrail ログに存在しないことを示します。

 次の表は、CloudTrail の `aclRequired` 値を示しています。


| オペレーション名 | リクエスタ | オブジェクト所有者 | バケット所有者  | バケットポリシーはアクセスを許可する | `aclRequired` 値 | Reason | 
| --- | --- | --- | --- | --- | --- | --- | 
| GetObject | A | A | A | はい/いいえ | null | 同一アカウントアクセス | 
| GetObject | A | B | A | はい/いいえ | null | 同一アカウントアクセス (バケット所有者の強制による) | 
| GetObject | A | A | B | はい | null | クロスアカウントアクセスがバケットポリシーで許可される | 
| GetObject | A | A | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| GetObject | A | A | B | はい | null | クロスアカウントアクセスがバケットポリシーで許可される | 
| GetObject | A | B | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| GetObject | A | B | C | はい | null | クロスアカウントアクセスがバケットポリシーで許可される | 
| GetObject | A | B | C | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| PutObject | A | 該当しない | A | はい/いいえ | null | 同一アカウントアクセス | 
| PutObject | A | 該当しない | B | はい | null | クロスアカウントアクセスがバケットポリシーで許可される | 
| PutObject | A | 該当しない | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| ACL による PutObject (bucket-owner-full-control を除く) | \$1 | 該当しない | \$1 | はい/いいえ | はい | リクエストは ACL を許可する | 
| ListObjects | A | 該当しない | A | はい/いいえ | null | 同一アカウントアクセス | 
| ListObjects | A | 該当しない | B | はい | null | クロスアカウントアクセスがバケットポリシーで許可される | 
| ListObjects | A | 該当しない | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| DeleteObject | A | 該当しない | A | はい/いいえ | null | 同一アカウントアクセス | 
| DeleteObject | A | 該当しない | B | はい | null | クロスアカウントアクセスがバケットポリシーで許可される | 
| DeleteObject | A | 該当しない | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| PutObjectAcl | \$1 | \$1 | \$1 | はい/いいえ | はい | リクエストは ACL を許可する | 
| PutBucketAcl | \$1 | 該当しない | \$1 | はい/いいえ | はい | リクエストは ACL を許可する | 

 

**注記**  
次の表の `REST.PUT.OBJECT` オペレーションは、特に明記しない限り、ACL を設定しないリクエストを示します。ただし、ACL が `bucket-owner-full-control` ACL である場合を除きます。`aclRequired` 値の文字列「`-`」は、Amazon S3 サーバーアクセスログの NULL 値を示します。

 次の表は、Amazon S3 サーバーアクセスログの `aclRequired` 値を示しています。


| オペレーション名 | リクエスタ | オブジェクト所有者 | バケット所有者  | バケットポリシーはアクセスを許可する | `aclRequired` 値 | Reason | 
| --- | --- | --- | --- | --- | --- | --- | 
| REST.GET.OBJECT | A | A | A | はい/いいえ | - | 同一アカウントアクセス | 
| REST.GET.OBJECT | A | B | A | はい/いいえ | - | 同一アカウントアクセス (バケット所有者の強制による) | 
| REST.GET.OBJECT | A | A | B | はい | - | クロスアカウントアクセスがバケットポリシーで許可される | 
| REST.GET.OBJECT | A | A | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| REST.GET.OBJECT | A | B | B | はい | - | クロスアカウントアクセスがバケットポリシーで許可される | 
| REST.GET.OBJECT | A | B | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| REST.GET.OBJECT | A | B | C | はい | - | クロスアカウントアクセスがバケットポリシーで許可される | 
| REST.GET.OBJECT | A | B | C | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| REST.PUT.OBJECT | A | 該当しない | A | はい/いいえ | - | 同一アカウントアクセス | 
| REST.PUT.OBJECT | A | 該当しない | B | はい | - | クロスアカウントアクセスがバケットポリシーで許可される | 
| REST.PUT.OBJECT | A | 該当しない | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| ACL による REST.PUT.OBJECT (bucket-owner-full-control を除く) | \$1 | 該当しない | \$1 | はい/いいえ | はい | リクエストは ACL を許可する | 
| REST.GET.BUCKET | A | 該当しない | A | はい/いいえ | - | 同一アカウントアクセス | 
| REST.GET.BUCKET | A | 該当しない | B | はい | - | クロスアカウントアクセスがバケットポリシーで許可される | 
| REST.GET.BUCKET | A | 該当しない | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| REST.DELETE.OBJECT | A | 該当しない | A | はい/いいえ | - | 同一アカウントアクセス | 
| REST.DELETE.OBJECT | A | 該当しない | B | はい | - | クロスアカウントアクセスがバケットポリシーで許可される | 
| REST.DELETE.OBJECT | A | 該当しない | B | いいえ | あり | クロスアカウントアクセスは ACL に依存する | 
| REST.PUT.ACL | \$1 | \$1 | \$1 | はい/いいえ | はい | リクエストは ACL を許可する | 

## サンプル ACL
<a name="sample-acl"></a>

バケットの以下のサンプル ACL は、リソース所有者と一連の許可を識別します。形式は Amazon S3 REST API の ACL の XML 表現です。バケット所有者はリソースに対する `FULL_CONTROL` が許可されます。また、この ACL には、正規ユーザー ID で示されている 2 つの AWS アカウントと、前のセクションで説明した事前定義済みの 2 つの Amazon S3 グループに対して、リソースへの許可がどのように付与されるかが示されています。

**Example**  

```
 1. <?xml version="1.0" encoding="UTF-8"?>
 2. <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
 3.   <Owner>
 4.     <ID>Owner-canonical-user-ID</ID>
 5.   </Owner>
 6.   <AccessControlList>
 7.     <Grant>
 8.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
 9.         <ID>Owner-canonical-user-ID</ID>
10.       </Grantee>
11.       <Permission>FULL_CONTROL</Permission>
12.     </Grant>
13.     
14.     <Grant>
15.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
16.         <ID>user1-canonical-user-ID</ID>
17.       </Grantee>
18.       <Permission>WRITE</Permission>
19.     </Grant>
20. 
21.     <Grant>
22.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
23.         <ID>user2-canonical-user-ID</ID>
24.       </Grantee>
25.       <Permission>READ</Permission>
26.     </Grant>
27. 
28.     <Grant>
29.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
30.         <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> 
31.       </Grantee>
32.       <Permission>READ</Permission>
33.     </Grant>
34.     <Grant>
35.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
36.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI>
37.       </Grantee>
38.       <Permission>WRITE</Permission>
39.     </Grant>
40. 
41.   </AccessControlList>
42. </AccessControlPolicy>
```

## 既定 ACL
<a name="canned-acl"></a>

Amazon S3 では、*既定 ACL* と呼ばれる事前定義済みの一連の許可がサポートされています。各既定 ACL には、あらかじめ定義された一連の被付与者とアクセス権限が含まれています。以下の表に、一連の既定 ACL と、関連するあらかじめ定義された許可を示します。


| 既定 ACL | Applies to | ACL に追加されるアクセス許可 | 
| --- | --- | --- | 
| private | バケットとオブジェクト | 所有者は FULL\$1CONTROL を取得します。他のユーザーにはアクセス許可は付与されません (デフォルト)。 | 
| public-read | バケットとオブジェクト | 所有者は FULL\$1CONTROL を取得します。AllUsers グループ ([被付与者とは](#specifying-grantee) を参照) は READ アクセス許可を取得します。 | 
| public-read-write | バケットとオブジェクト | 所有者は FULL\$1CONTROL を取得します。AllUsers グループは READ および WRITE アクセス許可を取得します。通常、これをバケットで付与することはお勧めしません。 | 
| aws-exec-read | バケットとオブジェクト | 所有者は FULL\$1CONTROL を取得します。Amazon EC2 には、Amazon S3 から Amazon マシンイメージ (AMI) バンドルを READ するための GET アクセスが許可されます。 | 
| authenticated-read | バケットとオブジェクト | 所有者は FULL\$1CONTROL を取得します。AuthenticatedUsers グループは READ アクセス許可を取得します。 | 
| bucket-owner-read | オブジェクト | オブジェクト所有者は FULL\$1CONTROL を取得します。バケット所有者は READ を取得します。バケットの作成時にこの既定 ACL を指定しても、Amazon S3 には無視されます。 | 
| bucket-owner-full-control | オブジェクト  | オブジェクト所有者とバケット所有者はオブジェクトに対する FULL\$1CONTROL を取得します。バケットの作成時にこの既定 ACL を指定しても、Amazon S3 には無視されます。 | 
| log-delivery-write | バケット  | LogDelivery グループはバケットに対する WRITE および READ\$1ACP アクセス許可を取得します。ログの詳細については、[サーバーアクセスログによるリクエストのログ記録](ServerLogs.md) を参照してください。 | 

**注記**  
リクエストではこれらの既定 ACL を 1 つのみ指定できます。

`x-amz-acl` リクエストヘッダーを使用して、リクエストに既定 ACL を指定します。Amazon S3 が既定 ACL を含むリクエストを受信すると、あらかじめ定義された許可がリソースの ACL に追加されます。

# ACL の設定
<a name="managing-acls"></a>

このセクションでは、アクセスコントロールリスト (ACL) を使用して S3 バケットとオブジェクトのアクセス許可を管理する方法について説明します。リソース ACL に許可を追加するには、AWS マネジメントコンソール、AWS Command Line Interface (CLI)、REST API、または AWS SDK を使用します。

バケットに対するアクセス許可とオブジェクトに対するアクセス許可は相互に独立しています。オブジェクトはバケットからアクセス許可を継承しません。例えば、バケットを作成してユーザーに書き込みアクセスを許可した場合、そのユーザーから明示的にアクセスが許可されない限り、そのユーザーのオブジェクトにアクセスできません。

他の AWS アカウント ユーザーまたは事前定義されたグループに許可を与えることができます。アクセス許可が付与されたユーザーまたはグループは、*被付与者*と呼ばれます。デフォルトでは、バケットを作成した AWS アカウントである所有者が、完全な許可を持っています。

ユーザーまたはグループに付与する各アクセス許可により、バケットに関連付けられたエントリが ACL に追加されます。ACL は、被付与者と付与されたアクセス許可を識別するリストを表示します。

S3 オブジェクト所有権は、Amazon S3 バケットレベルの設定で、バケットにアップロードされる新しいオブジェクト所有権を制御し、ACL を無効にするのに使用できます。デフォルトでは、オブジェクト所有権はバケット所有者の強制設定に設定され、すべての ACL は無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。

 Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL は無効にしておくことをお勧めします。ACL を無効にすると、誰がオブジェクトをバケットにアップロードしたかに関係なく、ポリシーを使用してバケット内のすべてのオブジェクトへのアクセスを制御できます。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

**重要**  
汎用バケットで S3 のオブジェクト所有者に [バケット所有者の強制] 設定を使用する場合は、ポリシーを使用して汎用バケットとその中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、`AccessControlListNotSupported` エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。

**警告**  
**すべてのユーザー (パブリックアクセス)**または**認証されたユーザーグループ (すべての AWS 認証ユーザー)** のグループへの書き込みアクセスを許可しないことを強くお勧めします。これらのグループに書き込みアクセスを許可した場合の影響の詳細については、[Amazon S3 の事前定義済みのグループ](acl-overview.md#specifying-grantee-predefined-groups) を参照してください。

## S3 コンソールを使用した、バケットの ACL アクセス権限の設定
<a name="set-bucket-permissions"></a>

コンソールには、重複した被付与者のアクセス権限がまとめて表示されます。ACL の全リストを表示するには、Amazon S3 REST API、AWS CLI、または AWS SDK を使用します。

次の表は、Amazon S3 コンソールでバケットに設定できる ACL アクセス権限を示しています。


**バケットの Amazon S3 コンソールの ACL アクセス権限**  

| コンソールのアクセス権限 | ACL アクセス許可 | アクセス | 
| --- | --- | --- | 
| オブジェクト − リスト | READ | 被付与者がバケット内のオブジェクトをリストすることを許可します。 | 
| オブジェクト − 書き込み | WRITE | 被付与者がバケット内に新しいオブジェクトを作成できるようにします。既存のオブジェクトのバケット所有者およびオブジェクト所有者については、これらのオブジェクトの削除と上書きも許可します。 | 
| バケット ACL − 読み取り | READ\$1ACP | 被付与者がバケット ACL を読み込むことを許可します。 | 
| バケット ACL − 書き込み | WRITE\$1ACP | 被付与者が該当するバケットの ACL を書き込むことを許可します。 | 
| 全員 (パブリックアクセス): オブジェクト − リスト | READ | バケット内のオブジェクトに対するパブリック読み取りアクセス権を付与します。リストアクセス権を [Everyone (public access)] (全員 (パブリックアクセス)) に付与すると、世界中のユーザーがバケット内のオブジェクトにアクセスできます。 | 
| 全員 (パブリックアクセス) : バケット ACL − 読み取り | READ\$1ACP | バケット ACL のパブリック読み取りアクセス権を付与します。[Everyone (public access)] (全員 (パブリックアクセス)) に読み取りアクセス権を付与すると、世界中のユーザーがバケット ACL にアクセスできます。 | 

ACL アクセス権限の詳細については、[アクセスコントロールリスト (ACL) の概要](acl-overview.md) を参照してください。

**重要**  
汎用バケットで S3 のオブジェクト所有者に [バケット所有者の強制] 設定を使用する場合は、ポリシーを使用して汎用バケットとその中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、`AccessControlListNotSupported` エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。

**バケットに ACL アクセス許可を設定する**

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

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. [**Buckets (バケット)**] リストで、アクセス許可を設定するバケットの名前を選択します。

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

1. [**アクセスコントロールリスト**] で、[**編集**] を選択します。

   バケットに対する次の ACL アクセス許可を編集できます。

**オブジェクト**
   + **List (リスト)** − 被付与者がバケット内のオブジェクトをリストすることを許可します
   + **Write** (書き込み) – 被付与者がバケット内に新しいオブジェクトを作成できるようにします。既存のオブジェクトのバケット所有者およびオブジェクト所有者については、これらのオブジェクトの削除と上書きも許可します。

     S3 コンソールでは、S3 ログデリバリーグループとバケット所有者 (AWS アカウント) にのみ書き込みアクセスを許可できます。他の被付与者には、書き込みアクセスを許可しないことを強くお勧めします。ただし、書き込みアクセスを許可する必要がある場合は、AWS CLI、AWS SDK、または REST API を使用できます。

**バケット ACL**
   + **Read (読み込み)** − 被付与者がバケット ACL を読み込むことを許可します
   + **Write (書き込み)** − 被付与者が該当するバケットの ACL を書き込むことを許可します

1. バケット所有者の許可を変更するには、**バケット所有者 (AWS アカウント)**の横で、次の ACL アクセス権限を消去または選択します。
   + [**Objects (オブジェクト)**] − [**List (リスト)**] または [**Write (書き込み)**]
   + [**Bucket ACL (バケット ACL)**] – [**Read (読み取り)**] または [**Write (書き込み)**]

   *所有者*とは、AWS アカウントのルートユーザーであり、AWS Identity and Access Management IAM ユーザーではありません。ルートユーザーの詳細については、「*IAM ユーザーガイド*」の「[AWS アカウントのルートユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)」を参照してください。

1. 一般ユーザー (インターネット上のすべてのユーザー) のアクセス許可を付与または取り消すには、[**Everyone (public access) (全員 (パブリックアクセス))**] の横で、次の ACL アクセス許可をクリアまたは選択します。
   + [**Objects (オブジェクト)**] – [**List (リスト)**]
   + [**Bucket ACL (バケット ACL)**] – [**Read (読み取り)**]
**警告**  
[**全員**] グループに S3 バケットへのパブリックアクセスを付与するときは注意が必要です。このグループにアクセスを付与すると、世界中のすべてのユーザーがバケットにアクセスできます。種類にかかわらず、S3 バケットへのパブリック書き込みアクセスは一切付与しないことを強くお勧めします。

1. AWS アカウント があれば誰でも許可を付与するか取り消すために、**認証済みユーザーグループ (AWS アカウント があれば誰でも可)** の横で、次の ACL アクセス権限を消去または選択します。
   + [**Objects (オブジェクト)**] – [**List (リスト)**]
   + [**Bucket ACL (バケット ACL)**] – [**Read (読み取り)**]

1. Amazon S3 がバケットにサーバーアクセスログを書き込むアクセス許可を付与または取り消すには、[**S3 log delivery group (S3 ログ配信グループ)**] で、次の ACL アクセス許可をクリアまたは選択します。
   + [**Objects (オブジェクト)**] – [**List (リスト)**] または [**Write (書き込み)**] 
   + [**Bucket ACL (バケット ACL)**] – [**Read (読み取り)**] または [**Write (書き込み)**] 

     バケットがアクセスログを受け取るターゲットバケットとして設定されている場合、バケットのアクセス許可は [**ログ配信**] グループのバケットへの書き込みアクセスを許可する必要があります。バケット上のサーバアクセスログ記録を有効にすると、Amazon S3 コンソールは、[**Log Delivery (ログ配信)**] グループにログを受信することを選択したターゲットバケットへの書き込みアクセス権を付与します。サーバーアクセスログ記録の詳細については、「[Amazon S3 サーバーアクセスログを有効にします。](enable-server-access-logging.md)」を参照してください。

1. 別の AWS アカウントへの許可を付与するには、次の手順を実行します。

   1. [**Add grantee (被付与者の追加)**] を選択します。

   1. [**Grantee**] (被付与者) ボックスに、他の AWS アカウント の正規 ID を入力します。

   1. 次の ACL アクセス許可から選択します。
      + [**Objects (オブジェクト)**] – [**List (リスト)**] または [**Write (書き込み)**]
      + [**Bucket ACL (バケット ACL)**] – [**Read (読み取り)**] または [**Write (書き込み)**]
**警告**  
他の AWS アカウントに自分のリソースへのアクセスを許可した場合、その AWS アカウントはアカウント内のユーザーに許可を委任できることに注意してください。これは*クロスアカウントアクセス*と呼ばれています。クロスアカウントアクセスの使用については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)の*IAM ユーザーにアクセス許可を委任するロールの作成*を参照してください。

1. 別の AWS アカウント へのアクセスを削除するには、**他の AWS アカウント へのアクセス**で、**削除**を選択します。

1. 変更を保存するには、[**変更の保存**] を選択します。

## S3 コンソールを使用した、オブジェクトの ACL アクセス権限の設定
<a name="set-object-permissions"></a>

コンソールには、重複した被付与者のアクセス権限がまとめて表示されます。ACL の全リストを表示するには、Amazon S3 REST API、AWS CLI、または AWS SDK を使用します。次の表に、Amazon S3 コンソールでオブジェクト用に設定できる ACL アクセス権限を示します。


**オブジェクト用の Amazon S3 コンソールの ACL アクセス権限**  

| コンソールのアクセス権限 | ACL アクセス許可 | アクセス | 
| --- | --- | --- | 
| オブジェクト − 読み取り | READ | 被付与者がオブジェクトデータとそのメタデータを読み込むことを許可します。 | 
| オブジェクト ACL − 読み取り | READ\$1ACP | 被付与者がオブジェクト ACL を読み込むことを許可します。 | 
| オブジェクト ACL − 書き込み | WRITE\$1ACP | 被付与者が該当するオブジェクトの ACL を書き込むことを許可します | 

ACL アクセス権限の詳細については、[アクセスコントロールリスト (ACL) の概要](acl-overview.md) を参照してください。

**重要**  
汎用バケットで S3 のオブジェクト所有者に [バケット所有者の強制] 設定を使用する場合は、ポリシーを使用して汎用バケットとその中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、`AccessControlListNotSupported` エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。

**オブジェクトに ACL アクセス権限を設定する**

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

1. [**Buckets**] (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。

1. **オブジェクト**のリストで、アクセス許可を設定するオブジェクトの名前を選択します。

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

1. [アクセスコントロールリスト (ACL)] で、[**編集**] を選択します。

   オブジェクトに対する次の ACL アクセス許可を編集できます。

**オブジェクト**
   + **Read (読み込み)** − 被付与者がオブジェクトデータとそのメタデータを読み込むことを許可します

**オブジェクト ACL**
   + **読み込み (Read)** − 被付与者がオブジェクト ACL を読み込むことを許可します
   + **Write (書き込み)** − 被付与者が該当するオブジェクトの ACL を書き込むことを許可します S3 コンソールでは、バケット所有者 (AWS アカウント) にのみ書き込みアクセスを許可できます。他の被付与者には、書き込みアクセスを許可しないことを強くお勧めします。ただし、書き込みアクセスを許可する必要がある場合は、AWS CLI、AWS SDK、または REST API を使用できます。

1. 以下のオブジェクトのアクセス許可を管理できます。

   1. 

**オブジェクト所有者へのアクセス**

      *所有者*とは、AWS アカウントのルートユーザーであり、AWS Identity and Access Management IAM ユーザーではありません。ルートユーザーの詳細については、「*IAM ユーザーガイド*」の「[AWS アカウントのルートユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)」を参照してください。

      所有者のオブジェクトアクセス許可を変更するには、**オブジェクト所有者へのアクセス**で、**お客様の AWS アカウント (所有者)** を選択します。

      変更するアクセス許可のチェックボックスをオンにして、[**保存**] を選択します。

   1. 

**その他の AWS アカウントのアクセス**

      別の AWS から AWS アカウント ユーザーに許可を与えるには、**他の AWS アカウント へのアクセス**で、**アカウントの追加**を選択します。[**Enter an ID**] (ID の入力) フィールドに、オブジェクトのアクセス許可を付与する AWS ユーザーの正規 ID を入力します。正規 ID の検索に関する詳細は、*Amazon Web Services 全般のリファレンス* の「[AWS アカウント 識別子](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html)」を参照してください。最大 99 人のユーザーを追加できます。

      ユーザーに付与するアクセス許可のチェックボックスをオンにして、[**保存**] を選択します。アクセス許可についての情報を表示するには、ヘルプアイコンを選択します。

   1. 

**パブリックアクセス**

      オブジェクトへのアクセスを一般のユーザー (世界中のすべてのユーザー) に許可するには、[**パブリックアクセス**] で [**全員**] を選択します。パブリックアクセス許可を付与すると、世界中の誰でもオブジェクトにアクセスできるようになります。

      付与するアクセス許可のチェックボックスをオンにして、[**保存**] を選択します。
**警告**  
[**Everyone (全員)**] グループに Amazon S3 オブジェクトへの匿名アクセスを付与するときは注意が必要です。このグループにアクセスを付与すると、世界中のすべてのユーザーがオブジェクトにアクセスできます。すべてのユーザーにアクセスを付与する必要がある場合は、[**Read objects (オブジェクトの読み取り)**] のみのアクセス許可を付与することを強くお勧めします。
[*全員*] グループにオブジェクト書き込み許可は付与**しない**ことを強くお勧めします。付与すると、すべてのユーザーに対して、オブジェクトの ACL アクセス許可を上書きすることが許可されます。

## AWS SDK の使用
<a name="acl-using-sdk"></a>

このセクションでは、バケットやオブジェクトでアクセスコントロールリスト (ACL) の付与を設定する方法の例を示します。

**重要**  
汎用バケットで S3 のオブジェクト所有者に [バケット所有者の強制] 設定を使用する場合は、ポリシーを使用して汎用バケットとその中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、`AccessControlListNotSupported` エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。

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

このセクションでは、バケットやオブジェクトでアクセスコントロールリスト (ACL) の付与を設定する方法の例を示します。最初の例では、既定 ACL を使用するバケット (「[既定 ACL](acl-overview.md#canned-acl)」を参照) を作成します。次に、カスタムアクセス許可の付与のリストを作成して、既定の ACL をカスタム付与を含む ACL で置き換えます。2 番目の例では、`AccessControlList.grantPermission()` メソッドを使用して ACL を変更する方法を示します。

**Example バケットを作成し、S3 ログ配信グループにアクセス許可を付与する既定 ACL を指定する**  
この例では、バケットを作成します。リクエストで既定の ACL を指定し、バケットにログを書き込むアクセス許可をログ配信グループに付与します。  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import java.io.IOException;
import java.util.ArrayList;

public class CreateBucketWithACL {

    public static void main(String[] args) throws IOException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String userEmailForReadPermission = "*** user@example.com ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .build();

            // Create a bucket with a canned ACL. This ACL will be replaced by the
            // setBucketAcl()
            // calls below. It is included here for demonstration purposes.
            CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName, clientRegion.getName())
                    .withCannedAcl(CannedAccessControlList.LogDeliveryWrite);
            s3Client.createBucket(createBucketRequest);

            // Create a collection of grants to add to the bucket.
            ArrayList<Grant> grantCollection = new ArrayList<Grant>();

            // Grant the account owner full control.
            Grant grant1 = new Grant(new CanonicalGrantee(s3Client.getS3AccountOwner().getId()),
                    Permission.FullControl);
            grantCollection.add(grant1);

            // Grant the LogDelivery group permission to write to the bucket.
            Grant grant2 = new Grant(GroupGrantee.LogDelivery, Permission.Write);
            grantCollection.add(grant2);

            // Save grants by replacing all current ACL grants with the two we just created.
            AccessControlList bucketAcl = new AccessControlList();
            bucketAcl.grantAllPermissions(grantCollection.toArray(new Grant[0]));
            s3Client.setBucketAcl(bucketName, bucketAcl);

            // Retrieve the bucket's ACL, add another grant, and then save the new ACL.
            AccessControlList newBucketAcl = s3Client.getBucketAcl(bucketName);
            Grant grant3 = new Grant(new EmailAddressGrantee(userEmailForReadPermission), Permission.Read);
            newBucketAcl.grantAllPermissions(grant3);
            s3Client.setBucketAcl(bucketName, newBucketAcl);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it and returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

**Example 既存のオブジェクトの ACL を更新する**  
この例では、オブジェクトの ACL を更新します。この例では次のタスクを実行しています。  
+ オブジェクトの ACL を取得する
+ すべての既存のアクセス許可を削除して ACL をクリアする
+ 2 つのアクセス許可として、所有者へのフルアクセスと、メールアドレスで識別されたユーザーへの WRITE\$1ACP ([付与できるアクセス許可](acl-overview.md#permissions) を参照) を追加する
+ ACL をオブジェクトに保存する

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AccessControlList;
import com.amazonaws.services.s3.model.CanonicalGrantee;
import com.amazonaws.services.s3.model.EmailAddressGrantee;
import com.amazonaws.services.s3.model.Permission;

import java.io.IOException;

public class ModifyACLExistingObject {

    public static void main(String[] args) throws IOException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyName = "*** Key name ***";
        String emailGrantee = "*** user@example.com ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider())
                    .withRegion(clientRegion)
                    .build();

            // Get the existing object ACL that we want to modify.
            AccessControlList acl = s3Client.getObjectAcl(bucketName, keyName);

            // Clear the existing list of grants.
            acl.getGrantsAsList().clear();

            // Grant a sample set of permissions, using the existing ACL owner for Full
            // Control permissions.
            acl.grantPermission(new CanonicalGrantee(acl.getOwner().getId()), Permission.FullControl);
            acl.grantPermission(new EmailAddressGrantee(emailGrantee), Permission.WriteAcp);

            // Save the modified ACL back to the object.
            s3Client.setObjectAcl(bucketName, keyName, acl);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------
#### [ .NET ]

**Example バケットを作成し、S3 ログ配信グループにアクセス許可を付与する既定 ACL を指定する**  
この C\$1 の例では、バケットを作成します。リクエストで既定の ACL を指定し、バケットにログを書き込むアクセス許可をログ配信グループに付与します。  
 コード例を設定および実行する方法の詳細については、「*AWS SDK for .NET デベロッパーガイド*」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)」 を参照してください。  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class ManagingBucketACLTest
    {
        private const string newBucketName = "*** bucket name ***"; 
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            CreateBucketUseCannedACLAsync().Wait();
        }

        private static async Task CreateBucketUseCannedACLAsync()
        {
            try
            {
                // Add bucket (specify canned ACL).
                PutBucketRequest putBucketRequest = new PutBucketRequest()
                {
                    BucketName = newBucketName,
                    BucketRegion = S3Region.EUW1, // S3Region.US,
                                                  // Add canned ACL.
                    CannedACL = S3CannedACL.LogDeliveryWrite
                };
                PutBucketResponse putBucketResponse = await client.PutBucketAsync(putBucketRequest);

                // Retrieve bucket ACL.
                GetACLResponse getACLResponse = await client.GetACLAsync(new GetACLRequest
                {
                    BucketName = newBucketName
                });
            }
            catch (AmazonS3Exception amazonS3Exception)
            {
                Console.WriteLine("S3 error occurred. Exception: " + amazonS3Exception.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.ToString());
            }
        }
    }
}
```

**Example 既存のオブジェクトの ACL を更新する**  
この C\$1 の例では、既存のオブジェクトで ACL を更新します。この例では次のタスクを実行しています。  
+ オブジェクトの ACL を取得する。
+ すべての既存のアクセス許可を削除して ACL をクリアする。
+ 2 つのアクセス許可として、所有者へのフルアクセスと、メールアドレスで識別されたユーザーへの WRITE\$1ACP を追加する。
+ `PutAcl` リクエストを送信して ACL を保存する。
コード例を設定および実行する方法の詳細については、「*AWS SDK for .NET デベロッパーガイド*」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)」 を参照してください。  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class ManagingObjectACLTest
    {
        private const string bucketName = "*** bucket name ***"; 
        private const string keyName = "*** object key name ***"; 
        private const string emailAddress = "*** email address ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;
        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            TestObjectACLTestAsync().Wait();
        }
        private static async Task TestObjectACLTestAsync()
        {
            try
            {
                    // Retrieve the ACL for the object.
                    GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest
                    {
                        BucketName = bucketName,
                        Key = keyName
                    });

                    S3AccessControlList acl = aclResponse.AccessControlList;

                    // Retrieve the owner (we use this to re-add permissions after we clear the ACL).
                    Owner owner = acl.Owner;

                    // Clear existing grants.
                    acl.Grants.Clear();

                    // Add a grant to reset the owner's full permission (the previous clear statement removed all permissions).
                    S3Grant fullControlGrant = new S3Grant
                    {
                        Grantee = new S3Grantee { CanonicalUser = owner.Id },
                        Permission = S3Permission.FULL_CONTROL
                        
                    };

                    // Describe the grant for the permission using an email address.
                    S3Grant grantUsingEmail = new S3Grant
                    {
                        Grantee = new S3Grantee { EmailAddress = emailAddress },
                        Permission = S3Permission.WRITE_ACP
                    };
                    acl.Grants.AddRange(new List<S3Grant> { fullControlGrant, grantUsingEmail });
 
                    // Set a new ACL.
                    PutACLResponse response = await client.PutACLAsync(new PutACLRequest
                    {
                        BucketName = bucketName,
                        Key = keyName,
                        AccessControlList = acl
                    });
            }
            catch (AmazonS3Exception amazonS3Exception)
            {
                Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.ToString());
            }
        }
    }
}
```

------

## REST API の使用
<a name="acl-using-rest-api"></a>

Amazon S3 API を使用して、バケットまたはオブジェクトの作成時に、ACL を設定できます。Amazon S3 では、既存のバケットまたはオブジェクトに ACL を設定する API も提供します。これらの API は ACL を設定する次のメソッドを提供します。
+ **リクエストヘッダーを使用した ACL の設定** − リソース (バケットまたはオブジェクト) を作成するリクエストを送るときに、リクエストヘッダーを使用して ACL を設定します。これらのヘッダーを使用して、既定 ACL を指定するか、許可を明示的に指定 (被付与者とアクセス許可を明示的に識別) します。
+ **リクエストボディを使用した ACL の設定** − 既存のリソースに ACL を設定するリクエストを送信するときに、リクエストのヘッダーまたはボディを使用して ACL を設定できます。

REST API での ACL の管理のサポートの詳細については、*Amazon Simple Storage Service API リファレンス*の以下のセクションを参照してください。
+  [GetBucketAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETacl.html) 
+  [PutBucketAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html) 
+  [GetObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETacl.html) 
+  [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUTacl.html) 
+  [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) 
+  [:CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html) 
+  [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html) 
+  [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html) 

**重要**  
汎用バケットで S3 のオブジェクト所有者に [バケット所有者の強制] 設定を使用する場合は、ポリシーを使用して汎用バケットとその中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、`AccessControlListNotSupported` エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。

### アクセスコントロールリスト (ACL) 固有の要求ヘッダー
<a name="acl-headers-rest-api"></a>

ヘッダーを使用して、アクセスコントロールリスト (ACL) ベースのアクセス許可を付与できます。デフォルトでは、すべてのオブジェクトがプライベートです。所有者だけがフルアクセスコントロールを持っています。新しいオブジェクトを追加するときに、個々の AWS アカウントに、または Amazon S3 であらかじめ定義されたグループに許可を付与できます。これらのアクセス許可は、オブジェクトのアクセスコントロールリスト (ACL) に追加されます。詳細については、[アクセスコントロールリスト (ACL) の概要](acl-overview.md) を参照してください。

この操作では、次の 2 つの方法のいずれかを使用してアクセス許可を付与できます。
+ **既定 ACL (`x-amz-acl`)** — Amazon S3 は、既定 ACL と呼ばれる、あらかじめ定義された一連の ACL をサポートしています。各既定 ACL には、あらかじめ定義された一連の被付与者とアクセス権限が含まれています。詳細については、[既定 ACL](acl-overview.md#canned-acl) を参照してください。
+ **アクセス許可** — 特定の AWS アカウント またはグループにアクセス許可を明示的に付与するには、次のヘッダーを使用します。各ヘッダーは、Amazon S3 が ACL でサポートする特定のアクセス許可にマッピングされます。詳細については、[アクセスコントロールリスト (ACL) の概要](acl-overview.md) を参照してください。ヘッダーでは、特定のアクセス許可を取得する被付与者のリストを指定します。
  + x−amz−grant−read
  + x−amz−grant−write
  + x−amz−grant−read−acp
  + x−amz−grant−write−acp
  + x−amz−grant−full−control

## AWS CLI の使用
<a name="using-acl-cli"></a>

AWS CLI を使用した ACL の管理の詳細については、*AWS CLI Command Reference* の [put−bucket−acl](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-acl.html) を参照してください。

**重要**  
汎用バケットで S3 のオブジェクト所有者に [バケット所有者の強制] 設定を使用する場合は、ポリシーを使用して汎用バケットとその中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、`AccessControlListNotSupported` エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。

# ACL のポリシーの例
<a name="example-bucket-policies-condition-keys"></a>

バケットポリシーで条件キーを使用して、Amazon S3 へのアクセスをコントロールできます。

**Topics**
+ [バケット所有者にフルコントロールを与えることを条件として s3:PutObject のアクセス許可を付与する](#grant-putobject-conditionally-1)
+ [x-amz-acl ヘッダーの条件を使用した s3:PutObject アクセス許可の付与](#example-acl-header)

## バケット所有者にフルコントロールを与えることを条件として s3:PutObject のアクセス許可を付与する
<a name="grant-putobject-conditionally-1"></a>

[PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) オペレーションでは、アクセスコントロールリスト (ACL) に固有のヘッダーを使用して、ACL に基づいてアクセス許可を付与することができます。バケット所有者は、これらのキーを使用して条件を設定し、ユーザーがオブジェクトをアップロードする場合に特定のアクセス許可を要求することができます。

例えば、アカウント A がバケット所有者であり、アカウント管理者がアカウント B のユーザー Dave に対して、オブジェクトをアップロードするアクセス許可を付与するとします。デフォルトでは、Dave がアップロードするオブジェクトはアカウント B に所有されるため、アカウント A にはそれらのオブジェクトに対するアクセス許可は付与されません。ただし、バケット所有者は請求書を支払うために、Dave がアップロードするオブジェクトに対する完全なアクセス許可を必要としています。この対処方法として、アカウント A の管理者は、明示的に完全なアクセス許可を付与するか、既定 ACL を使用する ACL 固有のヘッダーをリクエストに含むことを条件として、Dave に `s3:PutObject` のアクセス許可を付与できます。詳細については、[Put Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) を参照してください。

### x−amz−full−control ヘッダーを必須にする
<a name="require-x-amz-full-control"></a>

リクエストで、バケット所有者へのフルコントロールのアクセス許可が含まれる `x-amz-full-control` ヘッダーを要求できます。以下のバケットポリシーは、`s3:PutObject` 条件キーを使用して、リクエストに `s3:x-amz-grant-full-control` ヘッダーを含めることを条件とする `x-amz-full-control` のアクセス許可をユーザー Dave に付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::awsexamplebucket1/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
                }
            }
        }
    ]
}
```

------

**注記**  
この例では、クロスアカウントのアクセス許可を付与しています。ただし、許可を付与される Dave がバケットを所有している AWS アカウントに属している場合、この条件付き許可は不要になります。これは、ユーザーがアップロードするオブジェクトは Dave が属する親アカウントによって所有されるためです。

**明示的な拒否を追加する**  
前述のバケットポリシーでは、アカウント B のユーザー Dave に条件付きのアクセス許可が付与されます。ただし、このポリシーが有効であっても、Dave が他のポリシーに従って、条件なしで同じアクセス許可を取得する場合があります。例えば、Dave が属するグループに、条件なしで `s3:PutObject` のアクセス許可が付与される場合があります。このようなアクセス許可の抜け穴を避けるには、明示的な拒否を追加して、より厳格なアクセスポリシーを記述する必要があります。次の例では、バケット所有者に完全なアクセス許可を付与するヘッダーをリクエストに含めない場合、Dave に対してアップロードのアクセス許可を明示的に拒否します。明示的な拒否は、付与されている他のアクセス許可に常に優先されます。以下は、明示的な拒否が追加された、改訂済みアクセスポリシーの例です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/AccountBadmin"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::awsexamplebucket1/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
                }
            }
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/AccountBadmin"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::awsexamplebucket1/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
                }
            }
        }
    ]
}
```

------

**AWS CLI でポリシーをテストする**  
2 つの AWS アカウントがある場合は、AWS Command Line Interface (AWS CLI) を使用してポリシーをテストできます。ポリシーをアタッチしたら、Dave の認証情報を使用し、次の AWS CLI `put-object` コマンドを実行してアクセス許可をテストします。Dave の認証情報は、`--profile` パラメータを追加して指定します。バケット所有者にフルコントロールのアクセス許可を付与するには、`--grant-full-control` パラメータを追加します。AWS CLI のセットアップと使用の詳細については、「Amazon S3 API リファレンス」の「[Developing with Amazon S3 using the AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html)」を参照してください。**

```
aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body c:\HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBUserProfile
```

### x−amz−acl ヘッダーを必須にする
<a name="require-x-amz-acl-header"></a>

バケット所有者にフルコントロールのアクセス許可を付与する既定 ACL が指定された `x-amz-acl` ヘッダーを要求できます。リクエストに `x-amz-acl` ヘッダーを含めることを義務付けるには、以下の例のように `Condition` ブロックのキーと値のペアを置き換え、`s3:x-amz-acl` 条件キーを指定します。

```
"Condition": {
    "StringEquals": {
        "s3:x-amz-acl": "bucket-owner-full-control"
    }
}
```

AWS CLI を使用してアクセス許可をテストするには、`--acl` パラメータを指定します。これにより、AWS CLI は送信するリクエストに `x-amz-acl` ヘッダーを追加します。

```
aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body c:\HappyFace.jpg --acl "bucket-owner-full-control" --profile AccountBadmin
```

## x-amz-acl ヘッダーの条件を使用した s3:PutObject アクセス許可の付与
<a name="example-acl-header"></a>

以下のバケットポリシーは、オブジェクトをパブリックに読み取り可能にする `x-amz-acl` ヘッダーがリクエストに含まれている場合に、2 つの AWS アカウントに `s3:PutObject` の許可を付与します。`Condition` ブロックでは、`StringEquals` 条件を使用し、キーと値のペアとして `"s3:x-amz-acl":["public-read"]` を評価に使用できます。このキーと値のペアで、`s3:x-amz-acl` は、「`s3:`」というプレフィックスが示すとおり Amazon S3 固有のキーです。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddCannedAcl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root",
                    "arn:aws:iam::111122223333:root"
                ]
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::awsexamplebucket1/*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": [
                        "public-read"
                    ]
                }
            }
        }
    ]
}
```

------

**重要**  
すべての条件が、すべてのアクションに対して意味を成すわけではありません。例えば、Amazon S3 の `s3:LocationConstraint` のアクセス許可を付与するポリシーに条件として `s3:CreateBucket` を含めることは理にかなっています。ただし、この条件を `s3:GetObject` のアクセス許可を付与するポリシーに含めることは意味がありません。Amazon S3 では、このような Amazon S3 固有の条件を含むセマンティックエラーをテストすることができます。ただし、IAM ユーザーまたはロールのポリシーを作成し、意味的に無効な Amazon S3 条件を含めても、IAM は Amazon S3 条件を検証できないため、エラーは報告されません。

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

# IAM Access Analyzer for S3 を使用したバケットアクセスの確認
<a name="access-analyzer"></a>

IAM Access Analyzer for S3 は、インターネット (公衆) の任意のユーザーや他の AWS アカウント (組織外の AWS アカウントを含む) にアクセスを許可するように設定されている S3 汎用バケットに関して外部アクセスの検出結果を提供します。パブリックに共有されているバケットごと、または他の AWS アカウントと共有されているバケットごとに、共有アクセスのソースとレベルを示す検出結果が送信されます。例えば、IAM Access Analyzer for S3 は、バケットのアクセスコントロールリスト (ACL)、バケットポリシー、マルチリージョンアクセスポイントポリシー、またはアクセスポイントポリシーを通じて、バケットに読み取りまたは書き込みのアクセス許可が提供されていることを示す場合があります。この情報を用いて、迅速で正確な是正処置を講じ、バケットへのアクセスを意図したとおりに復元できます。

Amazon S3 コンソールは、汎用バケットのリストの横にある S3 コンソールに **[外部アクセスの概要]** を表示します。概要では、それぞれの AWS リージョンでのアクティブな検出結果をクリックすると、[IAM Access Analyzer for S3] ページで検出結果の詳細を確認できます。**外部アクセスの概要**の外部アクセスの検出結果は、24 時間に 1 回自動的に更新されます。

パブリックアクセスを許可するバケットを確認する場合、IAM Access Analyzer for S3 ページで、ワンクリックでバケットへのすべてのパブリックアクセスをブロックできます。特定のユースケースをサポートするためにパブリックアクセスが必要な場合を除き、バケットへのすべてのパブリックアクセスをブロックすることをお勧めします。すべてのパブリックアクセスをブロックする前に、アプリケーションがパブリックアクセスなしで正常に動作することを確認してください。詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。

また、バケットレベルのアクセス許可の設定を参照して、きめ細かいアクセスレベルを設定することもできます。静的なウェブサイトホスティング、パブリックダウンロード、クロスアカウント共有など、パブリックアクセスを必要とする特定の検証済みユースケースについては、バケットの結果をアーカイブすることで、バケットをパブリックまたは共有とすることを確定して記録できます。これらのバケット設定はいつでも再確認および変更できます。結果は、監査目的で CSV レポートとしてダウンロードすることもできます。

IAM Access Analyzer for S3 は、Amazon S3 コンソールで追加料金なしで使用できます。IAM Access Analyzer for S3 は、AWS Identity and Access Management (IAM) IAM Access Analyzer を利用しています。Amazon S3 コンソールで IAM Access Analyzer for S3 を使用するには、IAM コンソールにアクセスして、リージョンごとに外部アクセスアナライザーを作成する必要があります。

IAM Access Analyzer の詳細については、「IAM ユーザーガイド」の「[IAM Access Analyzer とは?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)」を参照してください。**IAM Access Analyzer for S3 の詳細については、次のセクションを参照してください。

**重要**  
IAM Access Analyzer for S3 では、バケットがある各 AWS リージョンにアカウントレベルのアナライザーが必要です。IAM Access Analyzer for S3 を使用するには、IAM Access Analyzer にアクセスして、信頼ゾーンとしてアカウントを持つアナライザーを作成する必要があります。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) の「*IAM Access Analyzer の有効化*」を参照してください。
IAM Access Analyzer for S3 は、クロスアカウントアクセスポイントにアタッチされているアクセスポイントポリシーを分析しません。この動作は、アクセスポイントとそのポリシーが信頼ゾーン、つまりアカウントの外にあるために発生します。クロスアカウントアクセスポイントへのアクセスを委任するバケットは、バケットまたはアカウントにパブリックアクセスをブロックする `RestrictPublicBuckets` 設定を適用していない場合、**[Buckets with public access]** (パブリックアクセスのあるバケット) に一覧表示されます。パブリックアクセスをブロックする設定 `RestrictPublicBuckets` を適用すると、そのバケットは、**[サードパーティーの AWS アカウント を含む他の AWS アカウント からのアクセスがあるバケット]** に表示されます。
バケットポリシーまたはバケット ACL を追加または変更すると、IAM Access Analyzer は 30 分以内に変更に基づいて結果を生成および更新します。アカウントレベルのブロックパブリックアクセス設定に関連する結果は、設定を変更してから最大 6 時間まで生成または更新されない場合があります。マルチリージョンアクセスポイントに関連する調査結果は、マルチリージョンアクセスポイントの作成、削除、またはポリシーの変更後、最大 6 時間は生成または更新できない場合があります。

**Topics**
+ [バケットへの外部アクセスを許可するポリシーのグローバル概要の確認](#external-access-summary)
+ [IAM Access Analyzer for S3 が提供する情報](#access-analyzer-information-s3)
+ [すべてのパブリックアクセスのブロック](#blocking-public-access-access-analyzer)
+ [バケットアクセスの確認と変更](#changing-bucket-access)
+ [バケットの結果のアーカイブ](#archiving-buckets)
+ [アーカイブされたバケットの結果の有効化](#activating-buckets)
+ [結果の詳細の表示](#viewing-finding-details)
+ [IAM Access Analyzer for S3 レポートのダウンロード](#downloading-bucket-report-s3)

## バケットへの外部アクセスを許可するポリシーのグローバル概要の確認
<a name="external-access-summary"></a>

**外部アクセスの概要**を使用して、S3 コンソールから直接 AWS アカウント全体でバケットへの外部アクセスを許可するポリシーのグローバル概要を表示できます。この概要は、各 AWS リージョンのポリシーを個別に検査することなく、パブリックアクセスまたは他の AWS アカウントからのアクセスを許可する AWS リージョン内の Amazon S3 汎用バケットを識別するのに役立ちます。

### 外部アクセスの概要と IAM Access Analyzer for S3 を有効にする
<a name="enabling-access-analyzer"></a>

**外部アクセスの概要**と IAM Access Analyzer for S3 を使用するには、前提条件に関する以下のステップを完了する必要があります。

1. 必要なアクセス権限を付与します。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-permissions)の「*IAM Access Analyzer の使用に必要なアクセス許可*」を参照してください。

1. IAM にアクセスして、IAM Access Analyzer を使用するリージョンごとにアカウントレベルのアナライザーを作成します。

   これを行うには、IAM コンソールで信頼ゾーンとしてアカウントを持つアナライザーを作成するか、AWS CLI または AWS SDK を使用します。詳細については、[「IAM ユーザーガイド」](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling)の「*IAM Access Analyzer の有効化*」を参照してください。

### 外部アクセスを許可するバケットの表示
<a name="external-access-summary-view"></a>

**外部アクセスの概要**には、汎用バケット用に IAM Access Analyzer for S3 によって提供される外部アクセスの検出結果とエラーが表示されます。アーカイブされた検出結果と未使用のアクセスの検出結果は概要に含まれませんが、IAM コンソールまたは IAM Access Analyzer for S3 で表示できます。詳細については、「IAM ユーザーガイド」の「[IAM Access Analyzer の検出結果ダッシュボードを表示する](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-dashboard.html)」を参照してください。

**注記**  
**外部アクセスの概要**には、ご利用の AWS Organization ではなく、AWS アカウントごとの外部アクセスアナライザーの検出結果のみが含まれます。

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. **[外部アクセスの概要]** を展開します。コンソールには、アクティブなパブリックアクセスとクロスアカウントアクセスの検出結果が表示されます。
**注記**  
S3 でバケットの詳細のロードに問題がある場合は、汎用バケットリストを更新するか、IAM Access Analyzer for S3 で検出結果を表示します。詳細については、「[IAM Access Analyzer for S3 を使用したバケットアクセスの確認](#access-analyzer)」を参照してください。

1. AWS リージョンの検出結果またはエラーのリストを表示するには、リージョンへのリンクを選択します。[IAM Access Analyzer for S3] ページには、パブリックにアクセスできるか、他の AWS アカウントからアクセスできるバケットの名前が表示されます。詳細については、「[IAM Access Analyzer for S3 が提供する情報](#access-analyzer-information-s3)」を参照してください。

### 外部アクセスを許可するバケットのアクセスコントロールの更新
<a name="external-access-summary-update-controls"></a>

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. **[外部アクセスの概要]** を展開します。コンソールには、パブリックにアクセスできるか、他の AWS アカウントからアクセスできるバケットのアクティブな検出結果が表示されます。
**注記**  
S3 でバケットの詳細のロードに問題がある場合は、汎用バケットリストを更新するか、IAM Access Analyzer for S3 で検出結果を表示します。詳細については、「[IAM Access Analyzer for S3 を使用したバケットアクセスの確認](#access-analyzer)」を参照してください。

1. AWS リージョンの検出結果またはエラーのリストを表示するには、リージョンへのリンクを選択します。IAM Access Analyzer for S3 には、パブリックにアクセスできるか、他の AWS アカウントからアクセスできるバケットのアクティブな検出結果が表示されます。
**注記**  
**外部アクセスの概要**の外部アクセスの検出結果は、24 時間に 1 回自動的に更新されます。

1. バケットへのすべてのパブリックアクセスをブロックするには、「[すべてのパブリックアクセスのブロック](#blocking-public-access-access-analyzer)」を参照してください。バケットアクセスを変更するには、「[バケットアクセスの確認と変更](#changing-bucket-access)」を参照してください。

## IAM Access Analyzer for S3 が提供する情報
<a name="access-analyzer-information-s3"></a>

IAM Access Analyzer for S3 は、AWS アカウント 外からアクセスできるバケットに関する結果を提供します。**[パブリックアクセスの検出結果]** に表示されるバケットには、インターネット上の誰もがアクセスできます。IAM Access Analyzer for S3 がパブリックバケットを特定すると、リージョン内のパブリックバケット数を示す警告もページの上部に表示されます。**[クロスアカウントアクセスの検出結果]** にリストされているバケットは、組織外のアカウントを含む他の AWS アカウントと条件付きで共有されます。

IAM Access Analyzer for S3 は、バケットごとに次の情報を提供します。
+ **バケット名**
+ **共有方法** − バケットの共有方法 — バケットポリシー、バケット ACL、マルチリージョンアクセスポイントポリシー、またはアクセスポイントポリシーを通じて。マルチリージョンアクセスポイントおよびクロスアカウントアクセスポイントは、アクセスポイントの下に反映されます。バケットは、ポリシーと ACL の両方を通じて共有できます。バケットアクセスのソースを検索して確認する場合は、この列の情報をまず使用して、迅速で正確な是正措置を実行できます。
+ **ステータス** － バケット結果のステータス。IAM Access Analyzer for S3 には、すべてのパブリックバケットと共有バケットの検出結果が表示されます。
  + **アクティブ** − 結果は確認されていません。
  + **アーカイブ済み** − 結果は意図したとおりにレビューおよび確認されています。
  + **すべて** ‐ パブリックバケット、または他の AWS アカウント (組織外の AWS アカウント を含む) との共有バケットに関するすべての結果。
+ **アクセスレベル** − バケットに付与されているアクセス許可:
  + **リスト** − リソースを一覧表示します。
  + **読み取り** − リソースの内容と属性を読み取ります (ただし、編集しません)。
  + **書き込み** − リソースを作成、削除、または変更します。
  + **アクセス許可** − リソースに対するアクセス許可を付与または変更します。
  + **タグ付け** − リソースに関連付けられているタグを更新します。
+ **外部プリンシパル** - バケットにアクセスできる組織外の AWS アカウント。
+ **リソースコントロールポリシー (RCP) の制限** - 該当する場合は、バケットに適用されるリソースコントロールポリシー (RCP)。詳細については、「[リソースコントロールポリシー (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)」を参照してください。

## すべてのパブリックアクセスのブロック
<a name="blocking-public-access-access-analyzer"></a>

バケットへのすべてのアクセスをワンクリックでブロックする場合は、IAM Access Analyzer for S3 の **[Block all public access]** (すべてのパブリックアクセスをブロック) ボタンを使用できます。バケットへのすべてのパブリックアクセスをブロックすると、一切のパブリックアクセスが許可されません。特定の検証済みユースケースをサポートするためにパブリックアクセスが必要な場合を除き、バケットへのすべてのパブリックアクセスをブロックすることをお勧めします。すべてのパブリックアクセスをブロックする前に、アプリケーションがパブリックアクセスなしで正常に動作することを確認してください。

バケットへのすべてのパブリックアクセスをブロックしたくない場合は、Amazon S3 コンソールでブロックパブリックアクセス設定を編集して、バケットへの詳細なアクセスレベルを設定できます。詳細については、「[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md)」を参照してください。

まれに、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 を使用してバケットへのすべてのパブリックアクセスをブロックするには**

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

1. 左側のナビゲーションペインの [**ダッシュボード**] で、[**Access analyzer for S3 (S3 のアクセスアナライザー)**] を選択します。

1. IAM Access Analyzer for S3 で、バケットを選択します。

1. [**Block all public access (すべてのパブリックアクセスをブロック)**] を選択します。

1. バケットへのすべてのパブリックアクセスをブロックすることを確定するには、[**Block all public access (bucket settings) (すべてのパブリックアクセスをブロック (バケット設定))**] に「**confirm**」と入力します。

   Amazon S3 は、バケットへのすべてのパブリックアクセスをブロックします。バケットの検出結果のステータスが **[解決済み]** に更新され、バケットが IAM Access Analyzer for S3 のリストから消えます。解決済みのバケットを確認する場合は、[IAM コンソール](https://console.aws.amazon.com/iam/)で IAM Access Analyzer を開きます。

## バケットアクセスの確認と変更
<a name="changing-bucket-access"></a>

パブリックアカウントや他の AWS アカウント アカウント (組織外のアカウントを含む) にアクセスを許可しない場合は、バケット ACL、バケットポリシー、マルチリージョンアクセスポイントポリシー、またはアクセスポイントポリシーを変更してバケットへのアクセスを削除できます。[**Shared Through**] 列には、バケットアクセスのすべてのソース (バケットポリシー、バケット ACL、アクセスポイントポリシー) が表示されます。マルチリージョンアクセスポイントおよびクロスアカウントアクセスポイントは、アクセスポイントの下に反映されます。

**バケットポリシー、バケット ACL、マルチリージョンアクセスポイント、またはアクセスポイントポリシーを確認および変更するには**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開きます。

1. ナビゲーションペインで、**[S3 用 Access Analyzer]** を選択します。

1. パブリックアクセスまたは共有アクセスが、バケットポリシー、バケット ACL、マルチリージョンアクセスポイントポリシー、またはアクセスポイントポリシーを通じて許可されているかどうかを確認するには、[**Shared through**] 列を調べます。

1. [**バケット**] で、バケットポリシー、バケット ACL、マルチリージョンアクセスポイントポリシー、またはアクセスポイントポリシーを変更または確認するバケットの名前を選択します。

1. バケット ACL を変更または表示するには

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

   1. [**Access Control List**] を選択します。

   1. バケット ACL を確認し、必要に応じて変更します。

      詳細については、[ACL の設定](managing-acls.md) を参照してください。

1. バケットポリシーを変更または確認するには

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

   1. [**バケットポリシー**] を選択します。

   1. 必要に応じて、バケットポリシーを確認または変更します。

      詳細については、[Amazon S3 コンソールを使用したバケットポリシーの追加](add-bucket-policy.md) を参照してください。

1. マルチリージョンアクセスポイントポリシーを確認または変更するには

   1. [**マルチリージョンアクセスポイント**] を選択します。

   1. マルチリージョンアクセスポイント名を選択します。

   1. 必要に応じて、マルチリージョンアクセスポイントポリシーを確認または変更します。

      詳細については、[アクセス許可](MultiRegionAccessPointPermissions.md) を参照してください。

1. アクセスポイントポリシーを確認または変更するには

   1. **[汎用バケットの Access Points]** または **[ディレクトリバケットの Access Points]** を選択します。

   1. アクセスポイント名を選択します。

   1. 必要に応じてアクセスを確認または変更します。

      詳細については、[汎用バケットの Amazon S3 アクセスポイントの管理](access-points-manage.md) を参照してください。

   バケット ACL、バケットポリシー、アクセスポイントポリシーを編集または削除してパブリックアクセスまたは共有アクセスを削除すると、バケットの結果のステータスが解決済みに更新されます。解決済みのバケットの検出結果は IAM Access Analyzer for S3 リストから消えますが、IAM Access Analyzer で表示できます。

## バケットの結果のアーカイブ
<a name="archiving-buckets"></a>

バケットが、特定のユースケース (静的ウェブサイト、パブリックダウンロード、クロスアカウント共有など) をサポートするために、パブリックアカウントや他の AWS アカウント (組織外のアカウントを含む) へのアクセスを許可する場合は、バケットの結果をアーカイブできます。バケットの結果をアーカイブする場合、バケットをパブリックまたは共有にすることを確定して記録します。アーカイブされたバケットの検出結果は IAM Access Analyzer for S3 リストに残るため、どれがパブリックバケットまたは共有バケットであるかを常に把握できます。

**IAM Access Analyzer for S3 でバケットの検出結果をアーカイブするには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. ナビゲーションペインで、**[IAM Access Analyzer for S3]** を選択します。

1. IAM Access Analyzer for S3 で、アクティブなバケットを選択します。

1. このバケットにパブリックアカウントや他の AWS アカウント (組織外のアカウントを含む) からアクセスすることを確定するには、[**Archive**] (アーカイブ) を選択します。

1. 「**confirm**」と入力し、[**アーカイブ**] を選択します。

## アーカイブされたバケットの結果の有効化
<a name="activating-buckets"></a>

結果のアーカイブ後は、いつでも結果に再アクセスし、ステータスをアクティブに戻すことができます。この場合、バケットには別のレビューが必要になります。

**アーカイブされたバケットの検出結果を IAM Access Analyzer for S3 でアクティブにするには**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開きます。

1. ナビゲーションペインで、[**Access analyzer for S3 (S3 のアクセスアナライザー)**] を選択します。

1. アーカイブされたバケットの結果を選択します。

1. [**Mark as active (アクティブとしてマーク)**] を選択します。

## 結果の詳細の表示
<a name="viewing-finding-details"></a>

検出結果の詳細情報を表示する必要がある場合は、[IAM コンソール](https://console.aws.amazon.com/iam/)の [IAM Access Analyzer] でバケットの結果の詳細を開くことができます。

**IAM Access Analyzer for S3 で検出結果の詳細を表示するには**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開きます。

1. ナビゲーションペインで、**[S3 用 Access Analyzer]** を選択します。

1. IAM Access Analyzer for S3 で、バケットを選択します。

1. [**View details**] (詳細を表示する) をクリックします。

   結果の詳細が [IAM コンソール](https://console.aws.amazon.com/iam/)の IAM Access Analyzer で開きます。

## IAM Access Analyzer for S3 レポートのダウンロード
<a name="downloading-bucket-report-s3"></a>

バケットの結果を CSV レポートとしてダウンロードし、監査目的に使用できます。レポートには、Amazon S3 コンソールの IAM Access Analyzer for S3 に表示される情報と同じ情報が含まれます。

**レポートをダウンロードするには**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開きます。

1. 左側のナビゲーションペインで、[**Access analyzer for S3 (S3 のアクセスアナライザー)**] を選択します。

1. [リージョンフィルタ] で、[リージョン] を選択します。

   IAM Access Analyzer for S3 が更新され、選択したリージョンのバケットが表示されます。

1. [**レポートのダウンロード**] を選択します。

   CSV レポートが生成され、コンピュータに保存されます。

# バケット所有者条件によるバケット所有者の確認
<a name="bucket-owner-condition"></a>

Amazon S3 バケット所有者条件では、S3 オペレーションで使用するバケットが適切な AWS アカウントに属していることを確認します。

ほとんどの S3 オペレーションでは、特定の S3 バケットに対して読み取りまたは書き込みを行います。これらのオペレーションには、オブジェクトのアップロード、コピー、ダウンロード、バケット設定の取得または変更、オブジェクト設定の取得または変更が含まれます。これらのオペレーションを実行するときは、リクエストにバケット名を含めることによって、使用するバケットを指定します。例えば、S3 からオブジェクトを取得するには、バケットの名前と、そのバケットから取得するオブジェクトキーを指定してリクエストを作成します。

Amazon S3 は、名前に基づいてバケットを識別するため、アプリケーションでリクエストに誤ったバケット名を使用した場合、正しくないバケットに対して、誤ってオペレーションが実行される可能性があります。このような状況で意図しないバケットとのやり取りを回避するために、*バケット所有者条件*を使用できます。バケット所有者条件を使用すると、ターゲットバケット所有者が正しい AWS アカウント であることを確認して、S3 オペレーションの効果が意図どおりになることをさらに保証できます。

**Topics**
+ [バケット所有者条件を使用する状況](#bucket-owner-condition-when-to-use)
+ [バケット所有者の確認](#bucket-owner-condition-use)
+ [例](#bucket-owner-condition-examples)
+ [制約と制限](#bucket-owner-condition-restrictions-limitations)

## バケット所有者条件を使用する状況
<a name="bucket-owner-condition-when-to-use"></a>

正しいバケット所有者のアカウント ID がわかっていて、サポートされている S3 オペレーションを実行する場合は、バケット所有者条件を使用することをお勧めします。バケット所有者条件は、すべての S3 オブジェクトオペレーションおよびほとんどの S3 バケットオペレーションで使用できます。バケット所有者条件がサポートされない S3 オペレーションのリストについては、[制約と制限](#bucket-owner-condition-restrictions-limitations) を参照してください。

バケット所有者条件を使用するメリットを確認するには、AWS の顧客である Bea に関係する次のシナリオを考察してください。

1. Bea は Amazon S3 を使用するアプリケーションを開発しています。開発中、Bea はテスト専用の AWS アカウントを使用して `bea-data-test` という名前のバケットを作成し、アプリケーションで `bea-data-test` にリクエストが実行されるように設定しました。

1. Bea はアプリケーションをデプロイしましたが、本稼働用の AWS アカウントでバケットを使用するようにアプリケーションを再設定するのを忘れました。

1. 本稼働環境では、Bea のアプリケーションが `bea-data-test` にリクエストを行い、その実行に成功しました。その結果、Bea のテストアカウントのバケットに本稼働用データが書き込まれます。

Bea は、バケット所有者条件を使用することで、このような状況を回避できます。バケット所有者条件を使用すると、Bea は正しいバケット所有者の AWS アカウント ID をリクエストに含めることができます。Amazon S3 は、各リクエストを処理する前に、バケット所有者のアカウント ID をチェックします。実際のバケット所有者が正しいバケット所有者と一致しない場合、リクエストは失敗します。

Bea がバケット所有者条件を使用する場合、前述のシナリオで Bea のアプリケーションが誤ってテストバケットに書き込むことにはなりません。その代わりに、ステップ 3 でアプリケーションが行うリクエストは失敗し、`Access Denied` エラーメッセージが表示されます。バケット所有者条件を使用することで、Bea は正しくない AWS アカウント のバケットと誤ってやり取りするリスクを排除できるようになります。

## バケット所有者の確認
<a name="bucket-owner-condition-use"></a>

バケット所有者条件を使用するには、正しいバケット所有者を指定するパラメータをリクエストに含めます。ほとんどの S3 オペレーションに含まれるバケットは 1 つだけであり、バケット所有者条件を使用するために必要になるのは、この 1 つのパラメータのみです。`CopyObject` オペレーションの場合、この最初のパラメータでは宛先バケットの正しい所有者を指定します。ソースバケットの正しい所有者を指定するには、2 番目のパラメータを含めます。

バケット所有者条件パラメータを含むリクエストを行うと、S3 はリクエストを処理する前に、指定されたパラメータに対してバケット所有者のアカウント ID をチェックします。パラメータがバケット所有者のアカウント ID と一致すると、S3 がリクエストを処理します。パラメータがバケット所有者のアカウント ID と一致しない場合、リクエストは失敗し、`Access Denied` エラーメッセージが表示されます。

バケット所有者条件は、AWS Command Line Interface (AWS CLI)、AWS SDK、および Amazon S3 REST API で使用できます。AWS CLI および Amazon S3 REST API でバケット所有者条件を使用する場合は、次のパラメータ名を使用します。


****  

| アクセス方法 | コピーオペレーション以外のパラメータ | コピーオペレーションのソースパラメータ | コピーオペレーションの宛先パラメータ | 
| --- | --- | --- | --- | 
| AWS CLI | --expected-bucket-owner | --expected-source-bucket-owner | --expected-bucket-owner | 
| Amazon S3 REST API | x-amz-expected-bucket-owner ヘッダー | x-amz-source-expected-bucket-owner ヘッダー | x-amz-expected-bucket-owner ヘッダー | 

AWS SDK でバケット所有者条件を使用するために必要なパラメータ名は、言語によって異なります。必要なパラメータを確認するには、使用する言語の SDK ドキュメント を参照してください。SDK ドキュメントには、[AWS での構築ツール](https://aws.amazon.com/tools/)からアクセスできます。

## 例
<a name="bucket-owner-condition-examples"></a>

以下の例は、AWS CLI または AWS SDK for Java 2.x を使用してバケット所有者条件を Amazon S3 に実装する方法を示しています。

**Example**  
***例: オブジェクトのアップロード***  
次の例では、バケット所有者条件を使用して S3 バケット `amzn-s3-demo-bucket1` にオブジェクトをアップロードし、`amzn-s3-demo-bucket1` の所有者が AWS アカウント `111122223333` であることを確認します。  

```
aws s3api put-object \
                 --bucket amzn-s3-demo-bucket1 --key exampleobject --body example_file.txt \
                 --expected-bucket-owner 111122223333
```

```
public void putObjectExample() {
    S3Client s3Client = S3Client.create();;
    PutObjectRequest request = PutObjectRequest.builder()
            .bucket("amzn-s3-demo-bucket1")
            .key("exampleobject")
            .expectedBucketOwner("111122223333")
            .build();
    Path path = Paths.get("example_file.txt");
    s3Client.putObject(request, path);
}
```

**Example**  
***例: オブジェクトのコピー***  
次の例では、S3 バケット `object1` から S3 バケット `amzn-s3-demo-bucket1` にオブジェクト `amzn-s3-demo-bucket2` をコピーします。この例では、バケット所有者条件を使用し、次の表に従って、バケットを所有するアカウントが正しいことを確認します。  


****  

| バケット | 正しい所有者 | 
| --- | --- | 
| amzn-s3-demo-bucket1 | 111122223333 | 
| amzn-s3-demo-bucket2 | 444455556666 | 

```
aws s3api copy-object --copy-source amzn-s3-demo-bucket1/object1 \
                            --bucket amzn-s3-demo-bucket2 --key object1copy \
                            --expected-source-bucket-owner 111122223333 --expected-bucket-owner 444455556666
```

```
public void copyObjectExample() {
        S3Client s3Client = S3Client.create();
        CopyObjectRequest request = CopyObjectRequest.builder()
                .copySource("amzn-s3-demo-bucket1/object1")
                .destinationBucket("amzn-s3-demo-bucket2")
                .destinationKey("object1copy")
                .expectedSourceBucketOwner("111122223333")
                .expectedBucketOwner("444455556666")
                .build();
        s3Client.copyObject(request);
    }
```

**Example**  
***例: バケットポリシーの取得***  
次の例では、バケット所有者条件を使用して S3 バケット `amzn-s3-demo-bucket1` のアクセスポリシーを取得し、`amzn-s3-demo-bucket1` の所有者が AWS アカウント `111122223333` であることを確認します。  

```
aws s3api get-bucket-policy --bucket amzn-s3-demo-bucket1 --expected-bucket-owner 111122223333
```

```
public void getBucketPolicyExample() {
    S3Client s3Client = S3Client.create();
    GetBucketPolicyRequest request = GetBucketPolicyRequest.builder()
            .bucket("amzn-s3-demo-bucket1")
            .expectedBucketOwner("111122223333")
            .build();
    try {
        GetBucketPolicyResponse response = s3Client.getBucketPolicy(request);
    }
    catch (S3Exception e) {
        // The call was transmitted successfully, but Amazon S3 couldn't process 
        // it, so it returned an error response.
        e.printStackTrace();
    }
}
```

## 制約と制限
<a name="bucket-owner-condition-restrictions-limitations"></a>

Amazon S3 バケット所有者条件には、次の制約と制限があります。
+ バケット所有者条件パラメータの値は、AWS アカウント ID (12 桁の数値) である必要があります。サービスプリンシパルはサポートされていません。
+ バケット所有者条件は、[CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)、[ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)、または [AWS S3 コントロール](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations_AWS_S3_Control.html)に含まれるオペレーションでは使用できません。Amazon S3 では、これらのオペレーションに対するリクエストに含まれるバケット所有者条件パラメータがすべて無視されます。
+ バケット所有者条件は、検証パラメータで指定されたアカウントがバケットを所有しているかどうかのみを検証します。バケット所有者条件で、バケットの設定はチェックされません。また、バケットの設定が特定の条件を満たしていること、または過去の状態と一致することを保証するものではありません。

# オブジェクトの所有権の制御とバケットの ACL の無効化。
<a name="about-object-ownership"></a>

S3 オブジェクト所有権は、Amazon S3 バケットレベルの設定で、バケットにアップロードされたオブジェクトの所有権を制御し、[アクセスコントロールリスト (ACL)](acl-overview.md) を有効または無効にするのに使用できます。デフォルトでは、オブジェクト所有権は[バケット所有者の強制] 設定に設定され、すべての ACL は無効になっています。ACL が無効になっている場合、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。

Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。そのため、オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL を無効にしておくことをお勧めします。ACL を無効にすると、バケット内のオブジェクトをアップロードしたユーザーに関係なく、ポリシーを使用してバケット内のすべてのオブジェクトへのアクセスをより簡単に制御できます。

オブジェクト所有権には、バケットにアップロードされるオブジェクトの所有権を制御し、ACL を無効または有効化するために使用できる 3 つの設定があります。

**ACL の無効化**
+ **バケット所有者の強制 (デフォルト)** – ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えません。バケットは、ポリシーを使用してアクセスコントロールを定義します。

**ACL の有効化。**
+ **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。
+ **オブジェクトライター** — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザーにそのオブジェクトへのアクセス権を付与できます。

S3 の最近のユースケースの大部分では、[バケット所有者の強制] 設定を適用して ACL を無効なままにし、必要に応じてバケットポリシーを使用して、アカウント外のユーザーとデータを共有することをお勧めします。このアプローチにより、アクセス許可の管理が簡素化されます。新しく作成されたバケットと既存のバケットの両方で ACL を無効にすることができます。新しく作成されたバケットでは、ACL はデフォルトで無効になっています。既存のバケットに既にオブジェクトが含まれている場合、ACL を無効にすると、オブジェクトとバケット ACL はアクセス評価に含まれなくなり、ポリシーに基づいてアクセスが許可または拒否されます。既存のバケットについては、ACL を無効にした後いつでも再度有効化でき、既存のバケットとオブジェクト ACL が復元されます。

ACL を無効にする前に、バケットポリシーを確認して、アカウント外のバケットへのアクセス権を付与するすべての方法をカバーすることを確認することをお勧めします。ACL を無効にすると、バケットは ACL を指定しない `PUT` リクエスト、またはバケット所有者のフルコントロール ACL (`bucket-owner-full-control` で既定の ACL またはこの ACL と同等の XML で表される形式など) を持つ `PUT` リクエストのみを受け入れます。バケット所有者のフルコントロール ACL をサポートする既存のアプリケーションには影響はありません。他の ACL (特定の AWS アカウント へのカスタム許可など) を含む `PUT` リクエストは失敗し、`AccessControlListNotSupported` エラーコードを含む `400` エラーを返します。

それとは対照に、[バケット所有者が推奨] で設定されているバケットは、引き続きバケットおよびオブジェクト ACL を受け入れ、遵守します。この設定では、新しいオブジェクトが `bucket-owner-full-control` 既定 ACL はオブジェクトライターではなく、バケット所有者によって自動的に所有されます。その他のすべての ACL 動作はそのまま残ります。すべての Amazon S3 `PUT` 操作に `bucket-owner-full-control` 既定 ACL を含めるように要求するには、この ACL を使用したオブジェクトのアップロードのみを許可する[バケットポリシーを追加](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)できます。

どのオブジェクト所有権設定がバケットに適用されているかを確認するには、Amazon S3 ストレージレンズメトリクスを使用できます。S3 ストレージレンズは、オブジェクトストレージの使用状況とアクティビティを組織全体で可視化するために使用できるクラウドストレージ分析機能です。詳細については、「[Using S3 Storage Lens to find Object Ownership settings](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-access-management.html?icmpid=docs_s3_user_guide_about-object-ownership.html)」(S3 ストレージレンズを使用してオブジェクト所有権の設定を検索する) を参照してください。

**注記**  
Amazon S3 Express One Zone ストレージクラスをディレクトリバケットで使用する方法の詳細については、「[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)」と「[ディレクトリバケットの使用](directory-buckets-overview.md)」を参照してください。

## オブジェクトの所有権の設定
<a name="object-ownership-overview"></a>

この表は、各オブジェクト所有権設定が ACL、オブジェクト、オブジェクト所有権、およびオブジェクトアップロードに与える影響を示しています。


| 設定 | 適用対象 | オブジェクトの所有者への影響 | ACL への影響 | アップロードを受け付けました | 
| --- | --- | --- | --- | --- | 
| バケット所有者強制 (デフォルト) | 既存のオブジェクトと新しいオブジェクト | バケット所有者はすべてのオブジェクトを所有しています。 |  ACL は無効になり、バケットへのアクセス権限には影響しません。ACL を設定または更新する要求は失敗します。ただし、ACL の読み取り要求はサポートされています。 バケット所有者は完全な所有権と制御を有しています。 オブジェクトライターには完全な所有権と制御がなくなりました。  | バケット所有者の完全制御 ACL を使用したアップロード、または ACL を指定しないアップロード。 | 
| バケット所有者推奨。 | 新しいオブジェクト。 | オブジェクトのアップロードが bucket-owner-full-control 既定 ACL を含む場合、バケット所有者はオブジェクトを所有しています。他の ACL でアップロードしたオブジェクトは、書き込みアカウントによって所有されます。 |  ACL は更新でき、許可を付与できます。 オブジェクトのアップロードが `bucket-owner-full-control` 既定 ACL を含む場合、バケット所有者は完全制御アクセスであり、オブジェクトライターは完全制御アクセスではありません。  | すべてアップロードします。 | 
| オブジェクトライター | 新しいオブジェクト | オブジェクトライターがオブジェクトを所有します。 |  ACL は更新でき、許可を付与できます。 オブジェクトライターは完全制御アクセスを有します。  | すべてをアップロード | 

## ACL を無効にして導入された変更
<a name="object-ownership-changes"></a>

オブジェクト所有権に対して [バケット所有者の強制] 設定を適用すると、ACL は無効になり、追加のアクションを実行せずに、バケット内のすべてのオブジェクトを自動的に所有し、完全に制御できます。[バケット所有者の強制] 設定は、新しく作成されたすべてのバケットでデフォルト設定となっています。[バケット所有者の強制] 設定が適用されると、3 つの変更が表示されます。
+ すべてのバケット ACL とオブジェクト ACL が無効になり、バケット所有者としてフルアクセスが付与されます。バケットまたはオブジェクトに対して読み取り ACL リクエストを実行すると、バケット所有者にのみフルアクセスが付与されていることがわかります。
+ バケット所有者は、バケット内のすべてのオブジェクトを自動的に所有し、完全に制御できます。
+ ACL はバケットへのアクセス許可に影響を与えなくなりました。その結果、データのアクセスコントロールは、AWS Identity and Access Management (IAM) [アイデンティティベースのポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security_iam_id-based-policy-examples.html)、Amazon S3 [バケットポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)、VPC エンドポイントポリシー、Organizations [サービスコントロールポリシー (SCP)](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_scps.html)、[リソースコントロールポリシー (RCP)](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_rcps.html) などのポリシーに基づいています。

![\[[バケット所有者の強制] 設定を適用して ACL を無効にしたときに発生することを示した図表。\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/bucket-owner-enforced.png)


S3 バージョニングを使用する場合、バケット所有者はバケット内のすべてのオブジェクトバージョンを所有し、完全に制御できます。[バケット所有者の強制] 設定を適用しても、オブジェクトの新しいバージョンは追加されません。

新しいオブジェクトをバケットにアップロードできるのは、バケット所有者の完全制御 ACL を使用するか、ACL を指定しない場合のみです。オブジェクトのアップロードは、他の ACL を指定すると失敗します。詳細については、[トラブルシューティング](object-ownership-error-responses.md) を参照してください。

次の AWS Command Line Interface(AWS CLI) を利用した `PutObject` オペレーションの例には、`bucket-owner-full-control` 既定 ACL が含まれるため、無効な ACL を持つバケットにオブジェクトをアップロードできます。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key key-name --body path-to-file --acl bucket-owner-full-control
```

以下の `PutObject` オペレーションは ACL を指定しないため、無効な ACL を持つバケットでも成功します。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key key-name --body path-to-file
```

**注記**  
アップロード後に他の AWS アカウント が、オブジェクトにアクセスする必要がある場合は、バケットポリシーを介してそれらのアカウントに追加のアクセス許可を付与する必要があります。詳細については、[チュートリアル: ポリシーを使用した Amazon S3 リソースへのアクセスの管理](example-walkthroughs-managing-access.md) を参照してください。

**ACL の再有効化**  
[バケット所有者の強制] 設定から別のオブジェクト所有権設定にいつでも変更することで ACL を再度有効にできます。[バケット所有者の強制] 設定を適用する前に、許可管理のオブジェクト ACL を使用し、これらのオブジェクト ACL アクセス権限をバケットポリシーに移行しなかった場合は、ACL を再度有効にした後に、これらのアクセス許可が復元されます。さらに、[バケット所有者の強制] 設定が適用されている間にバケットに書き込まれたオブジェクトは、バケット所有者によって所有されます。

例えば、[バケット所有者の強制] から [オブジェクトライター] 設定に戻すと、バケット所有者として、他の AWS アカウント が以前に所有していたオブジェクトを所有できなくなり、完全に制御できなくなります。代わりに、アップロードするアカウントがこれらのオブジェクトを再び所有します。他のアカウントが所有するオブジェクトは、許可用の ACL を使用するため、これらのオブジェクトに許可を与えるためポリシーを使用できません。ただし、[バケット所有者の強制] 設定が適用されている間、バケットに書き込まれたオブジェクトは、バケット所有者として引き続き所有されます。ACL を再度有効にしても、これらのオブジェクトはオブジェクトライターによって所有されません。

AWS マネジメントコンソール、AWS Command Line Interface (CLI)、REST API、または AWS SDK を使用して ACL を有効化および管理する手順については、[ACL の設定](managing-acls.md) を参照してください。

## ACL を無効にする前提条件
<a name="object-ownership-considerations"></a>

既存のバケットの ACL を無効にする前に、以下の前提条件を満たしていることを確認してください。
+ [バケットとオブジェクト ACL を確認し、ACL アクセス権限を移行します。](object-ownership-migrating-acls-prerequisites.md#object-ownership-acl-permissions)

  
+ [承認に ACL を必要としたリクエストを特定する](object-ownership-migrating-acls-prerequisites.md#object-ownership-acl-identify)

  
+ [ACL 関連の条件キーを使用するバケットポリシーを確認および更新します。](object-ownership-migrating-acls-prerequisites.md#object-ownership-bucket-policies)

  

## オブジェクトの所有者許可
<a name="object-ownership-permissions"></a>

バケットのオブジェクト所有権設定を適用、更新、または削除するには、`s3:PutBucketOwnershipControls` 許可が必要です。バケットのオブジェクトの所有権の設定を返すには、`s3:GetBucketOwnershipControls` 許可が必要です。詳細については、[バケットの作成時のオブジェクトの所有権の設定。](object-ownership-new-bucket.md) および [S3 バケットのオブジェクト所有権設定の表示](object-ownership-retrieving.md) を参照してください。

## すべての新しいバケットの ACL を無効にします。
<a name="requiring-bucket-owner-enforced"></a>

デフォルトでは、新しく作成されたバケットにはすべて[バケット所有者の強制] 設定が適用されており、ACL は無効になっています。ACL は無効にしておくことをお勧めします。原則として、アクセスコントロールには ACL ではなく S3 リソースベースのポリシー (バケットポリシーとアクセスポイントポリシー) または IAM ポリシーを使用することをお勧めします。ポリシーとは、よりシンプルで柔軟なアクセスコントロールのオプションです。バケットポリシーとアクセスポイントポリシーを使用すると、Amazon S3 リソースに対するすべてのリクエストに広く適用されるルールを定義できます。

## レプリケーションとオブジェクトの所有権。
<a name="object-ownership-replication"></a>

S3 レプリケーションを使用し、ソースバケットと宛先バケットが異なる AWS アカウント に所有されている場合、ACL を無効にして (バケット所有者にオブジェクト所有権の設定を適用して)、レプリカの所有権を宛先バケットを所有する AWS アカウント に変更できます。この設定は、`s3:ObjectOwnerOverrideToBucketOwner` 許可の必要なく、既存の所有者のオーバーライド動作を模倣します。[バケット所有者の強制] 設定で宛先バケットにレプリケーションされるすべてのオブジェクトは、宛先バケット所有者によって所有されます。レプリケーション設定の所有者上書きオプションの詳細については、[レプリカ所有者の変更](replication-change-owner.md) を参照してください。

## オブジェクトの所有権の設定
<a name="object-ownership-setting"></a>

オブジェクト所有権の設定は、S3 コンソール、AWS CLI、AWS SDK、Amazon S3 REST API、または AWS CloudFormation を使用して適用できます。以下の REST API と AWS CLI コマンドは、オブジェクトの所有権をサポートしています。


| REST API | AWS CLI | 説明 | 
| --- | --- | --- | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html) | [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html)  | 既存の S3 バケットのオブジェクト所有権設定を作成または変更します。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)  | [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html) | x-amz-object-ownership リクエストヘッダーを使用してバケットを作成し、オブジェクトの所有権設定を指定します。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html)  | [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-ownership-controls.html) | Amazon S3 バケットのオブジェクト所有権設定を取り戻します。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketOwnershipControls.html) | [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-ownership-controls.html) | Amazon S3 バケットのオブジェクトの所有権の設定を削除します。 | 

オブジェクト所有権設定の適用と操作の詳細については、以下のトピックを参照してください。

**Topics**
+ [オブジェクトの所有権の設定](#object-ownership-overview)
+ [ACL を無効にして導入された変更](#object-ownership-changes)
+ [ACL を無効にする前提条件](#object-ownership-considerations)
+ [オブジェクトの所有者許可](#object-ownership-permissions)
+ [すべての新しいバケットの ACL を無効にします。](#requiring-bucket-owner-enforced)
+ [レプリケーションとオブジェクトの所有権。](#object-ownership-replication)
+ [オブジェクトの所有権の設定](#object-ownership-setting)
+ [ACL を無効にする前提条件。](object-ownership-migrating-acls-prerequisites.md)
+ [バケットの作成時のオブジェクトの所有権の設定。](object-ownership-new-bucket.md)
+ [既存のバケットでのオブジェクトの所有権の設定](object-ownership-existing-bucket.md)
+ [S3 バケットのオブジェクト所有権設定の表示](object-ownership-retrieving.md)
+ [すべての新しいバケットの ACL を無効にし、オブジェクト所有権を執行します。](ensure-object-ownership.md)
+ [トラブルシューティング](object-ownership-error-responses.md)

# ACL を無効にする前提条件。
<a name="object-ownership-migrating-acls-prerequisites"></a>

Amazon S3 のバケットアクセスコントロールリスト (ACL) は、S3 バケット内の個々のオブジェクトに対する詳細なアクセス許可を定義し、それらのオブジェクトにアクセスして変更できる AWS アカウントまたはグループを指定できるメカニズムです。Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、アクセスの管理には AWS Identity and Access Management (IAM) とバケットポリシーを使用し、ACL を無効にしておくことをお勧めします。

バケットで ACL が有効になっている場合は、ACL を無効にする前に、次の前提条件を満たしてください。

**Topics**
+ [バケットとオブジェクト ACL を確認し、ACL アクセス権限を移行します。](#object-ownership-acl-permissions)
+ [承認に ACL を必要としたリクエストを特定する](#object-ownership-acl-identify)
+ [ACL 関連の条件キーを使用するバケットポリシーを確認および更新します。](#object-ownership-bucket-policies)
+ [ユースケースの例](#object-ownership-migrating-acls)

## バケットとオブジェクト ACL を確認し、ACL アクセス権限を移行します。
<a name="object-ownership-acl-permissions"></a>

ACL を無効にすると、バケットおよびオブジェクト ACL によって付与される許可がアクセスに影響しなくなります。ACL を無効にする前に、バケットとオブジェクト ACL を確認します。

IAM ポリシーでは、既存のバケットとオブジェクト ACL にはそれぞれ同等のものが含まれます。次のバケットポリシー例は、バケットおよびオブジェクト ACL の `READ` と `WRITE` の許可は IAM 許可にマッピングされます。各 ACL が IAM アクセス許可に変換される方法の詳細については、[ACL アクセス許可とアクセスポリシーのアクセス許可のマッピング](acl-overview.md#acl-access-policy-permission-mapping) を参照してください。

ACL を無効にする前に:
+ バケット ACL が AWS アカウント外へのアクセスを許可している場合は、まず、バケット ACL のアクセス許可をバケットポリシーに移行する必要があります。
+ 次に、バケット ACL をデフォルトのプライベート ACL にリセットします。
+ オブジェクトレベルの ACL アクセス許可を確認し、バケットポリシーに移行することもお勧めします。

バケット ACL がアカウント外の他のユーザーに読み取りまたは書き込みアクセス許可を付与している場合は、ACL を無効にする前に、これらのアクセス許可をバケットポリシーに移行する必要があります。これらのアクセス許可を移行した後、**[オブジェクトの所有権]** を *[バケット所有者強制]* 設定にすることができます。アカウントの外部で読み取りまたは書き込みアクセスを許可するバケット ACL を移行しないと、[バケット所有者の強制] 設定を適用するリクエストが失敗し、[InvalidBucketAclWithObjectOwnership](object-ownership-error-responses.md#object-ownership-error-responses-invalid-acl) エラーコードを返します。

バケット ACL が AWS アカウント の外部へのアクセスを許可する場合は、ACL を無効にする前にバケット ACL アクセス権限をバケットポリシーに移行し、バケット ACL をデフォルトのプライベート ACL にリセットする必要があります。移行とリセットを行わない場合、ACL を無効にするために [バケット所有者の強制] 設定を適用するリクエストは失敗し、[InvalidBucketAclWithObjectOwnership](object-ownership-error-responses.md#object-ownership-error-responses-invalid-acl) エラーコードが返されます。また、オブジェクト ACL アクセス権限を確認し、バケットポリシーに移行することをお勧めします。

バケットポリシーへの ACL アクセス権限を確認し、移行するには、以下のトピックを参照してください。

**Topics**
+ [バケットポリシーの例](#migrate-acl-permissions-bucket-policies)
+ [S3 コンソールを使用した、ACL アクセス権限の確認と移行](#review-migrate-acl-console)
+ [AWS CLI を使用して、ACL アクセス権限を確認して移行します。](#review-migrate-acl-cli)

### バケットポリシーの例
<a name="migrate-acl-permissions-bucket-policies"></a>

これらのバケットポリシーの例は、`READ` と `WRITE` バケット、サードパーティー AWS アカウントの ACL アクセス権限をバケットポリシーに移行およびバケット化およびオブジェクト化する方法を示しています。`READ_ACP` と `WRITE_ACP` ACL は、ACL 関連のアクセス許可 (`s3:GetBucketAcl`、`s3:GetObjectAcl`、`s3:PutBucketAcl`、`s3:PutObjectAcl`) を付与するため、ポリシーとの関連性は低くなります。

**Example — バケットの `READ` ACL**  
バケットの内容の一覧表示を AWS アカウント `111122223333` に許可する `READ` ACL がバケットにある場合、バケットに対して `s3:ListBucket`、`s3:ListBucketVersions`、`s3:ListBucketMultipartUploads` の各アクセス許可を付与するバケットポリシーを記述できます。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Permission to list the objects in a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [

						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:ListBucket",
					"s3:ListBucketVersions",
					"s3:ListBucketMultipartUploads"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
			}
		]
	}
```

**Example — バケット内の各オブジェクトの `READ` ACL**  
AWS アカウント `111122223333` にアクセスを許可する `READ` ACL がバケット内の各オブジェクトにある場合、バケット内の各オブジェクトに対する `s3:GetObject` アクセス許可と `s3:GetObjectVersion` アクセス許可をこのアカウントに付与するバケットポリシーを記述できます。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Read permission for every object in a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [
						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:GetObject",
					"s3:GetObjectVersion"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
			}
		]
	}
```
この例のリソースエレメントは、特定のオブジェクトへのアクセスを許可します。  

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
```

**Example — バケットにオブジェクトを書き込むアクセス許可を付与する `WRITE` ACL**  
バケットへのオブジェクトの書き込み許可を AWS アカウント `111122223333` に付与する `WRITE` ACL がバケットにある場合は、バケットに `s3:PutObject` 許可を付与するバケットポリシーを記述できます。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Permission to write objects to a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [
						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:PutObject"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
			}
		]
	}
```

### S3 コンソールを使用した、ACL アクセス権限の確認と移行
<a name="review-migrate-acl-console"></a>

**バケットの ACL アクセス権限を確認する方法**

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

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

1. **[アクセス許可]** タブを選択します。

1. **アクセスコントロールリスト (ACL)** で、バケット ACL アクセス権限を確認します。

**オブジェクトの ACL アクセス権限を確認する方法**

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

1. **[Buckets]** (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。

1. [**オブジェクト**] リストで、オブジェクト名を選択します。

1. **[アクセス許可]** タブを選択します。

1. **アクセスコントロールリスト (ACL)** で、オブジェクト ACL アクセス権限を確認します。

**ACL アクセス権限を移行してバケット ACL を更新します**

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

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

1. **アクセス許可**タブの **バケットポリシー**で **編集**をクリックします。

1. **ポリシー**ボックスで、バケットポリシーを追加または更新します。

   バケットポリシーの例ついては、[バケットポリシーの例](#migrate-acl-permissions-bucket-policies)」 と「[ユースケースの例](#object-ownership-migrating-acls) を参照してください。

1. **[Save changes]** (変更の保存) をクリックします。

1. [バケット ACL を更新](managing-acls.md)して、他のグループ、または AWS アカウント への ACL アクセス権限を削除します。

1. オブジェクト所有権に[**バケット所有者の強制**設定を適用](object-ownership-existing-bucket.md)します。

### AWS CLI を使用して、ACL アクセス権限を確認して移行します。
<a name="review-migrate-acl-cli"></a>

1. バケットのバケット ACL を返すには、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-acl.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-acl.html) AWS CLI コマンドを使用します。

   ```
   aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket
   ```

   例えば、このバケット ACL は `WRITE` と `READ` にサードパーティーのアカウントへのアクセスを付与します。この ACL では、サードパーティーアカウントは[正規ユーザー ID](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId) で識別します。[バケット所有者の強制] 設定を適用して ACL を無効にするには、サードパーティアカウントのこれらの許可をバケットポリシーに移行する必要があります。

   ```
   {
   		"Owner": {
   			"ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
   		},
   		"Grants": [
   			{
   				"Grantee": {
   					"ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "FULL_CONTROL"
   			},
   			{
   				"Grantee": {
   					"ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "READ"
   			},
   			{
   				"Grantee": {
   					"ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "WRITE"
   			}
   		]
   	}
   ```

   その他の ACL の例については、[ユースケースの例](#object-ownership-migrating-acls) を参照してください。

1. バケット ACL アクセス権限をバケットポリシーに移行します。

   この例のバケットポリシーは、サードパーティアカウントの `s3:PutObject` と `s3:ListBucket` アクセス許可を付与します。バケットポリシーでは、サードパーティーアカウントは AWS アカウント ID (`111122223333`)で識別されます。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   	policy.json:
   	{
   		"Version": "2012-10-17",		 	 	 
   		"Statement": [
   			{
   				"Sid": "PolicyForCrossAccountAllowUpload",
   				"Effect": "Allow",
   				"Principal": {
   					"AWS": [
   						"arn:aws:iam::111122223333:root"
   					]
   				},
   				"Action": [
   					"s3:PutObject",
   					"s3:ListBucket"
   				],
   				"Resource": [
   					"arn:aws:s3:::amzn-s3-demo-bucket",
   					"arn:aws:s3:::amzn-s3-demo-bucket/*"
   			}
   		]
   	}
   ```

   バケットポリシーの例については、[バケットポリシーの例](#migrate-acl-permissions-bucket-policies) と [ユースケースの例](#object-ownership-migrating-acls) を参照してください。

1. 特定のオブジェクトの ACL を返すには、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object-acl.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object-acl.html) AWS CLI コマンドを使用します。

   ```
   aws s3api get-object-acl --bucket amzn-s3-demo-bucket --key EXAMPLE-OBJECT-KEY
   ```

1. 必要に応じて、オブジェクト ACL アクセス権限をバケットポリシーに移行します。

   このリソースエレメントの例では、バケットポリシーの特定のオブジェクトへのアクセスを付与します。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-OBJECT-KEY"
   ```

1. バケットの ACL をデフォルトの ACL にリセットします。

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. オブジェクト所有者に[[バケット所有者の強制] 設定を適用](object-ownership-existing-bucket.md)します。

## 承認に ACL を必要としたリクエストを特定する
<a name="object-ownership-acl-identify"></a>

承認に ACL を必要とした Amazon S3 リクエストを特定するには、Amazon S3 サーバーアクセスログまたは AWS CloudTrail の `aclRequired` 値を使用します。リクエストが承認に ACL を必要としたか、ACL を指定する `PUT` リクエストがある場合、文字列は `Yes` です。ACL が不要であったか、`bucket-owner-full-control` の既定 ACL を設定するか、リクエストがバケットポリシーで許可されている場合、`aclRequired` 値の文字列は Amazon S3 サーバーアクセスログでは「`-`」となり、CloudTrail では存在しません。期待される `aclRequired` 値の詳細については、「[一般的な Amazon S3 リクエストの `aclRequired` 値](acl-overview.md#aclrequired-s3)」を参照してください。

`PutBucketAcl` または `PutObjectAcl` リクエストに ACL ベースのアクセス許可を付与するヘッダーが含まれている場合は、`bucket-owner-full-control` 既定 ACL を除き、ACL を無効にする前にこれらのヘッダーを削除する必要があります。待機しないと、リクエストは失敗します。

承認に ACL を必要としたその他すべてのリクエストについては、これらの ACL アクセス許可をバケットポリシーに移行します。次に、バケット所有者の強制設定を有効にする前に、バケットの ACL をすべて削除します。

**注記**  
オブジェクトの ACL は削除しないでください。削除すると、アクセス許可をオブジェクトの ACL に依存しているアプリケーションはアクセスできなくなります。

承認に ACL を必要としたリクエストがない場合は、ACL の無効化に進むことができます。リクエストの識別方法の詳細については、「[Amazon S3 アクセスログを使用したリクエストの識別](using-s3-access-logs-to-identify-requests.md)」と「[CloudTrail を使用した Amazon S3 リクエストの識別](cloudtrail-request-identification.md)」を参照してください。

## ACL 関連の条件キーを使用するバケットポリシーを確認および更新します。
<a name="object-ownership-bucket-policies"></a>

[バケット所有者の強制] 設定を適用して ACL を無効にすると、リクエストでバケット所有者の完全制御 ACL が使用されているか、ACL が指定されていない場合にのみ、新しいオブジェクトをバケットにアップロードできます。ACL を無効にする前に、ACL 関連の条件キーのバケットポリシーを確認します。

バケットポリシーが ACL 関連の条件キーを使用して、`bucket-owner-full-control` 既定 ACL (例えば、`s3:x-amz-acl`) では、バケットポリシーを更新する必要はありません。次のバケットポリシーでは、`s3:x-amz-acl` S3 の規定 ACL `bucket-owner-full-control` リクエストを必要とする `PutObject` を使用します。このポリシーでは、*引き続き*オブジェクトライターが `bucket-owner-full-control` 既定 ACL を指定する必要があります。ただし、ACL が無効になっているバケットは引き続きこの ACL を受け入れるため、クライアント側の変更は不要で、リクエストは引き続き成功します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "OnlyAllowWritesToMyBucketWithBucketOwnerFullControl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/ExampleUser"
                ]
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```

------

ただし、バケットポリシーで異なる ACL を必要とする ACL 関連の条件キーを使用する場合は、この条件キーを削除する必要があります。この例のバケットポリシーには、 S3 の `public-read` ACL を `PutObject` リクエストして、ACL が無効になる前に更新する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Only allow writes to my bucket with public read access",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/ExampleUser"                ]
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "public-read"
                }
            }
        }
    ]
}
```

------

## ユースケースの例
<a name="object-ownership-migrating-acls"></a>

以下の例では、特定のユースケースでの ACL アクセス権限をバケットポリシーに移行する方法を示します。

**Topics**
+ [サーバーアクセスのログ記録用の S3 ログ配信グループへのアクセスを付与する](#object-ownership-server-access-logs)
+ [バケット内のオブジェクトへのパブリック読み取りアクセスを付与します](#object-ownership-public-read)
+ [S3 バケットへのアクセス権を Amazon ElastiCache (Redis OSS) に付与する](#object-ownership-elasticache-redis)

### サーバーアクセスのログ記録用の S3 ログ配信グループへのアクセスを付与する
<a name="object-ownership-server-access-logs"></a>

バケット所有者の強制設定を適用してサーバーアクセスログ送信先バケット (別名 **ターゲットバケット) の ACL を無効にするには、バケットの S3 ログ配信グループへの ACL アクセス許可をバケットポリシーのログ記録サービスプリンシパル (`logging.s3.amazonaws.com`) に移行する必要があります。ログ配信許可の詳細については、[ログ配信許可](enable-server-access-logging.md#grant-log-delivery-permissions-general) を参照してください。

このバケット ACL は、S3 ログ配信グループへの `WRITE` と `READ_ACP` アクセスを許可します。

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    }, 
    "Grants": [
        {
            "Grantee": {
                "Type": "CanonicalUser", 
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
            }, 
            "Permission": "FULL_CONTROL"
        }, 
        {
            "Grantee": {
                "Type": "Group", 
                "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery"
            }, 
            "Permission": "WRITE"
        }, 
        {
            "Grantee": {
                "Type": "Group", 
                "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery"
            }, 
            "Permission": "READ_ACP"
        }
    ]
}
```

**S3 ログ配信グループのバケット ACL アクセス権限を、バケットポリシーのロギングサービスプリンシパルに移行します。**

1. 次のバケットポリシーをバケットに追加して、例の値を置き換えます。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:						{
       {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3ServerAccessLogsPolicy",
               "Effect": "Allow",
               "Principal": {
                   "Service": "logging.s3.amazonaws.com"
               },
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-LOGGING-PREFIX*",
               "Condition": {
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME"
                   },
                   "StringEquals": {
                       "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID"
                   }
               }
           }
       ]
   }
   ```

1. バケットの ACL をデフォルトの ACL にリセットします。

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. オブジェクト所有権の[バケット所有者の強制](object-ownership-existing-bucket.md) を送信先バケットに適用します。

### バケット内のオブジェクトへのパブリック読み取りアクセスを付与します
<a name="object-ownership-public-read"></a>

オブジェクト ACL がバケット内のすべてのオブジェクトへのパブリック読み取りアクセスを許可する場合、これらの ACL アクセス権限をバケットポリシーに移行できます。

このオブジェクト ACL は、バケット内のオブジェクトへのパブリック読み取りアクセスを許可します。

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    },
    "Grants": [
        {
            "Grantee": {
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "Type": "Group",
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            },
            "Permission": "READ"
        }
    ]
}
```

**パブリック読み取り ACL アクセス権限をバケットポリシーに移行します。**

1. バケット内のすべてのオブジェクトへのパブリック読み取りアクセスを許可するには、例の値を置き換えて、次のバケットポリシーを追加します。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PublicReadGetObject",
               "Effect": "Allow",
               "Principal": "*",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }
   ```

   バケットポリシー内の特定のオブジェクトへのパブリックアクセスを許可するには、`Resource` エレメントに次の形式を使用します。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
   ```

   特定のプレフィックスを持つすべてのオブジェクトへのパブリックアクセスを許可するには、`Resource` エレメントに次の形式を使用します。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/PREFIX/*"
   ```

1. オブジェクト所有者に[[バケット所有者の強制] 設定を適用](object-ownership-existing-bucket.md)します。

### S3 バケットへのアクセス権を Amazon ElastiCache (Redis OSS) に付与する
<a name="object-ownership-elasticache-redis"></a>

S3 バケットに [ElastiCache (Redis OSS) のバックアップをエクスポート](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html)できます。これにより、ElastiCache の外部からバックアップにアクセスできます。バックアップを S3 バケットにエクスポートするには、スナップショットをバケットにコピーするための ElastiCache 許可を付与する必要があります。バケット ACL で ElastiCache にアクセス許可を付与した場合は、[バケット所有者の強制] 設定を適用して ACL を無効にする前に、これらの許可をバケットポリシーに移行する必要があります。詳細については、*Amazon ElastiCache ユーザーガイド* の [ Amazon S3 バケットへの ElastiCache アクセスの許可](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access) を参照してください。

次の例は、ElastiCache に許可を付与するバケット ACL アクセス許可を示しています。

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    },
    "Grants": [
        {
            "Grantee": {
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "READ"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "WRITE"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "READ_ACP"
        }
    ]
}
```

**ElastiCache (Redis OSS) のバケット ACL アクセス許可をバケットポリシーに移行するには**

1. 次のバケットポリシーをバケットに追加し、例の値を置き換えます。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt15399483",
               "Effect": "Allow",
               "Principal": {
                   "Service": "Region.elasticache-snapshot.amazonaws.com"
               },
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketAcl",
                   "s3:ListMultipartUploadParts",
                   "s3:ListBucketMultipartUploads"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }
   ```

1. バケットの ACL をデフォルトの ACL にリセットします。

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. オブジェクト所有者に[[バケット所有者の強制] 設定を適用](object-ownership-existing-bucket.md)します。

# バケットの作成時のオブジェクトの所有権の設定。
<a name="object-ownership-new-bucket"></a>

バケットを作成するときに、S3 オブジェクトの所有権を設定できます。既存のバケットのオブジェクトの所有権を設定するには、[既存のバケットでのオブジェクトの所有権の設定](object-ownership-existing-bucket.md) を参照してください。

S3 オブジェクトの所有権は、[アクセスコントロールリスト (ACL)](acl-overview.md) を無効化するために使用できる Amazon S3 バケットレベルの設定で、バケット内のすべてのオブジェクトの所有権を取得し、Amazon S3 に保存されているデータのアクセス管理を簡素化します。デフォルトでは、オブジェクト所有者はバケット所有者の強制設定に設定され、新しいバケットの ACL が無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。オブジェクトごとに個別に制御する必要がある通常ではない状況を除き、ACL は無効にしておくことをお勧めします。

オブジェクト所有権には、バケットにアップロードされるオブジェクトの所有権を制御し、ACL を無効または有効化するために使用できる 3 つの設定があります。

**ACL の無効化**
+ **バケット所有者の強制 (デフォルト)** – ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えません。バケットは、ポリシーを使用してアクセスコントロールを定義します。

**ACL の有効化。**
+ **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。
+ **オブジェクトライター** — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザーにそのオブジェクトへのアクセス権を付与できます。

**アクセス許可**: **[Bucket owner enforced]** (バケット所有者の強制) 設定、または **[Bucket owner preferred]** (バケット所有者の優先) 設定を適用するには、`s3:CreateBucket` および `s3:PutBucketOwnershipControls` のアクセス許可が必要です。**オブジェクトライター**設定が適用されたバケットを作成する場合、追加の権限は必要ありません。詳細については、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

**重要**  
Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなり、オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL を無効にすることをお勧めします。オブジェクトの所有権を使用すると ACL を無効にして、アクセスコントロールに関するポリシーに依存できます。ACL を無効にすると、別の AWS アカウントによってアップロードされたオブジェクトを含むバケットを簡単に維持できます。バケット所有者は、バケット内のすべてのオブジェクトを所有し、ポリシーを使用してオブジェクトへのアクセスを管理できます。

## S3 コンソールの使用
<a name="object-ownership-new-bucket-console"></a>

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

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、バケットを作成するリージョンを選択します。
**注記**  
一旦バケットを作成したら、そのリージョンを変更することはできません。
レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。明示的に別のリージョンに移動する場合を除き、特定のリージョンに保管されたオブジェクトは、そのリージョンから移動されることはありません。Amazon S3 AWS リージョン のリストについては、**「Amazon Web Services 全般のリファレンス」の「[AWS のサービス エンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)」を参照してください。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. [**Create bucket (バケットの作成)**] を選択します。**[バケットの作成]** ページが開きます。

1. **[バケット名]** にバケットの名前を入力します。

   バケット名には次の条件があります。
   + パーティション内で一意にする必要があります。パーティションは、リージョンのグループです。AWS には、現在 `aws` (商用リージョン)、`aws-cn` (中国リージョン)、および `aws-us-gov` (AWS GovCloud (US) Regions) の 3 つのパーティションがあります。
   + 3～63 文字で指定する。
   + 小文字、数字、ピリオド (`.`)、ハイフン (`-`) のみで構成されます。互換性を最も高くするには、静的ウェブサイトホスティング専用のバケットを除き、バケット名にピリオド (`.`) を使用しないことをお勧めします。
   + 文字や数字で始まり、文字や数字で終わります。
   + バケットの命名規則の完全なリストについては、「[汎用バケットの命名規則](bucketnamingrules.md)」を参照してください。
**重要**  
バケットを作成したら、その名前を変更することはできません。
バケット名に機密情報を含めないでください。バケット名は、バケット内のオブジェクトを参照する URL に表示されます。

1. (オプション) **[全般設定]** で、既存のバケットの設定を新しいバケットにコピーすることを選択できます。既存のバケットの設定をコピーしない場合は、次のステップにスキップします。
**注記**  
このオプションの特徴:  
AWS CLI では使用できません。Amazon S3 コンソールでのみ利用できます。
バケットポリシーは既存のバケットから新しいバケットにコピーしません。

    既存のバケットの設定をコピーするには、**[既存のバケットから設定をコピー]** で **[バケットを選択]** をクリックします。**[バケットを選択]** ウィンドウが開きます。コピーする設定を持つバケットを検索して、**[バケットを選択]** をクリックします。**[バケットを選択]** ウィンドウが閉じて、**[バケットを作成]** ウィンドウが再び開きます。

   **[既存のバケットから設定をコピー]** に、選択したバケットの名前が表示されるようになります。新しいバケットの設定が、選択したバケットの設定と一致するようになりました。コピーした設定を削除する場合は、**[デフォルトを復元]** を選択します。**[バケットを作成]** ページで、バケットの残りの設定を確認します。変更しない場合は、最後のステップに進みます。

1. **[オブジェクト所有者]** で、ACL を無効または有効にし、バケットにアップロードされたオブジェクトの所有権を制御するには、次のいずれかの設定を選択します。

**ACL は無効です**
   +  **バケット所有者の強制 (デフォルト)** – ACL は無効になり、バケット所有者は汎用バケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 汎用バケット内のデータへのアクセス許可に影響を与えなくなりました。このバケットはアクセスコントロールを定義するためだけにポリシーを使用します。

     デフォルトでは、ACL は無効になっています。Amazon S3 の最新のユースケースの大部分では ACL を使用する必要がなくなっています。オブジェクトごとに個別にアクセスを制御する必要がある状況を除き、ACL は無効にしておくことをお勧めします。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

**ACL の有効化**
   + **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。

     **[バケット所有者を推奨]** 設定を適用して、すべての Amazon S3 アップロードに `bucket-owner-full-control` 既定 ACL を含めることを要求する場合は、この ACL を使用するオブジェクトアップロードのみを許可する[バケットポリシーを追加](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)できます。
   + **オブジェクトライター** — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザーにそのオブジェクトへのアクセス権を付与できます。
**注記**  
デフォルト設定は **[バケット所有者の強制]** です。デフォルト設定を適用して ACL を無効のままにするのに必要なのは、`s3:CreateBucket` アクセス許可のみです。ACL を有効にするためには、`s3:PutBucketOwnershipControls` アクセス許可が必要です。

1. **[このバケットのパブリックアクセスブロック設定]** で、バケットに適用するブロックパブリックアクセス設定を選択します。

   デフォルトでは、4 つすべての [パブリックアクセスをブロック] 設定が有効になっています。特定のユースケースでオフにする必要のある設定が 1 つ以上あることがわかっている場合を除き、すべての設定を有効にしておくことをお勧めします。ブロックパブリックアクセスの詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。
**注記**  
すべての [パブリックアクセスをブロック] 設定を有効にするのに必要なのは、`s3:CreateBucket` アクセス許可のみです。[パブリックアクセスをブロック] 設定をオフにするには、`s3:PutBucketPublicAccessBlock` アクセス許可が必要です。

1. (オプション) **[バケットのバージョニング]** は、デフォルトで無効になります。バージョニングとは、同じバケット内でオブジェクトの複数のバリアントを保持する手段です。バージョニングを使用して、 バケットに保存されたあらゆるオブジェクトのあらゆるバージョンを保存、取得、復元することができます。バージョニングを使用すれば、意図しないユーザーアクションからもアプリケーション障害からも、より簡単に復旧できます。バージョニングの詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。

   バケットでバージョニングを有効にするには、**[有効化]** を選択します。

1. (オプション) **[Tags]** (タグ) では、バケットにタグを追加することを選択できます。AWS コスト配分では、バケットタグを使用してバケットの使用に対する請求に注釈を付けることができます。タグはキー/値ペアになっており、バケットに割り当てられるラベルを表します。詳細については、「[S3 バケットタグでのコスト配分タグの使用](CostAllocTagging.md)」を参照してください。

   (オプション) タグを追加するには、**[キー]** を入力してから、オプションの **[値]** を入力し、**[タグの追加]** を選択します。

1. **[デフォルトの暗号化]** を設定するには、**[暗号化タイプ]** で次のいずれかを選択します。
   + **Amazon S3 マネージドキーを用いたサーバー側の暗号化 (SSE-S3)**
   + **AWS Key Management Service キーによるサーバー側の暗号化 (SSE-KMS)**
   + **AWS Key Management Service (AWS KMS) キーによる二層式サーバー側の暗号化 (DSSE-KMS)**
**重要**  
デフォルト暗号化設定として SSE-KMS または DSSE-KMS オプションを使用する場合、AWS KMS の 1 秒あたりのリクエスト数 (RPS) 制限が適用されます。AWS KMS クォータの詳細およびクォータの引き上げをリクエストする方法については、**「AWS Key Management Service デベロッパーガイド」の「[クォータ](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)」を参照してください。

   バケットと新しいオブジェクトは、暗号化設定の基本レベルとして Amazon S3 マネージドキー (SSE-S3) を使用したサーバー側の暗号化で暗号化されます。デフォルトの暗号化の詳細については、「[Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定](bucket-encryption.md)」を参照してください。SSE-KMS に関する詳細は、「[Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)](UsingServerSideEncryption.md)」を参照してください。

   サーバー側の暗号化を使用してデータを暗号化する方法の詳細については、「[暗号化によるデータの保護](UsingEncryption.md)」を参照してください。

1. **AWS Key Management Service キーによるサーバー側の暗号化 (SSE-KMS)** または **AWS Key Management Service (AWS KMS) キーによる二層式サーバー側の暗号化 (DSSE-KMS)** を選択した場合は、次の操作を行います。

   1. **[AWS KMS キー]** で、次のいずれかの方法で KMS キーを指定します。
      + 使用可能な KMS キーのリストから選択するには、**[AWS KMS keys から選択する]** を選択し、使用可能なキーのリストから自分の **KMS キー**を選択します。

        AWS マネージドキー (`aws/s3`) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、*AWS Key Management Serviceデベロッパーガイド*の「[カスタマーキーと AWS キー](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)」を参照してください。
      + KMS キー ARN を入力するには、**[AWS KMS key ARN を入力]** を選択し、表示されるフィールドに KMS キー ARN を入力します。
      + AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、**[KMS キーを作成]** を選択します。

        AWS KMS key の作成の詳細については、**「AWS Key Management Service デベロッパーガイド」の「[キーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)」を参照してください。
**重要**  
バケットと同じ AWS リージョン で使用可能な KMS キーのみを使用できます。Amazon S3 コンソールには、バケットと同じリージョンで最初の 100 個の KMS キーしか表示されません。リストに存在しない KMS キーを使用するには、KMS キー ARN を入力する必要があります。別のアカウントが所有している KMS キーを使用する場合は、まず、そのキーを使用するアクセス許可が必要であり、次に、KMS キー ARN を入力する必要があります。KMS キーのクロスアカウント権限の詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[他のアカウントで使用できる KMS キーを作成する](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)」を参照してください。SSE-KMS に関する詳細は、「[AWS KMS (SSE−KMS) によるサーバー側の暗号化の指定](specifying-kms-encryption.md)」を参照してください。DSSE-KMS に関する詳細については、「[AWS KMS キーによる二層式サーバー側の暗号化 (DSSE-KMS) の使用](UsingDSSEncryption.md)」を参照してください。  
Amazon S3 でサーバー側の暗号化に AWS KMS key を使用する場合は、対称暗号化 KMS キーを選択する必要があります。Amazon S3 では、対称暗号化 KMS キーのみがサポートされ、非対称暗号化 KMS キーはサポートされません。詳細については、*AWS Key Management Service デベロッパーガイド*の「[Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)」(対称および非対称 KMS キーの識別) を参照してください。

   1. SSE-KMS でデフォルトの暗号化を使用するようにバケットを設定する場合は、S3 バケットキーを使用することもできます。S3 バケットキーは、Amazon S3 から AWS KMS へのリクエストトラフィックを減らし、暗号化のコストを削減します。詳細については、「[Amazon S3 バケットキーを使用した SSE−KMS のコストの削減](bucket-key.md)」を参照してください。S3 バケットキーは DSSE-KMS ではサポートされていません。

      デフォルトでは、S3 バケットキーは Amazon S3 コンソールで有効になっています。コストを削減するには、S3 バケットキーを有効にしておくことをお勧めします。バケットの S3 バケットキーを無効にするには、**[バケットキー]** で、**[無効化]** を選択します。

1. (オプション) S3 Object Lock は、新しいオブジェクトが削除または上書きされないように保護するのに役立ちます。詳細については、「[S3 Object Lock を使用したオブジェクトのロック](object-lock.md)」を参照してください。S3 Object Lock を有効にする場合は、次の手順に従います。

   1. **[詳細設定]** を選択します。
**重要**  
バケットに対して Object Lock を有効にすると、自動でバージョニングも有効になります。バケットを有効にして正常に作成したら、バケットの **[プロパティ]** タブで Object Lock のデフォルトの保持とリーガルホールドの設定も設定する必要があります。

   1. オブジェクトロックを有効にする場合は、**[Enable]** (有効化) を選択し、表示される警告を読んだうえで承認します。
**注記**  
Object Lock が有効なバケットを作成するには、`s3:CreateBucket`、`s3:PutBucketVersioning` および `s3:PutBucketObjectLockConfiguration` の許可が必要です。

1. **[バケットを作成する]** を選択します。

## の使用AWS CLI
<a name="object-ownership-new-bucket-cli"></a>

新しいバケットを作成するときにオブジェクトの所有権を設定するには、`create-bucket` パラメータを指定して AWS CLI と `--object-ownership` コマンドを使用します。

この例では、AWS CLI を使用して新しいバケットに [バケット所有者の強制] 設定を適用します。

```
aws s3api create-bucket --bucket  amzn-s3-demo-bucket --region us-east-1 --object-ownership BucketOwnerEnforced
```

**重要**  
AWS CLI を使用してバケットを作成するときにオブジェクト所有権を設定しない場合、デフォルト設定は `ObjectWriter` (ACL 有効) になります。

## AWS SDK for Java の使用
<a name="object-ownership-new-bucket-sdk-java"></a>

この例では、AWS SDK for Java を使用して新しいバケットの [バケット所有者の強制] 設定を設定します。

```
    // Build the ObjectOwnership for CreateBucket
    CreateBucketRequest createBucketRequest = CreateBucketRequest.builder()
            .bucket(bucketName)
            .objectOwnership(ObjectOwnership.BucketOwnerEnforced)
            .build()

     // Send the request to Amazon S3 
     s3client.createBucket(createBucketRequest);
```

## CloudFormation の使用
<a name="object-ownership-new-bucket-cfn"></a>

新しいバケットを作成するときに `AWS::S3::Bucket` と CloudFormation リソースを使用してオブジェクトの所有権を設定するには、「*AWS CloudFormation ユーザーガイド*」の「[AWS::S3::Bucket の OwnershipControls](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-ownershipcontrols)」を参照してください。

## REST API の使用
<a name="object-ownership-new-bucket-rest-api"></a>

S3 オブジェクト所有権に [バケット所有者の強制] 設定を適用するには、`x-amz-object-ownership` リクエストヘッダーを `BucketOwnerEnforced` に設定して `CreateBucket` API オペレーションを使用します。詳細と例については、「*Amazon Simple Storage Service API リファレンス*」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)」を参照してください。

**次のステップ**: オブジェクトの所有権にバケット所有者の強制設定またはバケット所有者の優先設定を適用した後、さらに次の手順を実行できます。
+ [バケット所有者の強制](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced) − IAM または組織ポリシーを使用して、ACL を無効にしてすべての新しいバケットを作成する必要があります。
+ [バケット所有者推奨](ensure-object-ownership.md#ensure-object-ownership-bucket-policy) − S3 バケットポリシーを追加して、バケットへのすべてのオブジェクトのアップロードに `bucket-owner-full-control` 規定 ACL を要求します

# 既存のバケットでのオブジェクトの所有権の設定
<a name="object-ownership-existing-bucket"></a>

既存の S3 バケットで S3 オブジェクトの所有権を設定できます。バケットを作成するときにオブジェクトの所有権を適用するには、[バケットの作成時のオブジェクトの所有権の設定。](object-ownership-new-bucket.md) を参照してください。

S3 オブジェクトの所有権は、[アクセスコントロールリスト (ACL)](acl-overview.md) を無効化するために使用できる Amazon S3 バケットレベルの設定で、バケット内のすべてのオブジェクトの所有権を取得し、Amazon S3 に保存されているデータのアクセス管理を簡素化します。デフォルトでは、オブジェクト所有者はバケット所有者の強制設定に設定され、新しいバケットの ACL が無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。オブジェクトごとに個別に制御する必要がある通常ではない状況を除き、ACL は無効にしておくことをお勧めします。

オブジェクト所有権には、バケットにアップロードされるオブジェクトの所有権を制御し、ACL を無効または有効化するために使用できる 3 つの設定があります。

**ACL の無効化**
+ **バケット所有者の強制 (デフォルト)** – ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えません。バケットは、ポリシーを使用してアクセスコントロールを定義します。

**ACL の有効化。**
+ **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。
+ **オブジェクトライター** — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザーにそのオブジェクトへのアクセス権を付与できます。

**前提条件**: [バケット所有者の強制] 設定を適用して ACL を無効にする前に、バケット ACL アクセス権限をバケットポリシーに移行し、バケット ACL をデフォルトのプライベート ACL にリセットする必要があります。また、オブジェクト ACL アクセス権限をバケットポリシーに移行し、バケット所有者の完全制御 ACL 以外の ACL を必要とするバケットポリシーを編集することをお勧めします。詳細については、[ACL を無効にする前提条件。](object-ownership-migrating-acls-prerequisites.md) を参照してください。

**許可**: このオペレーションを使用するには、`s3:PutBucketOwnershipControls` 許可が必要です。詳細については、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

## S3 コンソールの使用
<a name="add-object-ownership"></a>

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

1. **バケット** リストで、S3 オブジェクトの所有者の設定を適用するバケットの名前を選択します。

1. **[アクセス許可]** タブを選択します。

1. **オブジェクトの所有者**で [**編集**] を選択します。

1. **オブジェクト所有権**は、ACL を無効または有効にして、バケットにアップロードされたオブジェクトの所有権を制御するために、次の設定のいずれか一つを選択します。

**ACL は無効です**
   + **バケット所有者の強制** - ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全にコントロールできます。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えません。このバケットはアクセスコントロールを定義するためにポリシーを使用します。

     IAM または AWS Organizations ポリシーを使用し、ACL を無効にしてすべての新しいバケットを作成することを要求するには、[すべての新しいバケットの ACL を無効にします (バケット所有者の強制)](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced) を参照してください。

**ACL の有効化**
   + **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。

     バケット所有者の優先設定を適用して、すべての Amazon S3 アップロードに `bucket-owner-full-control` 既定 ACL を含めることを要求する場合は、この ACL を使用するオブジェクトアップロードのみを許可する[バケットポリシーを追加](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)できます。
   + **オブジェクトライター (デフォルト)** – オブジェクトをアップロードする AWS アカウント は、オブジェクトを所有し、オブジェクトを完全に制御し、ACL を介して他のユーザーにオブジェクトへのアクセスを許可できます。

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

## AWS CLI の使用
<a name="object-ownership-existing-bucket-cli"></a>

既存のバケットにオブジェクトの所有権設定を適用するには、`put-bucket-ownership-controls` パラメータのある `--ownership-controls` コマンドを使用します。所有権の有効な値は `BucketOwnerEnforced`、`BucketOwnerPreferred`、または `ObjectWriter` です。

この例では、AWS CLI を使用して既存のバケットにバケット所有者の強制設定を適用します。

```
aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"
```

`put-bucket-ownership-controls` の詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html)」を参照してください。

## AWS SDK for Java の使用
<a name="object-ownership-existing-bucket-sdk-java"></a>

この例では、`BucketOwnerEnforced` を使用して既存のバケットに対してオブジェクト所有権の AWS SDK for Java 設定を適用します。

```
         // Build the ObjectOwnership for BucketOwnerEnforced
         OwnershipControlsRule rule = OwnershipControlsRule.builder()
                .objectOwnership(ObjectOwnership.BucketOwnerEnforced)
                .build();

         OwnershipControls ownershipControls = OwnershipControls.builder()
                   .rules(rule)
                   .build()

          // Build the PutBucketOwnershipControlsRequest
          PutBucketOwnershipControlsRequest putBucketOwnershipControlsRequest =
                PutBucketOwnershipControlsRequest.builder()
                        .bucket(BUCKET_NAME)
                        .ownershipControls(ownershipControls)
                        .build();
                        
          // Send the request to Amazon S3 
          s3client.putBucketOwnershipControls(putBucketOwnershipControlsRequest);
```

## CloudFormation の使用
<a name="object-ownership-existing-bucket-cfn"></a>

既存のバケットにオブジェクト所有者の設定を適用するために CloudFormation を使用するには、「*AWS CloudFormation ユーザーガイド*」の「[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html)」を参照してください。

## REST API の使用
<a name="object-ownership-existing-bucket-rest-api"></a>

REST API を使用して既存の S3 バケットにオブジェクトの所有権設定を適用するには、`PutBucketOwnershipControls` を使用します。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html)」を参照してください。

**次のステップ**: オブジェクトの所有権にバケット所有者の強制設定またはバケット所有者の優先設定を適用した後、さらに次の手順を実行できます。
+ [バケット所有者の強制](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced) − IAM または組織ポリシーを使用して、ACL を無効にしてすべての新しいバケットを作成する必要があります。
+ [バケット所有者推奨](ensure-object-ownership.md#ensure-object-ownership-bucket-policy) − S3 バケットポリシーを追加して、バケットへのすべてのオブジェクトのアップロードに `bucket-owner-full-control` 規定 ACL を要求します

# S3 バケットのオブジェクト所有権設定の表示
<a name="object-ownership-retrieving"></a>

S3 オブジェクトの所有権は、[アクセスコントロールリスト (ACL)](acl-overview.md) を無効化するために使用できる Amazon S3 バケットレベルの設定で、バケット内のすべてのオブジェクトの所有権を取得し、Amazon S3 に保存されているデータのアクセス管理を簡素化します。デフォルトでは、オブジェクト所有者はバケット所有者の強制設定に設定され、新しいバケットの ACL が無効になります。ACL を無効にすると、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理します。オブジェクトごとに個別に制御する必要がある通常ではない状況を除き、ACL は無効にしておくことをお勧めします。

オブジェクト所有権には、バケットにアップロードされるオブジェクトの所有権を制御し、ACL を無効または有効化するために使用できる 3 つの設定があります。

**ACL の無効化**
+ **バケット所有者の強制 (デフォルト)** – ACL は無効になり、バケット所有者はバケット内のすべてのオブジェクトを自動的に所有し、完全に制御します。ACL は、S3 バケット内のデータに対するアクセス許可に対して影響を与えません。バケットは、ポリシーを使用してアクセスコントロールを定義します。

**ACL の有効化。**
+ **希望するバケット所有者** — バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL でバケットに書き込む新しいオブジェクトを所有し、完全にコントロールできます。
+ **オブジェクトライター** — オブジェクトをアップロードする AWS アカウント は、そのオブジェクトを所有し、そのオブジェクトを完全にコントロールし、ACL を介して他のユーザーにそのオブジェクトへのアクセス権を付与できます。

Amazon S3 バケットの S3 オブジェクト所有権設定を表示できます。新しいバケットのオブジェクトの所有権を設定するには、[バケットの作成時のオブジェクトの所有権の設定。](object-ownership-new-bucket.md) を参照してください。既存のバケットのオブジェクトの所有権を設定するには、[既存のバケットでのオブジェクトの所有権の設定](object-ownership-existing-bucket.md) を参照してください。

**許可**: このオペレーションを使用するには、`s3:GetBucketOwnershipControls` 許可が必要です。詳細については、「サービス認可リファレンス」の「[Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)」を参照してください。**

S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。

## S3 コンソールの使用
<a name="object-ownership-retrieving-console"></a>

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

1. **バケット**リストで、オブジェクト所有権設定を適用するバケットの名前を選択します。

1. **[アクセス許可]** タブを選択します。

1. **オブジェクトの所有権** では、バケットのオブジェクト所有権設定を表示できます。

## の使用AWS CLI
<a name="object-ownership-retrieving-cli"></a>

S3 バケットの S3 オブジェクト所有権設定を取得するには、[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-ownership-controls.html) AWS CLI コマンドを使用します。

```
aws s3api get-bucket-ownership-controls --bucket amzn-s3-demo-bucket
```

## REST API の使用
<a name="object-ownership-retrieving-rest-api"></a>

S3 バケットのオブジェクトの所有権設定を検索するには、`GetBucketOwnershipControls` API オペレーションを使用します。詳細については、[ を参照してください。GetBucketOwnershipControls](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html)

# すべての新しいバケットの ACL を無効にし、オブジェクト所有権を執行します。
<a name="ensure-object-ownership"></a>

Amazon S3 バケットで ACL を無効にすることをお勧めします。これを行うには、S3 オブジェクトの所有権に [バケット所有者の強制] 設定を適用します。この設定を適用すると、ACL が無効になり、バケット内のすべてのオブジェクトを自動的に所有し、完全に制御できるようになります。ACL を無効にしてすべての新しいバケットを作成するように要求するには、次のセクションで説明するように、AWS Identity and Access Management (IAM) ポリシーまたは AWS Organizations サービスコントロールポリシー (SCP) を使用します。

ACL を無効にせずに新しいオブジェクトのオブジェクト所有権を強制するには、バケット所有者の優先設定を適用できます。この設定を適用する場合は、バケットポリシーを更新して、バケットへのすべての `PUT` リクエストに `bucket-owner-full-control` 既定 ACL を要求することを強くお勧めします。`bucket-owner-full-control` 既定 ACL を他のアカウントのバケットに送信するように、クライアントも更新してください。

**Topics**
+ [すべての新しいバケットの ACL を無効にします (バケット所有者の強制)](#object-ownership-requiring-bucket-owner-enforced)
+ [Amazon S3 `PUT` オペレーションで bucket-owner-full-control 既定 ACL を要求する (バケット所有者の優先)](#ensure-object-ownership-bucket-policy)

## すべての新しいバケットの ACL を無効にします (バケット所有者の強制)
<a name="object-ownership-requiring-bucket-owner-enforced"></a>

次の例の IAM ポリシーは、[バケット所有者の強制] 設定がオブジェクト所有権に適用されていない限り、特定の IAM ユーザーまたはロールの `s3:CreateBucket` アクセス許可を拒否します。`Condition` ブロック内のキーバリューのペアは、キーには `s3:x-amz-object-ownership` を、値には `BucketOwnerEnforced` 設定を指定します。つまり、IAM ユーザーは、オブジェクト所有権に[バケット所有者の強制] 設定を設定し、ACL を無効にした場合にのみ、バケットを作成できます。このポリシーは、AWS 組織の境界 SCP として使用することもできます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RequireBucketOwnerFullControl",
            "Action": "s3:CreateBucket",
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-object-ownership": "BucketOwnerEnforced"
                }
            }
        }
    ]
}
```

------

## Amazon S3 `PUT` オペレーションで bucket-owner-full-control 既定 ACL を要求する (バケット所有者の優先)
<a name="ensure-object-ownership-bucket-policy"></a>

オブジェクト所有権に対するバケット所有者の優先設定を使用すると、バケット所有者は、他のアカウントが `bucket-owner-full-control` 既定 ACL を使用してバケットに書き込む新しいオブジェクトを所有し、完全に制御できます。ただし、他のアカウントが `bucket-owner-full-control` 規定 ACL なしでバケットにオブジェクトを書き込む場合、オブジェクトライターは完全制御アクセスを維持します。バケット所有者は、`bucket-owner-full-control` 既定 ACL を指定した場合にのみ書き込みを許可するバケットポリシーを実装できます。

**注記**  
[バケット所有者の強制] 設定で ACL を無効にすると、バケット所有者として、バケット内のすべてのオブジェクトを自動的に所有し、完全に制御できます。このセクションを使用してバケットポリシーを更新して、バケット所有者にオブジェクトの所有権を適用する必要はありません。

次のバケットポリシーでは、オブジェクトの ACL が `bucket-owner-full-control` に設定されている場合にのみ、アカウント *`111122223333`* が *`amzn-s3-demo-bucket`* にオブジェクトをアップロードできるように指定しています。お客様のアカウントで、*`111122223333`* を、お客様のバケット名で*`amzn-s3-demo-bucket`* を置き換えてください。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "OnlyAllowWritesToMyBucketWithBucketOwnerFullControl",
         "Effect": "Allow",
         "Principal": {
            "AWS": [
               "arn:aws:iam::111122223333:user/ExampleUser"
            ]
         },
         "Action": [
            "s3:PutObject"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
         "Condition": {
            "StringEquals": {
               "s3:x-amz-acl": "bucket-owner-full-control"
            }
         }
      }
   ]
}
```

------

次に、AWS Command Line Interface (AWS CLI) を使用した `bucket-owner-full-control` 既定 ACL を含むコピーオペレーションの例を示します。

```
aws s3 cp file.txt s3://amzn-s3-demo-bucket --acl bucket-owner-full-control
```

バケットポリシーが有効になった後、クライアントに `bucket-owner-full-control` 既定 ACL が含まれていない場合、オペレーションは失敗し、アップローダーは次のエラーを受け取ります。

PutObject オペレーションを呼び出すときにエラー (AccessDenied) が発生しました: アクセスが拒否されました。

**注記**  
アップロード後にクライアントがオブジェクトにアクセスする必要がある場合は、アップロードアカウントに追加のアクセス権限を付与する必要があります。アカウントにリソースへのアクセス許可を付与する方法については、[チュートリアル: ポリシーを使用した Amazon S3 リソースへのアクセスの管理](example-walkthroughs-managing-access.md) を参照してください。

# トラブルシューティング
<a name="object-ownership-error-responses"></a>

S3 オブジェクト所有権のバケット所有者強制設定を適用すると、アクセスコントロールリスト (ACL) が無効になり、バケット所有者として、バケット内のすべてのオブジェクトを自動的に所有することになります。ACL は、バケット内のオブジェクトの許可に影響を与えなくなりました。ポリシーを使用してアクセス許可を付与できます。すべての S3 `PUT` リクエストは、`bucket-owner-full-control` 既定 ACL を指定するか、ACL を指定しない必要があります。そうしないと失敗します。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

無効な ACL が指定されているか、バケット ACL 許可が AWS アカウント の外部へのアクセスを許可している場合、次のエラー応答が表示されることがあります。

## AccessControlListNotSupported
<a name="object-ownership-error-responses-acl-not-supported"></a>

オブジェクト所有権に [バケット所有者の強制] 設定を適用すると、ACL は無効になります。ACL の設定または ACL の更新の要求は `400` エラーで失敗し、AccessControlListNotSupported エラーコードを返します。ACL の読み取り要求は引き続きサポートされています。ACL の読み取りリクエストは、バケット所有者の完全制御を示すレスポンスを常に返します。`PUT` オペレーションでは、バケット所有者の完全制御 ACL を指定するか、ACL を指定しないことが必要です。それ以外の場合、`PUT` オペレーションは失敗します。

次の `put-object` AWS CLI コマンドの例には、`public-read` 既定 ACL が含まれています。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key object-key-name --body doc-example-body --acl public-read
```

バケットが [バケット所有者の強制] 設定を使用して ACL を無効にする場合、このオペレーションは失敗し、アップローダーは次のエラーメッセージを受け取ります。

PutObject オペレーションの呼び出し時にエラー (AccessControlListNotSupported) が発生しました。バケットは ACL を許可していません

## InvalidBucketAclWithObjectOwnership
<a name="object-ownership-error-responses-invalid-acl"></a>

[バケット所有者の強制] 設定を適用して ACL を無効にする場合、バケット ACL はバケット所有者にのみ完全制御を与える必要があります。バケット ACL は、外部 AWS アカウント または他のグループへのアクセスを許可できません。例えば、`CreateBucket` リクエストでバケット所有者の強制を設定し、外部 AWS アカウント へのアクセスを提供するバケット ACL を指定した場合、リクエストは `400` エラーで失敗し、InvalidBucketAclWithObjectOwnership エラーコードを返します。同様に、`PutBucketOwnershipControls` リクエストで他のユーザーにアクセス許可を付与するバケット ACL を持つバケットに対してバケット所有者の強制を設定すると、リクエストは失敗します。

**Example ：既存のバケット ACL は公開読み取りアクセスを許可します**  
例えば、既存のバケット ACL がパブリック読み取りアクセスを許可している場合、これらの ACL アクセス許可をバケットポリシーに移行し、バケット ACL をデフォルトのプライベート ACL にリセットするまで、オブジェクト所有権に[バケット所有者の強制] 設定を適用することはできません。詳細については、[ACL を無効にする前提条件。](object-ownership-migrating-acls-prerequisites.md) を参照してください。  
次のバケット ACL の例は、公開読み取りアクセスを許可します。  

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    },
    "Grants": [
        {
            "Grantee": {
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "Type": "Group",
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            },
            "Permission": "READ"
        }
    ]
}
```
次の例の `put-bucket-ownership-controls` AWS CLI コマンドは、オブジェクト所有権にバケット所有者の強制設定を適用します。  

```
aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls Rules=[{ObjectOwnership=BucketOwnerEnforced}]
```
バケット ACL は公開読み取りアクセスを許可するため、リクエストは失敗し、次のエラーコードを返します。  
PutBucketOwnershipControls オペレーションを呼び出すときにエラーが発生しました。(InvalidBucketAclWithObjectOwnership): バケットに ObjectOwnership の BucketOwnerEnforced 設定で ACL を設定することはできません