O elemento Resource
em uma declaração de política do IAM define o objeto ou objetos aos quais a declaração se aplica. As instruções devem incluir um elemento Resource
ou NotResource
.
Você especifica um recurso usando um nome do recurso da Amazon (ARN). O formato do ARN depende do AWS service (Serviço da AWS) e do recurso específico ao qual você está se referindo. Embora o formato do ARN varie, você sempre usará um ARN para identificar um recurso. Para obter mais informações sobre o formato de ARNs, consulte ARNs do IAM. Para obter informações sobre como especificar um recurso, consulte a documentação do serviço para o qual deseja escrever uma instrução.
nota
Alguns Serviços da AWS não permitem que você especifique ações para recursos individuais. Nesses casos, todas as ações listadas no elemento Action
ou NotAction
se aplicam a todos os recursos desse serviço. Quando for esse o caso, você usará o caractere curinga (*
) no elemento Resource
.
O exemplo a seguir se refere a uma fila específica do Amazon SQS.
"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens
:queue1"
O exemplo a seguir faz referência ao usuário do IAM chamado Bob
em uma Conta da AWS.
nota
Em um elemento Resource
, o nome de usuário do IAM diferencia letras maiúsculas de minúsculas.
"Resource": "arn:aws:iam::account-ID-without-hyphens
:user/Bob"
Uso de caracteres curinga em ARNs de recursos
Você pode usar caracteres curinga (*
e ?
) dentro dos segmentos individuais de um ARN (as partes separadas por dois pontos) para representar:
-
Qualquer combinação de caracteres (
*
) -
Qualquer caractere único (
?
)
Você pode usar vários caracteres *
ou ?
em cada segmento. Se o curinga *
for o último caractere de um segmento de ARN de um recurso, ele poderá expandir a busca de correspondência para além dos limites de dois-pontos. Recomendamos que você use curingas (*
e ?
) dentro dos segmentos de ARN separados por dois pontos.
nota
Você não pode usar um caractere curinga no segmento do serviço que identifica o produto da AWS. Para obter mais informações sobre ARN, consulte Identifique recursos da AWS com nomes do recurso da Amazon (ARNs)
O exemplo a seguir se refere a todos os usuários do IAM cujo caminho é /accounting
.
"Resource": "arn:aws:iam::account-ID-without-hyphens
:user/accounting/*"
O exemplo a seguir se refere a todos os itens dentro de um bucket do Amazon S3 específico.
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
O caractere asterisco (*
) pode ser expandido para substituir tudo dentro de um segmento, incluindo caracteres como uma barra (/
) que pode parecer um delimitador dentro de um determinado namespace de serviço. Por exemplo, considere o ARN do Amazon S3 a seguir, pois a mesma lógica de expansão de curinga se aplica a todos os serviços.
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
Os caracteres curinga no ARN se aplicam a todos os objetos a seguir no bucket, não apenas ao primeiro objeto listado.
amzn-s3-demo-bucket/1/test/object.jpg
amzn-s3-demo-bucket/1/2/test/object.jpg
amzn-s3-demo-bucket/1/2/test/3/object.jpg
amzn-s3-demo-bucket/1/2/3/test/4/object.jpg
amzn-s3-demo-bucket/1///test///object.jpg
amzn-s3-demo-bucket/1/test/.jpg
amzn-s3-demo-bucket//test/object.jpg
amzn-s3-demo-bucket/1/test/
Considere os dois últimos objetos na lista anterior. Um nome de objeto do Amazon S3 pode começar ou terminar com o caractere de barra (/
) delimitador convencional. Embora /
funcione como um delimitador, não há significado específico quando esse caractere é usado em um ARN de recurso. Ele é tratado da mesma forma que qualquer outro caractere válido. O ARN não corresponderá aos seguintes objetos:
amzn-s3-demo-bucket/1-test/object.jpg
amzn-s3-demo-bucket/test/object.jpg
amzn-s3-demo-bucket/1/2/test.jpg
Especificação de vários recursos
Você pode especificar vários recursos no elemento Resource
usando uma matriz de ARNs. O exemplo a seguir se refere a duas tabelas do DynamoDB.
"Resource": [
"arn:aws:dynamodb:us-east-2:account-ID-without-hyphens
:table/books_table",
"arn:aws:dynamodb:us-east-2:account-ID-without-hyphens
:table/magazines_table"
]
Uso de variáveis de política em ARNs de recursos
No elemento Resource
, você pode usar variáveis de política JSON na parte do ARN que identifica o recurso específico, ou seja, na parte final do ARN. Por exemplo, você pode usar a chave {aws:username}
como parte de um ARN de recurso para indicar que o nome do usuário atual deve ser incluído como parte do nome do recurso. O exemplo a seguir mostra como você pode usar a chave {aws:username}
em um elemento Resource
. A política permite o acesso a uma tabela do Amazon DynamoDB que corresponde ao nome do usuário atual.
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-east-2:account-id
:table/${aws:username}"
}
}
Para obter mais informações sobre variáveis de política JSON, consulte Elementos de política do IAM: variáveis e etiquetas.