チュートリアル: ポリシーを使用した Amazon S3 リソースへのアクセスの管理
このトピックでは、Amazon S3 リソースへのアクセスの付与について、次の基本的なチュートリアル例を示します。これらの例では、AWS Management Console を使用してリソース (バケット、オブジェクト、ユーザー) を作成し、アクセス許可を付与します。また、これらの例では、コマンドラインツールを使用してアクセス許可を確認する方法を示します。コードを記述する必要はありません。AWS Command Line Interface (AWS CLI) と AWS Tools for Windows PowerShell の両方を使用したコマンドを使用することができます。
-
例 1: バケット所有者がユーザーにバケットのアクセス許可を付与する
デフォルトでは、使用するアカウントで作成した IAM ユーザーにアクセス許可はありません。この演習では、バケットおよびオブジェクト操作を実行するためのアクセス許可をユーザーに付与します。
-
例 2: バケット所有者がクロスアカウントのバケットのアクセス許可を付与する
この演習では、バケット所有者 (アカウント A) が別の AWS アカウント (アカウント B) に対してクロスアカウントの許可を付与します。次に、アカウント B でこれらの許可を、そのアカウントのユーザーに委任します。
-
オブジェクト所有者とバケット所有者が同じではない場合のオブジェクトのアクセス許可の管理
このシナリオ例は、バケット所有者が他のユーザーにオブジェクトのアクセス許可を付与しますが、バケット内のすべてのオブジェクトをバケット所有者が所有しているわけではないという場合です。バケット所有者にはどのようなアクセス許可が必要になり、それらのアクセス許可をどのように委任できるのでしょうか。
バケットを作成する AWS アカウント は、バケット所有者と呼ばれます。この所有者は、オブジェクトをアップロードする許可を他の AWS アカウントに付与することができ、オブジェクトを作成する AWS アカウントがオブジェクトを所有しています。バケット所有者には、他の AWS アカウントで作成されたオブジェクトに対する許可はありません。バケット所有者がオブジェクトへのアクセス権を付与するバケットポリシーを作成する場合、そのポリシーは他のアカウントが所有するオブジェクトには適用されません。
この場合、オブジェクト所有者は、オブジェクト ACL を使用して、まずバケット所有者にアクセス許可を付与する必要があります。バケット所有者は、以下の例に示すように、これらのオブジェクトの許可を、他のユーザー、自分のアカウントのユーザー、または別の AWS アカウントに委任できます。
-
例 3: バケット所有者が自分の所有していないオブジェクトに対するアクセス許可を付与する
この演習では、バケット所有者は最初にオブジェクト所有者からアクセス許可を取得します。次に、バケット所有者は、自分のアカウントのユーザーにそのアクセス許可を委任します。
-
例 4 - バケット所有者が所有権のないオブジェクトへのクロスアカウントアクセス許可を付与する
オブジェクトの所有者からアクセス許可を取得した後も、クロスアカウントの委任がサポートされていないため、バケット所有者は他の AWS アカウント にアクセス許可を委任できません (「アクセス許可の委任」を参照)。代わりに、バケット所有者は、特定のオペレーション (オブジェクトの取得など) を実行する許可を持つ IAM ロールを作成し、別の AWS アカウントがそのロールを引き受けることを許可できます。このロールを引き受けるすべてのユーザーがオブジェクトにアクセスできます。この例では、バケット所有者が IAM ロールを使用してこのクロスアカウントの委任を有効にする方法を示します。
-
チュートリアル例を実行する前に
これらの例では、AWS Management Console を使用してリソースを作成し、アクセス許可を付与します。許可をテストするために、この例ではコマンドラインツール AWS CLI および AWS Tools for Windows PowerShell を使用するため、コードを書く必要はありません。アクセス許可をテストするには、これらのツールのいずれかをセットアップする必要があります。詳細については、「チュートリアル用のツールのセットアップ」を参照してください。
さらに、これらの例では、リソースの作成時に AWS アカウントのルートユーザー認証情報を使用しません。代わりに、アカウントに、これらのタスクを実行するための管理者ユーザーを作成します。
管理者ユーザーを使用したリソースの作成とアクセス許可の付与について
AWS Identity and Access Management (IAM) では、AWS アカウントのルートユーザー認証情報を使用してリクエストを行わないようお勧めします。代わりに、IAM ユーザーまたはロールを作成してフルアクセスを許可し、そのユーザーまたはロールの認証情報を使用してリクエストを行います。このユーザーを管理者ユーザーまたはロールと呼びます。詳細については、AWS 全般のリファレンス の「AWS アカウントのルートユーザー の認証情報と IAM ID」と IAM ユーザーガイドの「IAM のベストプラクティス」を参照してください。
このセクションのすべてのチュートリアル例では、管理者ユーザーの認証情報を使用します。まだ AWS アカウントの管理者ユーザーを作成していない場合は、トピックでその方法を説明します。
ユーザーの認証情報を使用して AWS Management Console にサインインするには、IAM ユーザーのサインイン URL を使用する必要があります。IAM コンソール