ACL の設定
このセクションでは、アクセスコントロールリスト (ACL) を使用して S3 バケットとオブジェクトのアクセス許可を管理する方法について説明します。リソース ACL に許可を追加するには、AWS Management Console、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 の無効化。」を参照してください。
重要
バケットが S3 オブジェクト所有権のバケット所有者強制設定を使用している場合、ポリシーを使用してバケットとバケット中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、AccessControlListNotSupported
エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。
警告
すべてのユーザー (パブリックアクセス)または認証されたユーザーグループ (すべての AWS 認証ユーザー) のグループへの書き込みアクセスを許可しないことを強くお勧めします。これらのグループに書き込みアクセスを許可した場合の影響の詳細については、Amazon S3 の事前定義済みのグループ を参照してください。
コンソールには、重複した被付与者のアクセス権限がまとめて表示されます。ACL の全リストを表示するには、Amazon S3 REST API、AWS CLI、または AWS SDK を使用します。
次の表は、Amazon S3 コンソールでバケットに設定できる ACL アクセス権限を示しています。
コンソールのアクセス権限 | ACL アクセス許可 | アクセス |
---|---|---|
オブジェクト − リスト | READ |
被付与者がバケット内のオブジェクトをリストすることを許可します。 |
オブジェクト − 書き込み | WRITE |
被付与者がバケット内に新しいオブジェクトを作成できるようにします。既存のオブジェクトのバケット所有者およびオブジェクト所有者については、これらのオブジェクトの削除と上書きも許可します。 |
バケット ACL − 読み取り | READ_ACP |
被付与者がバケット ACL を読み込むことを許可します。 |
バケット ACL − 書き込み | WRITE_ACP |
被付与者が該当するバケットの ACL を書き込むことを許可します。 |
全員 (パブリックアクセス): オブジェクト − リスト | READ |
バケット内のオブジェクトに対するパブリック読み取りアクセス権を付与します。リストアクセス権を [Everyone (public access)] (全員 (パブリックアクセス)) に付与すると、世界中のユーザーがバケット内のオブジェクトにアクセスできます。 |
全員 (パブリックアクセス) : バケット ACL − 読み取り | READ_ACP |
バケット ACL のパブリック読み取りアクセス権を付与します。[Everyone (public access)] (全員 (パブリックアクセス)) に読み取りアクセス権を付与すると、世界中のユーザーがバケット ACL にアクセスできます。 |
ACL アクセス権限の詳細については、アクセスコントロールリスト (ACL) の概要 を参照してください。
重要
バケットが S3 オブジェクト所有権のバケット所有者強制設定を使用している場合、ポリシーを使用してバケットとバケット中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、AccessControlListNotSupported
エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。
バケットに ACL アクセス許可を設定する
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
[Buckets (バケット)] リストで、アクセス許可を設定するバケットの名前を選択します。
-
[Permissions] を選択します。
-
[アクセスコントロールリスト] で、[編集] を選択します。
バケットに対する次の ACL アクセス許可を編集できます。
オブジェクト
-
List (リスト) − 被付与者がバケット内のオブジェクトをリストすることを許可します
-
Write (書き込み) – 被付与者がバケット内に新しいオブジェクトを作成できるようにします。既存のオブジェクトのバケット所有者およびオブジェクト所有者については、これらのオブジェクトの削除と上書きも許可します。
S3 コンソールでは、S3 ログデリバリーグループとバケット所有者 (AWS アカウント) にのみ書き込みアクセスを許可できます。他の被付与者には、書き込みアクセスを許可しないことを強くお勧めします。ただし、書き込みアクセスを許可する必要がある場合は、AWS CLI、AWS SDK、または REST API を使用できます。
バケット ACL
-
Read (読み込み) − 被付与者がバケット ACL を読み込むことを許可します
-
Write (書き込み) − 被付与者が該当するバケットの ACL を書き込むことを許可します
-
-
バケット所有者の許可を変更するには、バケット所有者 (AWS アカウント)の横で、次の ACL アクセス権限を消去または選択します。
-
[Objects (オブジェクト)] − [List (リスト)] または [Write (書き込み)]
-
[Bucket ACL (バケット ACL)] – [Read (読み取り)] または [Write (書き込み)]
所有者とは、AWS アカウントのルートユーザーであり、AWS Identity and Access Management IAM ユーザーではありません。ルートユーザーの詳細については、IAM ユーザーガイドの「AWS アカウントのルートユーザー」を参照してください。
-
-
一般ユーザー (インターネット上のすべてのユーザー) のアクセス許可を付与または取り消すには、[Everyone (public access) (全員 (パブリックアクセス))] の横で、次の ACL アクセス許可をクリアまたは選択します。
-
[Objects (オブジェクト)] – [List (リスト)]
-
[Bucket ACL (バケット ACL)] – [Read (読み取り)]
警告
[全員] グループに S3 バケットへのパブリックアクセスを付与するときは注意が必要です。このグループにアクセスを付与すると、世界中のすべてのユーザーがバケットにアクセスできます。種類にかかわらず、S3 バケットへのパブリック書き込みアクセスは一切付与しないことを強くお勧めします。
-
-
AWS アカウント があれば誰でも許可を付与するか取り消すために、認証済みユーザーグループ (AWS アカウント があれば誰でも可) の横で、次の ACL アクセス権限を消去または選択します。
-
[Objects (オブジェクト)] – [List (リスト)]
-
[Bucket ACL (バケット ACL)] – [Read (読み取り)]
-
-
Amazon S3 がバケットにサーバーアクセスログを書き込むアクセス許可を付与または取り消すには、[S3 log delivery group (S3 ログ配信グループ)] で、次の ACL アクセス許可をクリアまたは選択します。
-
[Objects (オブジェクト)] – [List (リスト)] または [Write (書き込み)]
-
[Bucket ACL (バケット ACL)] – [Read (読み取り)] または [Write (書き込み)]
バケットがアクセスログを受け取るターゲットバケットとして設定されている場合、バケットのアクセス許可は [ログ配信] グループのバケットへの書き込みアクセスを許可する必要があります。バケット上のサーバアクセスログ記録を有効にすると、Amazon S3 コンソールは、[Log Delivery (ログ配信)] グループにログを受信することを選択したターゲットバケットへの書き込みアクセス権を付与します。サーバーアクセスログ記録の詳細については、「Amazon S3 サーバーアクセスログを有効にします。」を参照してください。
-
-
別の AWS アカウントへの許可を付与するには、次の手順を実行します。
-
[Add grantee (被付与者の追加)] を選択します。
-
[Grantee] (被付与者) ボックスに、他の AWS アカウント の正規 ID を入力します。
-
次の ACL アクセス許可から選択します。
-
[Objects (オブジェクト)] – [List (リスト)] または [Write (書き込み)]
-
[Bucket ACL (バケット ACL)] – [Read (読み取り)] または [Write (書き込み)]
-
警告
他の AWS アカウントに自分のリソースへのアクセスを許可した場合、その AWS アカウントはアカウント内のユーザーに許可を委任できることに注意してください。これはクロスアカウントアクセスと呼ばれています。クロスアカウントアクセスの使用については、IAM ユーザーガイドのIAM ユーザーにアクセス許可を委任するロールの作成を参照してください。
-
-
別の AWS アカウント へのアクセスを削除するには、他の AWS アカウント へのアクセスで、削除を選択します。
-
変更を保存するには、[変更の保存] を選択します。
コンソールには、重複した被付与者のアクセス権限がまとめて表示されます。ACL の全リストを表示するには、Amazon S3 REST API、AWS CLI、または AWS SDK を使用します。次の表に、Amazon S3 コンソールでオブジェクト用に設定できる ACL アクセス権限を示します。
コンソールのアクセス権限 | ACL アクセス許可 | アクセス |
---|---|---|
オブジェクト − 読み取り | READ |
被付与者がオブジェクトデータとそのメタデータを読み込むことを許可します。 |
オブジェクト ACL − 読み取り | READ_ACP |
被付与者がオブジェクト ACL を読み込むことを許可します。 |
オブジェクト ACL − 書き込み | WRITE_ACP |
被付与者が該当するオブジェクトの ACL を書き込むことを許可します |
ACL アクセス権限の詳細については、アクセスコントロールリスト (ACL) の概要 を参照してください。
重要
バケットが S3 オブジェクト所有権のバケット所有者強制設定を使用している場合、ポリシーを使用してバケットとバケット中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、AccessControlListNotSupported
エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。
オブジェクトに ACL アクセス権限を設定する
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
[Buckets] (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。
-
オブジェクトのリストで、アクセス許可を設定するオブジェクトの名前を選択します。
-
[Permissions] を選択します。
-
[アクセスコントロールリスト (ACL)] で、[編集] を選択します。
オブジェクトに対する次の ACL アクセス許可を編集できます。
オブジェクト
-
Read (読み込み) − 被付与者がオブジェクトデータとそのメタデータを読み込むことを許可します
オブジェクト ACL
-
読み込み (Read) − 被付与者がオブジェクト ACL を読み込むことを許可します
-
Write (書き込み) − 被付与者が該当するオブジェクトの ACL を書き込むことを許可します S3 コンソールでは、バケット所有者 (AWS アカウント) にのみ書き込みアクセスを許可できます。他の被付与者には、書き込みアクセスを許可しないことを強くお勧めします。ただし、書き込みアクセスを許可する必要がある場合は、AWS CLI、AWS SDK、または REST API を使用できます。
-
-
以下のオブジェクトのアクセス許可を管理できます。
-
オブジェクト所有者へのアクセス
所有者とは、AWS アカウントのルートユーザーであり、AWS Identity and Access Management IAM ユーザーではありません。ルートユーザーの詳細については、IAM ユーザーガイドの「AWS アカウントのルートユーザー」を参照してください。
所有者のオブジェクトアクセス許可を変更するには、オブジェクト所有者へのアクセスで、お客様の AWS アカウント (所有者) を選択します。
変更するアクセス許可のチェックボックスをオンにして、[保存] を選択します。
-
その他の AWS アカウントのアクセス
別の AWS から AWS アカウント ユーザーに許可を与えるには、他の AWS アカウント へのアクセスで、アカウントの追加を選択します。[Enter an ID] (ID の入力) フィールドに、オブジェクトのアクセス許可を付与する AWS ユーザーの正規 ID を入力します。正規 ID の検索に関する詳細は、Amazon Web Services 全般のリファレンス の「AWS アカウント 識別子」を参照してください。最大 99 人のユーザーを追加できます。
ユーザーに付与するアクセス許可のチェックボックスをオンにして、[保存] を選択します。アクセス許可についての情報を表示するには、ヘルプアイコンを選択します。
-
パブリックアクセス
オブジェクトへのアクセスを一般のユーザー (世界中のすべてのユーザー) に許可するには、[パブリックアクセス] で [全員] を選択します。パブリックアクセス許可を付与すると、世界中の誰でもオブジェクトにアクセスできるようになります。
付与するアクセス許可のチェックボックスをオンにして、[保存] を選択します。
警告
-
[Everyone (全員)] グループに Amazon S3 オブジェクトへの匿名アクセスを付与するときは注意が必要です。このグループにアクセスを付与すると、世界中のすべてのユーザーがオブジェクトにアクセスできます。すべてのユーザーにアクセスを付与する必要がある場合は、[Read objects (オブジェクトの読み取り)] のみのアクセス許可を付与することを強くお勧めします。
-
[全員] グループにオブジェクト書き込み許可は付与しないことを強くお勧めします。付与すると、すべてのユーザーに対して、オブジェクトの ACL アクセス許可を上書きすることが許可されます。
-
-
このセクションでは、バケットやオブジェクトでアクセスコントロールリスト (ACL) の付与を設定する方法の例を示します。
重要
バケットが S3 オブジェクト所有権のバケット所有者強制設定を使用している場合、ポリシーを使用してバケットとバケット中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、AccessControlListNotSupported
エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。
Amazon S3 API を使用して、バケットまたはオブジェクトの作成時に、ACL を設定できます。Amazon S3 では、既存のバケットまたはオブジェクトに ACL を設定する API も提供します。これらの API は ACL を設定する次のメソッドを提供します。
-
リクエストヘッダーを使用した ACL の設定 − リソース (バケットまたはオブジェクト) を作成するリクエストを送るときに、リクエストヘッダーを使用して ACL を設定します。これらのヘッダーを使用して、既定 ACL を指定するか、許可を明示的に指定 (被付与者とアクセス許可を明示的に識別) します。
-
リクエストボディを使用した ACL の設定 − 既存のリソースに ACL を設定するリクエストを送信するときに、リクエストのヘッダーまたはボディを使用して ACL を設定できます。
REST API での ACL の管理のサポートの詳細については、Amazon Simple Storage Service API リファレンスの以下のセクションを参照してください。
重要
バケットが S3 オブジェクト所有権のバケット所有者強制設定を使用している場合、ポリシーを使用してバケットとバケット中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、AccessControlListNotSupported
エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。
アクセスコントロールリスト (ACL) 固有の要求ヘッダー
ヘッダーを使用して、アクセスコントロールリスト (ACL) ベースのアクセス許可を付与できます。デフォルトでは、すべてのオブジェクトがプライベートです。所有者だけがフルアクセスコントロールを持っています。新しいオブジェクトを追加するときに、個々の AWS アカウントに、または Amazon S3 であらかじめ定義されたグループに許可を付与できます。これらのアクセス許可は、オブジェクトのアクセスコントロールリスト (ACL) に追加されます。詳細については、アクセスコントロールリスト (ACL) の概要 を参照してください。
この操作では、次の 2 つの方法のいずれかを使用してアクセス許可を付与できます。
-
既定 ACL (
x-amz-acl
) — Amazon S3 は、既定 ACL と呼ばれる、あらかじめ定義された一連の ACL をサポートしています。各既定 ACL には、あらかじめ定義された一連の被付与者とアクセス権限が含まれています。詳細については、既定 ACL を参照してください。 -
アクセス許可 — 特定の AWS アカウント またはグループにアクセス許可を明示的に付与するには、次のヘッダーを使用します。各ヘッダーは、Amazon S3 が ACL でサポートする特定のアクセス許可にマッピングされます。詳細については、アクセスコントロールリスト (ACL) の概要 を参照してください。ヘッダーでは、特定のアクセス許可を取得する被付与者のリストを指定します。
-
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 を使用した ACL の管理の詳細については、AWS CLI Command Reference の put−bucket−acl
重要
バケットが S3 オブジェクト所有権のバケット所有者強制設定を使用している場合、ポリシーを使用してバケットとバケット中のオブジェクトへのアクセスを許可する必要があります。バケット所有者強制設定が有効になっている場合、アクセスコントロールリスト (ACL) の設定または ACL の更新は失敗し、AccessControlListNotSupported
エラーコードが返されます。ACL の読み取り要求は引き続きサポートされています。