Amazon S3 버킷의 특정 폴더에 사용자 액세스 권한을 부여하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 4월 17일

Amazon Simple Storage Service(Amazon S3) 버킷의 특정 폴더에 AWS Identity and Access Management(IAM) 사용자 액세스 권한을 부여하려고 합니다. 어떻게 해야 합니까? 

​해결 방법

IAM 정책을 사용하여 폴더에 사용자 액세스 권한을 부여하고 사용자가 폴더에서 수행할 수 있는 Amazon S3 작업을 지정합니다. 예를 들어, 다음 IAM 정책에서는 사용자가 Amazon S3 콘솔을 사용하여 awsexamplebucket/media 폴더에서 객체를 다운로드하도록 허용합니다. 정책에는 다음 명령문이 포함됩니다.

  • AllowStatement1은 사용자의 AWS 계정에 속하는 버킷을 나열하도록 허용합니다. 콘솔을 사용하여 버킷으로 이동할 수 있으려면 사용자에게 이 권한이 필요합니다.
  • AllowStatement2Aawsexamplebucket 내 폴더를 나열하도록 허용합니다. 콘솔을 사용하여 폴더로 이동할 수 있으려면 사용자에게 이 권한이 필요합니다. 이 명령문을 포함하면 콘솔을 사용하여 접두사 media/를 검색할 수도 있습니다.
  • AllowStatement3awsexamplebucket/media 내 콘텐츠를 나열하도록 허용합니다.
  • AllowStatement4Aawsexamplebucket/media 폴더에서 객체(s3:GetObject)를 다운로드하도록 허용합니다.
{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Sid": "AllowStatement1",
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
  {
     "Sid": "AllowStatement2A",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringEquals":{"s3:prefix":["","media"]}}
    },
  {
     "Sid": "AllowStatement3",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringLike":{"s3:prefix":["media/*"]}}
    },    
   {
     "Sid": "AllowStatement4A",
     "Effect": "Allow",
     "Action": ["s3:GetObject"],
     "Resource": ["arn:aws:s3:::awsexamplebucket/media/*"]
   }
 ]
}

또 다른 예제로, 다음 IAM 정책은 콘솔이나 AWS 명령줄 인터페이스(AWS CLI) 또는 Amazon S3 API와 같은 프로그래밍 방법을 사용하여 awsexamplebucket/media 폴더에서 모든 Amazon S3 작업에 대한 사용자 액세스 권한을 부여합니다. 이전 IAM 정책과의 차이점은 다음과 같습니다.

  • AllowStatement2B"s3:delimiter":["/"]를 포함합니다. 이 명령문은 객체에 대한 경로 안에서 폴더의 구분 기호로 슬래시 문자(/)를 지정합니다. Amazon S3 API 또는 AWS CLI를 사용하여 요청을 제출하는 경우 사용자가 구분 기호를 지정하는 것이 모범 사례입니다.
  • AllowStatement4Bawsexamplebucket/media 폴더에서 모든 객체 수준 작업을 수행하도록 허용합니다.
{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Sid": "AllowStatement1",
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
  {
     "Sid": "AllowStatement2B",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringEquals":{"s3:prefix":["","media"],"s3:delimiter":["/"]}}
    },
  {
     "Sid": "AllowStatement3",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringLike":{"s3:prefix":["media/*"]}}
    },
   {
     "Sid": "AllowStatement4B",
     "Effect": "Allow",
     "Action": ["s3:*"],
     "Resource": ["arn:aws:s3:::awsexamplebucket/media/*"]
   }
 ]
}

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?