Ejemplos de política basada en recursos de DynamoDB
Al especificar un ARN en el campo Resource
de una política basada en recursos, la política solo entra en vigor si el ARN especificado coincide con el ARN del recurso de DynamoDB al que está asociado.
nota
Recuerde reemplazar el texto en cursiva
por la información específica del recurso.
Política basada en recursos para una tabla
La siguiente política basada en recursos asociada a una tabla de DynamoDB denominada MusicCollection
otorga a los usuarios de IAM John
y Jane
permiso para realizar las acciones GetItem y BatchGetItem en el recurso MusicCollection
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:user/John
", "arn:aws:iam::111122223333
:user/Jane
" ] }, "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
" ] } ] }
Política basada en recursos para una secuencia
La siguiente política basada en recursos asociada a una secuencia de DynamoDB denominada 2024-02-12T18:57:26.492
otorga a los usuarios de IAM John
y Jane
permiso para realizar las acciones de la API GetRecords, GetShardIterator y DescribeStream en el recurso 2024-02-12T18:57:26.492
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:user/John
", "arn:aws:iam::111122223333
:user/Jane
" ] }, "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/stream/2024-02-12T18:57:26.492
" ] } ] }
Política de acceso basada en recursos para realizar todas las acciones en recursos específicos
Para que un usuario pueda realizar todas las acciones en una tabla y en todos los índices asociados a ella, puede utilizar un comodín (*) para representar las acciones y los recursos asociados a la tabla. El uso de un carácter comodín para los recursos permitirá al usuario acceder a la tabla de DynamoDB y a todos los índices asociados, incluidos los que aún no se hayan creado. Por ejemplo, la siguiente política permitirá al usuario John
realizar cualquier acción en la tabla MusicCollection
y en todos sus índices, incluidos los índices que se creen en el futuro.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal":"arn:aws:iam::
111122223333
:user/John
", "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
", "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/index/*" ] } ] }
Políticas basadas en recursos para el acceso entre cuentas
Puede especificar permisos para una identidad de IAM entre cuentas para acceder a los recursos de DynamoDB. Por ejemplo, es posible que necesite un usuario de una cuenta de confianza que pueda leer el contenido de su tabla, con la condición de que solo acceda a elementos y atributos específicos de esos elementos. En la siguiente política se permite al usuario John
con un Cuenta de AWS ID 111111111111
de confianza acceder a una tabla de la cuenta 123456789012
usando la API GetItem. La política garantiza que el usuario solo pueda acceder a los elementos con la clave principal Jane
y que solo pueda recuperar los atributos Artist
y SongTitle
, pero no otros atributos.
importante
Si no especifica la condición SPECIFIC_ATTRIBUTES
, verá todos los atributos de los elementos devueltos.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountTablePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:user/John" }, "Action": "dynamodb:GetItem", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": "Jane", "dynamodb:Attributes": [ "Artist", "SongTitle" ] }, "StringEquals": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES" } } } ] }
Además de la anterior política basada en recursos, la política basada en identidad asociada al usuario John
también debe permitir la acción de la API GetItem
para que funcione el acceso entre cuentas. A continuación, se muestra un ejemplo de política basada en identidad que debe asociar al usuario John
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountIdentityBasedPolicy", "Effect": "Allow", "Action": [ "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:
123456789012
:table/MusicCollection
" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": "Jane
", "dynamodb:Attributes": [ "Artist", "SongTitle" ] }, "StringEquals": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES" } } } ] }
El usuario John puede hacer una solicitud GetItem
especificando el ARN en el parámetro table-name
para acceder a la tabla MusicCollection
de la cuenta 123456789012
.
aws dynamodb get-item \ --table-name arn:aws:dynamodb:us-west-2:
123456789012
:table/MusicCollection
\ --key '{"Artist": {"S": "Jane
"}' \ --projection-expression 'Artist, SongTitle' \ --return-consumed-capacity TOTAL
Política basada en recursos con condiciones de dirección IP
Puede aplicar una condición para restringir las direcciones IP de origen, las nubes privadas virtuales (VPC) y los puntos de conexión de VPC (VPCE). Puede especificar los permisos en función de las direcciones de origen de la solicitud de origen. Por ejemplo, es posible que desee permitir que un usuario acceda a los recursos de DynamoDB solo si se accede a ellos desde una IP específica, como un punto de conexión de VPN corporativo. Especifique estas direcciones IP en la instrucción Condition
.
En el siguiente ejemplo, el usuario John
puede acceder a cualquier recurso de DynamoDB cuando las IP de origen son 54.240.143.0/24
y 2001:DB8:1234:5678::/64
.
{ "Id":"PolicyId2", "Version":"2012-10-17", "Statement":[ { "Sid":"AllowIPmix", "Effect":"Allow", "Principal":"arn:aws:iam::
111111111111
:user/John
", "Action":"dynamodb:*", "Resource":"*", "Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] } } } ] }
También puede denegar todo acceso a los recursos de DynamoDB, excepto cuando el origen sea un punto de conexión de VPC específico, por ejemplo, vpce-1a2b3c4d
.
{ "Id":"PolicyId", "Version":"2012-10-17", "Statement": [ { "Sid": "AccessToSpecificVPCEOnly", "Principal": "*", "Action": "dynamodb:*", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals":{ "aws:sourceVpce":"
vpce-1a2b3c4d
" } } } ] }
Política basada en recursos que utiliza un rol de IAM
También puede especificar un rol de servicio de IAM en la política basada en recursos. Las entidades de IAM que asumen este rol están limitadas por las acciones permitidas especificadas para el rol y por el conjunto específico de recursos de la política basada en recursos.
En el siguiente ejemplo, se permite que una entidad de IAM realice todas las acciones de DynamoDB en los recursos MusicCollection
y MusicCollection
de DynamoDB.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:role/John
" }, "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
", "arn:aws:dynamodb:us-west-2:123456789012
:table/MusicCollection
/*" ] } ] }