Elementos de política JSON do IAM: Resource - AWS Identity and Access Management

Elementos de política JSON do IAM: Resource

O elemento Resource especifica o objeto ou objetos que a instrução abrange. As instruções devem incluir um elemento Resource ou um elemento NotResource. Você especifica um recurso usando um ARN. Para obter mais informações sobre o formato de ARNs, consulte ARNs do IAM.

Cada serviço tem seu próprio conjunto de recursos. Embora você sempre use um nome de recurso da Amazon (ARN) para especificar um recurso, os detalhes do ARN para um recurso dependem do serviço e do recurso. Para obter informações sobre como especificar um recurso, consulte a documentação do serviço para o qual você quer escrever uma instrução.

nota

Alguns serviços não permitem que você especifique ações para recursos individuais; em vez disso, qualquer ação que você listar no elemento Action ou NotAction se aplica a todos os recursos naquele serviço. Nesses casos, você deve usar o 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 se refere ao usuário do IAM chamado Bob em uma conta da AWS.

nota

Cada nome de usuário do IAM é exclusivo e não diferencia maiúsculas e minúsculas.

"Resource": "arn:aws:iam::account-ID-without-hyphens:user/Bob"

Usar caracteres curingas em ARNs de recursos

Você pode usar curingas como parte do ARN do recurso. É possível usar caracteres curinga (* e ?) em qualquer segmento de ARN (partes separadas por dois pontos). Um asterisco (*) representa qualquer combinação de zero ou mais caracteres, e um ponto de interrogação (?) representa qualquer caractere único. Você pode usar vários caracteres * ou? em cada segmento. O exemplo a seguir refere-se a todos os usuários do IAM cujo caminho é /accounting.

"Resource": "arn:aws:iam::account-ID-without-hyphens:user/accounting/*"

O exemplo a seguir refere-se a todos os itens dentro de um bucket do Amazon S3 específico.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"

O caractere asterisco (*) pode ser expandido para substituir tudo dentro de um segmento, inclusive caracteres como uma barra (/), que, de outra forma, pode parecer ser um delimitador no namespace de um determinado serviço. Por exemplo, considere o seguinte ARN do Amazon S3, já que a mesma lógica de expansão curinga se aplica a todos os serviços.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/test/*"

Os caracteres curinga no ARN se aplicam a todos os objetos a seguir no bucket, não apenas ao primeiro objeto listado.

DOC-EXAMPLE-BUCKET/1/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test/3/object.jpg DOC-EXAMPLE-BUCKET/1/2/3/test/4/object.jpg DOC-EXAMPLE-BUCKET/1///test///object.jpg DOC-EXAMPLE-BUCKET/1/test/.jpg DOC-EXAMPLE-BUCKET//test/object.jpg DOC-EXAMPLE-BUCKET/1/test/

Considere os dois últimos objetos na lista anterior. Um nome de objeto de Amazon S3 pode ser válido ao começar ou terminar com o caractere de barra delimitadora comum (/). Enquanto “/” funciona como um delimitador, não há significado específico quando esse caractere é usado dentro de um ARN de recursos. É tratado da mesma forma que qualquer outro caractere válido. O ARN não corresponderia aos seguintes objetos:

DOC-EXAMPLE-BUCKET/1-test/object.jpg DOC-EXAMPLE-BUCKET/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test.jpg

Especificar vários recursos

Você pode especificar múltiplos recursos. O exemplo a seguir refere-se 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" ]

Usar 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-WITHOUT-HYPHENS: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 tags.