Try it: how do you stop unsigned requests from reading q3.pdf while Reader still can?
put-key-policy{
"Sid": "Allow access for Key Administrators",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333:role/KeyAdmin" },
"Action": ["kms:Describe*", "kms:Put*", "kms:ScheduleKeyDeletion"],
"Resource": "*"
}{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333:root" },
"Action": "kms:*",
"Resource": "*"
}Anonymous request: unsigned. Reader: role in the same account, identity-based policy allows s3:GetObject on reports/*. BlockPublicAcls and BlockPublicPolicy only reject future writes; existing grants and statements are not affected. Assumes Reader's policy also allows kms:Decrypt. Account and organization level Block Public Access also exist; not drawn here.
Hover a result. Blue: related settings; pink: what currently decides this result
put-bucket-policy{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333:role/Reader" },
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::reports/*"
}{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::reports/*"
}{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::reports/*",
"Condition": { "StringEquals": { "aws:PrincipalType": "Anonymous" } }
}put-object-acl<Grant>
<Grantee xsi:type="Group">
<URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>
</Grantee>
<Permission>READ</Permission>
</Grant>