메뉴
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. AWS 계정이 있으며 이 계정에 관리자 권한이 있는 사용자가 있는지 확인합니다.

    1. 필요한 경우 계정에 가입합니다. 이 계정을 계정 A라고 합니다.

      1. https://aws.amazon.com/s3로 이동하여 [Sign Up]을 클릭합니다.

      2. 화면에 나타나는 지시를 따릅니다.

        계정이 활성화되고 사용 가능한 상태가 되면 AWS에서 사용자에게 이메일로 알립니다.

    2. 계정 A에서 관리자 사용자인 AccountAadmin을 만듭니다. 계정 A의 자격 증명을 사용하여 IAM 콘솔에 로그인하고 다음을 수행합니다.

      1. 사용자 AccountAadmin을 만들고 사용자 보안 자격 증명을 적어 둡니다.

        지침은 IAM 사용 설명서AWS 계정의 IAM 사용자 생성 단원을 참조하십시오.

      2. 모든 권한을 제공하는 사용자 정책을 연결하여 AccountAadmin 관리자에게 권한을 부여합니다.

        지침은 IAM 사용 설명서정책 작업 단원을 참조하십시오.

      3. AccountAadmin의 [IAM User Sign-In URL]을 적어 둡니다. AWS Management Console에 로그인할 때 이 URL을 사용해야 합니다. 이 URL을 찾을 수 있는 위치에 대한 자세한 내용은 IAM 사용 설명서사용자의 계정 로그인 방법 단원을 참조하십시오. 각 계정의 URL을 적어 둡니다.

  2. AWS 명령행 인터페이스(CLI)나 Windows PowerShell용 AWS 도구를 설정합니다. 관리자 사용자 자격 증명은 다음과 같이 저장합니다.

    • AWS CLI를 사용하는 경우 구성 파일에서 AccountAadmin과 AccountBadmin이라는 두 프로파일을 만듭니다.

    • Windows PowerShell용 AWS 툴을 사용하는 경우, 세션의 자격 증명을 AccountAadmin과 AccountBadmin으로 저장해야 합니다.

    지침은 예제 안내를 위한 도구 설정을 참조하십시오.

1단계: 계정 A에서 리소스(버킷 및 IAM 사용자)를 만들고 권한 부여

계정 A의 사용자 AccountAadmin에 대한 자격 증명과 특정 IAM 사용자 로그인 URL을 사용하여 AWS Management Console에 로그인하고 다음을 수행합니다.

  1. 리소스(버킷 및 IAM 사용자) 만들기

    1. Amazon S3 콘솔에서 버킷을 만듭니다. 버킷을 만든 AWS 리전을 적어 둡니다. 지침은 S3 버킷을 생성하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

    2. IAM 콘솔에서 다음을 수행합니다.

      1. 사용자 Dave를 만듭니다.

        이에 관한 지침은 IAM 사용 설명서IAM 사용자 만들기(AWS Management Console) 단원을 참조하십시오.

      2. UserDave 자격 증명을 적어 둡니다.

      3. 사용자 Dave의 Amazon 리소스 이름(ARN)을 적어 둡니다. IAM 콘솔에서 해당 사용자를 선택하면 [Summary] 탭에 사용자 ARN이 제공됩니다.

  2. 권한 부여

    버킷 소유자와 사용자가 속한 상위 계정이 같기 때문에 AWS 계정이 버킷 정책, 사용자 정책 또는 둘 다를 사용하여 사용자에게 권한을 부여할 수 있습니다. 이 예제에서는 둘 다를 사용합니다. 같은 계정이 객체를 소유하는 경우 버킷 소유자가 버킷 정책 또는 IAM 정책에서 객체 권한을 부여할 수 있습니다.

    1. Amazon S3 콘솔에서 examplebucket에 다음 버킷 정책을 연결합니다.

      이 정책에는 두 설명문이 있습니다.

      • 첫 번째 설명문은 Dave에게 버킷 작업 권한인 s3:GetBucketLocations3:ListBucket을 부여합니다.

      • 두 번째 설명문은 s3:GetObject 권한을 부여합니다. 계정 A가 객체도 소유하기 때문에 계정 관리자가 s3:GetObject 권한을 부여할 수 있습니다.

      Principal 설명문에서 Dave는 해당 사용자 ARN으로 식별됩니다. 정책 요소에 대한 자세한 내용은 액세스 정책 언어 개요를 참조하십시오.

      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. 다음 정책을 사용하여 사용자 Dave에 대한 인라인 정책을 만듭니다. 이 정책은 Dave에게 s3:PutObject 권한을 부여합니다. 버킷 이름을 제공하여 정책을 업데이트해야 합니다.

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

      지침은 IAM 사용 설명서인라인 정책 작업 단원을 참조하십시오. 계정 B의 자격 증명을 사용하여 콘솔에 로그인해야 합니다.

2단계: 권한 테스트

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

AWS CLI를 사용하여 테스트

  1. 다음 UserDaveAccountA 프로파일을 추가하여 AWS CLI 구성 파일을 업데이트합니다. 자세한 내용은 예제 안내를 위한 도구 설정을 참조하십시오.

    Copy
    [profile UserDaveAccountA] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. Dave가 사용자 정책에서 권한을 부여 받은 작업을 수행할 수 있는지 확인합니다. 다음 AWS CLI put-object 명령을 사용하여 샘플 객체를 업로드합니다.

    명령의 --body 파라미터를 통해 업로드할 원본 파일이 식별됩니다. 예를 들어, 파일이 Windows 시스템의 C: 드라이브 루트에 있는 경우 c:\HappyFace.jpg를 지정합니다. --key 파라미터는 객체의 키 이름을 제공합니다.

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

    다음 AWS CLI 명령을 실행하여 객체를 가져옵니다.

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

Windows PowerShell용 AWS 도구를 사용하여 테스트

  1. Dave의 자격 증명을 AccountADave로 저장합니다. 그런 다음 이러한 자격 증명을 사용하여 객체에 대해 PUT 및 GET을 실행합니다.

    Copy
    set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountADave
  2. 사용자 Dave의 저장된 자격 증명을 사용하여 Windows PowerShell용 AWS 도구의 Write-S3Object 명령을 통해 샘플 객체를 업로드합니다.

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

    이전에 업로드한 객체를 다운로드합니다.

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