S3 벡터 버킷에 태그 사용하기
S3 벡터 버킷에 태그 사용하기
AWS 태그를 S3 벡터 버킷에 사용하는 방법을 설명해요. AWS 태그는 리소스, 여기서는 Amazon S3 벡터 버킷의 메타데이터를 담는 키-값 쌍이에요.
본문
AWS 태그는 리소스(여기서는 Amazon S3 벡터 버킷)의 메타데이터를 담는 키-값 쌍이에요. 벡터 버킷을 만들 때 태그를 붙이거나, 기존 벡터 버킷의 태그를 관리할 수 있어요. 태그에 대한 일반 정보는 Tagging for cost allocation or attribute-based access control (ABAC)을 참고해 주세요.
벡터 버킷의 태그 사용에는 표준 S3 API 요청 요금 외에 추가 비용이 들지 않아요. 자세한 내용은 Amazon S3 pricing을 참고해 주세요.
벡터 버킷에 태그를 사용하는 일반적인 방법 (Common ways to use tags with vector buckets)
S3 벡터 버킷에 태그를 사용하는 용도는 다음과 같아요.
- 속성 기반 접근 제어 (ABAC) – 태그를 기반으로 접근 권한을 확장하고 S3 벡터 버킷에 대한 접근을 부여해요. 자세한 내용은 Using tags for attribute-based access control (ABAC)을 참고해 주세요.
S3 벡터 버킷의 ABAC
Amazon S3 벡터 버킷은 태그를 사용한 속성 기반 접근 제어(ABAC)를 지원해요. AWS Organizations, IAM, S3 벡터 버킷 정책에서 태그 기반 조건 키를 사용해 주세요. 기업의 경우 Amazon S3의 ABAC는 여러 AWS 계정에 걸친 승인을 지원해요.
IAM 정책에서 다음 전역 조건 키를 사용해 벡터 버킷의 태그를 기준으로 S3 벡터 버킷에 대한 접근을 제어할 수 있어요.
aws:ResourceTag– 이 키를 사용해 정책에서 지정한 태그 키-값 쌍을 리소스에 연결된 키-값 쌍과 비교해요. 예를 들어, 리소스에Dept키와Marketing값의 태그가 연결되어 있을 때만 접근을 허용하도록 요구할 수 있어요. 자세한 내용은 Controlling access to AWS resources를 참고해 주세요.aws:RequestTag– 이 키를 사용해 요청에 전달된 태그 키-값 쌍을 정책에서 지정한 태그 쌍과 비교해요. 예를 들어, 요청에Dept키가 포함되어 있고 그 값이Accounting인지 확인할 수 있어요. 자세한 내용은 Controlling access during AWS requests를 참고해 주세요. 이 조건 키를 사용해TagResource및CreateVectorBucketAPI 작업 중에 전달할 수 있는 태그 키-값 쌍을 제한할 수 있어요.aws:TagKeys– 이 키를 사용해 요청의 태그 키를 정책에서 지정한 키와 비교해요. 태그로 접근을 제어하는 정책을 사용할 때는aws:TagKeys조건 키로 허용할 태그 키를 정의하는 것을 권장해요. 예시 정책과 자세한 내용은 Controlling access based on tag keys를 참고해 주세요. 태그와 함께 S3 벡터 버킷을 만들 수 있어요.CreateVectorBucketAPI 작업 중 태그 지정을 허용하려면s3vectors:TagResource와s3vectors:CreateVectorBucket작업을 모두 포함하는 정책을 만들어야 해요. 그러면aws:TagKeys조건 키로CreateVectorBucket요청에서 특정 태그를 적용하도록 강제할 수 있어요.s3vectors:VectorBucketTag/<tag-key>– 이 조건 키를 사용해 태그로 벡터 버킷의 특정 데이터에 권한을 부여해요. 이 조건 키는 모든 S3 Vectors 작업에 대해 벡터 버킷에 할당된 태그에 작용해요. 태그와 함께 인덱스를 만들 때도 이 조건 키는 그 인덱스를 포함하는 벡터 버킷에 적용된 태그에 작용해요. 예를 들어, 버킷에Dept키와Marketing값의 태그가 연결되어 있을 때만 버킷에 접근하도록 요구할 수 있어요. 인덱스에 접근할 때 이 조건은 그 인덱스를 포함하는 벡터 버킷과 연결된 태그를 참조하고,aws:ResourceTag/<tag-key>는 인덱스 자체의 태그를 참조해요.
벡터 버킷용 ABAC 정책 예시 (Example ABAC policies for vector buckets)
Amazon S3 벡터 버킷용 ABAC 정책 예시는 다음과 같아요.
1.1 – 특정 태그로 벡터 버킷을 만들거나 수정하는 IAM 정책
이 IAM 정책에서, 이 정책이 연결된 사용자나 역할은 벡터 버킷 생성 요청에 project 태그 키와 Trinity 태그 값으로 태그를 붙여야만 S3 벡터 버킷을 만들 수 있어요. 또한 TagResource 요청에 project:Trinity 태그 키-값 쌍이 포함되는 한, 기존 S3 벡터 버킷의 태그를 추가하거나 수정할 수 있어요. 이 정책은 벡터 버킷이나 그 객체에 대한 읽기·쓰기·삭제 권한을 부여하지 않아요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CreateVectorBucketWithTags",
"Effect": "Allow",
"Action": [
"s3vectors:CreateVectorBucket",
"s3vectors:TagResource"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestTag/project": [
"Trinity"
]
}
}
}
]
}
1.2 – 태그로 벡터 버킷의 작업을 제한하는 벡터 버킷 정책
이 벡터 버킷 정책에서, IAM 프린시펄(사용자와 역할)은 벡터 버킷의 project 태그 값이 프린시펄의 project 태그 값과 일치할 때만 PutVectorBucketPolicy 작업으로 벡터 버킷에 작업을 수행할 수 있어요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowObjectOperations",
"Effect": "Allow",
"Principal": {
"AWS": "111122223333"
},
"Action": "s3vectors:PutVectorBucketPolicy",
"Resource": "arn:aws::s3vectors:us-west-2:111122223333:bucket/amzn-s3-demo-vector-bucket",
"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": [
"s3vectors:TagResource"
],
"Resource": "arn:aws::s3vectors:us-west-2:111122223333:bucket/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/project": "${aws:PrincipalTag/project}"
},
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"project",
"environment",
"owner",
"cost-center"
]
}
}
}
]
}
1.4 – s3vectors:VectorBucketTag 조건 키 사용하기
이 IAM 정책에서, 조건 문은 벡터 버킷에 Environment 태그 키와 Production 태그 값이 있을 때만 벡터 버킷과 벡터 인덱스의 작업에 접근을 허용해요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAccessToTaggedBucket",
"Effect": "Allow",
"Action": "*",
"Resource": "arn:aws::s3vectors:us-west-2:111122223333:bucket/*",
"Condition": {
"StringEquals": {
"s3vectors:VectorBucketTag/Environment": "Production"
}
}
}
]
}