Amazon S3 작업 - Amazon Simple Storage Service

Amazon S3 작업

Amazon S3에서는 정책에서 지정할 수 있는 권한 집합을 정의합니다. 이것은 특정 Amazon S3 작업에 각각 매핑되는 키워드입니다. Amazon S3 작업에 대한 자세한 내용은 Amazon Simple Storage Service API Reference작업을 참조하십시오.

Amazon S3 정책에서 권한을 지정하는 방법을 보려면 다음 정책 예제를 검토하십시오. 정책에서 사용할 Amazon S3 작업, 리소스 및 조건 키 목록은 Amazon S3에 사용되는 작업, 리소스 및 조건 키 단원을 참조하십시오. Amazon S3 작업의 전체 목록은 작업을 참조하십시오.

다음 버킷 정책 예제에서는 사용자(Dave)에게 s3:PutObjects3:PutObjectAcl 권한을 부여합니다. Principal 요소를 제거하면 이 정책을 사용자에게 연결할 수 있습니다. 이러한 작업은 객체 작업입니다. 따라서 relative-id ARN Resource 부분은 객체(awsexamplebucket1/*)를 식별합니다. 자세한 내용은 Amazon S3 리소스 단원을 참조하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Dave" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }
모든 Amazon S3 작업에 대한 권한

와일드카드를 사용하여 전체 Amazon S3 작업에 대한 권한을 부여할 수 있습니다.

"Action": "*"

다음 사용자 정책 예제에서는 사용자에게 s3:CreateBucket, s3:ListAllMyBucketss3:GetBucketLocation 권한을 부여합니다. 이러한 모든 권한에 대해 Resource ARN의 relative-id 일부를 “*”로 설정합니다. 다른 모든 버킷 작업에 대해 버킷 이름을 지정해야 합니다. 자세한 내용은 Amazon S3 리소스 단원을 참조하십시오.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:CreateBucket", "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::*" ] } ] }
콘솔 액세스에 대한 정책

사용자가 AWS Management Console을 사용하여 버킷과 해당 버킷의 내용을 보려면 s3:ListAllMyBucketss3:GetBucketLocation 권한이 있어야 합니다. 이에 대한 예제는 블로그 게시물 IAM 정책 작성: S3 버킷에 대한 액세스를 허용하는 방법에서 콘솔 액세스 정책을 참조하십시오.

다음 사용자 정책은 사용자 Dave에게 s3:GetBucketAcl 버킷에 대한 DOC-EXAMPLE-BUCKET1 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1" ] } ] }
객체 권한 삭제

Amazon S3에서 객체의 수명이 만료되었을 때 이를 제거할 수 있도록 명시적으로 DELETE Object API를 호출하거나 해당 수명 주기(스토리지 수명 주기 관리 참조)를 구성하여 객체를 삭제할 수 있습니다. 객체를 삭제하지 못하도록 명시적으로 사용자 또는 계정을 차단하려면 이들에 대해 s3:DeleteObject, s3:DeleteObjectVersions3:PutLifecycleConfiguration 권한을 명시적으로 거부합니다.

명시적 거부

기본적으로 사용자에게는 아무 권한이 없습니다. 그러나 사용자를 만들고 그룹에 사용자를 추가하고 권한을 부여할 때 사용자에게 부여하지 않으려는 특정 권한이 부여될 수 있습니다. 그러한 권한 순환 고리를 끊기 위해 명시적 거부를 추가하여 더 강력한 액세스 정책을 작성할 수 있습니다.

앞의 버킷 정책은 s3:GetBucketAcl 권한 DOC-EXAMPLE-BUCKET1 버킷을 사용자 Dave에 부여합니다. 이 예에서는 사용자 Dave DELETE 객체 권한을 명시적으로 거부합니다. 명시적 거부는 이미 부여된 다른 모든 권한에 항상 우선합니다. 다음은 명시적 거부가 추가된 개정된 액세스 정책 예제입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] } ] }

다음 사용자 정책 예제에서는 사용자에게 s3:GetAccountPublicAccessBlock 권한을 부여합니다. 이러한 권한에 대해 Resource 값을 "*"로 설정합니다. 자세한 내용은 Amazon S3 리소스 단원을 참조하십시오.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }