Я хотел бы ограничить публичный доступ к некоторым объектам, которые мы сохранили в S3, но отображать другие объекты в той же иерархии ключей. Например, предположим, что я хочу сделать bucketname/*
общедоступным для чтения. Но нужно запретить доступ к bucketname/*/hidden/*
для всех пользователей, которым явно не предоставлен доступ в IAM .
Я могу сделать это с помощью политики ведра, например:
{
"Id": "Policy123",
"Statement": [
{
"Sid": "Stmt123",
"Action": [ "s3:GetObject" ],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucketname/*",
"Principal": {
"AWS": [ "*" ]
}
},
{
"Sid": "Stmt124",
"Action": [ "s3:GetObject" ],
"Effect": "Deny",
"Resource": "arn:aws:s3:::bucketname/*/hidden/*",
"Principal": {
"AWS": [ "*" ]
}
]
}
Но это препятствует доступу к скрытым объектам любых пользователей / групп IAM, которым я предоставил. Есть ли параметр для Principal во втором утверждении, который соответствует только неаутентифицированному доступу? Или, что еще лучше, есть ли способ перечислить только те Принципы , на которые НЕ должно повлиять заявление политики?