s3 버킷/IAM 사용자 정책 "거부는 다른 모든 액세스보다 우선합니다"?

s3 버킷/IAM 사용자 정책 "거부는 다른 모든 액세스보다 우선합니다"?

두 정책 중 하나는 "거부"입니다. 버킷에 대해 어떤 작업도 수행할 수 없어야 하지만 여전히 버킷 개체를 나열하고 볼 수 있습니다. 왜? 감사해요

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 기본 거부에서는 아무것도 표시해서는 안 된다고 명시하고 있기 때문에 여기서는 또 다른 정책이 적용되고 있는 것으로 의심됩니다.

다른 의견

혹시 제가 놓친 부분을 발견하신 분이 계시다면 지적해주세요 :)

관련 정보