

# Uso de políticas basadas en recursos para DynamoDB
<a name="access-control-resource-based"></a>

DynamoDB admite las políticas basadas en recursos para tablas, índices y secuencias. Las políticas basadas en recursos permiten definir los permisos de acceso al especificar quién tiene acceso a cada recurso y las acciones que puede realizar en cada recurso.

Puede asociar una política basada en recursos a los recursos de DynamoDB, como una tabla o una secuencia. En esta política, se especifican los permisos para las [entidades principales](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) de Identity and Access Management (IAM) que pueden realizar acciones específicas en estos recursos de DynamoDB. Por ejemplo, la política asociada a una tabla incluirá los permisos de acceso a la tabla y a sus índices. Como resultado, las políticas basadas en recursos pueden ayudarlo a simplificar el control de acceso a las tablas, índices y secuencias de DynamoDB, al definir los permisos en el nivel de recursos. El tamaño máximo de una política que puede adjuntar a un recurso de DynamoDB es de 20 KB.

Una ventaja importante del uso de políticas basadas en recursos es que simplifica el control de acceso entre cuentas para proporcionar acceso entre cuentas a las entidades principales de IAM en diferentes Cuentas de AWS. Para obtener más información, consulte [Políticas basadas en recursos para el acceso entre cuentas](rbac-examples.md#rbac-examples-cross-account).

Las políticas basadas en los recursos también admiten las integraciones con el analizador de acceso externo de [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) y las funciones [Bloquear el acceso público (BPA)](rbac-bpa-rbp.md). IAM Access Analyzer informa sobre el acceso entre cuentas a entidades externas especificadas en las políticas basadas en recursos. También proporciona visibilidad para ayudarlo a refinar los permisos y cumplir con el principio de privilegios mínimos. El BPA lo ayuda a impedir el acceso público a las tablas, índices y secuencias de DynamoDB. Además, se activa automáticamente en los flujos de trabajo de creación y modificación de las políticas basadas en recursos.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/q9sBxrVgq4U?si=0cR4TJIlKvH9Wlu5/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/q9sBxrVgq4U?si=0cR4TJIlKvH9Wlu5)


**Topics**
+ [Creación de una tabla con una política basada en recursos](rbac-create-table.md)
+ [Asociación de una política a una tabla de DynamoDB existente](rbac-attach-resource-based-policy.md)
+ [Asociación de una política basada en recursos a un flujo de DynamoDB](rbac-attach-resource-policy-streams.md)
+ [Eliminación de una política basada en recursos de una tabla de DynamoDB](rbac-delete-resource-based-policy.md)
+ [Acceso entre cuentas con políticas basadas en recursos en DynamoDB](rbac-cross-account-access.md)
+ [Bloqueo del acceso público con políticas basadas en recursos en DynamoDB](rbac-bpa-rbp.md)
+ [Operaciones de la API de DynamoDB admitidas por las políticas basadas en recursos](rbac-iam-actions.md)
+ [Autorización con políticas basadas en identidad de IAM y políticas basadas en recursos de DynamoDB](rbac-auth-iam-id-based-policies-DDB.md)
+ [Ejemplos de política basada en recursos de DynamoDB](rbac-examples.md)
+ [Consideraciones sobre la política basada en recursos de DynamoDB](rbac-considerations.md)
+ [Prácticas recomendadas de las políticas basadas en recursos de DynamoDB](rbac-best-practices.md)

# Creación de una tabla con una política basada en recursos
<a name="rbac-create-table"></a>

Puede agregar una política basada en recursos al crear una tabla desde la consola de DynamoDB, la API [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html), la AWS CLI, el [AWS SDK](rbac-attach-resource-based-policy.md#rbac-attach-policy-java-sdk) o una plantilla de CloudFormation.

## AWS CLI
<a name="rbac-create-table-CLI"></a>

En el siguiente ejemplo se crea una tabla denominada *MusicCollection* con el comando `create-table` de la AWS CLI. Este comando también incluye el parámetro `resource-policy` que añade a la tabla una política basada en recursos. Esta política permite al usuario *John* realizar las acciones de las API [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html), [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) y [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) en la tabla.

Recuerde reemplazar el texto en *cursiva* por la información específica del recurso.

```
aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
    --resource-policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::123456789012:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:RestoreTableToPointInTime\",
                        \"dynamodb:GetItem\",
                        \"dynamodb:DescribeTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Consola de administración de AWS
<a name="rbac-create-table-console"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de DynamoDB en [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. En el panel, elija **Crear tabla**.

1. En **Detalles de la tabla**, especifique el nombre de la tabla, la clave de partición y los detalles de la clave de clasificación.

1. En **Configuración de la tabla**, elija **Personalizar configuración**.

1. (Opcional) Especifique sus opciones para **Clase de tabla**, **Calculadora de capacidad**, **Configuración de capacidad de lectura/escritura**, **Índices secundarios**, **Cifrado en reposo** y **Protección contra eliminaciones**.

1. En **Política basada en recursos**, añada una política para definir los permisos de acceso a la tabla y sus índices. En esta política, se especifica quién tiene acceso a estos recursos y las acciones que se les permite realizar en cada recurso. Para añadir una política, realice alguna de las siguientes operaciones:
   + Escriba o pegue un documento de política de JSON. Para obtener más información sobre el lenguaje de las políticas de IAM, consulte [Creación de políticas mediante el editor JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) en la *Guía del usuario de IAM*.
**sugerencia**  
Para ver ejemplos de políticas basadas en recursos en la Guía para desarrolladores de Amazon DynamoDB, elija **Ejemplos de políticas**.
   + Elija **Agregar nueva instrucción**. A continuación, añada una nueva instrucción y especifique la información en los campos proporcionados. Repita este paso para tantas instrucciones como desee agregar.
**importante**  
Asegúrese de resolver advertencias de seguridad, los errores y las sugerencias antes de guardar la política.

   La siguiente política de IAM de ejemplo permite al usuario *John* realizar las acciones de la API [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html), [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) y [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) en la tabla *MusicCollection*.

   Recuerde reemplazar el texto en *cursiva* por la información específica del recurso.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/username"
         },
         "Action": [
           "dynamodb:RestoreTableToPointInTime",
           "dynamodb:GetItem",
           "dynamodb:PutItem"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

1. (Opcional) Elija **Preview external access** (Vista previa del acceso externo) en la esquina inferior derecha para obtener una vista previa de cómo la política nueva afecta al acceso público y entre cuentas al recurso. Antes de guardar la política, puede comprobar si introduce nuevos hallazgos de IAM Access Analyzer o resuelve las conclusiones existentes. Si no ve un analizador activo, elija **Ir a Access Analyzer** para [crear un analizador de la cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) en Access Analyzer de IAM. Para obtener más información, consulte [Acceso de vista previa](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Seleccione **Create table (Creación de tabla)**.

## AWS CloudFormationPlantilla de
<a name="rbac-create-table-cfn"></a>

------
#### [ Using the AWS::DynamoDB::Table resource ]

La siguiente plantilla de CloudFormation crea una tabla con una secuencia mediante el recurso [AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html). Esta plantilla también incluye políticas basadas en recursos que se adjuntan tanto a la tabla como a la secuencia.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "MusicCollectionTable": {
            "Type": "AWS::DynamoDB::Table",
            "Properties": {
                "AttributeDefinitions": [
                    {
                        "AttributeName": "Artist",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "Artist",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PROVISIONED",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 5
                },
                "StreamSpecification": {
                  "StreamViewType": "OLD_IMAGE",
                  "ResourcePolicy": {
                    "PolicyDocument": {
                      "Version": "2012-10-17",		 	 	 
                      "Statement": [
                        {
                            "Principal": {
                                "AWS": "arn:aws:iam::111122223333:user/John"
                            },
                            "Effect": "Allow",
                            "Action": [
                                "dynamodb:GetRecords",
                                "dynamodb:GetShardIterator",
                                "dynamodb:DescribeStream"
                            ],
                            "Resource": "*"
                        }
                      ]
                    }
                  }
                },
                "TableName": "MusicCollection",
                "ResourcePolicy": {
                    "PolicyDocument": {
                        "Version": "2012-10-17",		 	 	 
                        "Statement": [
                            {
                                "Principal": {
                                    "AWS": [
                                        "arn:aws:iam::111122223333:user/John"
                                    ]
                                },
                                "Effect": "Allow",
                                "Action": "dynamodb:GetItem",
                                "Resource": "*"
                            }
                        ]
                    }
                }
            }
           
        }
    }
}
```

------
#### [ Using the AWS::DynamoDB::GlobalTable resource ]

La siguiente plantilla de CloudFormation crea una tabla con el recurso [AWS::DynamoDB::GlobalTable](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) y adjunta una política basada en recursos a la tabla y a su secuencia.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "GlobalMusicCollection": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "Properties": {
                "TableName": "MusicCollection",
                "AttributeDefinitions": [{
                    "AttributeName": "Artist",
                    "AttributeType": "S"
                }],
                "KeySchema": [{
                    "AttributeName": "Artist",
                    "KeyType": "HASH"
                }],
                "BillingMode": "PAY_PER_REQUEST",
                "StreamSpecification": {
                    "StreamViewType": "NEW_AND_OLD_IMAGES"
                },
                "Replicas": [
                    {
                        "Region": "us-east-1",
                        "ResourcePolicy": {
                            "PolicyDocument": {
                                "Version": "2012-10-17",		 	 	 
                                "Statement": [{
                                    "Principal": {
                                        "AWS": [
                                            "arn:aws:iam::111122223333:user/John"
                                        ]
                                    },
                                    "Effect": "Allow",
                                    "Action": "dynamodb:GetItem",
                                    "Resource": "*"
                                }]
                            }
                        },
                        "ReplicaStreamSpecification": {
                            "ResourcePolicy": {
                                "PolicyDocument": {
                                    "Version": "2012-10-17",		 	 	 
                                    "Statement": [{
                                        "Principal": {
                                            "AWS": "arn:aws:iam::111122223333:user/John"
                                        },
                                        "Effect": "Allow",
                                        "Action": [
                                            "dynamodb:GetRecords",
                                            "dynamodb:GetShardIterator",
                                            "dynamodb:DescribeStream"
                                        ],
                                        "Resource": "*"
                                    }]
                                }
                            }
                        }
                    }
                ]
            }
        }
    }
}
```

------

# Asociación de una política a una tabla de DynamoDB existente
<a name="rbac-attach-resource-based-policy"></a>

Puede asociar una política basada en recursos a una tabla existente o modificar una política existente desde la consola de DynamoDB, la API [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html), la AWS CLI, el SDK de AWS o la plantilla de [CloudFormation](rbac-create-table.md#rbac-create-table-cfn).

## Ejemplo de AWS CLI para asociar una nueva política
<a name="rbac-attach-policy-CLI"></a>

En el siguiente ejemplo de política de IAM se utiliza el comando `put-resource-policy` de la AWS CLI para asociar una política basada en recursos a una tabla existente. En este ejemplo, el usuario *John* puede ejecutar las acciones de la API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) y [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) en una tabla existente denominada *MusicCollection*.

Recuerde reemplazar el texto en *cursiva* por la información específica del recurso.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:PutItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Ejemplo de AWS CLI para actualizar condicionalmente una política existente
<a name="rbac-update-policy-CLI"></a>

Para actualizar condicionalmente una política basada en recursos existente de una tabla, puede usar el parámetro `expected-revision-id` opcional. En el siguiente ejemplo solo se actualiza la política si existe en DynamoDB y si su ID de revisión actual coincide con el parámetro `expected-revision-id` proporcionado.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --expected-revision-id 1709841168699 \ 
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Consola de administración de AWS
<a name="rbac-attach-policy-console"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de DynamoDB en [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. En el panel de, elija una tabla existente.

1. Vaya a la pestaña **Permisos** y elija **Crear política de tabla**.

1. En el editor de políticas basadas en recursos, añada la política que desea asociar y elija **Crear política**.

   En el siguiente ejemplo de política de IAM, el usuario *John* puede ejecutar las acciones de la API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) y [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) en una tabla existente denominada *MusicCollection*.

   Recuerde reemplazar el texto en *cursiva* por la información específica del recurso.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:user/username"
         },
         "Action": [
           "dynamodb:GetItem",
           "dynamodb:PutItem",
           "dynamodb:UpdateItem",
           "dynamodb:UpdateTable"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

## AWS SDK for Java 2.x
<a name="rbac-attach-policy-java-sdk"></a>

En el siguiente ejemplo de política de IAM se utiliza el método `putResourcePolicy` para asociar una política basada en recursos a una tabla existente. Esta política permite a un usuario realizar la acción de la API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) en una tabla existente.

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.PutResourcePolicyRequest;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * [Get started with the AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html)
 */
public class PutResourcePolicy {

    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <tableArn> <allowedAWSPrincipal>

                Where:
                    tableArn - The Amazon DynamoDB table ARN to attach the policy to. For example, arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection.
                    allowedAWSPrincipal - Allowed AWS principal ARN that the example policy will give access to. For example, arn:aws:iam::123456789012:user/John.
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String tableArn = args[0];
        String allowedAWSPrincipal = args[1];
        System.out.println("Attaching a resource-based policy to the Amazon DynamoDB table with ARN " +
                tableArn);
        Region region = Region.US_WEST_2;
        DynamoDbClient ddb = DynamoDbClient.builder()
                .region(region)
                .build();

        String result = putResourcePolicy(ddb, tableArn, allowedAWSPrincipal);
        System.out.println("Revision ID for the attached policy is " + result);
        ddb.close();
    }

    public static String putResourcePolicy(DynamoDbClient ddb, String tableArn, String allowedAWSPrincipal) {
        String policy = generatePolicy(tableArn, allowedAWSPrincipal);
        PutResourcePolicyRequest request = PutResourcePolicyRequest.builder()
                .policy(policy)
                .resourceArn(tableArn)
                .build();

        try {
            return ddb.putResourcePolicy(request).revisionId();
        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }

        return "";
    }

    private static String generatePolicy(String tableArn, String allowedAWSPrincipal) {
        return "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +,		 	 	 
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"AWS\":\"" + allowedAWSPrincipal + "\"},\n" +
                "            \"Action\": [\n" +
                "                \"dynamodb:GetItem\"\n" +
                "            ],\n" +
                "            \"Resource\": \"" + tableArn + "\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";
    }
}
```

# Asociación de una política basada en recursos a un flujo de DynamoDB
<a name="rbac-attach-resource-policy-streams"></a>

Puede asociar una política basada en recursos a una secuencia de tablas existente o modificar una política existente desde la consola de DynamoDB, la API [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html), la AWS CLI, el SDK de AWS o la plantilla de [CloudFormation](rbac-create-table.md#rbac-create-table-cfn).

**nota**  
No puede asociar una política a una secuencia mientras se crea con las API [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) o [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html). Sin embargo, puede modificar o eliminar una política después de eliminar una tabla. También puede modificar o eliminar la política de una secuencia desactivada.



## AWS CLI
<a name="rbac-attach-policy-stream-CLI"></a>

En el siguiente ejemplo de política de IAM se utiliza el comando `put-resource-policy` de la AWS CLI para asociar una política basada en recursos a una secuencia de una tabla denominada *MusicCollection*. En este ejemplo, el usuario *John* puede realizar las acciones de las API [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html) y [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html) en la secuencia.

Recuerde reemplazar el texto en *cursiva* por la información específica del recurso.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492 \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetRecords\",
                        \"dynamodb:GetShardIterator\",
                        \"dynamodb:DescribeStream\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492\"
                }
            ]
        }"
```

## Consola de administración de AWS
<a name="rbac-attach-policy-stream-console"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de DynamoDB en [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. En el panel de la consola de DynamoDB, elija **Tablas** y seleccione una tabla existente.

   Asegúrese de que la tabla que seleccione tenga las secuencias activadas. Para obtener información sobre la activación de las secuencias en una tabla, consulte [Habilitación de una secuencia](Streams.md#Streams.Enabling).

1. Elija la pestaña **Permisos**.

1. En **Política basada en recursos para la secuencia activa**, elija **Crear política de transmisión**.

1. En el editor **Política basada en recursos**, añada una política para definir los permisos de acceso a la secuencia. En esta política, se especifica quién tiene acceso a la secuencia y las acciones que se les permite realizar en cada secuencia. Para añadir una política, realice alguna de las siguientes operaciones:
   + Escriba o pegue un documento de política de JSON. Para obtener más información sobre el lenguaje de las políticas de IAM, consulte [Creación de políticas mediante el editor JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) en la *Guía del usuario de IAM*.
**sugerencia**  
Para ver ejemplos de políticas basadas en recursos en la Guía para desarrolladores de Amazon DynamoDB, elija **Ejemplos de políticas**.
   + Elija **Agregar nueva instrucción**. A continuación, añada una nueva instrucción y especifique la información en los campos proporcionados. Repita este paso para tantas instrucciones como desee agregar.
**importante**  
Asegúrese de resolver advertencias de seguridad, los errores y las sugerencias antes de guardar la política.

1. (Opcional) Elija **Preview external access** (Vista previa del acceso externo) en la esquina inferior derecha para obtener una vista previa de cómo la política nueva afecta al acceso público y entre cuentas al recurso. Antes de guardar la política, puede comprobar si introduce nuevos hallazgos de IAM Access Analyzer o resuelve las conclusiones existentes. Si no ve un analizador activo, elija **Ir a Access Analyzer** para [crear un analizador de la cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) en Access Analyzer de IAM. Para obtener más información, consulte [Acceso de vista previa](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Elija **Crear política**.

En el siguiente ejemplo de política de IAM se asocia una política basada en recursos a una secuencia de una tabla denominada *MusicCollection*. En este ejemplo, el usuario *John* puede realizar las acciones de las API [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html) y [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html) en la secuencia.

Recuerde reemplazar el texto en *cursiva* por la información específica del recurso.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/username"
      },
      "Action": [
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator",
        "dynamodb:DescribeStream"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

# Eliminación de una política basada en recursos de una tabla de DynamoDB
<a name="rbac-delete-resource-based-policy"></a>

Puede eliminar una política basada en recursos de una tabla existente desde la consola de DynamoDB, la API [DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html), la AWS CLI, el SDK de AWS o una plantilla de CloudFormation.

## AWS CLI
<a name="rbac-delete-policy-CLI"></a>

En el siguiente ejemplo se utiliza el comando `delete-resource-policy` de la AWS CLI para eliminar una política basada en recursos de una tabla denominada *MusicCollection*.

Recuerde reemplazar el texto en *cursiva* por la información específica del recurso.

```
aws dynamodb delete-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection
```

## Consola de administración de AWS
<a name="rbac-delete-policy-console"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de DynamoDB en [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. En el panel de la consola de DynamoDB, elija **Tablas** y seleccione una tabla existente.

1. Elija **Permisos**.

1. En el menú desplegable **Administrar política**, seleccione **Eliminar política**.

1. En el cuadro de diálogo **Eliminar política basada en recursos de la tabla**, escriba **confirm** para confirmar la acción de eliminación.

1. Elija **Eliminar**.

# Acceso entre cuentas con políticas basadas en recursos en DynamoDB
<a name="rbac-cross-account-access"></a>

Al usar una política basada en recursos, puede proporcionar acceso entre cuentas a los recursos disponibles en diferentes Cuentas de AWS. Todos los accesos entre cuentas permitidos por las políticas basadas en recursos se reflejarán en los resultados del acceso externo de IAM Access Analyzer si dispone de un analizador en la misma Región de AWS que el recurso. IAM Access Analyzer ejecuta verificaciones de política para validarla contra la [Gramática de la política](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) de IAM y las [prácticas recomendadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html). Estas verificaciones generan hallazgos y proporcionan recomendaciones procesables para ayudarlo a crear políticas funcionales y que se ajustan a las prácticas recomendadas de seguridad. Puede ver los resultados activos de IAM Access Analyzer en la pestaña **Permisos** de la [consola de DynamoDB](https://console.aws.amazon.com/dynamodb/).

Para obtener más información sobre la validación de políticas con IAM Access Analyzer, consulte [Política de validación de Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) en la *Guía del usuario de IAM*. Para ver una lista de advertencias, errores y sugerencias que devuelve IAM Access Analyzer, consulte [Referencia de verificación de políticas de IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Para conceder el permiso [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) a un usuario A de la cuenta A para acceder a una tabla B de la cuenta B, lleve a cabo los siguientes pasos:

1. Asocie una política basada en recursos a la tabla B que otorgue permiso al usuario A para realizar la acción `GetItem`.

1. Asocie una política basada en identidad a un usuario A que le permita realizar la acción `GetItem` en la tabla B.

Si la opción **Vista previa del acceso externo** está disponible en la [consola de DynamoDB](https://console.aws.amazon.com/dynamodb/), podrá ver cómo afectará al recurso la nueva política de acceso público y entre cuentas. Antes de guardar la política, puede comprobar si introduce nuevos hallazgos de IAM Access Analyzer o resuelve las conclusiones existentes. Si no ve un analizador activo, elija **Ir a Access Analyzer** para [crear un analizador de la cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) en Access Analyzer de IAM. Para obtener más información, consulte [Acceso de vista previa](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

El parámetro de nombre de tabla de las API de plano de datos y plano de control de DynamoDB aceptan el Nombre de recurso de Amazon (ARN) completo de la tabla para admitir las operaciones entre cuentas. Si solo proporciona el parámetro de nombre de tabla en lugar de un ARN completo, la operación de la API se realizará en la tabla de la cuenta a la que pertenece el solicitante. Para ver un ejemplo de una política que usa el acceso entre cuentas, consulte [Políticas basadas en recursos para el acceso entre cuentas](rbac-examples.md#rbac-examples-cross-account).

Se cobrará a la cuenta del propietario del recurso incluso cuando la entidad principal de otra cuenta lea o escriba en la tabla de DynamoDB de la cuenta del propietario. Si la tabla tiene un rendimiento aprovisionado, la suma de todas las solicitudes de las cuentas del propietario y de los solicitantes de otras cuentas determinará si se limitará la solicitud (si el escalado automático está desactivado) o si se escalará o reducirá verticalmente si el escalado automático está activado.

Las solicitudes se registrarán en los registros de CloudTrail de las cuentas del propietario y del solicitante para que cada una de las dos cuentas pueda rastrear qué cuenta accedió a qué datos.

## Acceso compartido con funciones de AWS Lambda
<a name="rbac-analyze-cross-account-lambda-access"></a>

**Funciones de Lambda en la cuenta A**

1. Vaya a la [consola de IAM](https://console.aws.amazon.com/iam/) para crear un rol de IAM que se utilizará como [rol de ejecución de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) para la función de AWS Lambda en la cuenta A. Añada la política de IAM gestionada `AWSLambdaDynamoDBExecutionRole` que tenga los permisos de invocación de DynamoDB Streams y Lambda necesarios. Esta política también concede acceso a todos los recursos potenciales de DynamoDB Streams a los que pueda tener acceso en la cuenta A.

1. En la [consola de Lambda](https://console.aws.amazon.com/lambda/), cree una función de Lambda para procesar los registros de un flujo de DynamoDB y, durante la configuración del rol de ejecución, elija el rol que creó en el paso anterior.

1. Proporcione el rol de ejecución de la función de Lambda al propietario de la cuenta B de DynamoDB Streams para configurar la política basada en recursos que permita el acceso de lectura entre cuentas.

1. Terminar de configurar la función de Lambda.

**DynamoDB Stream en la cuenta B**

1. Obtenga el rol de ejecución de Lambda de la cuenta A que invocará la función de Lambda.

1. En la consola Amazon DynamoDB de la cuenta B, elija la tabla correspondiente al activador entre cuentas de Lambda. En la pestaña **Exportaciones y flujos**, localice el ARN de su flujo de DynamoDB. Asegúrese de que el estado de DynamoDB Stream sea “Activado” y anote el ARN completo del flujo, ya que lo necesitará para la política de recursos.

1. En la pestaña **Permisos**, haga clic en el botón **Crear política de transmisión** para iniciar el editor visual de políticas. Haga clic en el botón **Agregar nueva declaración** o edite la política si ya existe.

1. Cree una política que especifique el rol de ejecución de Lambda en la cuenta A como entidad principal y conceda las acciones de DynamoDB Stream requeridas. Asegúrese de incluir las acciones `dynamodb:DescribeStream`, `dynamodb:GetRecords`, `dynamodb:GetShardIterator` y `dynamodb:ListShards`. Para obtener más información sobre ejemplos de políticas de recursos para DynamoDB Streams, consulte [Ejemplos de política basada en recursos de DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html).

**nota**  
El acceso entre cuentas a las [API de plano de control](HowItWorks.API.md#HowItWorks.API.ControlPlane) tiene un límite inferior de 500 solicitudes de transacciones por segundo (TPS).

# Bloqueo del acceso público con políticas basadas en recursos en DynamoDB
<a name="rbac-bpa-rbp"></a>

[Bloquear el acceso público (BPA)](#rbac-bpa-rbp) es una característica que identifica y evita que se asocien políticas basadas en recursos que concedan acceso público a sus tablas, índices o secuencias de DynamoDB en sus cuentas de [Amazon Web Services (AWS)](https://aws.amazon.com/). Con BPA, puede impedir el acceso público a sus recursos de DynamoDB. BPA realiza comprobaciones durante la creación o modificación de una política basada en recursos y ayuda a mejorar la seguridad con DynamoDB.

BPA utiliza un [razonamiento automatizado](https://aws.amazon.com/what-is/automated-reasoning/) para analizar el acceso que concede su política basada en recursos y le avisa si encuentra dichos permisos al administrar una política basada en recursos. El análisis verifica el acceso a todas las instrucciones de políticas basadas en recursos, las acciones y el conjunto de claves de condición que se utilizan en sus políticas.

**importante**  
BPA ayuda a proteger sus recursos al impedir que se conceda acceso público a través de las políticas basadas en recursos que se asocian directamente a sus recursos de DynamoDB, como tablas, índices y secuencias. Además de habilitar BPA, analice detenidamente las siguientes políticas para confirmar que no otorgan acceso público:  
Políticas basadas en identidad asociadas a las entidades principales de AWS vinculadas (por ejemplo, los roles de IAM)
Políticas basadas en recursos asociadas a recursos de AWS vinculados (por ejemplo, claves AWS Key Management Service [KMS])

Debe asegurarse de que la [entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) no incluya una entrada `*` o que una de las claves de condición especificadas restrinja el acceso de las entidades principales al recurso. Si la política basada en recursos concede acceso público a la tabla, los índices o la secuencia en las Cuentas de AWS, DynamoDB le impedirá crear o modificar la política hasta que se corrija la especificación de la política y se considere no pública.

Para que una política no sea pública, especifique una o más entidades principales dentro del bloque `Principal`. El siguiente ejemplo de política basada en recursos bloquea el acceso público al especificar dos entidades principales.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "123456789012",
      "111122223333"
    ]
  },
  "Action": "dynamodb:*",
  "Resource": "*"
}
```

Las políticas que restringen el acceso al especificar determinadas claves de condición tampoco se consideran públicas. Junto con la evaluación de la entidad principal especificada en la política basada en recursos, se utilizan las siguientes [claves de condición fiables](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) para completar la evaluación de una política basada en recursos para el acceso no público:
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:SourceAccount`
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserId`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:PrincipalIsAWSService`
+ `aws:Ec2InstanceSourceVpc`
+ `aws:SourceOrgID`
+ `aws:SourceOrgPaths`

Además, para que una política basada en recursos no sea pública, los valores del Nombre de recurso de Amazon (ARN) y las claves de cadena no deben contener comodines ni variables. Si su política basada en recursos usa la clave `aws:PrincipalIsAWSService`, debe asegurarse de establecer el valor de la clave en true.

La siguiente política limita el acceso al usuario `John` de la cuenta especificada. La condición limita a la `Principal` y no se considera pública.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": "dynamodb:*",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalArn": "arn:aws:iam::123456789012:user/John"
    }
  }
}
```

El siguiente ejemplo de una política basada en recursos no pública restringe `sourceVPC` al usar el operador `StringEquals`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "dynamodb:*",
      "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": [
            "vpc-91237329"
          ]
        }
      }
    }
  ]
}
```

------

# Operaciones de la API de DynamoDB admitidas por las políticas basadas en recursos
<a name="rbac-iam-actions"></a>

Este tema muestra las operaciones de la API admitidas por políticas basadas en recursos. Sin embargo, para acceso entre cuentas, puede usar solo un determinado conjunto de API de DynamoDB a través de políticas basadas en recursos. No puede asociar políticas basadas en recursos a tipos de recursos, como las copias de seguridad y las importaciones. Las acciones de IAM, que se corresponden con las API que funcionan en estos tipos de recursos, están excluidas de las acciones de IAM admitidas en las políticas basadas en recursos. Como los administradores de tablas configuran los ajustes internos de las tablas en la misma cuenta, las API, tales como [UpdateTimetoLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html) y [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html), no admiten el acceso entre cuentas mediante las políticas basadas en recursos.

Las API de plano de datos y plano de control de DynamoDB que admiten el acceso entre cuentas también admiten la sobrecarga de nombres de tabla, lo que permite especificar el ARN de la tabla en lugar del nombre de la tabla. Puede especificar el ARN de la tabla en el parámetro `TableName` de estas API. Sin embargo, no todas estas API admiten el acceso entre cuentas.

**Topics**
+ [Operaciones de la API del plano de datos](#rbac-data-plane-actions)
+ [Operaciones de API de PartiQL](#rbac-partiql-actions)
+ [Operaciones de la API del plano de control](#rbac-control-plane-actions)
+ [Operaciones de API de tablas globales de la versión 2019.11.21 (actual)](#rbac-current-global-table-actions)
+ [Operaciones de API de tablas globales de la versión 2017.11.29 (heredada)](#rbac-legacy-global-table-actions)
+ [Operaciones de la API en etiquetas](#rbac-tags-actions)
+ [Operaciones de API de copia de seguridad y restauración](#rbac-backup-restore-actions)
+ [Operaciones de API de copia de seguridad o restauración continuas (PITR)](#rbac-continuous-backup-restore-actions)
+ [Operaciones de la API de Contributor Insights](#rbac-contributor-insights-actions)
+ [Operaciones de la API de exportación](#rbac-export-actions)
+ [Operaciones de la API de importación](#rbac-import-actions)
+ [Operaciones de API de Amazon Kinesis Data Streams](#rbac-kinesis-actions)
+ [Operaciones de API de políticas basadas en recursos](#rbac-rbp-actions)
+ [Operaciones de API de tiempo de vida](#rbac-ttl-actions)
+ [Otras operaciones de la API](#rbac-other-actions)
+ [Operaciones de API de DynamoDB Streams](#rbac-ds-actions)

## Operaciones de la API del plano de datos
<a name="rbac-data-plane-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de [plano de datos](HowItWorks.API.md#HowItWorks.API.DataPlane) para las políticas basadas en recursos y el acceso entre cuentas.


| Plano de datos: API de tablas e índices | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DeleteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)   | Sí | Sí | 
|   [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)   | Sí | Sí | 
|   [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)   | Sí | Sí | 
|   [Query](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html)   | Sí | Sí | 
|   [Examen](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html)   | Sí | Sí | 
|   [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)   | Sí | Sí | 
|   [TransactGetItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactGetItems.html)   | Sí | Sí | 
|   [TransactWriteItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactWriteItems.html)   | Sí | Sí | 
|   [BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html)   | Sí | Sí | 
|   [BatchWriteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html)   | Sí | Sí | 

## Operaciones de API de PartiQL
<a name="rbac-partiql-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de [PartiQL](HowItWorks.API.md#HowItWorks.API.DataPlane.partiql) para las políticas basadas en recursos y el acceso entre cuentas.


| API de PartiQL | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [BatchExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchExecuteStatement.html)   | Sí | No | 
|   [ExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html)   | Sí | No | 
|   [ExecuteTransaction](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteTransaction.html)   | Sí | No | 

## Operaciones de la API del plano de control
<a name="rbac-control-plane-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de [plano de control](HowItWorks.API.md#HowItWorks.API.ControlPlane) para las políticas basadas en recursos y el acceso entre cuentas.


| Plano de control: API de tablas | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)   | No | No | 
|   [DeleteTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html)   | Sí | Sí | 
|   [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html)   | Sí | Sí | 
|   [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)   | Sí | Sí | 

## Operaciones de API de tablas globales de la versión 2019.11.21 (actual)
<a name="rbac-current-global-table-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de [tablas globales de la versión 2019.11.21 (actual)](GlobalTables.md) para las políticas basadas en recursos y el acceso entre cuentas.


| API de tablas globales de la versión 2019.11.21 (actual) | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTableReplicaAutoScaling.html)   | Sí | No | 
|   [UpdateTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTableReplicaAutoScaling.html)   | Sí | No | 

## Operaciones de API de tablas globales de la versión 2017.11.29 (heredada)
<a name="rbac-legacy-global-table-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de [tablas globales de la versión 2017.11.29 (heredada)](globaltables.V1.md) para las políticas basadas en recursos y el acceso entre cuentas.


| API de tablas globales de la versión 2017.11.29 (heredada) | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html)   | No | No | 
|   [DescribeGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTable.html)   | No | No | 
|   [DescribeGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTableSettings.html)   | No | No | 
|   [ListGlobalTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListGlobalTables.html)   | No | No | 
|   [UpdateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTable.html)   | No | No | 
|   [UpdateGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTableSettings.html)   | No | No | 

## Operaciones de la API en etiquetas
<a name="rbac-tags-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API relacionadas con [etiquetas](Tagging.Operations.md) para las políticas basadas en recursos y el acceso entre cuentas.


| API de etiquetas | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [ListTagsOfResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTagsOfResource.html)   | Sí | Sí | 
|   [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)   | Sí | Sí | 
|   [UntagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UntagResource.html)   | Sí | Sí | 

## Operaciones de API de copia de seguridad y restauración
<a name="rbac-backup-restore-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API relacionadas con [copia de seguridad y restauración](Backup-and-Restore.md) para las políticas basadas en recursos y el acceso entre cuentas.


| API de copia de seguridad y restauración | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [CreateBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateBackup.html)   | Sí | No | 
|   [DescribeBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeBackup.html)   | No | No | 
|   [DeleteBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteBackup.html)   | No | No | 
|  [RestoreTableFromBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableFromBackup.html)  | No | No | 

## Operaciones de API de copia de seguridad o restauración continuas (PITR)
<a name="rbac-continuous-backup-restore-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API relacionadas con [copia de seguridad o restauración continuas (PITR)](Point-in-time-recovery.md) para las políticas basadas en recursos y el acceso entre cuentas.


| API de copia de seguridad o restauración continuas (PITR) | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContinuousBackups.html)   | Sí | No | 
|   [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html)   | Sí | No | 
|   [UpdateContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContinuousBackups.html)   | Sí | No | 

## Operaciones de la API de Contributor Insights
<a name="rbac-contributor-insights-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API relacionadas con [copia de seguridad o restauración continuas (PITR)](Point-in-time-recovery.md) para las políticas basadas en recursos y el acceso entre cuentas.


| API de Contributor Insights | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContributorInsights.html)   | Sí | No | 
|   [ListContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListContributorInsights.html)   | No | No | 
|   [UpdateContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContributorInsights.html)   | Sí | No | 

## Operaciones de la API de exportación
<a name="rbac-export-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de exportación para las políticas basadas en recursos y el acceso entre cuentas.


| API de exportación | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeExport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeExport.html)   | No | No | 
|   [ExportTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExportTableToPointInTime.html)   | Sí | No | 
|   [ListExports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListExports.html)   | No | No | 

## Operaciones de la API de importación
<a name="rbac-import-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de importación para las políticas basadas en recursos y el acceso entre cuentas.


| API de importación | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeImport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeImport.html)   | No | No | 
|   [ImportTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ImportTable.html)   | No | No | 
|   [ListImports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListImports.html)   | No | No | 

## Operaciones de API de Amazon Kinesis Data Streams
<a name="rbac-kinesis-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de Kinesis Data Streams para las políticas basadas en recursos y el acceso entre cuentas.


| API de Kinesis | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeKinesisStreamingDestination.html)   | Sí | No | 
|   [Deshabilite el destino de transmisión de Kinesis](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html)   | Sí | No | 
|   [EnableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_EnableKinesisStreamingDestination.html)   | Sí | No | 
|   [UpdateKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateKinesisStreamingDestination.html)   | Sí | No | 

## Operaciones de API de políticas basadas en recursos
<a name="rbac-rbp-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de la política basada en recursos para las políticas basadas en recursos y el acceso entre cuentas.


| API de política basada en recursos | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [GetResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetResourcePolicy.html)   | Sí | No | 
|   [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)   | Sí | No | 
|   [DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html)   | Sí | No | 

## Operaciones de API de tiempo de vida
<a name="rbac-ttl-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por las operaciones de la API de [tiempo de vida](TTL.md) (TTL) para las políticas basadas en recursos y el acceso entre cuentas.


| API de TTL | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTimeToLive.html)   | Sí | No | 
|   [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html)   | Sí | No | 

## Otras operaciones de la API
<a name="rbac-other-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API proporcionada por otras diversas operaciones de la API para las políticas basadas en recursos y el acceso entre cuentas.


| Otras API | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeLimits](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeLimits.html)   | No | No | 
|   [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html)   | No | No | 
|   [ListBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListBackups.html)   | No | No | 
|   [ListTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html)   | No | No | 

## Operaciones de API de DynamoDB Streams
<a name="rbac-ds-actions"></a>

En la siguiente tabla se muestra la compatibilidad en el nivel de la API de las API de DynamoDB Streams para las políticas basadas en recursos y el acceso entre cuentas.


| API de DynamoDB Streams | Compatibilidad con las políticas basadas en recursos | Compatibilidad entre cuentas | 
| --- | --- | --- | 
|   [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)   | Sí | Sí | 
|   [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html)   | Sí | Sí | 
|   [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)   | Sí | Sí | 
|   [ListStreams](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_ListStreams.html)   | No | No | 

# Autorización con políticas basadas en identidad de IAM y políticas basadas en recursos de DynamoDB
<a name="rbac-auth-iam-id-based-policies-DDB"></a>

Las **políticas basadas en identidad** están asociadas a una identidad, como los usuarios, los grupos de usuarios y roles de IAM. Estos son documentos de políticas de IAM que controlan las acciones que puede realizar una identidad, en qué recursos y en qué condiciones. Las políticas basadas en identidad pueden ser [administradas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) o [insertadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies).

Las **políticas basadas en recursos** son documentos de políticas JSON que se asocian a un recurso, como una tabla de DynamoDB. Estas políticas conceden a la entidad principal especificada permiso para ejecutar acciones concretas en el recurso y definen en qué condiciones son aplicables. Por ejemplo, la política basada en recursos de una tabla de DynamoDB también incluye el índice asociado a la tabla. Las políticas basadas en recursos son políticas insertadas. No existen políticas basadas en recursos que sean administradas.

Para obtener más información acerca de estas políticas, consulte [Políticas basadas en identidad y políticas basadas en recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) en la *Guía del usuario de IAM*.

Si la entidad principal de IAM es de la misma cuenta que el propietario del recurso, la política basada en recursos es suficiente para especificar los permisos de acceso al recurso. También podrá optar por una política basada en identidades de IAM junto con una política basada en recursos. Para obtener acceso entre cuentas, debe permitir el acceso de forma explícita en las políticas de identidad y recursos, tal como se especifica en [Acceso entre cuentas con políticas basadas en recursos en DynamoDB](rbac-cross-account-access.md). Cuando utilice ambos tipos de políticas, una política se evaluará tal como se describe en [Cómo determinar si una solicitud se permite o se deniega en una cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**importante**  
Si una política basada en la identidad concede acceso incondicional a una tabla de DynamoDB (por ejemplo, `dynamodb:GetItem` sin condiciones), una política basada en recursos que permita el acceso con condiciones en `dynamodb:Attributes` no restringirá ese acceso. El permiso incondicional de la política basada en la identidad tiene prioridad y las condiciones de la política basada en recursos no se aplican como restricciones. Para restringir el acceso a atributos específicos, utilice una instrucción `Deny` explícita en lugar de confiar solo en las instrucciones `Allow` condicionales de la política basada en los recursos.

# Ejemplos de política basada en recursos de DynamoDB
<a name="rbac-examples"></a>

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
<a name="rbac-examples-get"></a>

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](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) y [BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html) en el recurso *MusicCollection*.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::111122223333:user/username",
            "arn:aws:iam::111122223333:user/Jane"
          ]
        },
        "Action": [
          "dynamodb:GetItem",
          "dynamodb:BatchGetItem"
        ],
        "Resource": [
          "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
        ]
    }
  ]
}
```

------

## Política basada en recursos para una secuencia
<a name="rbac-examples-streams"></a>

La siguiente política basada en recursos asociada a un flujo de DynamoDB denominado `2024-02-12T18:57:26.492` otorga a los usuarios de IAM *John* y *Jane* permiso para realizar las acciones de la API [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html) y [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html) en el recurso `2024-02-12T18:57:26.492`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/username",
          "arn:aws:iam::111122223333:user/Jane"
        ]
      },
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1: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
<a name="rbac-examples-wildcard"></a>

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 (\$1) 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.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/role-name"
      },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/index/index-name"
      ]
    }
  ]
}
```

------

## Políticas basadas en recursos para el acceso entre cuentas
<a name="rbac-examples-cross-account"></a>

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 ID de Cuenta de AWS *111111111111* de confianza acceder a datos de una tabla de la cuenta *123456789012* mediante la API [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html). 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.

------
#### [ JSON ]

****  

```
{
    "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*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountIdentityBasedPolicy",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1: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
<a name="rbac-examples-conditions"></a>

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`.

------
#### [ JSON ]

****  

```
{
  "Id":"PolicyId2",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowIPmix",
      "Effect":"Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:user/username"
      },
      "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*.

**importante**  
Cuando utiliza DAX con tablas de DynamoDB que tienen políticas de recursos basadas en IP en entornos que solo utilizan IPv6, debe configurar reglas de acceso adicionales. Si la política de recursos restringe el acceso al espacio de direcciones IPv4 `0.0.0.0/0` en las tablas, debe permitir el acceso para el rol de IAM asociado al clúster de DAX. Agregue una condición `ArnNotEquals` a la política para garantizar que DAX mantenga el acceso a las tablas de DynamoDB. Para obtener más información, consulte [DAX e IPv6](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.create-cluster.DAX_and_IPV6.html).

------
#### [ JSON ]

****  

```
{
  "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
<a name="rbac-examples-iam"></a>

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.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/*"
      ]
    }
  ]
}
```

------

# Consideraciones sobre la política basada en recursos de DynamoDB
<a name="rbac-considerations"></a>

Al definir políticas basadas en recursos para los recursos de DynamoDB, se aplican las siguientes consideraciones:

**Consideraciones generales**
+ El tamaño máximo admitido para un documento de política basado en recursos es de 20 KB. DynamoDB cuenta los espacios en blanco al calcular el tamaño de una política según esta limitación. 
+ Las actualizaciones posteriores de una política para un recurso determinado se bloquean durante 15 segundos después de actualizar correctamente la política para el mismo recurso.
+ Actualmente, solo puede asociar una política basada en recursos a las secuencias existentes. No puede asociar una política a una secuencia mientras la crea.

**Consideraciones sobre la tabla global**
+ Las políticas basadas en recursos no se admiten en las réplicas de [tablas globales de la versión 2017.11.29 (heredada)](globaltables_HowItWorks.md).
+ Dentro de una política basada en recursos, si se deniega la acción de un rol vinculado a un servicio (SLR) de DynamoDB para replicar los datos para una tabla global, se producirá un error al añadir o eliminar una réplica.
+ El recurso [AWS::DynamoDB::GlobalTable](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) no permite crear una réplica ni añadir una política basada en recursos a dicha réplica en la misma actualización de pila en regiones distintas a la región en la que se implemente la actualización de la pila.

**Consideraciones sobre el acceso entre cuentas**
+ El acceso entre cuentas mediante políticas basadas en recursos no admite tablas cifradas con claves administradas de AWS, ya que no se puede otorgar acceso entre cuentas a la política administrada por AWS de KMS.

**CloudFormation Consideraciones sobre**
+ Las políticas basadas en recursos no admiten la [detección de desviaciones](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#). Si actualiza una política basada en recursos fuera de la plantilla de la pila de AWS CloudFormation, tendrá que actualizar la pila de CloudFormation con los cambios.
+ Las políticas basadas en recursos no admiten cambios fuera de banda. Si agrega, actualiza o elimina una política fuera de la plantilla de CloudFormation, el cambio no se sobrescribirá si no hay cambios en la política en la plantilla.

  Por ejemplo, supongamos que la plantilla contiene una política basada en recursos que actualiza más tarde fuera de la plantilla. Si no realiza cambios en la política de la plantilla, la política actualizada en DynamoDB no se sincronizará con la política de la plantilla.

  Por el contrario, supongamos que la plantilla no contiene una política basada en recursos y se añade una política fuera de la plantilla. Esta política no se eliminará de DynamoDB mientras no se añada a la plantilla. Al añadir una política a la plantilla y actualizar la pila, la política existente en DynamoDB se actualizará para que coincida con la definida en la plantilla.

# Prácticas recomendadas de las políticas basadas en recursos de DynamoDB
<a name="rbac-best-practices"></a>

En este tema se describen las prácticas recomendadas para definir los permisos de acceso para los recursos de DynamoDB y las acciones permitidas en dichos recursos.

## Simplificación del control de acceso a los recursos de DynamoDB
<a name="rbac-simplify-access-control"></a>

Si las entidades principales de AWS Identity and Access Management que necesitan acceder a un recurso de DynamoDB forman parte de la misma Cuenta de AWS que el propietario del recurso, no se requiere ninguna política de IAM basada en identidad para cada entidad principal. Bastará con asociar una política basada en recursos a los recursos pertinentes. Este tipo de configuración simplifica el control de acceso.

## Protección de los recursos de DynamoDB con políticas basadas en recursos
<a name="rbac-protect"></a>

 Para todas las tablas y secuencias de DynamoDB, cree políticas basadas en recursos para aplicar el control de acceso a esos recursos. Las políticas basadas en recursos le permiten centralizar los permisos en el nivel de recursos, simplificar el control de acceso a las tablas, índices y secuencias de DynamoDB y reducir los gastos de administración. Si no se especifica ninguna política basada en recursos para una tabla o secuencia, se denegará implícitamente el acceso a la tabla o secuencia, a menos que las políticas basadas en identidad asociadas a las entidades principales de IAM permitan el acceso.

## Aplicación de permisos de privilegios mínimos
<a name="rbac-least-privilege"></a>

Cuando establezca permisos con políticas basadas en recursos para los recursos de DynamoDB, conceda solo los permisos necesarios para llevar a cabo una acción. Para ello, debe definir las acciones que se pueden llevar a cabo en determinados recursos en condiciones específicas, también conocidos como permisos de privilegios mínimos. Puede empezar con permisos amplios mientras va conociendo los permisos que se necesitan para su carga de trabajo o caso de uso. A medida que su caso de uso vaya madurando, puede ir reduciendo los permisos que concede para alcanzar el objetivo de privilegio mínimo.

## Análisis de la actividad de acceso entre cuentas para generar políticas de privilegios mínimos
<a name="rbac-analyze-cross-account-access"></a>

IAM Access Analyzer informa del acceso entre cuentas a entidades externas específicas en las políticas basadas en recursos y proporciona visibilidad a la hora de refinar los permisos y cumplir con la política de privilegios mínimos. Para obtener más información acerca de la generación de políticas, consulte [Generación de políticas de IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

## Uso de IAM Access Analyzer para generar políticas de privilegios mínimos
<a name="rbac-iam-access-analyzer"></a>

Para conceder solo los permisos necesarios para llevar a cabo una tarea, puede generar políticas que se basen en la actividad de acceso que haya iniciado sesión en AWS CloudTrail. IAM Access Analyzer analiza los servicios y acciones que utilizan sus políticas.