태깅과 접근 제어 정책

태깅과 접근 제어 정책 (Tagging and access control policies)

권한 정책(버킷 정책과 사용자 정책)을 사용해서 객체 태깅과 관련된 권한을 관리할 수도 있어요. 정책 작업에 대한 내용은 다음 주제를 참고해 주세요.

출처: 문서

본문

  • 객체 작업
  • 버킷 작업

객체 태그는 권한을 관리할 때 세밀한 접근 제어를 가능하게 해요. 객체 태그를 기준으로 조건부 권한을 부여할 수 있어요. Amazon S3는 객체 태그를 기준으로 조건부 권한을 부여할 때 사용할 수 있는 다음 조건 키(condition key)를 지원해요.

  • s3:ExistingObjectTag/<tag-key> – 이 조건 키는 기존 객체 태그가 특정 태그 키와 값을 가지는지 확인할 때 사용해요. > 참고 PUT Object 및 DELETE Object 작업에 권한을 부여할 때는 이 조건 키가 지원되지 않아요. 즉, 객체의 기존 태그를 기준으로 객체 삭제 또는 덮어쓰기를 허용하거나 거부하는 정책은 만들 수 없어요.
  • s3:RequestObjectTagKeys – 이 조건 키는 객체에 허용하고 싶은 태그 키를 제한할 때 사용해요. PutObjectTagging, PutObject, POST object 요청으로 객체에 태그를 추가할 때 유용해요.
  • s3:RequestObjectTag/<tag-key> – 이 조건 키는 객체에 허용하고 싶은 태그 키와 값을 제한할 때 사용해요. PutObjectTagging, PutObject, POST Bucket 요청으로 태그를 추가할 때 유용해요.

Amazon S3 서비스 전용 조건 키 전체 목록은 조건 키를 사용한 버킷 정책 예시를 참고하세요. 다음 권한 정책은 객체 태깅이 세밀한 권한 접근 관리를 어떻게 가능하게 하는지 보여줘요.

예시 1: 특정 태그와 키 값을 가진 객체만 사용자가 읽을 수 있게 허용

다음 권한 정책은 사용자가 environment: production 태그 키와 값을 가진 객체만 읽을 수 있게 제한해요. 이 정책은 s3:ExistingObjectTag 조건 키를 사용해 태그 키와 값을 지정해요.

{
  "Version":"2012-10-17",
  "Statement": [
  {
    "Principal": {
      "AWS": [
        "arn:aws:iam::111122223333:role/JohnDoe"
      ]
    },
    "Effect": "Allow",
    "Action": ["s3:GetObject", "s3:GetObjectVersion"],
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
      "StringEquals": 
        {"s3:ExistingObjectTag/environment": "production"}
    }
  }
  ]
}

예시 2: 사용자가 추가할 수 있는 객체 태그 키 제한

다음 권한 정책은 사용자에게 s3:PutObjectTagging 작업을 수행할 권한을 부여해요. 이 작업으로 사용자는 기존 객체에 태그를 추가할 수 있어요. 조건은 s3:RequestObjectTagKeys 조건 키를 사용해 Owner나 CreationDate 같은 허용 태그 키를 지정해요. 자세한 내용은 IAM 사용자 가이드의 여러 키 값을 테스트하는 조건 만들기를 참고하세요.

이 정책은 요청에 지정된 모든 태그 키가 허용된 태그 키임을 보장해요. 조건의 ForAnyValue 한정자는 지정된 키 중 적어도 하나가 요청에 존재해야 한다는 것을 보장해요.

{
   "Version":"2012-10-17",
  "Statement": [
    {"Principal":{"AWS":[
            "arn:aws:iam::111122223333:role/JohnDoe"
         ]
       },
 "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [
            "Owner",
            "CreationDate"
          ]
        }
      }
    }
  ]
}

예시 3: 사용자가 객체 태그를 추가할 때 특정 태그 키와 값을 요구

다음 예시 정책은 사용자에게 s3:PutObjectTagging 작업을 수행할 권한을 부여해요. 이 작업으로 사용자는 기존 객체에 태그를 추가할 수 있어요. 조건은 값이 X로 설정된 특정 태그 키(예: Project)를 사용자가 포함해야 한다고 요구해요.

{
   "Version":"2012-10-17",
  "Statement": [
    {"Principal":{"AWS":[
       "arn:aws:iam::111122223333:user/JohnDoe"
         ]
       },
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X"
        }
      }
    }
  ]
}

더 알아보기 (Learn more)