#amazon-web-services #amazon-s3
#amazon-web-services #amazon-s3
Вопрос:
Мы использовали шаблон для политик корзины, который работал хорошо, пока мы не попытались включить репликацию. Первое, что есть в политике, — это оператор deny, который содержит исключения для определенного vpce и три диапазона IP-сетей. За инструкцией deny следуют некоторые инструкции allow. Это сработало хорошо. Когда мы пытались настроить репликацию, мы получаем статус «Сбой репликации» для любого добавленного или обновленного объекта. Поэтому мы добавили роль IAM, созданную для этой репликации, в исключения запрета, а также в инструкции allow в качестве участника. Это по-прежнему приводит к сбою репликации. Мы знаем, что проблема заключается в политике, потому что удаление политики приводит к нормальному завершению репликации. Вот формат инструкции deny…
"Statement": [
{
"Sid": "Stmt1587152999999",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"<Bucket ARN>",
"<Bucket ARN>/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"x.x.x.x/xx",
"x.x.x.x/xx",
"x.x.x.x/xx"
]
},
"StringNotEquals": {
"aws:SourceVpce": "<VPCE ID>"
},
"ArnNotEquals": {
"aws:SourceArn": "<IAM role created for replication>"
}
}
},
Является ли исходный arn роли IAM, используемой для репликации, правильным способом исключить его из инструкции deny? Существует ли другой подход к ограничению доступа при сохранении возможности репликации?
Ответ №1:
Отказать в заявках всегда сложно. В итоге они часто отказывают больше, чем ожидалось.
Я думаю, что в приведенном выше утверждении говорится:
- Доступ к этой корзине S3 запрещен, если:
- Вы переходите не с одного из этих IP-адресов И
- Вы не проходите через эту конечную точку VPC И
- Вы не используете эту роль IAM
Фактически это должно означать «Не запрещать, если что-либо из вышеперечисленного верно» (то есть они используют один из IP-адресов, или конечную точку VPC, ИЛИ роль IAM).
См. раздел: Создание условия с несколькими ключами или значениями — AWS Identity и управление доступом
Это означает, что ваше утверждение должно быть правильным, но вы сообщаете о проблемах. Я не вижу непосредственной проблемы с тем, что вы делаете, но попробуйте начать с того, что у вас есть только условие роли IAM, проверьте, работает ли оно правильно, затем добавьте другие условия по одному, чтобы определить причину конфликта.
Ответ №2:
Проблема с моей политикой заключалась в Role ARN.
Я использовал «aws: SourceArn», но должен был использовать «aws: PrincipalArn».
Я почти уверен, что получил SourceArn от генератора политик. В итоге я открыл обращение, и после нескольких итераций с поддержкой я получил «aws: PrincipalArn». Это сработало!