#amazon-web-services #amazon-s3 #amazon-policy
#amazon-web-services #amazon-s3 #amazon-политика
Вопрос:
У меня есть корзина S3, которая имеет структуру, подобную этой:
top_level_name
sub_level_1
sub_level_2
sub_level_3
Я хотел бы полностью запретить все действия с top_level_name
(чтобы исключить политики IAM, которые в противном случае имели бы доступ к этому сегменту), и выборочно разрешать определенным пользователям доступ к их соответствующим sub_levels
. Первоначально я думал, что политика может выглядеть примерно так:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyTopLevel",
"Action": [
"s3:*"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::test-bucket/top_level_name/*",
"Principal": "*"
},
{
"Sid": "AllowSubLevel1",
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::test-bucket/top_level_name/sub_level_1/*",
"Principal": {
"AWS": [
"arn:aws:iam::12345:user/my_user_account"
]
}
}
]
}
При выполнении похоже, что разрешение не может заменить запрет. Есть ли способ, которым я могу переписать свою политику корзины для реализации этого шаблона?
Комментарии:
Ответ №1:
Нет. Deny
всегда переопределяет Allow
.
Однако ваш вариант использования может быть удовлетворен, если вы просто удалите свой первый Deny
раздел. Это потому, что по умолчанию у пользователей нет разрешения. Таким образом, у них нет разрешения на PutObject
на верхнем уровне, если только политика специально не разрешает это.
Вторая часть вашей политики предоставляет разрешения для более низких уровней, что вам и нужно.
Если у вас есть другие политики, которые предоставляют доступ к верхнему уровню (например, с помощью *
политики), тогда вам нужно будет пересмотреть свои другие политики (например, исключив это поле из их Allow
предоставления).
Комментарии:
1. Спасибо @John, это имеет большой смысл. Если у меня есть одно ведро, которое особенно чувствительно и должно иметь привилегии «opt-in» (аналогично примеру), есть ли лучшая практика? Похоже, я должен либо управлять каждой политикой, используемой на уровне IAM, либо потенциально разделить корзину на собственную защищенную учетную запись AWS?
2. Да, довольно часто создается отдельная учетная запись AWS для конфиденциальных данных (например, HR или Payroll), а затем ограничивается круг людей, имеющих доступ к ресурсам в этой учетной записи.