Amazon Simple Storage Service(S3) 버킷 정책에서 Principal 요소 및 명시적 거부에 와일드카드를 사용하려고 합니다.
간략한 설명
AWS Identity and Access Management(IAM) 엔터티가 Amazon S3 버킷에 액세스하지 못하도록 하려면 버킷 정책에서 특정 권한을 지정하세요. 버킷 정책은 NotPrincipal 요소와 명시적 거부를 사용해야 합니다. 자세한 내용을 보려면 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notprincipal.html#specifying-notprincipal)거부로 NotPrincipal 지정하기[를 참조하세요.
그러나 Amazon S3는 NotPrincipal 요소의 와일드카드를 지원하지 않으므로 각 문 블록에서 대상 엔터티로 Principal을 사용해야 합니다. 각 명령문 블록에는 각 허용 블록의 조건도 포함되어야 합니다.
해결 방법
먼저 다음 리소스가 있는지 확인하세요.
다음 예에서는 aws:userid에 와일드카드를 사용하여 호출 프로세스가 전달하는 모든 이름을 포함합니다. 예를 들어, 사용자가 임시 보안 인증을 얻기 위해 호출할 때 애플리케이션, 서비스 또는 인스턴스 ID에 대한 와일드카드가 여기에 포함됩니다. 자세한 내용을 보려면 정책 변수에 사용할 수 있는 정보 요청을 참조하세요. 잠김을 방지하기 위해 이 예제에는 AWS 계정 루트 사용자가 포함되어 있습니다.
**참고:**예제 이름을 사용자 자신의 역할 ID 및 버킷 이름으로 바꿔야 합니다.
전체 예제 정책은 다음과 같습니다. 거부 블록의 StringNotLike 조건을 확인하세요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::444455556666:role/s3-access-role"
]
},
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::awsexamplebucket1"
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::444455556666:role/s3-access-role"
]
},
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::awsexamplebucket1/*"
},
{
"Sid": "",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:ListBucket",
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*",
"arn:aws:s3:::awsexamplebucket1"
],
"Condition": {
"StringNotLike": {
"aws:userid": [
"AROAID2GEXAMPLEROLEID:*",
"444455556666"
]
}
}
}
]
}
관련 정보
특정 IAM 역할에 대한 Amazon S3 버킷 액세스를 제한하는 방법
AWS JSON 정책 요소: NotPrincipal