Я хотел бы ограничить публичный доступ к некоторым объектам, которые мы сохранили в S3, но показывать другие объекты в той же иерархии ключей. Например, предположим, что я хочу сделать bucketname/*
общедоступным. Но хотите запретить доступ к bucketname/*/hidden/*
для всех пользователей, которым явно не разрешен доступ в IAM.Политика экономии Amazon S3 только для общедоступных ограничений
я могу сделать это с политикой ковшового типа:
{
"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 во втором утверждении, которое соответствует только не прошедшему проверку подлинности доступу? Или еще лучше, есть ли способ перечислять только те Принципы, которые должны NOT быть затронуты политикой?
Обновление 2016: теперь вы можете использовать http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#NotPrincipal тег для обозначения «всех участников, но ... – Claude