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 deseja 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 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 curingas como parte do ARN do recurso. Você pode usar caracteres curinga (* e ?) dentro de segmentos do ARN (as partes separadas por dois pontos) para representar qualquer combinação de caracteres por um asterisco (*) e qualquer caractere único por um ponto de interrogação (?). 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 Nomes de recurso da Amazon (ARN)

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:::DOC-EXAMPLE-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:::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 do Amazon S3 pode validamente 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:

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

Especificação de vários recursos

Você pode especificar múltiplos recursos. 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.