태그 지정 및 액세스 제어 정책 - Amazon Simple Storage Service

태그 지정 및 액세스 제어 정책

또한 권한 정책(버킷 및 사용자 정책)을 사용하여 객체 태그 지정과 관련된 권한을 관리할 수 있습니다. 정책 작업에 대해서는 다음 주제를 참조하십시오.

객체 태그를 통해 권한 관리에 대한 액세스 제어를 세부적으로 수행할 수 있습니다. 객체 태그를 바탕으로 조건적인 권한을 부여할 수 있습니다. Amazon S3에서는 객체 태그 기반의 조건부 권한을 부여하는 데 사용할 수 있는 다음과 같은 조건 키를 지원합니다.

  • s3:ExistingObjectTag/<tag-key> - 이 조건 키를 사용하여 기존 객체 태그에 특정 태그 키 및 값이 있다는 것을 확인합니다.

    참고

    PUT ObjectDELETE Object 작업에 대한 권한을 부여할 때 이 조건 키는 지원되지 않습니다. 즉 기존 태그에 기반을 둔 객체를 삭제 또는 덮어쓸 수 있는 권한을 사용자에게 부여하거나 거부할 수 있는 정책을 생성할 수 없습니다.

  • s3:RequestObjectTagKeys - 이 조건을 사용하여 객체에 대해 허용하고자 하는 태그 키를 제한합니다. 이것은 PutObjectTagging 및 PutObject, 그리고 POST 객체 요청을 사용하여 객체에 태그를 붙일 때 유용합니다.

  • s3:RequestObjectTag/<tag-key> - 이 조건을 사용하여 객체에 대해 허용하고자 하는 태그 키 및 값을 제한합니다. 이것은 PutObjectTagging 및 PutObject, 그리고 POST Bucket 요청을 사용하여 객체에 태그를 붙일 때 유용합니다.

Amazon S3 서비스별 조건 키 전체 목록은 Amazon S3 조건 키 예 단원을 참조하세요. 다음 권한 정책들은 객체 태그 지정을 통해 어떻게 세부적인 액세스 권한 관리가 가능한지 보여줍니다.

예 1: 사용자가 특정 태그가 있는 객체만 읽도록 허용

다음 권한 정책은 객체를 읽을 수 있는 권한을 사용자에게 부여하지만, 해당 조건으로 인해 읽기 권한은 다음과 같은 특정 태그 키 및 값이 있는 객체로 제한됩니다.

security : public

이 정책은 Amazon S3 조건 키 s3:ExistingObjectTag/<tag-key>를 사용하여 키 및 값을 지정한다는 점에 유의하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Principal": "*", "Condition": { "StringEquals": {"s3:ExistingObjectTag/security": "public" } } } ] }

예 2: 사용자가 객체 태그를 붙일 수 있게 하되, 허용되는 태그 키에 제한을 둠

다음 권한 정책은 사용자에게 s3:PutObjectTagging 작업을 수행할 수 있는 권한을 부여합니다. 이에 따라 사용자는 기존 객체에 태그를 붙일 수 있습니다. 이 조건은 사용자가 사용하도록 허용된 태그 키를 제한합니다. 이 조건은 s3:RequestObjectTagKeys 조건 키를 사용하여 태그 키 세트를 지정합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "CanonicalUser":[ "64-digit-alphanumeric-value" ] }, "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

이 정책은 요청에 지정된 경우, 태그 세트에 지정된 키가 있는지 확인합니다. 사용자는 PutObjectTagging에 빈 태그 세트를 전송할 수 있습니다. 이는 이 정책에 의해 허용됩니다(요청의 빈 태그 세트는 객체의 기존 태그를 제거함). 사용자가 태그 세트를 제거하지 못하도록 하려면 다른 조건을 추가하여 사용자가 최소한 1개의 값을 제공하도록 할 수 있습니다. 조건 내의 ForAnyValue는 지정된 값 중 최소한 1개가 요청에 반드시 있도록 보장합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "AWS":[ "arn:aws:iam::account-number-without-hyphens:user/username" ] }, "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] }, "ForAnyValue:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

자세한 내용은 IAM 사용 설명서여러 키 값을 테스트하는 조건 생성(설정 작업)을 참조하세요.

예 3: 사용자가 특정 태그 키 및 값이 포함된 객체 태그를 붙일 수 있게 허용

다음 사용자 정책은 사용자에게 s3:PutObjectTagging 작업을 수행할 수 있는 권한을 부여합니다. 이에 따라 사용자는 기존 객체에 태그를 붙일 수 있습니다. 이 조건은 사용자에게 Project로 설정된 값을 지닌 특정 태그(X)를 포함하도록 요구합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "AWS":[ "arn:aws:iam::account-number-without-hyphens:user/username" ] }, "Condition": { "StringEquals": { "s3:RequestObjectTag/Project": "X" } } } ] }