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

최종 업데이트 날짜: 2020년 11월 5일

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

해결 방법

IAM 사용자와 S3 버킷이 동일한 AWS 계정에 속한 경우 IAM 정책을 사용하여 사용자에게 특정 버킷 폴더에 대한 액세스 권한을 부여할 수 있습니다. 버킷 정책이 폴더에 대한 사용자 액세스를 명시적으로 거부하지 않는 한, IAM 정책에 의해 액세스가 부여된 경우 버킷 정책을 업데이트할 필요가 없습니다. IAM 정책을 개별 IAM 사용자에게 추가하거나 여러 사용자가 전환할 수 있는 IAM 역할에 IAM 정책을 연결할 수 있습니다.

IAM 자격 증명(사용자 또는 역할)과 S3 버킷이 서로 다른 AWS 계정에 속하는 경우 IAM 정책과 버킷 정책 모두에 대한 액세스 권한을 부여해야 합니다. 교차 계정 액세스에 대한 자세한 내용은 다른 AWS 계정의 사용자에게 내 Amazon S3 버킷에 객체를 업로드할 수 있는 액세스 권한을 부여하려면 어떻게 해야 합니까?를 참조하세요.

다음 IAM 정책 예제에서는 사용자가 Amazon S3 콘솔을 사용하여 DOC-EXAMPLE-BUCKET/media 폴더에서 객체를 다운로드하도록 허용합니다. 정책에는 다음 명령문이 포함됩니다.

  • AllowStatement1은 사용자의 AWS 계정에 속하는 버킷을 나열하도록 허용합니다. 콘솔을 사용하여 버킷으로 이동할 수 있으려면 사용자에게 이 권한이 필요합니다.
  • AllowStatement2ADOC-EXAMPLE-BUCKET 내 폴더를 나열하도록 허용합니다. 콘솔을 사용하여 폴더로 이동할 수 있으려면 사용자에게 이 권한이 필요합니다. 이 명령문을 포함하면 콘솔을 사용하여 접두사 media/를 검색할 수도 있습니다.
  • AllowStatement3DOC-EXAMPLE-BUCKET/media 내 콘텐츠를 나열하도록 허용합니다.
  • AllowStatement4A는 사용자가 DOC-EXAMPLE-BUCKET/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:::DOC-EXAMPLE-BUCKET"],
     "Condition":{"StringEquals":{"s3:prefix":["","media"]}}
    },
  {
     "Sid": "AllowStatement3",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET"],
     "Condition":{"StringLike":{"s3:prefix":["media/*"]}}
    },    
   {
     "Sid": "AllowStatement4A",
     "Effect": "Allow",
     "Action": ["s3:GetObject"],
     "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/media/*"]
   }
 ]
}

또 다른 예제로, 다음 IAM 정책은 사용자가 콘솔이나 AWS 명령줄 인터페이스(AWS CLI) 또는 Amazon S3 API와 같은 프로그래밍 방법을 사용하여 DOC-EXAMPLE-BUCKET/media 폴더에 객체를 다운로드 및 업로드할 수 있도록 허용합니다. 이전 IAM 정책과의 차이점은 다음과 같습니다.

  • AllowStatement2B"s3:delimiter":["/"]를 포함합니다. 이 명령문은 객체에 대한 경로 안에서 폴더의 구분 기호로 슬래시 문자(/)를 지정합니다. Amazon S3 API 또는 AWS CLI를 사용하여 요청을 제출하는 경우 사용자가 구분 기호를 지정하는 것이 모범 사례입니다.
  • AllowStatement4B는 사용자가 (s3:GetObject)를 다운로드하고 (s3:PutObject) 객체를 DOC-EXAMPLE-BUCKET/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:::DOC-EXAMPLE-BUCKET"],
     "Condition":{"StringEquals":{"s3:prefix":["","media"],"s3:delimiter":["/"]}}
    },
  {
     "Sid": "AllowStatement3",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET"],
     "Condition":{"StringLike":{"s3:prefix":["media/*"]}}
    },
   {
     "Sid": "AllowStatement4B",
     "Effect": "Allow",
     "Action": ["s3:GetObject", "s3:PutObject"],
     "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/media/*"]
   }
 ]
}

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?