Eu tenho um balde com vários arquivos para download público. Quero estabelecer uma política de bucket após a qual esses arquivos só possam ser baixados por meus usuários do IAM. A política que tenho até agora é esta:
{
"Version": "2008-10-17",
"Id": "Policy1424952346041",
"Statement": [
{
"Sid": "Stmt1424958477350",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::777777777777:root"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test/*"
},
{
"Sid": "Stmt1424958477351",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::777777777777:root"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test/*"
}
]
}
No entanto, está negando a todos, incluindo os usuários do IAM. Alguém pode apontar o que há de errado aqui?
Responder1
Dependendo de quantos usuários IAM você tem na conta, você pode especificar as contas em ambas as instruções da seguinte forma (tente uma ou duas apenas como teste para ver se funciona). Já tive problemas no passado para fazer com que arn:aws:iam::XXXXXXXXXXXX:root realmente cobrisse todas as contas IAM. Você também pode tentar apenas especificar os usuários do IAM e remover a entrada raiz.
{
"Version": "2008-10-17",
"Id": "Policy1424952346041",
"Statement": [
{
"Sid": "Stmt1424958477350",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::777777777777:root",
"arn:aws:iam::777777777777:user/user1",
"arn:aws:iam::777777777777:user/user2" ]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test/*"
},
{
"Sid": "Stmt1424958477351",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::777777777777:root",
"arn:aws:iam::777777777777:user/user1",
"arn:aws:iam::777777777777:user/user2" ]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::test/*"
}
]
}