메뉴
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 Management Console에서 수행됩니다. 권한을 확인하기 위해 본 연습에서는 명령줄 도구, AWS 명령줄 인터페이스 및 Windows PowerShell용 AWS 도구를 사용합니다. 따라서 사용자가 코드를 작성할 필요가 없습니다.

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 Management Console. 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 Management Console에 로그인하고 다음을 수행합니다.

  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의 자격 증명을 사용하여 권한이 작동하는지 확인하십시오. 다음 두 가지 절차 중 하나를 사용할 수 있습니다.

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