S3 일반 목적 버킷에서 태그 사용
S3 일반 목적 버킷에서 태그 사용
AWS 태그는 리소스(여기서는 Amazon S3 일반 목적 버킷)에 대한 메타데이터를 담는 키-값 쌍이에요. S3 버킷을 만들 때 태그를 지정하거나 기존 버킷의 태그를 관리할 수 있어요. 태그에 대한 일반 정보는 비용 할당 또는 특성 기반 접근 제어(ABAC)를 위한 태그 지정을 참고하세요.
출처: 문서
본문
참고 버킷에 태그를 사용한다고 해서 표준 S3 API 요청 요금 외에 추가 비용은 발생하지 않아요. 자세한 내용은 Amazon S3 요금을 참고하세요.
버킷에 태그를 사용하는 일반적인 방법 (Common ways to use tags with buckets)
S3 버킷에 태그를 사용하는 목적은 다음과 같아요.
- 비용 할당 (Cost allocation) – AWS Billing and Cost Management에서 버킷 태그별로 스토리지 비용을 추적해요. 자세한 내용은 비용 할당에 태그 사용을 참고하세요.
- 특성 기반 접근 제어(ABAC) – 태그에 기반해 접근 권한을 확장하고 S3 버킷에 대한 접근을 부여해요. 자세한 내용은 ABAC에 태그 사용을 참고하세요. 참고: 일반 목적 버킷의 경우 ABAC는 기본적으로 활성화되지 않아요. 일반 목적 버킷에서 ABAC를 활성화하려면 일반 목적 버킷에서 ABAC 활성화를 참고하세요. 액세스 포인트와 디렉터리 버킷 같은 Amazon S3 리소스의 경우 ABAC는 기본적으로 활성화돼요. 같은 태그를 비용 할당과 접근 제어에 모두 사용할 수 있어요.
S3 일반 목적 버킷의 ABAC (ABAC for S3 general purpose buckets)
Amazon S3 일반 목적 버킷은 태그를 사용한 특성 기반 접근 제어(ABAC)를 지원해요. AWS Organizations, IAM, S3 버킷 정책에서 태그 기반 조건 키를 사용해요. 엔터프라이즈의 경우 Amazon S3의 ABAC는 여러 AWS 계정에 걸친 인가를 지원해요.
IAM 정책에서 다음 전역 조건 키를 사용해 버킷 태그에 기반해 S3 버킷에 대한 접근을 제어할 수 있어요.
aws:ResourceTag/key-name— 정책에 지정한 태그 키-값 쌍을 리소스에 연결된 키-값 쌍과 비교하려면 이 조건 키를 사용해요. S3는 버킷에서 ABAC를 활성화한 후에만 이 조건 키를 평가해요. 예를 들어 리소스에 연결된 태그 키Dept의 값이Marketing인 경우에만 리소스에 대한 접근을 허용하도록 요구할 수 있어요. 자세한 내용은 AWS 리소스에 대한 접근 제어를 참고하세요.aws:RequestTag/key-name— 요청에 전달된 태그 키-값 쌍을 정책에 지정한 태그 쌍과 비교하려면 이 조건 키를 사용해요. 예를 들어 요청에 태그 키Dept가 포함되고 값이Accounting인지 확인할 수 있어요. 자세한 내용은 AWS 요청 중 접근 제어를 참고하세요.TagResource와CreateBucketAPI 작업 중에 전달할 수 있는 태그 키-값 쌍을 제한하는 데 이 조건 키를 사용할 수 있어요.aws:TagKeys— 요청의 태그 키를 정책에 지정한 키와 비교하려면 이 조건 키를 사용해요. 태그로 접근을 제어하는 정책을 사용할 때는aws:TagKeys조건 키로 허용할 태그 키를 정의할 것을 권장해요. 예시 정책과 자세한 내용은 태그 키에 기반한 접근 제어를 참고하세요.s3:BucketTag/tag-key— 태그를 사용해 버킷의 특정 데이터에 대한 권한을 부여하려면 이 조건 키를 사용해요. 이 조건 키는 버킷에서 ABAC를 활성화한 후에만 적용돼요. 액세스 포인트로 버킷에 접근할 때aws:ResourceTag/tag-key조건 키는 액세스 포인트와 버킷 모두에 대해 인가할 때 버킷의 태그를 참조해요.s3:BucketTag/tag-key는 인가되는 대상인 버킷의 태그만 참조해요.
참고 태그가 있는 버킷을 만들 때,
aws:ResourceTag와s3:BucketTag조건 키로 버킷에 접근하는 태그 기반 조건은 버킷에서 ABAC를 활성화한 후에만 적용된다는 점을 기억하세요. 자세한 내용은 일반 목적 버킷에서 ABAC 활성화를 참고하세요.
버킷용 ABAC 정책 예시 (Example ABAC policies for buckets)
Amazon S3 버킷용 ABAC 정책 예시는 다음과 같아요.
1.1 - 특정 태그로 버킷을 만들거나 수정하는 IAM 정책
이 IAM 정책에서 이 정책을 가진 사용자나 역할은 버킷 생성 요청에 태그 키 project와 태그 값 Trinity로 버킷에 태그를 지정하는 경우에만 S3 버킷을 만들 수 있어요. 또한 TagResource 요청에 태그 키-값 쌍 project:Trinity가 포함되는 한 기존 S3 버킷에 태그를 추가하거나 수정할 수 있어요. 이 정책은 버킷이나 그 객체에 대한 읽기, 쓰기, 삭제 권한은 부여하지 않아요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CreateBucketWithTags",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:TagResource"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestTag/project": [
"Trinity"
]
}
}
}
]
}
1.2 - 작업을 제한하는 버킷 정책
이 버킷 정책에서 IAM 보안 주체(사용자와 역할)는 버킷의 project 태그 값이 보안 주체의 project 태그 값과 일치하는 경우에만 버킷에 대한 s3:ListBucket, s3:GetObject, s3:PutObject 작업이 거부돼요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyObjectOperations",
"Effect": "Deny",
"Principal": "*",
"Action": ["s3:ListBucket",
"s3:GetObject",
"s3:PutObject"],
"Resource": "arn:aws:s3:::aws-s3-demo/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/project": "${aws:PrincipalTag/project}"
}
}
}
]
}
1.3 - 기존 리소스의 태그를 수정하는 IAM 정책
이 IAM 정책에서 IAM 보안 주체(사용자나 역할)는 버킷의 project 태그 값이 보안 주체의 project 태그 값과 일치하는 경우에만 버킷의 태그를 수정할 수 있어요. aws:TagKeys 조건 키에 지정된 네 개의 태그 project, environment, owner, cost-center만 이 버킷에서 허용돼요. 이렇게 하면 태그 거버넌스를 강화하고, 허가되지 않은 태그 수정을 방지하며, 버킷 전반에서 태그 지정 스키마를 일관되게 유지할 수 있어요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnforceTaggingRulesOnModification",
"Effect": "Allow",
"Action": [
"s3:TagResource",
"s3:CreateBucket"
],
"Resource": "*",
"Condition": {
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"project",
"environment",
"owner",
"cost-center"
]
}
}
}
]
}
1.4 - s3:BucketTag 조건 키 사용
이 IAM 정책에서 조건 문은 버킷에 태그 키 Environment와 태그 값 Production이 있는 경우에만 aws-s3-demo 버킷의 데이터에 대한 접근을 허용해요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAccessViaSpecificBucket",
"Effect": "Allow",
"Action": "*",
"Resource": ["arn:aws:s3:::aws-s3-demo","arn:aws:s3:::aws-s3-demo/*"],
"Condition": {
"StringEquals": {
"s3:BucketTag/Environment": "Production"
}
}
}
]
}
일반 목적 버킷의 태그 관리 (Managing tags for general purpose buckets)
Amazon S3 콘솔, AWS Command Line Interface(CLI), AWS SDK 또는 S3 API인 TagResource, UntagResource, ListTagsForResource를 사용해 S3 버킷의 태그를 추가하거나 관리할 수 있어요.