Elemento de la política de JSON de IAM:Resource - AWS Identity and Access Management

Elemento de la política de JSON de IAM:Resource

El elemento Resource especifica el objeto u objetos que la instrucción abarca. Las instrucciones deben contener un elemento Resource o NotResource. Los recursos se especifican mediante un ARN. Para obtener más información sobre el formato de los ARN, consulte ARN de IAM.

Cada servicio tiene su propio conjunto de recursos. Aunque siempre se utiliza un ARN para especificar un recurso, los detalles del ARN de un recurso dependen del servicio y el recurso. Para obtener información sobre cómo especificar un recurso, consulte la documentación del servicio para cuyos recursos está escribiendo una instrucción.

nota

Algunos servicios no le permiten especificar acciones para recursos individuales; en su lugar, todas las acciones que publique en los elementos Action o NotAction se aplican a todos los recursos de ese servicio. En dichos casos, utilice el asterisco * en el elemento Resource.

El siguiente ejemplo hace referencia a una cola Amazon SQS específica.

"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens:queue1"

El siguiente ejemplo hace referencia al usuario de IAM llamado Bob de una cuenta de AWS.

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

Uso de caracteres comodín en ARN de recursos

Puede utilizar comodines como parte del ARN del recurso. Puede utilizar caracteres comodín (* y ?) en cualquier segmento del ARN (las partes se separan mediante signos de dos puntos). Un asterisco (*) representa cualquier combinación de caracteres y un signo de interrogación (?) representa un único carácter. Puede usar múltiples caracteres de * o ? en cada segmento. El siguiente ejemplo hace referencia a todos los usuarios de IAM cuya ruta es /accounting.

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

El siguiente ejemplo hace referencia a todos los elementos dentro de un bucket de Amazon S3 específico.

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

El carácter asterisco (*) se puede expandir para reemplazar todo lo que hay dentro de un segmento, incluidos caracteres como una barra diagonal (/) que de lo contrario podría parecer un delimitador dentro del espacio de nombres de un servicio determinado. Por ejemplo, considere el siguiente ARN de Amazon S3 (la misma lógica de expansión de comodín se aplica a todos los servicios).

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

Los caracteres comodín del ARN se aplican a todos los siguientes objetos del bucket, no solo al primer objeto de la lista.

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 los dos últimos objetos de la lista anterior. Un nombre de objeto de Amazon S3 puede comenzar o terminar válidamente con el carácter delimitador convencional de barra diagonal (/). Mientras que “/” funciona como delimitador, no hay un significado específico cuando este carácter se utiliza dentro de un ARN de recursos. Se trata igual que cualquier otro carácter válido. El ARN no concordará con los siguientes objetos:

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

Especificación de varios recursos

Puede especificar varios recursos. El siguiente ejemplo hace referencia a dos tablas de 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 variables de política en ARN de recursos

En el elemento Resource, puede usar variables de política de JSON en la parte del ARN que identifica los recursos específicos (es decir, en la parte final del ARN). Por ejemplo, puede utilizar la clave {aws:username} como parte de un ARN de recurso para indicar que el nombre del usuario actual debe incluirse como parte del nombre del recurso. El siguiente ejemplo muestra cómo puede utilizar la clave {aws:username} en un elemento Resource. La política permite obtener acceso a una tabla de Amazon DynamoDB que coincide con el nombre de usuario actual.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-east-2:ACCOUNT-ID-WITHOUT-HYPHENS:table/${aws:username}" } }

Para obtener más información sobre las variables de las políticas de JSON, consulte Elementos de la política de IAM: variables y etiquetas.