Finalmente, encontrei uma solução alternativa. Com a política abaixo, funciona como esperado
{
"Version": "2012-10-17",
"Id": "arn:aws:sqs:us-east-1:930XXXXXX332:test-queue",
"Statement": [
{
"Sid": "Sid1472529596416",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::930XXXXXX332:user/test-sqs",
"arn:aws:iam::930XXXXXX332:root"
]
},
"Action": "SQS:*",
"Resource": "arn:aws:sqs:us-east-1:930XXXXXX332:test-queue"
}
]
}
A parte crucial é - você tem que especificar explicitamente a conta root . Sem isso - não funcionaria de todo. Quanto a mim, é uma mágica da AWS :) Mas pode ser que alguém possa esclarecer a situação.
Atualização 01.03.2017 Parece que encontrei a descrição de tal comportamento - link
No exemplo a seguir, todos os principais, exceto o usuário chamado Bob na conta AWS 444455556666, têm o acesso explicitamente negado a um recurso. Observe que para alcançar o efeito pretendido, o elemento NotPrincipal contém o ARN do usuário Bob e da conta da AWS à qual Bob pertence (arn: aws: iam :: 444455556666: root). Se o elemento NotPrincipal continha apenas o ARN de Bob, o efeito da política seria negar explicitamente o acesso à conta da AWS que contém o usuário Bob.
Um usuário não pode ter mais permissões do que sua conta pai, portanto, se a conta de Bob tiver o acesso explicitamente negado, ele também não poderá acessar o recurso.
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::444455556666:user/Bob",
"arn:aws:iam::444455556666:root"
]
}
Combinar Deny e NotPrincipal é a única vez em que a ordem em que a AWS avalia os principais faz a diferença