Мы хотим сохранить некоторые данные на S3 и разрешать доступ к ним только экземплярам EC2 или конкретному пользователю с определенной ролью IAM. К сожалению, у нас есть некоторые проблемы с этим.Как ограничить доступ к ведомости S3 для конкретной роли IAM?
Мы установили политику на ведре, как этот
{
"Version": "2012-10-17",
"Id": "SamplePolicy",
"Statement": [
{
"Sid": "Stmt1331136294179",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::our-account-number:user/the-user",
"arn:aws:iam::our-account-number:role/the-role"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::the-bucket/*"
},
{
"Sid": "Stmt1331136364169",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::our-account-number:user/the-user",
"arn:aws:iam::our-account-number:role/the-role"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::the-bucket/*"
}
]}
Когда мы получаем доступ к Bucket (используя Boto) с пользователями ключ работает нормально, с локального компьютера или любого экземпляра EC2.
Но, когда мы достигаем ведро с Бото мы получаем
ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
Я подтвердил, что экземпляр имеет правильную IAM роль
curl http://169.254.169.254/latest/meta-data/iam/info/
{
"Code" : "Success",
"LastUpdated" : "2015-10-22T09:09:31Z",
"InstanceProfileArn" : "our-account-number:instance-profile/the-role",
"InstanceProfileId" : "instance-rpofile-id"
}
Я также попытался удалить политику из ковша, что действительно делает его доступным снова. Любые идеи, как справиться с этим?
Образец, который я использовал здесь, является упрощенной версией, которую я делал для отладки. В производстве мы хотим, чтобы объект был зашифрован с помощью KMS и также имел политику доступа к ключу. Нам нравится это решение, и мы предпочитаем хранить его, если можем.
Благодаря
Можете ли вы показать свою политику роль? –
'код { "Версия": "2012-10-17", "Заявление": [{ "Эффект": "Разрешить", "Действие": "s3: *", "Ресурс": "*" } ] } ' –