두 정책 중 하나는 "거부"입니다. 버킷에 대해 어떤 작업도 수행할 수 없어야 하지만 여전히 버킷 개체를 나열하고 볼 수 있습니다. 왜? 감사해요
S3 버킷 정책
{
"Sid": "S3DenyAccess",
"Effect": "Deny",
"Principal": "*",
"Action": "*",
"Resource": "arn:aws:s3:::<YOURBUCKETHERE>/*"
}
IAM 사용자 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowConsoleAccess",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
답변1
변경해 보세요자원에서버킷 정책버킷만 포함하고 객체가 포함된 버킷을 모두 포함하려면 다음을 수행하세요.
"Resource": [
"arn:aws:s3:::<YOURBUCKETHERE>",
"arn:aws:s3:::<YOURBUCKETHERE>/*"
]
도움이 되었기를 바랍니다 :)
답변2
AWS 정책 평가 로직유용한 독서가 될 것입니다. 즉, 명시적인 거부가 승리합니다. 하지만 여기서는 관련이 없습니다.
그래요
IAM 사용자 정책에 "이 사용자는 버킷 위치를 가져오는 모든 버킷을 나열할 수 있습니다"라고 나와 있습니다.
버킷 정책
특정 버킷에 대한 버킷 정책에 "모든 사람이 이의를 제기할 수 있는 권한을 명시적으로 거부합니다.내부에리소스 끝에 있는 "/*"는 정책이 "버킷 내부"에 적용된다는 의미이며, 이를 생략하면 정책이 버킷 자체에 적용된다는 의미입니다.
결합된
따라서 결합된 정책에서는 모든 사용자가 버킷을 나열하고 버킷 위치를 얻을 수 있지만 버킷 내부의 객체에 대해서는 아무 작업도 수행할 수 없다고 말합니다. 버킷의 개체를 나열하고 버킷 개체를 볼 수 있다는 사실에 놀랐습니다. AWS 기본 거부에서는 아무것도 표시해서는 안 된다고 명시하고 있기 때문에 여기서는 또 다른 정책이 적용되고 있는 것으로 의심됩니다.
다른 의견
혹시 제가 놓친 부분을 발견하신 분이 계시다면 지적해주세요 :)