メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

例 1: バケット所有者がユーザーにバケットのアクセス許可を付与

この演習では、AWS アカウントがバケットを所有し、アカウントに IAM ユーザーが存在します。ユーザーはデフォルトでは何のアクセス許可も持ちません。ユーザーが何らかのタスクを実行するには、親アカウントがそのためのアクセス許可をユーザーに付与する必要があります。バケット所有者とユーザーが属する親アカウントは同じです。したがって、AWS アカウントは、バケットポリシー、ユーザーポリシー、またはその両方を使用して、バケットへのアクセス許可をユーザーに付与できます。一部のアクセス許可はバケットポリシーを使用し、他のアクセス許可はユーザーポリシーを使用して付与します。

手順の概要を以下に示します。

  1. アカウント管理者は、ユーザーに一連のアクセス許可を付与するバケットポリシーを作成します。

  2. アカウント管理者は、ユーザーポリシーをユーザーにアタッチして、追加のアクセス許可を付与します。

  3. これによりユーザーは、バケットポリシーとユーザーポリシーの両方を通じて付与されているアクセス許可を使用できます。

この例では、AWS アカウントが必要です。アカウントのルート認証情報を使用する代わりに、管理者ユーザーを作成します(「管理者ユーザーを使用したリソースの作成とアクセス許可の付与について」を参照してください)。AWS アカウントと管理者ユーザーは次のように呼ばれます。

アカウント ID アカウントの呼び方 アカウントの管理者ユーザー

1111-1111-1111

アカウント A

AccountAadmin

ユーザーを作成し、アクセス許可を付与するためのすべてのタスクは、AWS マネジメントコンソール で実行します。この説明では、アクセス許可を確認するために、コマンドラインツールの AWS コマンドラインインターフェイス(CLI)と AWS Tools for Windows PowerShell を使用するので、コードを作成する必要はありません。

ステップ 0: チュートリアルに関する準備を行う

  1. Make sure you have an AWS account and that it has a user with administrator privileges.

    1. Sign up for an account, if needed. We refer to this account as Account A.

      1. Go to https://aws.amazon.com/s3 and click Sign Up.

      2. Follow the on-screen instructions.

        AWS will notify you by email when your account is active and available for you to use.

    2. In Account A, create an administrator user AccountAadmin. Using Account A credentials, sign in to the IAM console and do the following:

      1. Create user AccountAadmin and note down the user security credentials.

        For instructions, see Creating an IAM User in Your AWS Account in the IAM ユーザーガイド.

      2. Grant AccountAadmin administrator privileges by attaching a user policy giving full access.

        For instructions, see Working with Policies in the IAM ユーザーガイド.

      3. Note down the IAM User Sign-In URL for AccountAadmin. You will need to use this URL when signing in to the AWS マネジメントコンソール. For more information about where to find it, see How Users Sign in to Your Account in IAM ユーザーガイド. Note down the URL for each of the accounts.

  2. Set up either the AWS Command Line Interface (CLI) or the AWS Tools for Windows PowerShell. Make sure you save administrator user credentials as follows:

    • If using the AWS CLI, create two profiles, AccountAadmin and AccountBadmin, in the config file.

    • If using the AWS Tools for Windows PowerShell, make sure you store credentials for the session as AccountAadmin and AccountBadmin.

    For instructions, see チュートリアル例のツールのセットアップ.

ステップ 1: アカウント A にリソース(バケットと IAM ユーザー)を作成し、アクセス許可を付与

アカウント A のユーザー AccountAadmin の認証情報と、IAM ユーザー専用のサインイン URL を使用して、AWS マネジメントコンソール にサインインし、次の操作を行います。

  1. Create Resources (a bucket and an IAM user)

    1. In the Amazon S3 console create a bucket. Note down the AWS region in which you created it. For instructions, see How Do I Create an S3 Bucket? in the Amazon Simple Storage Service コンソールユーザーガイド.

    2. In the IAM console, do the following:

      1. Create a user, Dave.

        For instructions, see Creating IAM Users (AWS Management Console) in the IAM ユーザーガイド.

      2. Note down the UserDave credentials.

      3. Note down the Amazon Resource Name (ARN) for user Dave. In the IAM console, select the user, and the Summary tab provides the user ARN.

  2. Grant Permissions.

    Because the bucket owner and the parent account to which the user belongs are the same, the AWS account can grant user permissions using a bucket policy, a user policy, or both. In this example, you do both. If the object is also owned by the same account, the bucket owner can grant object permissions in the bucket policy (or an IAM policy).

    1. In the Amazon S3 console, attach the following bucket policy to examplebucket.

      The policy has two statements.

      • The first statement grants Dave the bucket operation permissions s3:GetBucketLocation and s3:ListBucket.

      • The second statement grants the s3:GetObject permission. Because Account A also owns the object, the account administrator is able to grant the s3:GetObject permission.

      In the Principal statement, Dave is identified by his user ARN. For more information about policy elements, see アクセスポリシー言語の概要.

      Copy
      { "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::examplebucket" ] }, { "Sid": "statement2", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ] } ] }
    2. Create an inline policy for the user Dave by using the following policy. The policy grants Dave the s3:PutObject permission. You need to update the policy by providing your bucket name.

      Copy
      { "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionForObjectOperations", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ] } ] }

      For instructions, see Working with Inline Policies in the IAM ユーザーガイド. Note you need to sign in to the console using Account B credentials.

ステップ 2: アクセス許可のテスト

Dave の認証情報を使用して、アクセス許可が機能することを確認します。次の 2 つの手順のいずれかを使用できます。

Test Using the AWS CLI

  1. Update the AWS CLI config file by adding the following UserDaveAccountA profile. For more information, see チュートリアル例のツールのセットアップ.

    Copy
    [profile UserDaveAccountA] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. Verify that Dave can perform the operations as granted in the user policy. Upload a sample object using the following AWS CLI put-object command.

    The --body parameter in the command identifies the source file to upload. For example, if the file is in the root of the C: drive on a Windows machine, you specify c:\HappyFace.jpg. The --key parameter provides the key name for the object.

    Copy
    aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body HappyFace.jpg --profile UserDaveAccountA

    Execute the following AWS CLI command to get the object.

    Copy
    aws s3api get-object --bucket examplebucket --key HappyFace.jpg OutputFile.jpg --profile UserDaveAccountA

Test Using the AWS Tools for Windows PowerShell

  1. Store Dave's credentials as AccountADave. You then use these credentials to PUT and GET an object.

    Copy
    set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountADave
  2. Upload a sample object using the AWS Tools for Windows PowerShell Write-S3Object command using user Dave's stored credentials.

    Copy
    Write-S3Object -bucketname examplebucket -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountADave

    Download the previously uploaded object.

    Copy
    Read-S3Object -bucketname examplebucket -key HappyFace.jpg -file Output.jpg -StoredCredentials AccountADave