

# Seguridad y conformidad en Amazon DynamoDB
<a name="security"></a>

La seguridad en la nube de AWS es la mayor prioridad. Como cliente de AWS, se beneficia de una arquitectura de red y un centro de datos que se han diseñado para satisfacer los requisitos de seguridad de las organizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y el usuario. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad *de* la nube y seguridad *en* la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta los servicios de AWS en la nube de AWS AWS también proporciona servicios que puede utilizar de forma segura. Auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad en el marco de los [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/). Para obtener más información acerca de los programas de conformidad que se aplican a DynamoDB, consulte [Servicios de AWS en el ámbito del programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/).
+ **Seguridad en la nube**: su responsabilidad viene determinada por el servicio de AWS que utilice. Usted también es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentos aplicables.

Esta documentación lo ayudará a comprender cómo aplicar el modelo de responsabilidad compartida cuando se utiliza DynamoDB. En los siguientes temas, se le mostrará cómo configurar DynamoDB para satisfacer sus objetivos de seguridad y conformidad. También puede aprender a utilizar otros servicios de AWS que le ayudan a monitorear y proteger sus recursos de DynamoDB.

**Topics**
+ [Políticas administradas por AWS para Amazon DynamoDB](ddb-security-iam.awsmanpol.md)
+ [Uso de políticas basadas en recursos para DynamoDB](access-control-resource-based.md)
+ [Uso del control de acceso basado en atributos con DynamoDB](attribute-based-access-control.md)
+ [Protección de datos en DynamoDB](data-protection.md)
+ [AWS Identity and Access Management (IAM) y DynamoDB](identity-and-access-mgmt.md)
+ [Validación de conformidad por sector para DynamoDB](Compliance.md)
+ [Resiliencia y recuperación de desastres en Amazon DynamoDB](disaster-recovery-resiliency.md)
+ [Seguridad de la infraestructura en Amazon DynamoDB](network-isolation.md)
+ [AWS PrivateLink para DynamoDB](privatelink-interface-endpoints.md)
+ [Configuración y análisis de vulnerabilidades en Amazon DynamoDB](configuration-vulnerability.md)
+ [Prácticas recomendadas de seguridad para Amazon DynamoDB](best-practices-security.md)

# Políticas administradas por AWS para Amazon DynamoDB
<a name="ddb-security-iam.awsmanpol"></a>

DynamoDB utiliza las políticas administradas por AWS para definir un conjunto de permisos que el servicio necesita a fin de realizar acciones específicas. DynamoDB mantiene y actualiza sus políticas administradas por AWS. No puede cambiar los permisos en las políticas gestionadas de AWS. Para obtener más información sobre las políticas administradas por AWS, consulte [Políticas administradas porAWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la guía del usuario de IAM.

En ocasiones, DynamoDB puede agregar permisos adicionales a una política administrada por AWS para admitir características nuevas. Este tipo de actualización afecta a todas las identidades (usuarios, grupos y roles) donde se asocia la política. Lo más probable es que una política administrada por AWS se actualice cuando se lance una nueva característica o cuando haya nuevas operaciones disponibles. DynamoDB no eliminará los permisos de una política administrada por AWS, por lo que las actualizaciones de la política no anularán sus permisos existentes. Para obtener una lista completa de las políticas administradas de AWS, consulte [Políticas administradas de AWS](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/policy-list.html).

## Política administrada por AWS: DynamoDBReplicationServiceRolePolicy
<a name="ddb-security-iam.awsmanpol.policy"></a>

No puede adjuntar la política `DynamoDBReplicationServiceRolePolicy` a sus entidades de IAM. Esta política está adjuntada a un rol vinculado a servicios que permite a DynamoDB realizar acciones en su nombre. Para obtener más información, consulte [Uso de IAM con tablas globales](globaltables-security.md).

Esta política concede permisos que permiten al rol vinculado a servicios realizar la replicación de datos entre réplicas de tablas globales. También concede permisos administrativos para administrar las réplicas de tablas globales en su nombre.

**Detalles de los permisos**

Esta política concede permisos para hacer lo siguiente:
+ `dynamodb`: realizar la replicación de datos y administrar las réplicas de tablas.
+ `application-autoscaling`: recuperar y administrar la configuración de escalado automático de la tabla.
+ `account`: recuperar el estado de la región para evaluar la accesibilidad de la réplica.
+ `iam`: para crear el rol vinculado a servicios para el escalado automático de aplicaciones en caso de que dicho rol no exista todavía.

La definición de esta política administrada se encuentra [aquí](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DynamoDBReplicationServiceRolePolicy.html).

## Política administrada de AWS: AmazonDynamoDBFullAccess\$1v2
<a name="ddb-security-iam.awsmanpol.fullaccesspolicy-v2"></a>

La política `AmazonDynamoDBFullAccess_v2` de ámbito reducido concede privilegios de acceso específicos a los usuarios. Puede asociar la política `AmazonDynamoDBFullAccess_v2` a las identidades de IAM. Esta política concede acceso administrativo a los recursos de Amazon DynamoDB y otorga a una identidad de IAM (como un usuario, grupo o rol) acceso a los Servicios de AWS con los que DynamoDB está integrado para utilizar todas las características de DynamoDB. El uso de esta política permite acceder a todas las características de DynamoDB que están disponibles en la Consola de administración de AWS.

**Detalles de los permisos**

Esta política incluye los permisos siguientes:
+ `Amazon DynamoDB`
+ `DynamoDB Accelerator`
+ `AWS KMS`
+ `Grupos de recursos de AWS Tagging`
+ `Lambda`
+ `Application Auto Scaling`
+ `CloudWatch`
+ `Amazon Kinesis`
+ `Amazon EC2`
+ `IAM`

Para revisar la política en formato `JSON`, consulte [AmazonDynamoDBFullAccess\$1v2](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess_v2.html).

## Política administrada de AWS: AmazonDynamodBreadOnlyAccess
<a name="ddb-security-iam.awsmanpol.readonlypolicy"></a>

Puede asociar la política `AmazonDynamoDBReadOnlyAccess` a las identidades de IAM.

Esta política concede acceso de lectura a Amazon DynamoDB.

**Detalles de los permisos**

Esta política incluye los permisos siguientes:
+ `Amazon DynamoDB`: proporciona acceso de solo lectura a Amazon DynamoDB.
+ `Amazon DynamoDB Accelerator (DAX)`: proporciona acceso de solo lectura a Acelerador de Amazon DynamoDB (DAX).
+ `Application Auto Scaling`: permite a las entidades principales ver las configuraciones de Application Auto Scaling. Esto es necesario para que los usuarios puedan ver las políticas de escalado automático que se vinculan a una tabla.
+ `CloudWatch`: permite a las entidades principales ver los datos métricos y las alarmas configuradas en CloudWatch. Esto es necesario para que los usuarios puedan ver el tamaño facturable de la tabla y las alarmas de CloudWatch que se han configurado para una tabla.
+ `AWS Data Pipeline`: permite a las entidades principales ver AWS Data Pipeline y los objetos asociados.
+ `Amazon EC2`: permite a las entidades principales ver las VPC, las subredes y los grupos de seguridad de Amazon EC2.
+ `IAM`: permite a las entidades principales ver los roles de IAM.
+ `AWS KMS`: permite a las entidades principales ver las claves configuradas en AWS KMS. Esto es necesario para que los usuarios puedan ver las AWS KMS keys que crean y administran en sus cuentas.
+ `Amazon SNS`: permite a las entidades principales mostrar temas de Amazon SNS y suscripciones por tema.
+ `Grupos de recursos de AWS`: permite a las entidades principales ver grupos de recursos y sus consultas.
+ `Grupos de recursos de AWS Tagging`: permite a las entidades principales enumerar todos los recursos etiquetas o etiquetados previamente en una región.
+ `Kinesis`: permite a las entidades principales ver las descripciones de los flujos de datos de Kinesis.
+ `Amazon CloudWatch Contributor Insights`: permite a las entidades principales ver los datos de serie temporal recopilados por las reglas de Contributor Insights.

Para revisar la política en formato `JSON`, consulte [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html).

## Actualizaciones de DynamoDB en las políticas administradas por AWS
<a name="ddb-security-iam.awsmanpol.updates"></a>

En esta tabla se muestran las actualizaciones de las políticas de administración de acceso de AWS para DynamoDB.


****  

| Cambio | Descripción | Fecha de modificación | 
| --- | --- | --- | 
| AmazonDynamoDBFullAccess: obsoleta | Esta política se ha reemplazado por una política de ámbito reducido denominada `AmazonDynamoDBFullAccess_v2`. Después de **abril de 2025**, no podrá asociar la política `AmazonDynamoDBFullAccess` a ningún usuario, grupo o rol nuevo. Para obtener más información, consulte [Política administrada de AWS: AmazonDynamoDBFullAccess\$1v2](#ddb-security-iam.awsmanpol.fullaccesspolicy-v2).  | 28 de abril de 2025 | 
| AmazonDynamoDBReadOnlyAccessActualización de  a una política existente | AmazonDynamoDBReadOnlyAccess agregó los permisos dynamodb:GetAbacStatus y dynamodb:UpdateAbacStatus. Estos permisos le permiten ver el estado de ABAC y habilitar ABAC para la Cuenta de AWS en la región actual. | 18 de noviembre de 2024 | 
| AmazonDynamoDBReadOnlyAccessActualización de  a una política existente | AmazonDynamoDBReadOnlyAccess agregó el permiso dynamodb:GetResourcePolicy. Este permiso proporciona acceso a políticas basadas en recursos de lectura asociadas a los recursos de DynamoDB. | 20 de marzo de 2024 | 
| Actualización de DynamoDBReplicationServiceRolePolicy a una política existente | DynamoDBReplicationServiceRolePolicy agregó el permiso dynamodb:GetResourcePolicy. Permite al rol vinculado al servicio leer las políticas basadas en recursos asociadas a los recursos de DynamoDB. | 15 de diciembre de 2023 | 
| Actualización de DynamoDBReplicationServiceRolePolicy a una política existente | DynamoDBReplicationServiceRolePolicy agregó el permiso account:ListRegions. Este permiso permite al rol vinculado a servicios evaluar la accesibilidad de la réplica | 10 de mayo de 2023 | 
| Se agregó DynamoDBReplicationServiceRolePolicy a la lista de políticas administradas | Se agregó información sobre la política administrada DynamoDBReplicationServiceRolePolicy, que utiliza el rol vinculado a servicios de tablas globales de DynamoDB. | 10 de mayo de 2023 | 
| Las tablas globales de DynamoDB empiezan a hacer un seguimiento de los cambios | Las tablas globales de DynamoDB comenzaron a hacer un seguimiento de los cambios de sus políticas administradas por AWS. | 10 de mayo de 2023 | 

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

# Uso del control de acceso basado en atributos con DynamoDB
<a name="attribute-based-access-control"></a>

El [control de acceso basado en atributos (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) es una estrategia de autorización que define los permisos de acceso en función de las [condiciones de etiqueta](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) de las políticas basadas en la identidad u otras políticas de AWS, como las políticas basadas en recursos y las políticas de IAM de la organización. Puede asociar etiquetas a las tablas de DynamoDB, que después se evalúan en función de las condiciones basadas en etiquetas. Los índices asociados a una tabla heredan las etiquetas que agregue a la tabla. Puede agregar un máximo de 50 etiquetas para cada tabla de DynamoDB. El tamaño máximo admitido para todas las etiquetas de una tabla es de 10 KB. Para obtener más información sobre el etiquetado de recursos de DynamoDB y las restricciones de etiquetado, consulte [Etiquetado de recursos en DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.Operations.html) y [Restricciones de etiquetado en DynamoDB](Tagging.md#TaggingRestrictions).

Para obtener más información sobre cómo utilizar etiquetas para controlar el acceso a los recursos de AWS, consulte los siguientes temas en la Guía del usuario de IAM:
+ [Qué es ABAC para AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)
+ [Control de acceso a los recursos de AWS mediante etiquetas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)

Con ABAC, puede aplicar distintos niveles de acceso para que los equipos y aplicaciones realicen acciones en las tablas de DynamoDB con menos políticas. Puede especificar una etiqueta en el [elemento de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) de una política de IAM para controlar el acceso a las tablas o los índices de DynamoDB. Estas condiciones determinan el nivel de acceso que una entidad principal, un usuario o un rol de IAM tiene a las tablas y los índices de DynamoDB. Cuando una entidad principal de IAM realiza una solicitud de acceso a DynamoDB, las etiquetas del recurso y de la identidad se evalúan con respecto a las condiciones de etiqueta de la política de IAM. Posteriormente, la política entra en vigor solo si se cumplen las condiciones de etiqueta. De este modo, podrá crear una política de IAM que indique de forma efectiva una de las siguientes acciones:
+ *Permitir al usuario administrar solo los recursos que tengan una etiqueta con una clave `X` y un valor `Y`*.
+ *Denegar el acceso a todos los usuarios a los recursos etiquetados con una clave `X`*.

Por ejemplo, puede crear una política que permita a los usuarios actualizar una tabla solo si tiene el par clave-valor de etiqueta: `"environment": "staging"`. Puede utilizar la clave de condición [aws:ResourceTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) para permitir o denegar el acceso a una tabla en función de las etiquetas que estén asociadas a dicha tabla.

Puede incluir condiciones basadas en atributos al crear la política o, posteriormente, con la Consola de administración de AWS, la API de AWS, la AWS Command Line Interface (AWS CLI), AWS SDK o AWS CloudFormation.

El siguiente ejemplo permite la acción [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html) en una tabla denominada `MusicTable` si incluye una clave de etiqueta con el nombre `environment` y el valor `production`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:UpdateItem"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/MusicTable",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

**Topics**
+ [¿Por qué debo utilizar ABAC?](#why-use-abac)
+ [Claves de condición para implementar ABAC con DynamoDB](#condition-keys-implement-abac)
+ [Consideraciones para utilizar ABAC con DynamoDB](#abac-considerations)
+ [Habilitación de ABAC en DynamoDB](abac-enable-ddb.md)
+ [Uso de ABAC con tablas e índices de DynamoDB](abac-implementation-ddb-tables.md)
+ [Ejemplos para utilizar ABAC con tablas e índices de DynamoDB](abac-example-use-cases.md)
+ [Solución de errores de ABAC común en tablas e índices de DynamoDB](abac-troubleshooting.md)

## ¿Por qué debo utilizar ABAC?
<a name="why-use-abac"></a>
+ **Administración de políticas más sencilla:** utilizará menos políticas porque no tendrá que crear políticas diferentes para definir el nivel de acceso de cada entidad principal de IAM.
+ **Control de acceso escalable:** el control de acceso de escalado es más fácil con ABAC porque no tiene que actualizar las políticas cuando crea nuevos recursos de DynamoDB. Puede utilizar etiquetas para autorizar el acceso a entidades principales de IAM que contengan etiquetas que coincidan con las etiquetas del recurso. Puede incorporar nuevas entidades principales de IAM o recursos de DynamoDB y aplicar las etiquetas adecuadas para conceder de forma automática los permisos necesarios sin tener que realizar ningún cambio de política.
+ **Administración de permisos detallada:** es una práctica recomendada [conceder el privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) cuando se crean políticas. Con ABAC, puede crear etiquetas para la entidad principal de IAM y utilizarlas a fin de conceder acceso a acciones y recursos específicos que coincidan con las etiquetas de la entidad principal de IAM. 
+ **Alineación con el directorio corporativo:** puede asignar etiquetas con atributos de empleado existentes en el directorio corporativo para alinear las políticas de control de acceso con la estructura organizativa.

## Claves de condición para implementar ABAC con DynamoDB
<a name="condition-keys-implement-abac"></a>

Puede utilizar las siguientes claves de condición en las políticas de AWS para controlar el nivel de acceso a las tablas y los índices de DynamoDB:
+ [aws:ResourceTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag): controla el acceso en función de si el par clave-valor de la etiqueta en una tabla o un índice de DynamoDB coincide o no con la clave y el valor de la etiqueta de una política. Esta clave de condición es relevante para todas las API que operan en una tabla o un índice existente.

  Las condiciones `dynamodb:ResourceTag` se evalúan como si no hubiera asociado ninguna etiqueta a un recurso.
+ [aws:RequestTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag): permite comparar el par clave-valor de etiqueta que se ha pasado en la solicitud con el par de etiqueta que se especifica en la política. Esta clave de condición es relevante para las API que contienen etiquetas como parte de la carga útil de la solicitud. Estas API incluyen [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) y [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html).
+ [aws:TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys): compara las claves de etiqueta de una solicitud con las claves que especifique en la política. Esta clave de condición es relevante para las API que contienen etiquetas como parte de la carga útil de la solicitud. Estas API incluyen `CreateTable`, `TagResource` y `UntagResource`.

## Consideraciones para utilizar ABAC con DynamoDB
<a name="abac-considerations"></a>

Cuando utilice ABAC con tablas o índices de DynamoDB, se aplicarán las siguientes consideraciones:
+ El etiquetado y ABAC no son compatibles con DynamoDB Streams.
+ El etiquetado y ABAC no son compatibles con las copias de seguridad de DynamoDB. Para utilizar ABAC con las copias de seguridad, le recomendamos que utilice [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html).
+ Las etiquetas no se conservan en las tablas restauradas. Debe agregar etiquetas a las tablas restauradas para poder utilizar las condiciones basadas en etiquetas en las políticas.

# Habilitación de ABAC en DynamoDB
<a name="abac-enable-ddb"></a>

En la mayoría de las Cuentas de AWS, ABAC está activado de forma predeterminada. Mediante la [consola de DynamoDB](https://console.aws.amazon.com/dynamodb/), puede confirmar si ABAC se ha habilitado para la cuenta. Para ello, asegúrese de abrir la consola de DynamoDB con un rol que tenga el permiso [dynamodb:GetAbacStatus](#required-permissions-abac). A continuación, abra la página **Configuración** de la consola de DynamoDB.

Si no ve la tarjeta **Control de acceso basado en atributos** o si esta muestra el estado **Activado**, significa que ABAC se ha habilitado para la cuenta. No obstante, si ve la tarjeta **Control de acceso basado en atributos** con el estado **Desactivado**, como se muestra en la siguiente imagen, ABAC no se ha habilitado para la cuenta.

## Control de acceso basado en atributos: no habilitado
<a name="abac-disabled-image"></a>

![\[Página Configuración en la consola de DynamoDB que muestra la tarjeta Control de acceso basado en atributos.\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/ddb-console-settings-page.png)


ABAC no se ha habilitado para las Cuentas de AWS cuyas condiciones basadas en etiquetas especificadas en las políticas basadas en identidad u otras políticas aún deban auditarse. Si ABAC no se ha habilitado para la cuenta, las condiciones basadas en etiquetas de las políticas destinadas a actuar en tablas o índices de DynamoDB se evalúan como si no hubiera etiquetas presentes para los recursos o las solicitudes de la API. Cuando ABAC se ha habilitado para la cuenta, las condiciones basadas en etiquetas de las políticas de la cuenta se evalúan teniendo en cuenta las etiquetas asociadas a las tablas o a las solicitudes de la API.

Para habilitar ABAC en la cuenta, le recomendamos que primero audite las políticas tal y como se describe en la sección [Auditoría de políticas](#policy-audit-for-abac). A continuación, incluya los [permisos necesarios para ABAC](#required-permissions-abac) en la política de IAM. Por último, realice los pasos descritos en [Habilitación de ABAC en la consola](#abac-enable-console) para habilitar ABAC en la cuenta en la región actual. Después de habilitar ABAC, podrá desactivarlo en los siete días naturales posteriores a la activación.

**Topics**
+ [Auditoría de las políticas antes de habilitar ABAC](#policy-audit-for-abac)
+ [Permisos de IAM necesarios para habilitar ABAC](#required-permissions-abac)
+ [Habilitación de ABAC en la consola](#abac-enable-console)

## Auditoría de las políticas antes de habilitar ABAC
<a name="policy-audit-for-abac"></a>

Antes de activar ABAC en la cuenta, audite las políticas para confirmar que las condiciones basadas en etiquetas que puedan existir en las políticas de la cuenta están configuradas según lo previsto. La auditoría de las políticas lo ayudará a evitar sorpresas derivadas de los cambios de autorización en los flujos de trabajo de DynamoDB una vez habilitado ABAC. Para ver ejemplos de utilización de condiciones basadas en atributos con etiquetas y el comportamiento antes y después de la implementación de ABAC, consulte [Ejemplos para utilizar ABAC con tablas e índices de DynamoDBEjemplos de casos de uso](abac-example-use-cases.md).

## Permisos de IAM necesarios para habilitar ABAC
<a name="required-permissions-abac"></a>

Necesita el permiso `dynamodb:UpdateAbacStatus` para habilitar ABAC en la cuenta en la región actual. Para confirmar si ABAC se ha habilitado en la cuenta, también debe tener el permiso `dynamodb:GetAbacStatus`. Con este permiso, puede ver el estado de ABAC de una cuenta en cualquier región. Necesitará estos permisos además del permiso necesario para acceder a la consola de DynamoDB.

La siguiente política de IAM concede el permiso para habilitar ABAC y ver el estado para una cuenta en la región actual.

```
{
"version": "2012-10-17", 		 	 	 &TCX5-2025-waiver;
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateAbacStatus",
                "dynamodb:GetAbacStatus"
             ],
            "Resource": "*"
        }
    ]
}
```

## Habilitación de ABAC en la consola
<a name="abac-enable-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 navegación superior, elija la región para la que desea habilitar ABAC.

1. En el panel de navegación izquierdo, elija **Configuración**.

1. En la página **Configuración**, haga lo siguiente:

   1. En la tarjeta **Control de acceso basado en atributos**, elija **Habilitar**.

   1. En el cuadro **Confirmar la configuración del control de acceso basado en atributos**, elija **Habilitar** para confirmar la elección.

      Esto habilita ABAC para la región actual y la tarjeta **Control de acceso basado en atributos** muestra el estado **Activado**.

      Si desea desactivar ABAC después de habilitarlo en la consola, puede hacerlo en los siete días naturales posteriores a la activación. Para desactivarlo, elija **Deshabilitar** en la tarjeta **Control de acceso basado en atributos** de la página **Configuración**.
**nota**  
La actualización del estado de ABAC es una operación asíncrona. Si las etiquetas de las políticas no se evalúan de inmediato, es posible que tenga que esperar algún tiempo hasta que la aplicación de los cambios sea coherente.

# Uso de ABAC con tablas e índices de DynamoDB
<a name="abac-implementation-ddb-tables"></a>

En los pasos siguientes se muestra cómo configurar permisos con ABAC. En este escenario de ejemplo, agregará etiquetas a una tabla de DynamoDB y creará un rol de IAM con una política que incluya condiciones basadas en etiquetas. Después, probará los permisos permitidos en la tabla de DynamoDB mediante la coincidencia de las condiciones de etiqueta.

**Topics**
+ [Paso 1: Adición etiquetas a una tabla de DynamoDB](#abac-add-table-tags)
+ [Paso 2: Creación de un rol de IAM con una política que incluya condiciones basadas en etiquetas](#abac-create-iam-role)
+ [Paso 3: Prueba de los permisos permitidos](#abac-test-permissions)

## Paso 1: Adición etiquetas a una tabla de DynamoDB
<a name="abac-add-table-tags"></a>

Puede agregar etiquetas a tablas de DynamoDB nuevas o existentes mediante la Consola de administración de AWS, la API de AWS, la AWS Command Line Interface (AWS CLI), AWS SDK o AWS CloudFormation. Por ejemplo, el siguiente comando de la CLI [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) agrega una etiqueta a una tabla denominada `MusicTable`.

```
aws dynamodb tag-resource —resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable —tags Key=environment,Value=staging
```

## Paso 2: Creación de un rol de IAM con una política que incluya condiciones basadas en etiquetas
<a name="abac-create-iam-role"></a>

[Cree una política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) mediante la clave de condición [aws:ResourceTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) para comparar el par clave-valor de la etiqueta que se especifica en la política de IAM con el par clave-valor que está asociado a la tabla. La siguiente política de ejemplo permite a los usuarios colocar o actualizar elementos en tablas si estas contienen el par clave-valor de etiqueta: `"environment": "staging"`. Si una tabla no tiene el par clave-valor de etiqueta especificado, estas acciones se deniegan.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/environment": "staging"
                }
            }
        }
    ]
}
```

------

## Paso 3: Prueba de los permisos permitidos
<a name="abac-test-permissions"></a>

1. Asocie la política de IAM a un usuario o rol de prueba en la Cuenta de AWS. Asegúrese de que la entidad principal de IAM que utiliza ya no tiene acceso a la tabla de DynamoDB a través de una política diferente.

1. Asegúrese de que la tabla de DynamoDB contiene la clave de etiqueta `"environment"` con un valor de `"staging"`.

1. Realice las acciones `dynamodb:PutItem` y `dynamodb:UpdateItem` en la tabla etiquetada. Estas acciones deberían realizarse de forma correcta si el par clave-valor de etiqueta `"environment": "staging"` está presente.

   Si lleva a cabo estas acciones en una tabla que no tiene el par clave-valor de etiqueta `"environment": "staging"`, se producirá el error `AccessDeniedException` en la solicitud.

También puede revisar los otros [casos de uso de ejemplo](abac-example-use-cases.md) descritos en la siguiente sección para implementar ABAC y realizar más pruebas.

# Ejemplos para utilizar ABAC con tablas e índices de DynamoDB
<a name="abac-example-use-cases"></a>

En los siguientes ejemplos se describen algunos casos de uso para implementar condiciones basadas en atributos mediante etiquetas.

**Topics**
+ [Ejemplo 1: Permitir una acción con aws:ResourceTag](#abac-allow-example-resource-tag)
+ [Ejemplo 2: Concesión de permiso a una acción mediante aws:RequestTag](#abac-allow-example-request-tag)
+ [Ejemplo 3: Denegación de una acción mediante aws:TagKeys](#abac-deny-example-tag-key)

## Ejemplo 1: Permitir una acción con aws:ResourceTag
<a name="abac-allow-example-resource-tag"></a>

Con la clave de condición `aws:ResourceTag/tag-key`, puede comparar el par clave-valor de etiqueta que está especificado en una política de IAM con el par clave-valor que está asociado con una tabla de DynamoDB. Por ejemplo, puede permitir una acción específica, como [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), si las condiciones de etiqueta coinciden en una política de IAM y en una tabla. Para ello, siga estos pasos:

------
#### [ Using the AWS CLI ]

1. Crear una tabla. En el siguiente ejemplo se utiliza el comando [create-table](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html) de la AWS CLI para crear una tabla denominada `myMusicTable`.

   ```
   aws dynamodb create-table \
     --table-name myMusicTable \
     --attribute-definitions AttributeName=id,AttributeType=S \
     --key-schema AttributeName=id,KeyType=HASH \
     --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
     --region us-east-1
   ```

1. Agregue una etiqueta a esta tabla. El siguiente ejemplo de comando [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) de la AWS CLI agrega el par clave-valor de etiqueta `Title: ProductManager` a `myMusicTable`.

   ```
   aws dynamodb tag-resource --region us-east-1 --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable --tags Key=Title,Value=ProductManager
   ```

1. Cree una [política insertada](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) y agréguela a un rol que tenga asociada la política administrada [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) de AWS, como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Esta política permite la `PutItem` en la tabla cuando la clave y el valor de etiqueta asociados a la tabla coinciden con las etiquetas especificadas en la política.

1. Asuma el rol con las políticas descritas en el paso 3.

1. Utilice el comando [put-item](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html) de la AWS CLI para colocar un elemento en `myMusicTable`.

   ```
   aws dynamodb put-item \
       --table-name myMusicTable --region us-east-1 \
       --item '{
           "id": {"S": "2023"},
           "title": {"S": "Happy Day"},
           "info": {"M": {
               "rating": {"N": "9"},
               "Artists": {"L": [{"S": "Acme Band"}, {"S": "No One You Know"}]},
               "release_date": {"S": "2023-07-21"}
           }}
       }'
   ```

1. Examine la tabla para comprobar si el elemento se ha agregado a ella.

   ```
   aws dynamodb scan --table-name myMusicTable  --region us-east-1
   ```

------
#### [ Using the AWS SDK for Java 2.x ]

1. Crear una tabla. En el siguiente ejemplo se utiliza la API [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) para crear una tabla denominada `myMusicTable`.

   ```
   DynamoDbClient dynamoDB = DynamoDbClient.builder().region(region).build();
   CreateTableRequest createTableRequest = CreateTableRequest.builder()
       .attributeDefinitions(
           Arrays.asList(
               AttributeDefinition.builder()
               .attributeName("id")
               .attributeType(ScalarAttributeType.S)
               .build()
           )
       )
       .keySchema(
           Arrays.asList(
               KeySchemaElement.builder()
               .attributeName("id")
               .keyType(KeyType.HASH)
               .build()
           )
       )
       .provisionedThroughput(ProvisionedThroughput.builder()
           .readCapacityUnits(5L)
           .writeCapacityUnits(5L)
           .build()
       )
       .tableName("myMusicTable")
       .build();
   
   CreateTableResponse createTableResponse = dynamoDB.createTable(createTableRequest);
   String tableArn = createTableResponse.tableDescription().tableArn();
   String tableName = createTableResponse.tableDescription().tableName();
   ```

1. Agregue una etiqueta a esta tabla. La API [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html) del siguiente ejemplo agrega el par clave-valor de etiqueta `Title: ProductManager` a `myMusicTable`.

   ```
   TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
       .resourceArn(tableArn)
       .tags(
           Arrays.asList(
               Tag.builder()
               .key("Title")
               .value("ProductManager")
               .build()
           )
       )
       .build();
   dynamoDB.tagResource(tagResourceRequest);
   ```

1. Cree una [política insertada](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) y agréguela a un rol que tenga asociada la política administrada [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) de AWS, como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Esta política permite la `PutItem` en la tabla cuando la clave y el valor de etiqueta asociados a la tabla coinciden con las etiquetas especificadas en la política.

1. Asuma el rol con las políticas descritas en el paso 3.

1. Utilice la API [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) para colocar un elemento en `myMusicTable`.

   ```
   HashMap<String, AttributeValue> info = new HashMap<>();
   info.put("rating", AttributeValue.builder().s("9").build());
   info.put("artists", AttributeValue.builder().ss(List.of("Acme Band","No One You Know").build());
   info.put("release_date", AttributeValue.builder().s("2023-07-21").build());
   
   HashMap<String, AttributeValue> itemValues = new HashMap<>();
   itemValues.put("id", AttributeValue.builder().s("2023").build());
   itemValues.put("title", AttributeValue.builder().s("Happy Day").build());
   itemValues.put("info", AttributeValue.builder().m(info).build());
   
   
   PutItemRequest putItemRequest = PutItemRequest.builder()
                   .tableName(tableName)
                   .item(itemValues)
                   .build();
   dynamoDB.putItem(putItemRequest);
   ```

1. Examine la tabla para comprobar si el elemento se ha agregado a ella.

   ```
   ScanRequest scanRequest = ScanRequest.builder()
                   .tableName(tableName)
                   .build();
                   
   ScanResponse scanResponse = dynamoDB.scan(scanRequest);
   ```

------
#### [ Using the AWS SDK para Python (Boto3) ]

1. Crear una tabla. En el siguiente ejemplo se utiliza la API [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) para crear una tabla denominada `myMusicTable`.

   ```
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 5,
           'WriteCapacityUnits': 5
       },
   )
   
   table_arn = create_table_response['TableDescription']['TableArn']
   ```

1. Agregue una etiqueta a esta tabla. La API [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html) del siguiente ejemplo agrega el par clave-valor de etiqueta `Title: ProductManager` a `myMusicTable`.

   ```
   tag_resouce_response = ddb_client.tag_resource(
       ResourceArn=table_arn,
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ]
   )
   ```

1. Cree una [política insertada](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) y agréguela a un rol que tenga asociada la política administrada [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) de AWS, como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
           "Effect": "Allow",
           "Action": "dynamodb:PutItem",
           "Resource": "arn:aws:dynamodb:*:*:table/*",
           "Condition": {
               "StringEquals": {
               "aws:ResourceTag/Title": "ProductManager"
               }
           }
           }
       ]
       }
   ```

------

   Esta política permite la `PutItem` en la tabla cuando la clave y el valor de etiqueta asociados a la tabla coinciden con las etiquetas especificadas en la política.

1. Asuma el rol con las políticas descritas en el paso 3.

1. Utilice la API [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) para colocar un elemento en `myMusicTable`.

   ```
   put_item_response = client.put_item(
       TableName = 'myMusicTable'
       Item = {
           'id': '2023',
           'title': 'Happy Day',
           'info': {
               'rating': '9',
               'artists': ['Acme Band','No One You Know'],
               'release_date': '2023-07-21'
           }
       }
   )
   ```

1. Examine la tabla para comprobar si el elemento se ha agregado a ella.

   ```
   scan_response = client.scan(
       TableName='myMusicTable'
   )
   ```

------

**Sin ABAC**  
Si ABAC no está habilitado para la Cuenta de AWS, las condiciones de etiquetado de la política de IAM y la tabla de DynamoDB no coinciden. En consecuencia, la acción `PutItem` devuelve `AccessDeniedException` debido al efecto de la política `AmazonDynamoDBReadOnlyAccess`.

```
An error occurred (AccessDeniedException) when calling the PutItem operation: User: arn:aws:sts::123456789012:assumed-role/DynamoDBReadOnlyAccess/Alice is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:PutItem action.
```

**Con ABAC**  
Si ABAC está habilitado para la Cuenta de AWS, la acción `put-item` se completa correctamente y agrega un nuevo elemento a la tabla. Esto se debe a que la política insertada en la tabla permite la acción `PutItem` si coinciden las condiciones de etiqueta de la política de IAM y de la tabla.

## Ejemplo 2: Concesión de permiso a una acción mediante aws:RequestTag
<a name="abac-allow-example-request-tag"></a>

Con la clave de condición [aws:RequestTag/tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), puede comparar el par clave-valor de etiqueta que se pasa en la solicitud con el par de etiquetas especificado en la política de IAM. Por ejemplo, puede permitir una acción específica, como `CreateTable`, mediante `aws:RequestTag` si las condiciones de etiqueta no coinciden. Para ello, siga estos pasos:

------
#### [ Using the AWS CLI ]

1. Cree una [política insertada](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) y agréguela a un rol que tenga asociada la política administrada [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) de AWS, como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Cree una tabla que contenga el par clave-valor de etiqueta de `"Owner": "John"`.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Owner,Value=John \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK para Python (Boto3) ]

1. Cree una [política insertada](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) y agréguela a un rol que tenga asociada la política administrada [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) de AWS, como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Cree una tabla que contenga el par clave-valor de etiqueta de `"Owner": "John"`.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Owner',
               'Value': 'John'
           },
       ],
   )
   ```

------

**Sin ABAC**  
Si ABAC no está habilitado para la Cuenta de AWS, las condiciones de etiquetado de la política insertada y la tabla de DynamoDB no coinciden. En consecuencia, se produce un error en la solicitud `CreateTable` y no se crea la tabla.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/Admin/John is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:CreateTable action.
```

**Con ABAC**  
Si ABAC está habilitado para la Cuenta de AWS, la solicitud de creación de tabla se completa correctamente. Como el par clave-valor de etiqueta de `"Owner": "John"` está presente en la solicitud `CreateTable`, la política insertada permite al usuario `John` realizar la acción `CreateTable`.

## Ejemplo 3: Denegación de una acción mediante aws:TagKeys
<a name="abac-deny-example-tag-key"></a>

Con la clave de condición [aws:TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) puede comparar las claves de etiqueta de una solicitud con las claves especificadas en la política de IAM. Por ejemplo, puede denegar una acción específica, como `CreateTable`, mediante `aws:TagKeys` si una clave de etiqueta específica *no* está presente en la solicitud. Para ello, siga estos pasos:

------
#### [ Using the AWS CLI ]

1. Agregue una [política administrada por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) a un rol que tenga asociada la política administrada [AmazonDynamoDBFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html) de AWS, como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Asuma el rol al que se ha asociado la política y cree una tabla con la clave de etiqueta `Title`.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Title,Value=ProductManager \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK para Python (Boto3) ]

1. Agregue una [política administrada por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) a un rol que tenga asociada la política administrada [AmazonDynamoDBFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html) de AWS, como se muestra en el siguiente ejemplo.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Asuma el rol al que se ha asociado la política y cree una tabla con la clave de etiqueta `Title`.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ],
   )
   ```

------

**Sin ABAC**  
Si ABAC no está habilitado para la Cuenta de AWS, DynamoDB no envía las claves de etiqueta del comando `create-table` a IAM. La condición `Null` garantiza que la condición se evalúe como `false` si no hay claves de etiqueta en la solicitud. Como la política `Deny` no coincide, el comando `create-table` se completa correctamente.

**Con ABAC**  
Si ABAC está habilitado para la Cuenta de AWS, las claves de etiqueta pasadas en el comando `create-table` se pasan a IAM. La clave de etiqueta `Title` se evalúa con respecto a la clave de etiqueta basada en condiciones, `CostCenter`, presente en la política `Deny`. La clave de etiqueta `Title` no coincide con la clave de etiqueta presente en la política `Deny` debido al operador `StringNotEquals`. Por lo tanto, se produce un error en la acción `CreateTable` y la tabla no se crea. Al ejecutar el comando `create-table`, se devuelve `AccessDeniedException`.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/DynamoFullAccessRole/ProductManager is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable with an explicit deny in an identity-based policy.
```

# Solución de errores de ABAC común en tablas e índices de DynamoDB
<a name="abac-troubleshooting"></a>

En este tema se proporcionan consejos para la solución de problemas y errores comunes que puede encontrar al implementar ABAC en tablas o índices de DynamoDB.

## Las claves de condición específicas del servicio en las políticas producen un error
<a name="abac-troubleshooting-service-specific-keys"></a>

Las claves de condición específicas del servicio no se consideran claves de condición válidas. Si ha utilizado este tipo de claves en las políticas, se producirá un error. Para solucionar este problema, debe reemplazar las claves de condición específicas del servicio por una [clave de condición adecuada para implementar ABAC](attribute-based-access-control.md#condition-keys-implement-abac) en DynamoDB.

Por ejemplo, supongamos que ha utilizado la clave de condición `dynamodb:ResourceTag` en una [política insertada](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) que realiza la solicitud [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html). Imagine que se produce el error `AccessDeniedException` en la solicitud. En el siguiente ejemplo se muestra la política insertada errónea con la clave de condición `dynamodb:ResourceTag`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "dynamodb:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

Para solucionar este problema, reemplace la clave de condición `dynamodb:ResourceTag` por `aws:ResourceTag`, como se muestra en el siguiente ejemplo.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

## No se puede desactivar ABAC
<a name="abac-troubleshooting-unable-opt-out"></a>

Si se ha habilitado ABAC para la cuenta a través de Soporte, no podrá desactivarlo mediante la consola de DynamoDB. Para desactivarlo, póngase en contacto con [Soporte](https://console.aws.amazon.com/support).

Puede desactivar ABAC *solo si* se cumplen las siguientes condiciones:
+ Ha utilizado la forma de autoservicio de [activarlo a través de la consola de DynamoDB](abac-enable-ddb.md#abac-enable-console).
+ Efectúa la desactivación en los siete días naturales posteriores a la activación.

# Protección de datos en DynamoDB
<a name="data-protection"></a>

Amazon DynamoDB proporciona una infraestructura de almacenamiento de larga duración diseñada para el almacenamiento de datos principales y críticos. Los datos se almacenan de forma redundante en varios dispositivos de diversas instalaciones dentro de una región de Amazon DynamoDB.

DynamoDB protege los datos del usuario almacenados en reposo y también los datos en tránsito entre los clientes locales y DynamoDB, y entre DynamoDB y otros recursos de AWS dentro de la misma región de AWS.

**Topics**
+ [Cifrado en reposo en DynamoDB](EncryptionAtRest.md)
+ [Protección de las conexiones de DynamoDB mediante puntos de conexión de VPC y políticas de IAM"](inter-network-traffic-privacy.md)

# Cifrado en reposo en DynamoDB
<a name="EncryptionAtRest"></a>

Todos los datos de usuario almacenados en Amazon DynamoDB están completamente cifrados en reposo. El cifrado en reposo de DynamoDB proporciona mayor seguridad, porque cifra todos sus datos en reposo mediante las claves de cifrado almacenadas en [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/). Esta funcionalidad ayuda a reducir la carga y la complejidad operativas que conlleva la protección de información confidencial. Con el cifrado en reposo, puede crear aplicaciones sensibles a la seguridad que necesitan cumplimiento estricto de cifrado y requisitos normativos.

El cifrado en reposo de DynamoDB proporciona una capa adicional de seguridad de los datos, porque los protege en una tabla cifrada que incluye su clave principal, los índices secundarios locales y globales, las transmisiones, las tablas globales, las copias de seguridad y los clústeres de DynamoDB Accelerator (DAX) siempre que los datos se almacenen en un soporte duradero. Las políticas de la organización, las normativas industriales o gubernamentales y los requisitos de conformidad suelen requerir el uso del cifrado en reposo para aumentar la seguridad de los datos de las aplicaciones. Para obtener más información sobre el cifrado de aplicaciones de bases de datos, consulte [AWS Database Encryption SDK](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/what-is-database-encryption-sdk.html).

El cifrado en reposo se integra con AWS KMS para administrar las claves de cifrado que se utilizan para cifrar las tablas. Para obtener más información sobre los tipos y estados de las claves, consulte los [conceptos de AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type) en la *Guía para desarrolladores de AWS Key Management Service*.

Al crear una tabla nueva, puede elegir uno de los siguientes tipos de AWS KMS key para cifrarla. Puede cambiar entre estos tipos de claves en cualquier momento.
+ **Clave propiedad de AWS –** tipo de cifrado predeterminado. La clave es propiedad de DynamoDB (sin cargo adicional).
+ **Clave administrada de AWS:** la clave se almacena en la cuenta y la administra AWS KMS (se aplican los cargos de AWS KMS).
+ **Customer managed key** (Clave administrada por el cliente): la clave se almacena en la cuenta y usted la crea, posee y administra. Usted controla plenamente la clave KMS (se aplican los cargos de AWS KMS).

Para obtener más información sobre estos tipos de claves, consulte [ Customer keys and AWS keys](/kms/latest/developerguide/concepts.html#key-mgmt).

**nota**  
Al crear un nuevo clúster DAX con el cifrado en reposo habilitado, se utilizará una Clave administrada de AWS para cifrar datos en reposo en el clúster.
Si la tabla tiene una clave de clasificación, algunas de las claves de ordenación que marcan los límites del rango se almacenan en texto no cifrado en los metadatos de la tabla.

Cuando accede a una tabla cifrada, DynamoDB descifra los datos de la tabla de forma transparente. No es necesario que cambie sus aplicaciones o código para utilizar o administrar tablas cifradas. DynamoDB continúa proporcionando la misma latencia en milisegundos de un solo dígito que cabe esperar de nosotros y todas las consultas de DynamoDB funcionan sin inconvenientes con los datos cifrados.

Puede especificar una clave de cifrado al crear una tabla o cambiar las claves de cifrado en una tabla existente con la Consola de administración de AWS, la AWS Command Line Interface (AWS CLI) o la API de Amazon DynamoDB. Para aprender a hacerlo, consulte [Administración de tablas de cifrado en DynamoDB](encryption.tutorial.md).

El cifrado en reposo mediante la Clave propiedad de AWS se ofrece sin cargo adicional. Sin embargo, se aplicarán cargos de AWS KMS por una Clave administrada de AWS y por una clave administrada por el cliente. Para obtener más información acerca de los precios, consulte [Precios de AWS KMS](https://aws.amazon.com/kms/pricing).

El cifrado en reposo de DynamoDB está disponible en todas las regiones de AWSRegions, incluidas las regiones AWS China (Pekín) y AWS China (Ningxia), así como la región AWS GovCloud (EE. UU.). Para obtener más información, consulte [Cifrado de DynamoDB en reposo: funcionamiento](encryption.howitworks.md) y [Notas de uso del cifrado en reposo de DynamoDB](encryption.usagenotes.md).

# Cifrado de DynamoDB en reposo: funcionamiento
<a name="encryption.howitworks"></a>

El cifrado en reposo de Amazon DynamoDB cifra sus datos mediante cifrado estándar avanzado de 256 bits (AES-256), que ayuda a proteger sus datos del acceso no autorizado al almacenamiento subyacente.

El cifrado en reposo se integra con AWS Key Management Service (AWS KMS) para administrar las claves de cifrado que se utilizan para cifrar las tablas.

**nota**  
En mayo de 2022, AWS KMS ha cambiado la programación de rotación para Claves administradas por AWS de cada tres años (aproximadamente 1095 días) hasta cada año (aproximadamente 365 días).  
Las nuevas Claves administradas por AWS rotan automáticamente un año después de su creación y, aproximadamente, cada año a partir de entonces.  
Las Claves administradas por AWS existentes rotan automáticamente un año después de su rotación más reciente y cada año a partir de entonces.

## Claves propiedad de AWS
<a name="ddb-owned"></a>

 Las Claves propiedad de AWS no están almacenadas en su cuenta de AWS. Forman parte de una recopilación de claves KMS que AWS posee y administra para su uso en múltiples cuentas de AWS. Los servicios de AWS pueden usar las Claves propiedad de AWS para proteger los datos. Las Claves propiedad de AWS que usa DynamoDB se rotan cada año (aproximadamente 365 días). 

No puede ver, administrar o usar las Claves propiedad de AWS, ni auditar su uso. Sin embargo, no es necesario que realice ninguna acción ni que cambie programas para proteger las claves que cifran sus datos.

No se le cobra ninguna tarifa mensual ni tarifa de uso de las Claves propiedad de AWS y no se incluyen en los límites de AWS KMS de su cuenta.

## Claves administradas por AWS
<a name="managed-key-service-default-kms"></a>

Las Claves administradas por AWS son claves KMS de la cuenta que se crean, administran y utilizan en su nombre por un servicio de AWS integrado con AWS KMS. Puede ver las Claves administradas por AWS en su cuenta, ver sus políticas de claves y auditar su uso en los registros de AWS CloudTrail. Sin embargo, no puede administrar estas claves KMS ni modificar sus permisos.

El cifrado en reposo se integra automáticamente con AWS KMS para administrar las Claves administradas por AWS para DynamoDB (`aws/dynamodb`) que se utilizan para cifrar las tablas. Si no existe una Clave administrada de AWS al crear la tabla de DynamoDB cifrada, AWS KMS crea automáticamente una nueva clave. Esta clave se utilizará con las tablas cifradas que se creen en el futuro. AWS KMS combina hardware y software seguros de alta disponibilidad para ofrecer un sistema de administración de claves adaptado a la nube.

Para obtener más información acerca de la administración de permisos de las Clave administrada de AWS, consulte [Autorización del uso de Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-authz) en la *Guía para desarrolladores de AWS Key Management Service*.

## Claves administradas por el cliente
<a name="managed-key-customer-managed"></a>

Las claves administradas por el cliente son claves KMS en su cuenta de AWS, que usted ha creado, posee y administra. Usted tiene un control total sobre estas claves KMS, incluyendo el establecimiento y mantenimiento de sus políticas de claves, políticas de IAM y concesiones, la habilitación y desactivación de las mismas, la rotación de su material criptográfico, la adición de etiquetas, la creación de alias que hacen referencia a ellas y la programación para su eliminación. Para obtener más información sobre la administración de permisos de una clave administrada por el cliente, consulte [Claves administradas por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

Cuando se especifica una clave administrada por el cliente como clave de cifrado a nivel de tabla, la tabla de DynamoDB, los índices secundarios locales y globales y las transmisiones se cifran con la misma clave administrada por el cliente. Las copias de seguridad en diferido se cifran con la clave de cifrado de nivel de tabla que se especifica en el momento en que se crea la copia de seguridad. La actualización de la clave de cifrado de nivel de tabla no cambia la clave de cifrado asociada a las copias de seguridad en diferido existentes.

Configurar el estado de la clave administrada por el cliente como desactivado o programarlo para su eliminación impide que todos los usuarios y el servicio DynamoDB puedan cifrar o descifrar datos y realizar operaciones de lectura y escritura en la tabla. DynamoDB debe tener acceso a la clave de cifrado para asegurarse de que pueda seguir accediendo a la tabla y evitar la pérdida de datos.

Si desactiva la clave administrada por el cliente o la programa para que se elimine, el estado de la tabla se convierte en **Inaccesible**. Para asegurarse de que puede continuar trabajando con la tabla, debe darle a DynamoDB acceso a la clave de cifrado especificada en un plazo de siete días. Tan pronto como el servicio detecte que la clave de cifrado es inaccesible, DynamoDB le envía una notificación por correo electrónico para avisarle.

**nota**  
Si su clave administrada por el cliente permanece inaccesible para el servicio de DynamoDB durante más de siete días, la tabla se archiva y ya no podrá acceder a ella. DynamoDB crea una copia de seguridad en diferido de la tabla y se le emite una factura por ella. Puede utilizar esta copia de seguridad en diferido para restaurar los datos en una nueva tabla. Para iniciar la restauración, la última clave administrada por el cliente en la tabla debe estar habilitada y DynamoDB debe tener acceso a ella.
Si la clave administrada por el cliente que se utilizó para cifrar una réplica de tabla global es inaccesible, DynamoDB quitará esta réplica del grupo de replicación. La réplica no se eliminará y la replicación se detendrá desde y hacia esta región, 20 horas después de detectar que la clave administrada por el cliente es inaccesible.

Para obtener más información, consulte [Habilitar claves](/kms/latest/developerguide/enabling-keys.html) y [Eliminar claves](/kms/latest/developerguide/deleting-keys.html). 

## Notas sobre el uso de las Claves administradas por AWS
<a name="managed-key-notes"></a>

Amazon DynamoDB no puede leer los datos de la tabla a menos que tenga acceso a la clave KMS almacenada en su cuenta de AWS KMS. DynamoDB utiliza el cifrado de envoltura y la jerarquía de claves para cifrar los datos. Sus clave de cifrado AWS KMS se utiliza para cifrar la clave raíz de esta jerarquía de claves. Para obtener más información, consulte [Cifrado de sobre](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping) en la *Guía para desarrolladores de AWS Key Management Service*.

 DynamoDB no llama a AWS KMS por cada operación de DynamoDB. La clave se actualiza una vez cada 5 minutos por intermediario con tráfico activo.

Asegúrese de haber configurado el SDK para que reutilice las conexiones. De lo contrario, experimentará latencias de DynamoDB al tener que restablecer nuevas entradas de caché de AWS KMS por cada operación de DynamoDB. Además, es posible que tenga que enfrentarse a costes de AWS KMS y CloudTrail más altos. Por ejemplo, para hacer esto usando el SDK Node.js, puede crear un nuevo agente HTTPS con `keepAlive` activado. Para obtener más información, consulte [Configuración de keepAlive en Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html) en la *Guía para desarrolladores de AWS SDK para JavaScript*.

# Notas de uso del cifrado en reposo de DynamoDB
<a name="encryption.usagenotes"></a>

Es importante tener en cuenta lo siguiente cuando use el cifrado en reposo en Amazon DynamoDB.

## Todos los datos de la tabla están cifrados
<a name="encryption.usagenotes.tabledata"></a>

El cifrado en reposo en el lado del servidor está habilitado para los datos de todas las tablas de DynamoDB y no se puede desactivar. No puede cifrar sólo un subconjunto de elementos de una tabla.

El cifrado en reposo solo cifra los datos mientras están estáticos (en reposo) en un medio de almacenamiento persistente. Si le preocupa la seguridad de los datos cuando están en tránsito o en uso, puede ser conveniente adoptar medidas adicionales:
+ Datos en tránsito: todos los datos de DynamoDB se cifran en tránsito. De forma predeterminada, las comunicaciones de entrada y salida de DynamoDB usan el protocolo HTTPS, que protege el tráfico de la red mediante el uso del cifrado de Capa de conexión segura (SSL)/Transport Layer Security (TLS).
+ Datos en uso: proteja lo datos antes de enviarlos a DynamoDB mediante el cifrado del lado del cliente. Para obtener más información, consulte [Cifrado del lado del cliente y del lado del servidor](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/client-server-side.html) en la *Guía para desarrolladores del Cliente de encriptación de Amazon DynamoDB*.

Puede usar transmisiones con tablas cifradas. Las transmisiones de DynamoDB siempre se cifran con una clave de cifrado de nivel de tabla. Para obtener más información, consulte [Captura de datos de cambios para DynamoDB Streams](Streams.md).

Las copias de seguridad de DynamoDB se cifran y el cifrado también se habilita para la tabla que se restaura a partir de la copia de seguridad. Puede usar la Clave propiedad de AWS, la Clave administrada de AWS o la clave administrada por el cliente para cifrar los datos de la copia de seguridad. Para obtener más información, consulte [Copia de seguridad y restauración para DynamoDB](Backup-and-Restore.md).

Los índices secundarios locales y globales se cifran usando la misma clave que la tabla base.

## Tipos de cifrado
<a name="encryption.usagenotes.encryptiontypes"></a>

**nota**  
Las claves administradas por el cliente no se admiten en la versión de 2017 de la tabla global. Si desea utilizar una clave administrada por el cliente en una tabla global de DynamoDB, debe actualizar la tabla a la versión de 2019 de la tabla global y, después, habilitarla.

En la Consola de administración de AWS, el tipo de cifrado es `KMS` cuando se usa la Clave administrada de AWS o la clave administrada por el cliente para cifrar los datos. El tipo de cifrado es `DEFAULT` cuando se usa la Clave propiedad de AWS. En la API de Amazon DynamoDB, el tipo de cifrado es `KMS` cuando se usa la Clave administrada de AWS o la clave administrada por el cliente. En caso de que no haya un tipo de cifrado, sus datos se cifran utilizando el formato de Clave propiedad de AWS. Puede alternar entre una Clave propiedad de AWS, una Clave administrada de AWS y una clave administrada por el cliente en cualquier momento. Puede utilizar la consola, la AWS Command Line Interface (AWS CLI) o la API de Amazon DynamoDB para alternar entre claves de cifrado.

Tenga en cuenta las siguientes limitaciones al utilizar claves administradas por el cliente:
+ No puede utilizar una clave administrada por el cliente con los clústeres de DynamoDB Accelerator (DAX). Para obtener más información, consulte [Cifrado en reposo de DAX](DAXEncryptionAtRest.md).
+ Puede utilizar una clave administrada por el cliente para cifrar tablas que utilizan transacciones. Sin embargo, para garantizar la durabilidad de la propagación de las transacciones, el servicio almacena temporalmente una copia de la solicitud de transacción y se cifra mediante una Clave propiedad de AWS. Los datos confirmados en sus tablas e los índices secundarios están siempre cifrados en reposo utilizando la clave administrada por el cliente.
+ Una clave administrada por el cliente se puede usar para cifrar tablas que utilizan Contributor Insights. Sin embargo, los datos que se transmiten a Amazon CloudWatch están cifrados con una Clave propiedad de AWS.
+ Cuando realice la transición a una nueva clave administrada por el cliente, asegúrese de mantener la clave original activada hasta que se complete el proceso. AWS seguirá necesitando la clave original para descifrar los datos antes de cifrarlos con la nueva clave. El proceso se completará cuando el estado de SSEDescription de la tabla sea ENABLED (HABILITADO) y se muestre el KMSMasterKeyArn de la nueva clave administrada por el cliente. A partir de este momento, la clave original se puede desactivar o programar para su eliminación.
+ Una vez que se muestra la nueva clave administrada por el cliente, la tabla y cualquier nueva copia de seguridad bajo demanda se cifran con la nueva clave.
+ Cualquier copia de seguridad bajo demanda existente permanece cifrada con la clave administrada por el cliente que se utilizó cuando se crearon esas copias de seguridad. Necesitarás esa misma clave para restaurar esas copias de seguridad. Puede identificar la clave del período en que se creó cada copia de seguridad mediante la API DescribeBackup para ver la SSEDescription de esa copia de seguridad.
+ Si desactiva su clave administrada por el cliente o la programa para que se elimine, todos los datos de DynamoDB Streams quedarán sujetos a una durabilidad de 24 horas. Todos los datos de actividad que no se hayan recuperado se podrán recortar cuando alcancen una antigüedad superior a 24 horas.
+ Si desactiva la clave administrada por el cliente o la programa para su eliminación, las eliminaciones de período de vida (TTL) continuarán durante 30 minutos. Estas eliminaciones de TTL seguirán emitiéndose a DynamoDB Streams y estarán sujetas al intervalo estándar de recorte/retención.

  Para obtener más información, consulte [Habilitar claves](/kms/latest/developerguide/enabling-keys.html) y [Eliminar claves](/kms/latest/developerguide/deleting-keys.html). 

## Uso de claves KMS y claves de datos
<a name="dynamodb-kms"></a>

La característica de cifrado en reposo de DynamoDB utiliza una AWS KMS key y una jerarquía de claves de datos para proteger los datos de su tabla. DynamoDB utiliza la misma jerarquía de claves para proteger las secuencias de DynamoDB, las tablas globales y las copias de seguridad cuando se escriben en soportes duraderos.

Le recomendamos que planifique la estrategia de cifrado antes de implementar la tabla en DynamoDB. Si almacena datos confidenciales en DynamoDB, considere incluir el cifrado del cliente en el plan. De esta forma, puede cifrar los datos lo más cerca posible del origen y garantizar la protección durante todo el ciclo de vida. Para obtener más información, consulte la documentación de [cliente de cifrado de DynamoDB](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html).

**AWS KMS key**  
El cifrado en reposo protege las tablas de DynamoDB con una AWS KMS key. De forma predeterminada, DynamoDB utiliza una [Clave propiedad de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk), una clave de cifrado de varios inquilinos que se crea y administra en una cuenta de servicio de DynamoDB. Pero puede cifrar las tablas de DynamoDB bajo una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) para DynamoDB (`aws/dynamodb`) en la Cuenta de AWS. Puede seleccionar una clave KMS diferente para cada tabla. La clave KMS que seleccione para una tabla también se utiliza para cifrar sus índices secundarios locales y globales, las secuencias y las copias de seguridad.  
Al crear o actualizar la tabla, seleccione la clave KMS para una tabla. Puede cambiar la clave KMS de una tabla en cualquier momento, ya sea en la consola de DynamoDB o utilizando la operación [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html). El proceso de cambio de teclas es perfecto y no precisa tiempo de inactividad ni degradación del servicio.  
DynamoDB solo admite [claves KMS simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). No puede utilizar una [clave KMS asimétrica](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks) para cifrar las tablas de DynamoDB. 
Utilice una clave administrada por el cliente para obtener las siguientes características:  
+ Puede crear y administrar la clave KMS, incluida la configuración de [políticas de claves](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html),[políticas de IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) y [concesiones](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) para controlar el acceso a la clave KMS. Puede [habilitar y deshabilitar](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html) la clave KMS, habilitar y deshabilitar la [rotación de claves automática](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) y [eliminar la clave KMS](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) cuando ya no esté en uso.
+ Puede utilizar una clave administrada por el cliente con [material de claves importado](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) o una clave administrada por el cliente en un [almacén de claves personalizado](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html) que tenga y administre. 
+ Puede auditar el cifrado y descifrado de la tabla de DynamoDB examinando las llamadas de la API de DynamoDB a AWS KMS en los [registros de AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail).
Utilice la Clave administrada de AWS si necesita alguna de las siguientes características:  
+ Puede [ver la clave KMS](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html) y [ver su política de claves](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html). (La política de claves no se puede modificar).
+ Puede auditar el cifrado y descifrado de la tabla de DynamoDB examinando las llamadas de la API de DynamoDB a AWS KMS en los [registros de AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail).
Sin embargo, la Clave propiedad de AWS es gratuita y su uso no se contabiliza en las [cuotas de solicitudes o de recursos de AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html). Las claves administradas por el cliente y las Claves administradas por AWS [generan cargos](https://aws.amazon.com/kms/pricing/) por cada llamada a la API y se aplican cuotas de AWS KMS a estas claves KMS.

**Claves de tabla**  
DynamoDB utiliza la clave KMS de la tabla para [generar](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) y cifrar una [clave de datos](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) única para la tabla, denominada *clave de tabla*. La clave de tabla se mantiene durante toda la vida útil de la tabla de cifrado.   
La clave de la tabla se utiliza como clave de cifrado de claves. DynamoDB utiliza esta clave de tabla para proteger las claves de cifrado de datos que se utilizan para cifrar los datos de la tabla. DynamoDB genera una clave de cifrado de datos única para cada estructura subyacente en una tabla, pero varios elementos de la tabla pueden protegerse mediante la misma clave de cifrado de datos.  

![\[Cifrado de una tabla de DynamoDB con cifrado en reposo\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/service-ddb-encrypt.png)

La primera vez que obtiene acceso a una tabla cifrada, DynamoDB envía una solicitud a AWS KMS para utilizar la clave KMS para descifrar la clave de tabla. A continuación, utiliza la clave de tabla de texto sin cifrar para descifrar las claves de cifrado de datos y utiliza las claves de cifrado de datos de texto sin cifrar para descifrar los datos de la tabla.  
DynamoDB almacena y utiliza la clave de la tabla y las claves de cifrado de datos fuera de AWS KMS. Protege todas las claves con cifrado [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) y claves de cifrado de 256 bits. A continuación, almacena las claves cifradas con los datos cifrados para que estén disponibles para descifrar los datos de la tabla bajo demanda.  
Si cambia la clave de su tabla, DynamoDB genera una nueva clave de tabla. A continuación, utiliza la nueva clave de tabla para volver a cifrar las claves de cifrado de los datos.

**Almacenamiento en caché de las claves de tabla**  
Para evitar llamar a AWS KMS para cada operación de DynamoDB, DynamoDB almacena en la memoria caché las claves de tabla de texto sin cifrar para cada intermediario. Si DynamoDB recibe una solicitud de la clave de tabla almacenada en caché tras cinco minutos de inactividad, envía una nueva solicitud a AWS KMS para descifrar la clave de tabla. Esta llamada capturará los cambios realizados en las políticas de acceso de la clave KMS en AWS KMS o AWS Identity and Access Management (IAM) desde la última solicitud para descifrar la clave de tabla.

## Autorizar el uso de su clave KMS
<a name="dynamodb-kms-authz"></a>

Si utiliza una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o la [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) en su cuenta para proteger su tabla de DynamoDB, las políticas en esa clave KMS deben conceder permiso a DynamoDB para utilizarla en su nombre. El contexto de autorización de la Clave administrada de AWS para DynamoDB incluye su política de claves y concede a ese delegado los permisos para utilizarla. 

Tiene control total sobre las políticas y concesiones de una clave administrada por el cliente debido a que la Clave administrada de AWS está en su cuenta, puede ver sus políticas y concesiones. Sin embargo, como está administrada por AWS, no puede cambiar las políticas.

DynamoDB no necesita autorización adicional para utilizar la [Clave propiedad de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) predeterminada para proteger las tablas de DynamoDB de su cuenta de Cuenta de AWS.

**Topics**
+ [Política de claves para una Clave administrada de AWS](#dynamodb-policies)
+ [Política de claves para una clave administrada por el cliente](#dynamodb-customer-cmk-policy)
+ [Usar concesiones para autorizar a DynamoDB](#dynamodb-grants)

### Política de claves para una Clave administrada de AWS
<a name="dynamodb-policies"></a>

Cuando DynamoDB utiliza la [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) para DynamoDB (`aws/dynamodb`) en operaciones criptográficas, lo hace en nombre del usuario que obtiene acceso al [recurso de DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html). La política de claves de Clave administrada de AWS concede permiso a todos los usuarios de la cuenta para utilizar la Clave administrada de AWS para las operaciones especificadas. Sin embargo, el permiso solo se concede cuando DynamoDB realiza la solicitud en nombre del usuario. La [condición ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) de la política de claves no permite que ningún usuario pueda utilizar la Clave administrada de AWS, a menos que la solicitud se origine con el servicio DynamoDB.

Esta política de claves, como las políticas de todas las Claves administradas por AWS, la establece AWS. No puede cambiarla, pero puede verla en cualquier momento. Para obtener más detalles, consulte [Ver una política de clave](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-viewing.html).

Las declaraciones de política de la política de claves tienen el siguiente efecto:
+ Permite a los usuarios de la cuenta utilizar la Clave administrada de AWS para DynamoDB en operaciones criptográficas solo cuando la solicitud proviene de DynamoDB en su nombre. La política también permite a los usuarios [crear concesiones](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-grants) para la clave KMS.
+ Permite que las identidades de IAM autorizadas en la cuenta vean las propiedades de la Clave administrada de AWS para DynamoDB y para [revocar la concesión](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) que permite a DynamoDB utilizar la clave KMS. DynamoDB usa [concesiones](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-grants) para las operaciones de mantenimiento en curso.
+ Permite a DynamoDB realizar operaciones de solo lectura para buscar la Clave administrada de AWS para DynamoDB en su cuenta.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id" : "auto-dynamodb-1",
  "Statement" : [ {
    "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "*"
    },
    "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ],
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "kms:CallerAccount" : "111122223333",
        "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com"
      }
    }
  }, {
    "Sid" : "Allow direct access to key metadata to the account",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::111122223333:root"
    },
    "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ],
    "Resource" : "*"
  }, {
    "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly",
    "Effect" : "Allow",
    "Principal" : {
      "Service" : "dynamodb.amazonaws.com"
    },
    "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ],
    "Resource" : "*"
  } ]
}
```

------

### Política de claves para una clave administrada por el cliente
<a name="dynamodb-customer-cmk-policy"></a>

Cuando selecciona una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) para proteger una tabla de DynamoDB, DynamoDB obtiene permiso para utilizar la clave KMS en nombre de la entidad principal que realiza la selección. Esa entidad principal, un usuario o rol, debe tener los permisos en la clave KMS que precisa DynamoDB. Puede proporcionar estos permisos en una [política de claves](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), una [política de IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) o una [concesión](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html).

Como mínimo, DynamoDB precisa los siguientes permisos en una clave administrada por el cliente:
+ [kms:Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
+ [kms:ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)\$1 (para kms:ReEncryptFrom y kms:ReEncryptTo)
+ kms:GenerateDataKey\$1 (para [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) y [kms:GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html))
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

Por ejemplo, la política de claves de ejemplo siguiente proporciona solo los permisos necesarios. La política tiene las siguientes consecuencias:
+ Permite a DynamoDB utilizar la clave KMS en operaciones criptográficas y crear concesiones, pero solo cuando actúa en nombre de las entidades principales de la cuenta que tienen permiso para usar DynamoDB. Si las entidades principales especificadas en la declaración de política no tienen permiso para utilizar DynamoDB, la llamada falla, incluso cuando proviene del servicio de DynamoDB. 
+ La clave de condición [kms:ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) concede los permisos solo cuando la solicitud proviene de DynamoDB en nombre de las entidades principales enumeradas en la declaración de política. Estas entidades principales no pueden llamar a estas operaciones directamente. Tenga en cuenta que el valor `kms:ViaService`, `dynamodb.*.amazonaws.com`, tiene un asterisco (\$1) en la posición Región. DynamoDB requiere el permiso para ser independiente de cualquier Región de AWS en particular para que pueda realizar llamadas entre regiones para admitir [tablas globales de DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html).
+ Proporciona a los administradores de la clave KMS (usuarios que pueden asumir el rol de `db-team`) acceso de solo lectura a la clave KMS y permiso para revocar las concesiones, incluidas las [concesiones que DynamoDB precisa](#dynamodb-grants) para proteger la tabla.

Antes de utilizar una política de claves de ejemplo, sustituya las entidades principales de ejemplo por las entidades principales reales de su cuenta de Cuenta de AWS.

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

****  

```
{
  "Id": "key-policy-dynamodb",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"},
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey",
        "kms:CreateGrant"
      ],
      "Resource": "*",      
      "Condition": { 
         "StringLike": {
           "kms:ViaService" : "dynamodb.*.amazonaws.com"
         }
      }
    },
    {
      "Sid":  "Allow administrators to view the KMS key and revoke grants",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/db-team"
       },
      "Action": [
        "kms:Describe*",
        "kms:Get*",
        "kms:List*",
        "kms:RevokeGrant"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Usar concesiones para autorizar a DynamoDB
<a name="dynamodb-grants"></a>

Además de las políticas de claves, DynamoDB utiliza concesiones para establecer permisos en una clave administrada por el cliente o la Clave administrada de AWS para DynamoDB (`aws/dynamodb`). Para ver las concesiones que tiene una clave KMS en su cuenta, utilice la operación [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html). DynamoDB no necesita concesiones ni permisos adicionales para utilizar la [Clave propiedad de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) para proteger su tabla.

DynamoDB utiliza los permisos de concesión cuando realiza el mantenimiento del sistema en segundo plano y en tareas de protección de datos continuas. También utiliza las concesiones para generar las [claves de la tabla](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-encrypt).

Cada concesión es específica de una tabla. Si la cuenta incluye varias tablas cifradas con la misma clave KMS, habrá una concesión de cada tipo para cada tabla. La concesión está limitada por el [contexto de cifrado de DynamoDB](#dynamodb-encryption-context), que incluye el nombre de la tabla y el ID de la cuenta de Cuenta de AWS e incluye permiso para [retirar la concesión](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) si ya no se necesita. 

Para crear las concesiones, DynamoDB debe tener permiso para llamar a `CreateGrant` en nombre del usuario que creó la tabla cifrada. Para Claves administradas por AWS, DynamoDB obtiene el permiso `kms:CreateGrant` de la [política de claves](#dynamodb-policies), que permite a los usuarios de la cuenta llamar a [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) en la clave KMS solo cuando DynamoDB realiza la solicitud en nombre de un usuario autorizado. 

La política de claves también puede permitir a la cuenta [revocar la concesión](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) en la clave KMS. No obstante, si revoca la concesión en una tabla cifrada activa, DynamoDB no podrá proteger y mantener la tabla.

## Contexto de cifrado de DynamoDB
<a name="dynamodb-encryption-context"></a>

Un [contexto de cifrado](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) es un conjunto de pares de clave-valor que contienen datos no secretos arbitrarios. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vincula criptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasar el mismo contexto de cifrado. 

DynamoDB utiliza el mismo contexto de cifrado en todas las operaciones criptográficas de AWS KMS. Si utiliza una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o una [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) para proteger la tabla de DynamoDB, puede utilizar el contexto de cifrado para identificar el uso de la clave KMS en los registros de auditoría. También aparece en texto no cifrado en los registros, como [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) y [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html). 

El contexto de cifrado también se puede utilizar como condición para la autorización en políticas y concesiones. DynamoDB utiliza el contexto de cifrado para restringir las [concesiones](#dynamodb-grants) que permiten el acceso a la clave administrada por el cliente o a Clave administrada de AWS en su cuenta y región.

En su solicitudes a AWS KMS, DynamoDB utiliza un contexto de cifrado con dos parejas de clave-valor.

```
"encryptionContextSubset": {
    "aws:dynamodb:tableName": "Books"
    "aws:dynamodb:subscriberId": "111122223333"
}
```
+ **Tabla**: el primer par de clave-valor identifica la tabla que está cifrando DynamoDB. La clave es `aws:dynamodb:tableName`. El valor es el nombre de la tabla.

  ```
  "aws:dynamodb:tableName": "<table-name>"
  ```

  Por ejemplo:

  ```
  "aws:dynamodb:tableName": "Books"
  ```
+ **Cuenta**: el segundo par de clave-valor identifica la cuenta de Cuenta de AWS. La clave es `aws:dynamodb:subscriberId`. El valor es el ID de la cuenta.

  ```
  "aws:dynamodb:subscriberId": "<account-id>"
  ```

  Por ejemplo:

  ```
  "aws:dynamodb:subscriberId": "111122223333"
  ```

## Supervisión de la interacción de DynamoDB con AWS KMS
<a name="dynamodb-cmk-trail"></a>

Si utiliza una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o una [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) para proteger las tablas de DynamoDB, puede utilizar los registros de AWS CloudTrail para realizar un seguimiento de las solicitudes que DynamoDB envía a AWS KMS en su nombre.

Las solicitudes `GenerateDataKey`, `Decrypt` y `CreateGrant` se explican en esta sección. Además, DynamoDB utiliza una operación [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) para determinar si la clave KMS que ha seleccionado existe en la cuenta y región. También utiliza una operación [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) para quitar una concesión cuando se elimina una tabla. 

**GenerateDataKey**  
Al habilitar el cifrado en reposo en una tabla, DynamoDB crea una clave de tabla única. Envía una solicitud *[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)* a AWS KMS que especifica la clave KMS de la tabla.   
El evento que registra la operación `GenerateDataKey` es similar al siguiente evento de ejemplo. El usuario es la cuenta del servicio DynamoDB. Los parámetros incluyen el Nombre de recurso de Amazon (ARN) de la clave KMS, un especificador de clave que requiere una clave de 256 bits y el [contexto de cifrado](#dynamodb-encryption-context) que identifica la tabla y la cuenta de Cuenta de AWS.  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSService", 
        "invokedBy": "dynamodb.amazonaws.com" 
    },
    "eventTime": "2018-02-14T00:15:17Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "dynamodb.amazonaws.com",
    "userAgent": "dynamodb.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "aws:dynamodb:tableName": "Services",
            "aws:dynamodb:subscriberId": "111122223333"
        }, 
        "keySpec": "AES_256", 
        "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    "responseElements": null,
    "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190",
    "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key" 
        } 
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333",
    "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad"
}
```

**Decrypt**  
Cuando accede a una tabla de DynamoDB cifrada, DynamoDB necesita descifrar la clave de la tabla de manera que pueda descifrar las claves que hay debajo en la jerarquía. A continuación, descifra los datos de la tabla. Para descifrar la clave de la tabla. DynamoDB envía una solicitud [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) a AWS KMS que especifica la clave KMS para la tabla.  
El evento que registra la operación `Decrypt` es similar al siguiente evento de ejemplo. El usuario es la entidad principal en su cuenta de Cuenta de AWS que está accediendo a la tabla. Los parámetros incluyen la clave de la tabla cifrada (como blob de texto cifrado) y el [contexto de cifrado](#dynamodb-encryption-context) que identifica la tabla y la cuenta de Cuenta de AWS. AWS KMS deriva el ID de la clave KMS del texto cifrado.   

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false", 
                "creationDate": "2018-02-14T16:42:15Z"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDT3HGFQZX4RY6RU",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin" 
            }
        },
        "invokedBy": "dynamodb.amazonaws.com"
    },
    "eventTime": "2018-02-14T16:42:39Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "dynamodb.amazonaws.com",
    "userAgent": "dynamodb.amazonaws.com",
    "requestParameters": 
    {
        "encryptionContext":
        {
            "aws:dynamodb:tableName": "Books",
            "aws:dynamodb:subscriberId": "111122223333" 
        }
    }, 
    "responseElements": null, 
    "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5",
    "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", 
    "readOnly": true, 
    "resources": [ 
        {
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333", 
            "type": "AWS::KMS::Key" 
        }
    ],
    "eventType": "AwsApiCall", 
    "recipientAccountId": "111122223333"
}
```

**CreateGrant**  
Cuando utiliza una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o una [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) para proteger la tabla de DynamoDB, DynamoDB utiliza [concesiones](#dynamodb-grants) para permitir al servicio realizar la protección de datos continua y tareas de mantenimiento y durabilidad. Estas concesiones no son obligatorias en las [Clave propiedad de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).  
Las concesiones que crea DynamoDB son específicas de una tabla. El principal en la solicitud [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) es el usuario que creó la tabla.   
El evento que registra la operación `CreateGrant` es similar al siguiente evento de ejemplo. Los parámetros incluyen el nombre de recurso de Amazon (ARN) de la clave KMS para la tabla, la entidad principal beneficiaria, la entidad principal de retirada (el servicio de DynamoDB) y las operaciones que cubre la concesión. También incluye una restricción que requiere que toda operación de cifrado utilice el [contexto de cifrado](#dynamodb-encryption-context) especificado.  

```
{ 
    "eventVersion": "1.05", 
    "userIdentity": 
    { 
        "type": "AssumedRole", 
        "principalId": "AROAIGDTESTANDEXAMPLE:user01", 
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", 
        "accountId": "111122223333", 
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE", 
        "sessionContext": { 
            "attributes": { 
                "mfaAuthenticated": "false", 
                "creationDate": "2018-02-14T00:12:02Z" 
            }, 
            "sessionIssuer": { 
                "type": "Role", 
                "principalId": "AROAIGDTESTANDEXAMPLE", 
                "arn": "arn:aws:iam::111122223333:role/Admin", 
                "accountId": "111122223333", 
                "userName": "Admin" 
            }
        }, 
        "invokedBy": "dynamodb.amazonaws.com" 
    }, 
    "eventTime": "2018-02-14T00:15:15Z", 
    "eventSource": "kms.amazonaws.com", 
    "eventName": "CreateGrant", 
    "awsRegion": "us-west-2", 
    "sourceIPAddress": "dynamodb.amazonaws.com", 
    "userAgent": "dynamodb.amazonaws.com", 
    "requestParameters": { 
        "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", 
        "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", 
        "constraints": { 
            "encryptionContextSubset": {
                "aws:dynamodb:tableName": "Books",
                "aws:dynamodb:subscriberId": "111122223333" 
            } 
        }, 
        "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", 
        "operations": [ 
            "DescribeKey", 
            "GenerateDataKey", 
            "Decrypt", 
            "Encrypt", 
            "ReEncryptFrom", 
            "ReEncryptTo", 
            "RetireGrant" 
        ] 
    }, 
    "responseElements": { 
        "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" 
    }, 
    "requestID": "2192b82a-111c-11e8-a528-f398979205d8", 
    "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", 
    "readOnly": false, 
    "resources": [ 
        { 
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333", 
            "type": "AWS::KMS::Key" 
        } 
    ], 
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

# Administración de tablas de cifrado en DynamoDB
<a name="encryption.tutorial"></a>

Puede usar la Consola de administración de AWS o la AWS Command Line Interface (AWS CLI) para especificar la clave de cifrado en las tablas nuevas y actualizar las claves de cifrado de las tablas existentes en Amazon DynamoDB.

**Topics**
+ [Especificación de la clave de cifrado para una tabla nueva](#encryption.tutorial-creating)
+ [Configuración de una clave de cifrado](#encryption.tutorial-update)

## Especificación de la clave de cifrado para una tabla nueva
<a name="encryption.tutorial-creating"></a>

Siga estos pasos para especificar la clave de cifrado en una tabla nueva mediante la consola de Amazon DynamoDB o la AWS CLI.

### Creación de una tabla cifrada (consola)
<a name="encryption.tutorial-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 navegación del lado izquierdo de la consola, elija **Tablas**.

1. Seleccione **Create Table (Crear tabla)**. En **Nombre de la tabla**, escriba **Music**. Como clave principal, introduzca **Artist** y como clave de ordenación, introduzca **SongTitle**, ambas como cadenas.

1. En **Settings** (Ajustes), asegúrese de que **Customize settings** (Personalizar ajustes) esté seleccionado.
**nota**  
Si selecciona **Use default settings** (Usar configuración predeterminada), las tablas se cifrarán en reposo con la Clave propiedad de AWS sin costo adicional.

1. En **Encryption at rest** (Cifrado en reposo), elija un tipo de cifrado: Clave propiedad de AWS, Clave administrada de AWS o una clave administrada por el cliente.
   +  **Owned by Amazon DynamoDB** (Propiedad de Amazon DynamoDB). Clave propiedad de AWS, propiedad y administrada específicamente por DynamoDB. No se cobrará ningún cargo adicional por el uso de esta clave.
   + **AWS Clave administrada por**. Alias de clave: `aws/dynamodb`. La clave se almacena en su cuenta y la administra AWS Key Management Service (AWS KMS). Se aplican los cargos de AWS KMS.
   +  **Además de estar almacenada en su cuenta, es de su propiedad y está administrada por usted.** Clave administrada por clientes. La clave se almacena en su cuenta y la administra AWS Key Management Service (AWS KMS). Se aplican los cargos de AWS KMS.
**nota**  
Si decide ser propietario y administrar su propia clave, asegúrese de que la política de claves KMS esté configurada correctamente. Para obtener más información, incluidos ejemplos, consulte [Política de claves para una clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

1. Elija **Create table** (Crear tabla) para crear la tabla cifrada. Para confirmar el tipo de cifrado, seleccione los detalles de la tabla en la pestaña **Overview** (Resumen) y revise la sección **Additional details** (Detalles adicionales).

### Creación de una tabla cifrada (AWS CLI)
<a name="encryption.tutorial-cli"></a>

Utilice la AWS CLI para crear una tabla con la Clave propiedad de AWS predeterminada, la Clave administrada de AWS o una clave administrada por el cliente para Amazon DynamoDB.

**Para crear una tabla cifrada mediante la predeterminada Clave propiedad de AWS**
+ Cree la tabla cifrada `Music` como sigue:

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
  ```
**nota**  
Esta tabla está ahora cifrada utilizando la Clave propiedad de AWS predeterminada en la cuenta del servicio DynamoDB.

**Creación de una tabla cifrada mediante la Clave administrada de AWS para DynamoDB**
+ Cree la tabla cifrada `Music` como sigue:

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS
  ```

   El estado `SSEDescription` de la descripción de la tabla se establece en `ENABLED` y `SSEType` es `KMS`. 

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**Creación de una tabla cifrada mediante la clave administrada por el cliente para DynamoDB**
+ Cree la tabla cifrada `Music` como sigue:

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**nota**  
Para el `KMSMasterKeyId`, puede utilizar un ID de clave, un ARN de clave o un alias de clave. Si utiliza un alias de clave (por ejemplo, `alias/my-key`), DynamoDB resuelve el alias y asocia la clave de AWS KMS subyacente a la tabla. En la descripción de la tabla, el `KMSMasterKeyArn` siempre mostrará el ARN de la clave resuelta, no el alias. Para obtener más información sobre los identificadores clave, consulte [Identificadores de clave (KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) en la *Guía para desarrolladores de AWS Key Management Service*.

   El estado `SSEDescription` de la descripción de la tabla se establece en `ENABLED` y `SSEType` es `KMS`.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

## Configuración de una clave de cifrado
<a name="encryption.tutorial-update"></a>

También puede usar la consola de DynamoDB o la AWS CLI para actualizar las claves de cifrado de una tabla existente entre una Clave propiedad de AWS, una Clave administrada de AWS y una clave administrada por el cliente en cualquier momento.

### Actualización de una clave de cifrado (consola)
<a name="encryption.tutorial-update-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 navegación del lado izquierdo de la consola, elija **Tablas**.

1. Elija la tabla que desea actualizar.

1. Seleccione el menú desplegable **Actions** (Acciones) y, a continuación, seleccione la opción **Update settings** (Actualizar ajustes).

1. Vaya a la pestaña **Additional settings** (Ajustes adicionales).

1. En **Encryption** (Cifrado), elija **Manage encryption** (Administración del cifrado).

1. Elija un tipo de cifrado:
   +  **Propiedad de Amazon DynamoDB.** La clave AWS KMS es propiedad de DynamoDB y este servicio se encarga de su administración. No se cobrará ningún cargo adicional por el uso de esta clave.
   + **Clave administrada de AWS** Alias de clave: `aws/dynamodb`. La clave se almacena en su cuenta y la administra AWS Key Management Service. (AWS KMS). Se aplican los cargos de AWS KMS.
   +  **Además de estar almacenada en su cuenta, es de su propiedad y está administrada por usted.** La clave se almacena en su cuenta y la administra AWS Key Management Service. (AWS KMS). Se aplican los cargos de AWS KMS.
**nota**  
Si decide ser propietario y administrar su propia clave, asegúrese de que la política de claves KMS esté configurada correctamente. Para obtener más información, consulte [Política de claves para una clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

   A continuación, elija **Save (Guardar)** para actualizar la tabla cifrada. Para confirmar el tipo de cifrado, verifique los detalles de la tabla en la pestaña **Overview (Información general)**.

### Actualización de una clave de cifrado (AWS CLI)
<a name="encryption.tutorial-update-cli"></a>

Los siguientes ejemplos muestran cómo actualizar una tabla cifrada con la AWS CLI.

**Actualización de una tabla cifrada mediante la predeterminada Clave propiedad de AWS**
+ Actualice la tabla cifrada `Music`, como en el siguiente ejemplo.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=false
  ```
**nota**  
Esta tabla está ahora cifrada utilizando la Clave propiedad de AWS predeterminada en la cuenta del servicio DynamoDB.

**Actualización de una tabla cifrada mediante la Clave administrada de AWS para DynamoDB**
+ Actualice la tabla cifrada `Music`, como en el siguiente ejemplo.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true
  ```

   El estado `SSEDescription` de la descripción de la tabla se establece en `ENABLED` y `SSEType` es `KMS`.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**Actualización de una tabla cifrada con una clave administrada por el cliente para DynamoDB**
+ Actualice la tabla cifrada `Music`, como en el siguiente ejemplo.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**nota**  
Para el `KMSMasterKeyId`, puede utilizar un ID de clave, un ARN de clave o un alias de clave. Si utiliza un alias de clave (por ejemplo, `alias/my-key`), DynamoDB resuelve el alias y asocia la clave de AWS KMS subyacente a la tabla. En la descripción de la tabla, el `KMSMasterKeyArn` siempre mostrará el ARN de la clave resuelta, no el alias.

   El estado `SSEDescription` de la descripción de la tabla se establece en `ENABLED` y `SSEType` es `KMS`. 

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

# Protección de las conexiones de DynamoDB mediante puntos de conexión de VPC y políticas de IAM"
<a name="inter-network-traffic-privacy"></a>

Las conexiones están protegidas entre Amazon DynamoDB y las aplicaciones locales y entre DynamoDB y otros recursos de AWS dentro de la misma región de AWS.

## Política necesaria para puntos de conexión
<a name="inter-network-traffic-DescribeEndpoints"></a>

Amazon DynamoDB proporciona una API [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html) que le permite mostrar la información de los puntos de conexión regionales. Para las solicitudes a los puntos de conexión de DynamoDB públicos, la API responde sin tener en cuenta la política de IAM de DynamoDB configurada, aunque haya una denegación explícita o implícita en la política de IAM o de punto de conexión de VPC. Esto se debe a que DynamoDB omite de forma intencionada la autorización de la API `DescribeEndpoints`.

Para las solicitudes de un punto de conexión de VPC, tanto las políticas de punto de conexión de IAM como las de la nube privada virtual (VPC) deben autorizar la llamada a la API `DescribeEndpoints` para las entidades principales de administración de identidades y accesos (IAM) solicitantes mediante la acción `dynamodb:DescribeEndpoints` de IAM. De lo contrario, se le denegará el acceso a la API `DescribeEndpoints`.

A continuación, se muestra un ejemplo de una política de puntos de conexión.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "dynamodb:DescribeEndpoints",
            "Resource": "*"
        }
    ]
}
```

------

## Tráfico entre el servicio y las aplicaciones y clientes locales
<a name="inter-network-traffic-privacy-on-prem"></a>

Tiene dos opciones de conectividad entre su red privada y AWS: 
+ Una conexión de AWS Site-to-Site VPN. Para obtener más información, consulte [¿Qué es AWS Site-to-Site VPN?](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) en la *Guía del usuario de AWS Site-to-Site VPN*.
+ Una conexión de Direct Connect. Para obtener más información, consulte [¿Qué es Direct Connect?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) en la *Guía del usuario de Direct Connect*.

El acceso a DynamoDB a través de la red se realiza mediante las API publicadas por AWS. Los clientes deben admitir el protocolo de seguridad de la capa de transporte (TLS) 1.2. Nosotros recomendamos TLS 1.3. Los clientes también deben admitir conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos. Además, debe firmar las solicitudes con un ID de clave de acceso y una clave de acceso secreta que estén asociados a una entidad principal de IAM, o bien, puede usar [AWS Security Token Service (STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) para generar credenciales de seguridad temporales a la hora de firmar solicitudes.

## Tráfico entre recursos de AWS en la misma región
<a name="inter-network-traffic-privacy-within-region"></a>

Un punto de enlace de la Virtual Private Cloud (Amazon VPC) para DynamoDB es una entidad lógica dentro de una VPC que permite la conectividad solo a DynamoDB. La Amazon VPC enruta las solicitudes a DynamoDB y vuelve a enrutar las respuestas a la VPC. Para obtener más información, consulte [Puntos de enlace de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) en la *Guía del usuario de Amazon VPC*. Para consultar ejemplos de políticas que puede usar para controlar el acceso desde los puntos de conexión de VPC, consulte [Uso de políticas de IAM para controlar el acceso a DynamoDB](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-ddb.html). 

**nota**  
No se puede acceder a los puntos de conexión de VPC de Amazon a través de AWS Site-to-Site VPN o Direct Connect.

# AWS Identity and Access Management (IAM) y DynamoDB
<a name="identity-and-access-mgmt"></a>

 AWS Identity and Access Management es un servicio de AWS que ayuda a un administrador a controlar de forma segura el acceso a los recursos de AWS. Los administradores controlan quién está autenticado (ha iniciado sesión) y autorizado (tiene permisos) para utilizar recursos de Amazon DynamoDB y Acelerador de DynamoDB. Puede utilizar IAM para administrar los permisos de acceso e implementar políticas de seguridad para Amazon DynamoDB y Acelerador de DynamoDB. IAM es un servicio de AWS que puede utilizar sin cargo adicional. 

 

**Topics**
+ [Identity and Access Management en Amazon DynamoDB](security-iam.md)
+ [Uso de condiciones de las políticas de IAM para control de acceso preciso](specifying-conditions.md)

# Identity and Access Management en Amazon DynamoDB
<a name="security-iam"></a>





AWS Identity and Access Management (IAM) es un Servicio de AWS que ayuda a los administradores a controlar de forma segura el acceso a los recursos de AWS. Los administradores de IAM controlan quién puede estar *autenticado* (ha iniciado sesión) y *autorizado* (tiene permisos) para utilizar los recursos de DynamoDB. IAM es un Servicio de AWS que se puede utilizar sin cargo adicional.

**Topics**
+ [Público](#security_iam_audience)
+ [Autenticación con identidades](#security_iam_authentication)
+ [Administración del acceso con políticas](#security_iam_access-manage)
+ [Cómo funciona Amazon DynamoDB con IAM](security_iam_service-with-iam.md)
+ [Ejemplos de políticas basadas en identidad de Amazon DynamoDB](security_iam_id-based-policy-examples.md)
+ [Solución de problemas de identidad y acceso de Amazon DynamoDB](security_iam_troubleshoot.md)
+ [Política de IAM para evitar la compra de capacidad reservada de DynamoDB](iam-policy-prevent-purchase-reserved-capacity.md)

## Público
<a name="security_iam_audience"></a>

La forma de utilizar AWS Identity and Access Management (IAM) varía en función del rol:
+ **Usuario del servicio:** solicite permisos al administrador si no puede acceder a las características (consulte [Solución de problemas de identidad y acceso de Amazon DynamoDB](security_iam_troubleshoot.md)).
+ **Administrador del servicio:** determine el acceso de los usuarios y envíe las solicitudes de permiso (consulte [Cómo funciona Amazon DynamoDB con IAM](security_iam_service-with-iam.md)).
+ **Administrador de IAM**: escribe las políticas para administrar el acceso (consulte [Ejemplos de políticas basadas en identidad de Amazon DynamoDB](security_iam_id-based-policy-examples.md)).

## Autenticación con identidades
<a name="security_iam_authentication"></a>

La autenticación es la manera de iniciar sesión en AWS mediante credenciales de identidad. Debe autenticarse como el Usuario raíz de la cuenta de AWS, como un usuario de IAM o asumiendo un rol de IAM.

Se puede iniciar sesión como una identidad federada con las credenciales de un origen de identidad, como AWS IAM Identity Center (IAM Identity Center), la autenticación de inicio de sesión único o las credenciales de Google/Facebook. Para obtener más información sobre el inicio de sesión, consulte [Cómo iniciar sesión en la Cuenta de AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de AWS Sign-In*.

Para el acceso mediante programación, AWS proporciona un SDK y una CLI para firmar criptográficamente las solicitudes. Para obtener más información, consulte [AWS Signature Version 4 para solicitudes de API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) en la *Guía del usuario de IAM*.

### Usuario raíz de la Cuenta de AWS
<a name="security_iam_authentication-rootuser"></a>

 Cuando se crea una Cuenta de AWS, se comienza con una identidad de inicio de sesión denominada *usuario raíz* de la Cuenta de AWS que tiene acceso completo a todos los Servicios de AWS y recursos. Se recomiendaencarecidamente que no utilice el usuario raíz para las tareas diarias. Para ver las tareas que requieren credenciales de usuario raíz, consulte [Tareas que requieren credenciales de usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) en la *Guía del usuario de IAM*. 

### Identidad federada
<a name="security_iam_authentication-federated"></a>

Como práctica recomendada, exija a los usuarios humanos que utilicen la federación con un proveedor de identidades para acceder a Servicios de AWS con credenciales temporales.

Una *identidad federada* es un usuario del directorio empresarial, proveedor de identidad web o Directory Service que accede a los Servicios de AWS mediante credenciales de un origen de identidad. Las identidades federadas asumen roles que proporcionan credenciales temporales.

Para una administración de acceso centralizada, se recomienda AWS IAM Identity Center. Para obtener más información, consulte [¿Qué es el Centro de identidades de IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) en la *Guía del usuario de AWS IAM Identity Center*.

### Usuarios y grupos de IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* es una identidad con permisos específicos para una sola persona o aplicación. Recomendamos el uso de credenciales temporales en lugar de usuarios de IAM con credenciales de larga duración. Para obtener más información, consulte [Exigir que los usuarios humanos utilicen la federación con un proveedor de identidades para acceder a AWS con credenciales temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) en la *Guía del usuario de IAM*.

Un [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) especifica un conjunto de usuarios de IAM y facilita la administración de los permisos para grupos grandes de usuarios. Para obtener más información, consulte [Casos de uso para usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) en la *Guía del usuario de IAM*.

### Roles de IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[Rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* es una identidad con permisos específicos que proporciona credenciales temporales. Se puede asumir un rol [cambiando de un usuario a un rol de IAM (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) o llamando a una operación de la API de la AWS CLI o AWS. Para obtener más información, consulte [Métodos para asumir un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) en la *Guía del usuario de IAM*.

Los roles de IAM son útiles para el acceso de usuario federado, los permisos de usuario de IAM temporales, el acceso entre cuentas, el acceso entre servicios y las aplicaciones que se ejecutan en Amazon EC2. Para obtener más información, consulte [Acceso a recursos entre cuentas en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) en la *Guía del usuario de IAM*.

## Administración del acceso con políticas
<a name="security_iam_access-manage"></a>

Para controlar el acceso en AWS, se crean políticas y se adjuntan a identidades o recursos de AWS. Una política define los permisos cuando se asocia a una identidad o un recurso. AWS evalúa estas políticas cuando una entidad principal realiza una solicitud. La mayoría de las políticas se almacenan en AWS como documentos JSON. Para obtener más información sobre los documentos de políticas de JSON, consulte [Información general de políticas de JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) en la *Guía del usuario de IAM*.

Mediante las políticas, los administradores especifican quién tiene acceso a qué, definiendo qué **entidad principal** puede realizar **acciones** sobre qué **recursos** y en qué **condiciones**.

De forma predeterminada, los usuarios y los roles no tienen permisos. Un administrador de IAM crea políticas de IAM y las agrega a roles, que los usuarios pueden asumir posteriormente. Las políticas de IAM definen permisos independientemente del método que se utilice para realizar la operación.

### Políticas basadas en identidades
<a name="security_iam_access-manage-id-based-policies"></a>

Las políticas basadas en identidad son documentos de política de permisos JSON que asocia a una identidad (usuario, grupo o rol). Estas políticas controlan qué acciones pueden realizar las identidades, en qué recursos y en qué condiciones. Para obtener más información sobre cómo crear una política basada en la identidad, consulte [Definición de permisos de IAM personalizados con políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la *Guía del usuario de IAM*.

Las políticas basadas en identidad pueden ser *políticas insertadas* (incrustadas directamente en una sola identidad) o *políticas administradas* (políticas independientes asociadas a varias identidades). Para obtener información sobre cómo elegir entre políticas administradas e insertadas, consulte [Selección entre políticas administradas y políticas insertadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) en la *Guía del usuario de IAM*.

### Políticas basadas en recursos
<a name="security_iam_access-manage-resource-based-policies"></a>

Las políticas basadas en recursos son documentos de políticas JSON que se asocian a un recurso. Los ejemplos incluyen las *Políticas de confianza de roles* de IAM y las *Políticas de bucket* de Amazon S3. En los servicios que admiten políticas basadas en recursos, los administradores de servicios pueden utilizarlos para controlar el acceso a un recurso específico. Debe [especificar una entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) en una política basada en recursos.

Las políticas basadas en recursos son políticas insertadas que se encuentran en ese servicio. No se pueden utilizar políticas de IAM administradas por AWS en una política basada en recursos.

### Otros tipos de políticas
<a name="security_iam_access-manage-other-policies"></a>

AWS admite tipos de políticas adicionales que pueden establecer el máximo de permisos concedidos por los tipos de políticas más frecuentes:
+ **Límites de permisos:** establecen los permisos máximos que una política basada en identidad puede conceder a una entidad de IAM. Para obtener más información, consulte [Límites de permisos para las entidades de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) en la *Guía del usuario de IAM*.
+ **Políticas de control de servicios (SCP):** especifican los permisos máximos para una organización o unidad organizativa en AWS Organizations. Para obtener más información, consulte [Políticas de control de servicios](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) en la *Guía del usuario de AWS Organizations*.
+ **Políticas de control de recursos (RCP):** definen los permisos máximos disponibles para los recursos de las cuentas. Para obtener más información, consulte [Políticas de control de recursos (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) en la *Guía del usuario de AWS Organizations*.
+ **Políticas de sesión:** políticas avanzadas que se pasan como parámetro cuando se crea una sesión temporal para un rol o un usuario federado. Para obtener más información, consulte [Políticas de sesión](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) en la *Guía del usuario de IAM*.

### Varios tipos de políticas
<a name="security_iam_access-manage-multiple-policies"></a>

Cuando se aplican varios tipos de políticas a una solicitud, los permisos resultantes son más complicados de entender. Para obtener información acerca de cómo AWS decide si permitir o no una solicitud cuando hay varios tipos de políticas implicados, consulte [Lógica de evaluación de políticas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) en la *Guía del usuario de IAM*.

# Cómo funciona Amazon DynamoDB con IAM
<a name="security_iam_service-with-iam"></a>

Antes de utilizar IAM para administrar el acceso a DynamoDB, conozca qué características de IAM se pueden utilizar con DynamoDB.






| Característica de IAM | Compatibilidad con DynamoDB | 
| --- | --- | 
|  [Políticas basadas en identidades](#security_iam_service-with-iam-id-based-policies)  |   Sí  | 
|  [Políticas basadas en recursos](#security_iam_service-with-iam-resource-based-policies)  |   Sí  | 
|  [Acciones de políticas](#security_iam_service-with-iam-id-based-policies-actions)  |   Sí  | 
|  [Recursos de políticas](#security_iam_service-with-iam-id-based-policies-resources)  |   Sí  | 
|  [Claves de condición de política](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   Sí  | 
|  [ACL](#security_iam_service-with-iam-acls)  |   No   | 
|  [ABAC (etiquetas en políticas)](#security_iam_service-with-iam-tags)  |   Sí  | 
|  [Credenciales temporales](#security_iam_service-with-iam-roles-tempcreds)  |   Sí  | 
|  [Permisos de entidades principales](#security_iam_service-with-iam-principal-permissions)  |   Sí  | 
|  [Roles de servicio](#security_iam_service-with-iam-roles-service)  |   Sí  | 
|  [Roles vinculados al servicio](#security_iam_service-with-iam-roles-service-linked)  |   Sí  | 

Para obtener información general sobre cómo funcionan DynamoDB y otros servicios de AWS con la mayoría de las características de IAM, consulte [Servicios de AWS que funcionan con IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) en la *Guía del usuario de IAM*.

## Políticas basadas en identidad de DynamoDB
<a name="security_iam_service-with-iam-id-based-policies"></a>

**Compatibilidad con las políticas basadas en identidad:** sí

Las políticas basadas en identidad son documentos de políticas de permisos JSON que puede asociar a una identidad, como un usuario de IAM, un grupo de usuarios o un rol. Estas políticas controlan qué acciones pueden realizar los usuarios y los roles, en qué recursos y en qué condiciones. Para obtener más información sobre cómo crear una política basada en la identidad, consulte [Definición de permisos de IAM personalizados con políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la *Guía del usuario de IAM*.

Con las políticas basadas en identidades de IAM, puede especificar las acciones y los recursos permitidos o denegados, así como las condiciones en las que se permiten o deniegan las acciones. Para obtener más información sobre los elementos que puede utilizar en una política de JSON, consulte [Referencia de los elementos de la política de JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) en la *Guía del usuario de IAM*.

### Ejemplos de políticas basadas en identidad de DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Para ver ejemplos de políticas basadas en identidad de DynamoDB, consulte [Ejemplos de políticas basadas en identidad de Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Políticas basadas en recursos de DynamoDB
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**Compatibilidad con las políticas basadas en recursos:** sí

Las políticas basadas en recursos son documentos de política JSON que se asocian a un recurso. Los ejemplos de políticas basadas en recursos son las *políticas de confianza de roles* de IAM y las *políticas de bucket* de Amazon S3. En los servicios que admiten políticas basadas en recursos, los administradores de servicios pueden utilizarlos para controlar el acceso a un recurso específico. Para el recurso al que se asocia la política, la política define qué acciones puede realizar una entidad principal especificada en ese recurso y en qué condiciones. Debe [especificar una entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) en una política basada en recursos. Las entidades principales pueden incluir cuentas, usuarios, roles, usuarios federados o Servicios de AWS.

Para habilitar el acceso entre cuentas, puede especificar toda una cuenta o entidades de IAM de otra cuenta como la entidad principal de una política en función de recursos. Para obtener más información, consulte [Acceso a recursos entre cuentas en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) en la *Guía del usuario de IAM*.

## Acciones de política para DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**Compatibilidad con las acciones de políticas:** sí

Los administradores pueden utilizar las políticas JSON de AWS para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Action` de una política JSON describe las acciones que puede utilizar para conceder o denegar el acceso en una política. Incluya acciones en una política para conceder permisos y así llevar a cabo la operación asociada.



Para ver una lista de las acciones de DynamoDB, consulte [Acciones definidas por Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions) en la *Referencia de autorizaciones de servicio*.

Las acciones de políticas de DynamoDB utilizan el siguiente prefijo antes de la acción:

```
aws
```

Para especificar varias acciones en una única instrucción, sepárelas con comas.

```
"Action": [
      "aws:action1",
      "aws:action2"
         ]
```





Para ver ejemplos de políticas basadas en identidad de DynamoDB, consulte [Ejemplos de políticas basadas en identidad de Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Recursos de política de DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**Compatibilidad con los recursos de políticas:** sí

Los administradores pueden utilizar las políticas JSON de AWS para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Resource` de la política JSON especifica el objeto u objetos a los que se aplica la acción. Como práctica recomendada, especifique un recurso utilizando el [Nombre de recurso de Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). En el caso de las acciones que no admiten permisos por recurso, utilice un carácter comodín (\$1) para indicar que la instrucción se aplica a todos los recursos.

```
"Resource": "*"
```

Para ver una lista de tipos de recursos y sus ARN de DynamoDB, consulte [Tipos de recurso definidos por Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-resources-for-iam-policies) en la *Referencia de autorizaciones de servicio*. Para obtener información acerca de las acciones con las que puede especificar el ARN de cada recurso, consulte [Acciones definidas por Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).





Para ver ejemplos de políticas basadas en identidad de DynamoDB, consulte [Ejemplos de políticas basadas en identidad de Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Claves de condición de política para DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**Compatibilidad con claves de condición de políticas específicas del servicio:** sí

Los administradores pueden utilizar las políticas JSON de AWS para especificar quién tiene acceso a qué. Es decir, qué **entidad principal** puede realizar **acciones** en qué **recursos** y en qué **condiciones**.

El elemento `Condition` especifica cuándo se ejecutan las instrucciones en función de criterios definidos. Puede crear expresiones condicionales que utilizan [operadores de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), tales como igual o menor que, para que la condición de la política coincida con los valores de la solicitud. Para ver todas las claves de condición globales de AWS, consulte [Claves de contexto de condición globales de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) en la *Guía del usuario de IAM*.

Para ver una lista de las claves de condición de DynamoDB, consulte [Claves de condición para Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-policy-keys) en la *Referencia de autorizaciones de servicio*. Para obtener más información acerca de las acciones y los recursos con los que puede utilizar una clave de condición, consulte [Acciones definidas por Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).

Para ver ejemplos de políticas basadas en identidad de DynamoDB, consulte [Ejemplos de políticas basadas en identidad de Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Listas de control de acceso (ACL) de DynamoDB
<a name="security_iam_service-with-iam-acls"></a>

**Compatibilidad con ACL**: no 

Las listas de control de acceso (ACL) controlan qué entidades principales (miembros de cuentas, usuarios o roles) tienen permisos para acceder a un recurso. Las ACL son similares a las políticas basadas en recursos, aunque no utilizan el formato de documento de políticas JSON.

## Control de acceso basado en atributos (ABAC) con DynamoDB
<a name="security_iam_service-with-iam-tags"></a>

**Admite ABAC (etiquetas en las políticas):** sí

El control de acceso basado en atributos (ABAC) es una estrategia de autorización que define permisos en función de atributos denominados etiquetas. Puede asociar etiquetas a entidades de IAM y recursos de AWS y, a continuación, diseñar políticas de ABAC para permitir operaciones cuando la etiqueta de la entidad principal coincida con la etiqueta del recurso.

Para controlar el acceso en función de etiquetas, debe proporcionar información de las etiquetas en el [elemento de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) de una política utilizando las claves de condición `aws:ResourceTag/key-name`, `aws:RequestTag/key-name` o `aws:TagKeys`.

Si un servicio admite las tres claves de condición para cada tipo de recurso, el valor es **Sí** para el servicio. Si un servicio admite las tres claves de condición solo para algunos tipos de recursos, el valor es **Parcial**.

*Para obtener más información sobre ABAC, consulte [Definición de permisos con la autorización de ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) en la Guía del usuario de IAM*. Para ver un tutorial con los pasos para configurar ABAC, consulte [Uso del control de acceso basado en atributos (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) en la *Guía del usuario de IAM*.

## Uso de credenciales temporales con DynamoDB
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**Compatibilidad con credenciales temporales:** sí

Las credenciales temporales proporcionan acceso a corto plazo a los recursos de AWS y se crean automáticamente cuando se utiliza la federación o se cambia de rol. AWS recomienda generar credenciales temporales de forma dinámica en lugar de usar claves de acceso a largo plazo. Para obtener más información, consulte [Credenciales de seguridad temporales en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) y [Servicios de AWS que funcionan con IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) en la *Guía del usuario de IAM*.

## Permisos de entidades principales entre servicios de DynamoDB
<a name="security_iam_service-with-iam-principal-permissions"></a>

**Admite sesiones de acceso directo (FAS):** sí

 Las sesiones de acceso directo (FAS) utilizan los permisos de la entidad principal para llamar a un Servicio de AWS, combinados con el Servicio de AWS solicitante, para realizar solicitudes a servicios posteriores. Para obtener información sobre las políticas a la hora de realizar solicitudes de FAS, consulte [Sesiones de acceso directo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 

## Roles de servicio para DynamoDB
<a name="security_iam_service-with-iam-roles-service"></a>

**Compatible con roles de servicio:** sí

 Un rol de servicio es un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que asume un servicio para realizar acciones en su nombre. Un administrador de IAM puede crear, modificar y eliminar un rol de servicio desde IAM. Para obtener más información, consulte [Crear un rol para delegar permisos a un Servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*. 

**aviso**  
Cambiar los permisos de un rol de servicio podría interrumpir la funcionalidad de DynamoDB. Edite los roles de servicio solo cuando DynamoDB proporcione orientación para hacerlo.

## Roles vinculados al servicio para DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**Compatible con roles vinculados al servicio:** sí

 Un rol vinculado a servicios es un tipo de rol de servicio que está vinculado a un Servicio de AWS. El servicio puede asumir el rol para realizar una acción en su nombre. Los roles vinculados a servicios aparecen en la Cuenta de AWS y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos de los roles vinculados a servicios. 

Para más información sobre cómo crear o administrar roles vinculados a servicios, consulta [Servicios de AWS que funcionan con IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). Busque un servicio en la tabla que incluya `Yes` en la columna **Rol vinculado a un servicio**. Seleccione el vínculo **Sí** para ver la documentación acerca del rol vinculado a servicios para ese servicio.

### Roles vinculados al servicio compatibles en DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked-supported-by-dynamodb"></a>

Roles vinculados al servicio siguiente compatibles en DynamoDB.
+ DynamoDB utiliza el rol vinculado al servicio **AWSServiceRoleForDynamoDBReplication** para la replicación de tablas globales en todas las Regiones de AWS. Consulte [Seguridad de las tablas globales de DynamoDB](globaltables-security.md) para obtener más información acerca del rol vinculado al servicio **AWSServiceRoleForDynamoDBReplication**.
+ DynamoDB Accelerator (DAX) utiliza el rol vinculado al servicio **AWSServiceRoleForDAX** para configurar y mantener un clúster de DAX. Consulte [Uso de roles de IAM vinculados a servicios para DAX](using-service-linked-roles.md) para obtener más información acerca del rol vinculado al servicio **AWSServiceRoleForDAX**.

Además de estos roles vinculados al servicio de DynamoDB, DynamoDB utiliza el servicio de escalado automático de aplicaciones para administrar automáticamente la configuración de rendimiento en las tablas de modos de capacidad aprovisionadas. El servicio de escalado automático de aplicaciones utiliza el rol vinculado al servicio **AWSServiceRoleForApplicationAutoScaling\$1DynamoDBTable** para administrar la configuración de rendimiento en las tablas de DynamoDB que tienen habilitado el escalado automático. Consulte [Roles vinculados a servicios para el escalado automático de aplicaciones](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) para obtener más información.

# Ejemplos de políticas basadas en identidad de Amazon DynamoDB
<a name="security_iam_id-based-policy-examples"></a>

De forma predeterminada, los usuarios y roles no tienen permiso para crear ni modificar recursos de DynamoDB. Un administrador de IAM puede crear políticas de IAM para conceder permisos a los usuarios para realizar acciones en los recursos que necesitan.

Para obtener información acerca de cómo crear una política basada en identidades de IAM mediante el uso de estos documentos de políticas JSON de ejemplo, consulte [Creación de políticas de IAM (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) en la *Guía del usuario de IAM*.

Para obtener más información sobre las acciones y los tipos de recursos definidos por DynamoDB, incluido el formato de los ARN para cada tipo de recurso, consulte [Acciones, recursos y claves de condición de Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html) en la *Referencia de autorizaciones de servicio*.

**Topics**
+ [Prácticas recomendadas sobre las políticas](#security_iam_service-with-iam-policy-best-practices)
+ [Uso de la consola de DynamoDB](#security_iam_id-based-policy-examples-console)
+ [Cómo permitir a los usuarios consultar sus propios permisos](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Uso de las políticas basadas en identidades con Amazon DynamoDB](using-identity-based-policies.md)

## Prácticas recomendadas sobre las políticas
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Las políticas basadas en identidad determinan si alguien puede crear, acceder o eliminar los recursos de DynamoDB de la cuenta. Estas acciones pueden generar costos adicionales para su Cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas en identidades:
+ **Comience a utilizar las políticas administradas de AWS y avance hacia permisos de privilegios mínimos**. Para empezar a conceder permisos a los usuarios y cargas de trabajo, utilice las *políticas administradas de AWS* que otorgan permisos para muchos casos de uso comunes. Están disponibles en su Cuenta de AWS. Se recomienda definir políticas administradas por el cliente de AWS específicas para sus casos de uso a fin de reducir aún más los permisos. Con el fin de obtener más información, consulte las [políticas administradas por AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) o las [políticas administradas por AWS para funciones de tarea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) en la *Guía de usuario de IAM*.
+ **Aplique permisos de privilegio mínimo**: cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para realizar una tarea. 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*. Con el fin de obtener más información sobre el uso de IAM para aplicar permisos, consulte [Políticas y permisos en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) en la *Guía del usuario de IAM*.
+ **Utilice condiciones en las políticas de IAM para restringir aún más el acceso**: puede agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puede escribir una condición de políticas para especificar que todas las solicitudes deben enviarse utilizando SSL. También puede usar condiciones para conceder acceso a acciones de servicios si se emplean a través de un Servicio de AWS determinado como, por ejemplo, CloudFormation. Para obtener más información, consulte [Elementos de la política de JSON de IAM: Condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) en la *Guía del usuario de IAM*.
+ **Utiliza el analizador de acceso de IAM para validar las políticas de IAM con el fin de garantizar la seguridad y funcionalidad de los permisos**: el analizador de acceso de IAM valida políticas nuevas y existentes para que respeten el lenguaje (JSON) de las políticas de IAM y las prácticas recomendadas de IAM. El analizador de acceso de IAM proporciona más de 100 verificaciones de políticas y recomendaciones procesables para ayudar a crear políticas seguras y funcionales. Para más información, consulte [Validación de políticas con el 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*.
+ **Solicite la autenticación multifactor (MFA)**: si se encuentra en una situación en la que necesite usuarios raíz o de IAM en su Cuenta de AWS, active la MFA para obtener una mayor seguridad. Para exigir la MFA cuando se invoquen las operaciones de la API, añada condiciones de MFA a sus políticas. Para más información, consulte [Acceso seguro a la API con MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) en la *Guía del usuario de IAM*.

Para obtener más información sobre las prácticas recomendadas de IAM, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

## Uso de la consola de DynamoDB
<a name="security_iam_id-based-policy-examples-console"></a>

Para acceder a la consola de Amazon DynamoDB, debe tener un conjunto mínimo de permisos. Estos permisos deben permitirle enumerar y ver detalles sobre los recursos de DynamoDB en su Cuenta de AWS. Si crea una política basada en identidades que sea más restrictiva que el mínimo de permisos necesarios, la consola no funcionará del modo esperado para las entidades (usuarios o roles) que tengan esa política.

No es necesario conceder permisos mínimos para la consola a los usuarios que solo realizan llamadas a la AWS CLI o a la API de AWS. En su lugar, permita el acceso únicamente a las acciones que coincidan con la operación de API que intentan realizar.

Para asegurarse de que los usuarios y los roles puedan seguir utilizando la consola de DynamoDB, asocie también la política `ConsoleAccess` o `ReadOnly` administrada por AWS de DynamoDB a las entidades. Para obtener más información, consulte [Adición de permisos a un usuario](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) en la *Guía del usuario de IAM*:

## Cómo permitir a los usuarios consultar sus propios permisos
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

En este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver las políticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluye permisos para llevar a cabo esta acción en la consola o mediante programación con la AWS CLI o la API de AWS.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Uso de las políticas basadas en identidades con Amazon DynamoDB
<a name="using-identity-based-policies"></a>

Este tema cubre el uso de las políticas AWS Identity and Access Management basadas en la identidad (IAM) con Amazon DynamoDB y proporciona ejemplos. Los siguientes ejemplos muestran cómo un administrador de la cuenta puede asociar políticas de permisos a identidades de IAM (es decir, usuarios, grupos y roles) y, por lo tanto, conceder permisos para realizar operaciones en recursos de Amazon DynamoDB.

En las secciones de este tema se explica lo siguiente:
+ [Permisos de IAM necesarios para usar la consola de Amazon DynamoDB](#console-permissions)
+ [Políticas de IAM administradas (predefinidas) de AWS para Amazon DynamoDB](#access-policy-examples-aws-managed)
+ [Ejemplos de políticas administradas por el cliente](#access-policy-examples-for-sdk-cli)



A continuación se muestra un ejemplo de una política de permisos.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeQueryScanBooksTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:Query",
                "dynamodb:Scan"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Books"
        }
    ]
}
```

------

 La política anterior contiene una instrucción que concede permisos para tres acciones de DynamoDB (`dynamodb:DescribeTable`, `dynamodb:Query` y `dynamodb:Scan`) en una tabla de la región `us-west-2`AWS, propiedad de la cuenta de AWS especificada por `account-id`. El *nombre de recurso de Amazon (ARN)* del valor `Resource` especifica la tabla a la que se aplican los permisos.

## Permisos de IAM necesarios para usar la consola de Amazon DynamoDB
<a name="console-permissions"></a>

Para trabajar con la consola de DynamoDB, los usuarios deben tener un conjunto mínimo de permisos que les permitan trabajar con los recursos de DynamoDB en su cuenta de AWS. Además de estos permisos de DynamoDB, la consola requiere permisos:
+ Permisos de Amazon CloudWatch para mostrar las métricas y los gráficos.
+ AWS Data PipelinePermisos de para exportar e importar datos de DynamoDB. 
+  AWS Identity and Access ManagementPermisos de para obtener acceso a los roles necesarios para importar y exportar.
+ Permisos de Amazon Simple Notification Service para recibir notificaciones cada vez que se active una alarma de CloudWatch.
+ AWS LambdaPermisos de para procesar registros de DynamoDB Streams.

Si crea una política de IAM que sea más restrictiva que el mínimo de permisos necesarios, la consola no funcionará del modo esperado para los usuarios con esa política de IAM. Para asegurarse de que esos usuarios puedan seguir usando la consola de DynamoDB, asocie también la política administrada `AmazonDynamoDBReadOnlyAccess` AWS al usuario, según se explica en [Políticas de IAM administradas (predefinidas) de AWS para Amazon DynamoDB](#access-policy-examples-aws-managed).

No es necesario que conceda permisos mínimos para la consola a los usuarios que solo realizan llamadas a la AWS CLI o a la API de Amazon DynamoDB.

**nota**  
 Si hace referencia a un punto de conexión de VPC, también tendrá que autorizar la llamada a la API DescribeEndpoints para las entidades principales de IAM solicitantes mediante la acción de IAM (dynamodb:DescribeEndpoints). Para obtener más información consulte () [Política necesaria para puntos de conexión](inter-network-traffic-privacy.md#inter-network-traffic-DescribeEndpoints). 

## Políticas de IAM administradas (predefinidas) de AWS para Amazon DynamoDB
<a name="access-policy-examples-aws-managed"></a>

AWS aborda muchos casos de uso comunes proporcionando políticas de IAM independientes creadas y administradas por AWS. Estas políticas administradas por AWS conceden los permisos necesarios para casos de uso comunes, lo que le evita tener que investigar los permisos que se necesitan. Para más información, consulte[ Políticas administradas de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la *Guía del usuario de IAM*.

Las siguientes políticas administradas de AWS, que puede asociar a los usuarios de su cuenta, son específicas de DynamoDB y se agrupan según los escenarios de caso de uso:
+ **AmazonDynamoDBReadOnlyAccess**: concede acceso de solo lectura a los recursos de DynamoDB mediante la Consola de administración de AWS.
+ **AmazonDynamoDBFullAccess**: concede acceso pleno a los recursos de DynamoDB mediante la Consola de administración de AWS.

Para consultar estas políticas de permisos administradas por AWS, inicie sesión en la consola de IAM y busque las políticas específicas.

**importante**  
La práctica recomendada es crear políticas de IAM personalizadas que otorguen [privilegio mínimo ](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) a los usuarios, los roles o los grupos que las requieran. 

## Ejemplos de políticas administradas por el cliente
<a name="access-policy-examples-for-sdk-cli"></a>

En esta sección, encontrará ejemplos de políticas de usuario que conceden permisos para diversas acciones de DynamoDB. Estas políticas funcionan cuando se utilizan los SDK o la AWS de AWS CLI. Cuando usa la consola, debe conceder permisos adicionales específicos a la consola. Para obtener más información, consulte [Permisos de IAM necesarios para usar la consola de Amazon DynamoDB](#console-permissions).

**nota**  
En los siguientes ejemplos de políticas se emplea una de las regiones de AWS y que contiene un ID de cuenta y nombres de tablas ficticios.

Ejemplos:
+ [Política de IAM para conceder permisos a todas las acciones de DynamoDB en una tabla](grant-permissions-to-any-action-on-table.md)
+ [Política de IAM para conceder permisos de solo lectura en los elementos de una tabla de DynamoDB](read-only-permissions-on-table-items.md)
+ [Política de IAM para conceder acceso a una tabla de DynamoDB específica y sus índices](iam-policy-specific-table-indexes.md)
+ [Política de IAM para leer, escribir, actualizar y eliminar el acceso en una tabla de DynamoDB](iam-policy-example-data-crud.md)
+ [Política de IAM para separar entornos de DynamoDB en la misma cuenta de AWS](iam-policy-separate-environments.md)
+ [Política de IAM para evitar la compra de capacidad reservada de DynamoDB](iam-prevent-purchase-reserved-capacity.md)
+ [Política de IAM para conceder acceso de lectura solamente a DynamoDB Streams (no para la tabla)](iam-policy-read-stream-only.md)
+ [Política de IAM para permitir una función AWS Lambda para acceder a registros de DynamoDB Stream](iam-policy-example-lamda-process-dynamodb-streams.md)
+ [Política de IAM para el acceso de lectura y escritura a un clúster de DynamoDB Accelerator (DAX)](iam-policy-example-read-write-dax-access.md)

 La *Guía del usuario de IAM*, incluye [tres ejemplos adicionales de DynamoDB](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html):
+ [Amazon DynamoDB: permite el acceso a una determinada tabla](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html)
+ [Amazon DynamoDB:: permite el acceso a determinadas columnas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_columns.html)
+ [Amazon DynamoDB: permite el acceso de DynamoDB a filas en función de un ID de Amazon Cognito](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_rows.html)

# Política de IAM para conceder permisos a todas las acciones de DynamoDB en una tabla
<a name="grant-permissions-to-any-action-on-table"></a>

La siguiente política concede permisos para realizar *todas* las acciones de DynamoDB en una tabla llamada `Books`. El valor de ARN especificado en `Resource` identifica una tabla de una región de AWS determinada. Si sustituye el nombre de la tabla `Books` en el ARN de `Resource` por un carácter comodín (\$1), permitirá que se lleven a cabo *todas* las acciones de DynamoDB en *todas* las tablas de la cuenta. Considere detenidamente las posibles implicaciones de seguridad antes de utilizar un carácter comodín en esta política o en cualquier otra de IAM.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": "dynamodb:*",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

**nota**  
Este es un ejemplo del uso de un carácter comodín (\$1) para permitir *todas* las acciones, incluida la administración, las operaciones de datos, el monitoreo y la compra de capacidad reservada de DynamoDB. En su lugar, es una práctica recomendada especificar explícitamente cada acción que se va a conceder y solo lo que necesita ese usuario, rol o grupo.

# Política de IAM para conceder permisos de solo lectura en los elementos de una tabla de DynamoDB
<a name="read-only-permissions-on-table-items"></a>

La siguiente política de permisos concede permisos para las acciones `GetItem`, `BatchGetItem`, `Scan`, `Query` y `ConditionCheckItem` solo de DynamoDB y, como resultado, establece el acceso de sólo lectura a la tabla `Books`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

# Política de IAM para conceder acceso a una tabla de DynamoDB específica y sus índices
<a name="iam-policy-specific-table-indexes"></a>

La política siguiente concede permisos para acciones de modificación de datos en una tabla de DynamoDB llamada `Books` y todos los índices de esa tabla. Para obtener más información sobre cómo funcionan los índices, consulte [Mejora del acceso con índices secundarios en DynamoDB](SecondaryIndexes.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessTableAllIndexesOnBooks",
            "Effect": "Allow",
            "Action": [
              "dynamodb:PutItem",
              "dynamodb:UpdateItem",
              "dynamodb:DeleteItem",
              "dynamodb:BatchWriteItem",
              "dynamodb:GetItem",
              "dynamodb:BatchGetItem",
              "dynamodb:Scan",
              "dynamodb:Query",
              "dynamodb:ConditionCheckItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

# Política de IAM para leer, escribir, actualizar y eliminar el acceso en una tabla de DynamoDB
<a name="iam-policy-example-data-crud"></a>

Utilice esta política si necesita permitir que su aplicación cree, lea, actualice y elimine datos en tablas, índices y transmisiones de Amazon DynamoDB. Sustituya el nombre de la región de AWS, el ID de su cuenta y el nombre de la tabla o el carácter comodín (\$1) en su caso.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBIndexAndStreamAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetShardIterator",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:ListStreams"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/stream/*"
            ]
        },
        {
            "Sid": "DynamoDBTableAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:PutItem",
                "dynamodb:DescribeTable",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        },
        {
            "Sid": "DynamoDBDescribeLimitsAccess",
            "Effect": "Allow",
            "Action": "dynamodb:DescribeLimits",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

Para expandir esta política para que abarque todas las tablas de DynamoDB en todos las regiones de AWS de esta cuenta, utilice un comodín (\$1) para el nombre de la tabla y región. Por ejemplo:

```
"Resource":[
                "arn:aws:dynamodb:*:123456789012:table/*",
                "arn:aws:dynamodb:*:123456789012:table/*/index/*"
                ]
```

# Política de IAM para separar entornos de DynamoDB en la misma cuenta de AWS
<a name="iam-policy-separate-environments"></a>

Supongamos que tiene entornos independientes, de tal forma que cada uno de ellos mantiene su propia versión de una tabla denominada `ProductCatalog`. Si crea estas tablas `ProductCatalog` desde la misma cuenta de AWS, trabajar en un entorno podrían afectar al otro entorno, debido al modo en que se configuran los permisos. Por ejemplo, las cuotas en el número de operaciones simultáneas del plano de control (como `CreateTable`) se establecen en el nivel de cuenta de AWS.

Por este motivo, cada acción que se realiza en un entorno reduce el número de operaciones disponibles en el otro entorno. Además, existe el riesgo de que el código en un entorno obtenga por error acceso a las talas del otro entorno.

**nota**  
Si desea separar las cargas de trabajo de producción y de prueba para ayudar a controlar el potencial “radio de explosión” de un evento, la práctica recomendada es crear cuentas de AWS para las cargas de trabajo de pruebas y producción. Para obtener más información, consulte[Administración y separación de cuentas de AWS](https://docs.aws.amazon.com//wellarchitected/latest/security-pillar/aws-account-management-and-separation.html).

Supongamos, además, que tiene dos desarrolladores, Amit y Alice, que están realizando las pruebas de la tabla `ProductCatalog`. En lugar de que cada desarrollador requiera una cuenta AWS, los desarrolladores pueden compartir la misma cuenta de AWS de prueba. En esta cuenta, puede crear una copia de la misma tabla para cada desarrollador; por ejemplo, `Alice_ProductCatalog` y `Amit_ProductCatalog`. En este caso, puede crear los usuarios Alice y Amit en la cuenta de AWS que creó para el entorno de pruebas. A continuación, puede conceder permisos a estos usuarios para que lleven a cabo acciones de DynamoDB en las tablas de su propiedad. 

Para conceder permisos a estos usuarios IAM, puede realizar uno de los siguientes procedimientos:
+ Cree una política independiente para cada usuario y, a continuación, adjunte cada política a su usuario por separado. Por ejemplo, puede adjuntar la siguiente política al usuario Alice para permitirle acceso a todas las acciones de DynamoDB en la tabla `Alice_ProductCatalog`: 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllAPIActionsOnAliceTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:DeleteItem",
                "dynamodb:DescribeContributorInsights",
                "dynamodb:RestoreTableToPointInTime",
                "dynamodb:ListTagsOfResource",
                "dynamodb:CreateTableReplica",
                "dynamodb:UpdateContributorInsights",
                "dynamodb:CreateBackup",
                "dynamodb:DeleteTable",
                "dynamodb:UpdateTableReplicaAutoScaling",
                "dynamodb:UpdateContinuousBackups",
                "dynamodb:TagResource",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:DescribeContinuousBackups",
                "dynamodb:BatchGetItem",
                "dynamodb:UpdateTimeToLive",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:UntagResource",
                "dynamodb:PutItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteTableReplica",
                "dynamodb:DescribeTimeToLive",
                "dynamodb:RestoreTableFromBackup",
                "dynamodb:UpdateTable",
                "dynamodb:DescribeTableReplicaAutoScaling",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:DescribeLimits",
                "dynamodb:ListStreams"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Alice_ProductCatalog/*"
          }
      ]
  }
  ```

------

  Después, puede crear una política distinta con un recurso diferente (la tabla `Amit_ProductCatalog`) para el usuario Amit. 
+ En vez de adjuntar políticas a cada usuario, puede usar variables de políticas de IAM para escribir una sola política y adjuntársela a un grupo. Debe crear un grupo y, en el caso de este ejemplo, agregar a ese grupo a los dos usuarios, Alice y Amit. A continuación, se muestra un ejemplo en el que se conceden permisos para llevar a cabo todas las acciones de DynamoDB en la tabla `${aws:username}_ProductCatalog`. Al evaluar la política, la variable `${aws:username}` se reemplaza por el nombre de usuario del solicitante. Por ejemplo, si Alice envía una solicitud para que se agregue un elemento, la acción solamente se permite si Alice está agregando elementos a la tabla `Alice_ProductCatalog`. 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ActionsOnUserSpecificTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_ProductCatalog"
          },
          {
              "Sid": "AdditionalPrivileges",
              "Effect": "Allow",
              "Action": [
                  "dynamodb:ListTables",
                  "dynamodb:DescribeTable",
                  "dynamodb:DescribeContributorInsights"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/*"
          }
      ]
  }
  ```

------

**nota**  
Cuando se usan variables de una política de IAM, es preciso especificar explícitamente la versión `2012-10-17` del lenguaje de la política de IAM en la política. La versión predeterminada del lenguaje de la política de IAM (`2008-10-17`) no admite variables de políticas. 

En lugar de identificar una tabla específica como un recurso, puede utilizar un carácter comodín (\$1) para conceder permisos en todas las tablas cuyo nombre lleve antepuesto el nombre del usuario que realiza la solicitud, tal y como se muestra a continuación.

```
"Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_*"
```

# Política de IAM para evitar la compra de capacidad reservada de DynamoDB
<a name="iam-prevent-purchase-reserved-capacity"></a>

Con la capacidad reservada de Amazon DynamoDB, se abona una tarifa inicial única y se adquiere el compromiso de abonar un nivel de uso mínimo, con un ahorro significativo, durante un periodo concreto. Puede utilizar la Consola de administración de AWS para consultar y adquirir capacidad reservada. Sin embargo, puede que no sea conveniente que todos los usuarios de la organización puedan comprar capacidad reservada. Para obtener más información acerca de la capacidad reservada, consulte [Precios de Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB ofrece las siguientes operaciones de API para controlar el acceso a la administración de la capacidad reservada:
+ `dynamodb:DescribeReservedCapacity`: devuelve las adquisiciones de capacidad reservada que se encuentran en vigor.
+ `dynamodb:DescribeReservedCapacityOfferings` – devuelve detalles sobre los planes de capacidad reservada que ofrece en ese momento AWS.
+ `dynamodb:PurchaseReservedCapacityOfferings`: lleva a cabo la adquisición propiamente dicha de la capacidad reservada.

La Consola de administración de AWS utiliza estas operaciones de API para mostrar información sobre la capacidad reservada y realizar adquisiciones. No puede llamar a estas operaciones desde un programa de aplicación, ya que solo son accesibles desde la consola. Sin embargo, sí puede permitir o denegar el acceso a estas operaciones en una política de permisos de IAM.

La siguiente política permite a los usuarios ver las compras de capacidad reservada y las ofertas mediante la Consola de administración de AWS, pero no permite llevar a cabo nuevas compras.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Tenga en cuenta que esta política utiliza el carácter comodín (\$1) para permitir la descripción de permisos para todos los, y para denegar la compra de capacidad reservada de DynamoDB para todos.

# Política de IAM para conceder acceso de lectura solamente a DynamoDB Streams (no para la tabla)
<a name="iam-policy-read-stream-only"></a>

Cuando se habilita DynamoDB Streams en una tabla, la información sobre cada modificación de los elementos de datos de esa tabla es capturada. Para obtener más información, consulte [Captura de datos de cambios para DynamoDB Streams](Streams.md).

En algunos casos, es posible que desee impedir que una aplicación lea datos desde una tabla de DynamoDB, pero al mismo tiempo desee permitir que se pueda obtener acceso a la secuencia de esa tabla. Por ejemplo, puede configurar AWS Lambda para que sondee la trnasmisión e invoque una función Lambda cuando se detecten actualizaciones de elementos y, a continuación, realice un procesamiento adicional.

Existen las siguientes acciones disponibles para controlar el acceso a DynamoDB streams:
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

En el ejemplo siguiente se crea una política que concede a los usuarios permisos para acceder a las secuencias de una tabla denominada `GameScores`. El carácter comodín (\$1) en el ARN permite obtener todos los identificadores de transmisión asociados a esa tabla.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessGameScoresStreamOnly",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Observe que esta política permite acceder a las transmisión de la tabla `GameScores`, pero no a la tabla en sí.

# Política de IAM para permitir una función AWS Lambda para acceder a registros de DynamoDB Stream
<a name="iam-policy-example-lamda-process-dynamodb-streams"></a>

Si desea llevar a acabo determinadas acciones basándose en los nuevos eventos de una transmisión de DynamoDB, puede escribir una función AWS Lambda que sea activada por esos nuevos eventos. Una función Lambda de este tipo requiere permisos para leer los datos de la transmisión de DynamoDB. Para obtener más información sobre cómo usar Lambda con DynamoDB Streams, consulte [DynamoDB Streams y disparadores de AWS Lambda](Streams.Lambda.md).

Para conceder permisos a Lambda, utilice la política de permisos que está asociada con el rol de IAM de la función Lambda (también conocen como un rol de ejecución). Especifique esta política cuando cree la función Lambda.

Por ejemplo, puede asociar la siguiente política de permisos al rol de ejecución con el fin de conceder permisos a Lambda para realizar las acciones de DynamoDB Streams indicadas.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "APIAccessForDynamoDBStreams",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Para obtener más información, consulte [permisos de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html) en la *Guía para desarrolladores de AWS Lambda*.

# Política de IAM para el acceso de lectura y escritura a un clúster de DynamoDB Accelerator (DAX)
<a name="iam-policy-example-read-write-dax-access"></a>

La siguiente política permite acceder a la lectura, escritura, actualización y eliminación a un clúster de DynamoDB Accelerator (DAX), pero no a la tabla de DynamoDB asociada. Para usar esta política, sustituya el nombre de la región de AWS, el ID de su cuenta y el nombre de su clúster de DAX.

**nota**  
Esta política concede acceso a un \$1clúster de DAX, pero no a la tabla de DynamoDB asociada. Asegúrese de que su clúster DAX tiene la política correcta para realizar estas mismas operaciones en la tabla de DynamoDB en su nombre. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AmazonDynamoDBDAXDataOperations",
            "Effect": "Allow",
            "Action": [
                "dax:GetItem",
                "dax:PutItem",
                "dax:ConditionCheckItem",
                "dax:BatchGetItem",
                "dax:BatchWriteItem",
                "dax:DeleteItem",
                "dax:Query",
                "dax:UpdateItem",
                "dax:Scan"
            ],
            "Resource": "arn:aws:dax:eu-west-1:123456789012:cache/MyDAXCluster"
        }
    ]
}
```

------

Para ampliar esta política a fin de abarcar el acceso a DAX para todas las regiones de AWS de una cuenta, use un carácter comodín (\$1) para el nombre de la región.

```
"Resource": "arn:aws:dax:*:123456789012:cache/MyDAXCluster"
```







# Solución de problemas de identidad y acceso de Amazon DynamoDB
<a name="security_iam_troubleshoot"></a>

Utilice la siguiente información para diagnosticar y solucionar los problemas comunes que puedan surgir cuando trabaje con DynamoDB e IAM.

**Topics**
+ [No tengo autorización para realizar una acción en DynamoDB](#security_iam_troubleshoot-no-permissions)
+ [No tengo autorización para realizar la operación iam:PassRole](#security_iam_troubleshoot-passrole)
+ [Quiero permitir a personas externas a mi Cuenta de AWS el acceso a mis recursos de DynamoDB](#security_iam_troubleshoot-cross-account-access)

## No tengo autorización para realizar una acción en DynamoDB
<a name="security_iam_troubleshoot-no-permissions"></a>

Si la Consola de administración de AWS le indica que no está autorizado para llevar a cabo una acción, debe ponerse en contacto con su administrador para recibir ayuda. Su administrador es la persona que le facilitó su nombre de usuario y contraseña.

En el siguiente ejemplo, el error se produce cuando el usuario `mateojackson` intenta utilizar la consola para consultar los detalles acerca de un recurso ficticio `my-example-widget`, pero no tiene los permisos ficticios `aws:GetWidget`.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: aws:GetWidget on resource: my-example-widget
```

En este caso, Mateo pide a su administrador que actualice sus políticas de forma que pueda obtener acceso al recurso `my-example-widget` mediante la acción `aws:GetWidget`.

## No tengo autorización para realizar la operación iam:PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Si recibe un error que indica que no tiene autorización para realizar la acción `iam:PassRole`, las políticas deben actualizarse a fin de permitirle pasar un rol a DynamoDB.

Algunos Servicios de AWS le permiten transferir un rol existente a dicho servicio en lugar de crear un nuevo rol de servicio o uno vinculado al servicio. Para ello, debe tener permisos para transferir el rol al servicio.

En el siguiente ejemplo, el error se produce cuando un usuario de IAM denominado `marymajor` intenta utilizar la consola para realizar una acción en DynamoDB. Sin embargo, la acción requiere que el servicio cuente con permisos que otorguen un rol de servicio. Mary no tiene permisos para transferir el rol al servicio.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

En este caso, las políticas de Mary se deben actualizar para permitirle realizar la acción `iam:PassRole`.

Si necesita ayuda, póngase en contacto con su administrador de AWS. El administrador es la persona que le proporcionó las credenciales de inicio de sesión.

## Quiero permitir a personas externas a mi Cuenta de AWS el acceso a mis recursos de DynamoDB
<a name="security_iam_troubleshoot-cross-account-access"></a>

Se puede crear un rol que los usuarios de otras cuentas o las personas externas a la organización puedan utilizar para acceder a sus recursos. Se puede especificar una persona de confianza para que asuma el rol. En el caso de los servicios que admitan las políticas basadas en recursos o las listas de control de acceso (ACL), puede utilizar dichas políticas para conceder a las personas acceso a sus recursos.

Para obtener más información, consulte lo siguiente:
+ Para obtener información acerca de si DynamoDB admite estas características, consulte [Cómo funciona Amazon DynamoDB con IAM](security_iam_service-with-iam.md).
+ Para obtener información acerca de cómo proporcionar acceso a los recursos de las Cuentas de AWS de su propiedad, consulte [Acceso para un usuario de IAM en otra Cuenta de AWS propia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) en la *Guía del usuario de IAM*.
+ Para obtener información acerca de cómo proporcionar acceso a sus recursos a Cuentas de AWS de terceros, consulte [Proporcionar acceso a Cuentas de AWS que son propiedad de terceros](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) en la *Guía del usuario de IAM*.
+ Para obtener información sobre cómo proporcionar acceso mediante una federación de identidades, consulte [Proporcionar acceso a usuarios autenticados externamente (identidad federada)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) en la *Guía del usuario de IAM*.
+ Para obtener información acerca del uso de roles y políticas basadas en recursos para el acceso entre cuentas, consulte [Acceso a recursos entre cuentas en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) en la *Guía del usuario de IAM*.

# Política de IAM para evitar la compra de capacidad reservada de DynamoDB
<a name="iam-policy-prevent-purchase-reserved-capacity"></a>

Con la capacidad reservada de Amazon DynamoDB, se abona una tarifa inicial única y se adquiere el compromiso de abonar un nivel de uso mínimo, con un ahorro significativo, durante un periodo concreto. Puede utilizar la Consola de administración de AWS para consultar y adquirir capacidad reservada. Sin embargo, puede que no sea conveniente que todos los usuarios de la organización puedan comprar capacidad reservada. Para obtener más información acerca de la capacidad reservada, consulte [Precios de Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB ofrece las siguientes operaciones de API para controlar el acceso a la administración de la capacidad reservada:
+ `dynamodb:DescribeReservedCapacity`: devuelve las adquisiciones de capacidad reservada que se encuentran en vigor.
+ `dynamodb:DescribeReservedCapacityOfferings` – devuelve detalles sobre los planes de capacidad reservada que ofrece en ese momento AWS.
+ `dynamodb:PurchaseReservedCapacityOfferings`: lleva a cabo la adquisición propiamente dicha de la capacidad reservada.

La Consola de administración de AWS utiliza estas operaciones de API para mostrar información sobre la capacidad reservada y realizar adquisiciones. No puede llamar a estas operaciones desde un programa de aplicación, ya que solo son accesibles desde la consola. Sin embargo, sí puede permitir o denegar el acceso a estas operaciones en una política de permisos de IAM.

La siguiente política permite a los usuarios ver las compras de capacidad reservada y las ofertas mediante la Consola de administración de AWS, pero no permite llevar a cabo nuevas compras.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Tenga en cuenta que esta política utiliza el carácter comodín (\$1) para permitir la descripción de permisos para todos los, y para denegar la compra de capacidad reservada de DynamoDB para todos.

# Uso de condiciones de las políticas de IAM para control de acceso preciso
<a name="specifying-conditions"></a>

Al conceder permisos en DynamoDB, puede especificar condiciones que determinan cómo se aplica una política de permisos. 

## Descripción general
<a name="FGAC_DDB.Overview"></a>

En DynamoDB, existe la opción de especificar condiciones al conceder permisos mediante una política de IAM (consulte [Identity and Access Management en Amazon DynamoDB](security-iam.md)). Por ejemplo, puede hacer lo siguiente:
+ Conceder permisos para que los usuarios puedan obtener acceso de solo lectura a determinados elementos y atributos de una tabla o un índice secundario.
+ Conceder permisos para que los usuarios puedan obtener acceso de solo escritura a determinados atributos de una tabla, según la identidad del usuario en cuestión.

En DynamoDB, puede utilizar las claves de condición para especificar las condiciones en una política de IAM, tal y como se muestra en el caso de uso en la siguiente sección.

### Caso de uso de permisos
<a name="FGAC_DDB.OverviewUseCase"></a>

Además de controlar el acceso a acciones de la API de DynamoDB, puede controlar el acceso a elementos y atributos de datos individuales. Por ejemplo, puede hacer lo siguiente:
+ Conceder permisos en una tabla, pero restringir el acceso a elementos específicos de esa tabla según los valores de determinadas claves principales. Un ejemplo de ello sería una aplicación de una red social de juegos en la cual los datos de juegos guardados de todos los usuarios se almacenan en una única tabla, pero ningún usuario puede obtener acceso a los elementos de datos que no son de su propiedad, como se muestra en la siguiente ilustración:  
![\[Caso de uso que otorga acceso a las tablas a un usuario, pero restringe el acceso a elementos de datos específicos.\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/info-hiding-horizontal.png)
+ Ocultar la información de tal forma que únicamente un subconjunto de atributos se encuentre visible para el usuario. Un ejemplo de ello sería una aplicación que muestra datos de vuelos en los aeropuertos cercanos a la ubicación donde se encuentra el usuario. Se muestran los nombres de las compañías aéreas, los horarios de llegada y salida y los números de los vuelos. Sin embargo, se ocultan otros atributos como el nombre de los pilotos o el número de pasajeros, como se muestra en la siguiente ilustración:   
![\[Caso de uso que muestra solo un subconjunto de datos a los usuarios, pero oculta determinados atributos de los datos.\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/info-hiding-vertical.png)

Para implementar este tipo de control de acceso preciso, hay que escribir una política de permisos de IAM que especifique las condiciones para obtener acceso a las credenciales de seguridad y los permisos asociados. A continuación, se aplica la política de a los usuarios, los grupos o los roles creados mediante la consola de IAM. La política de IAM puede restringir el acceso a elementos individuales en una tabla, a los atributos de estos elementos o a ambas cosas al mismo tiempo.

Si lo desea, puede usar las identidades web federadas para controlar el acceso de los usuarios cuya autenticación se lleva a cabo mediante Login with Amazon, Facebook o Google. Para obtener más información, consulte [Uso de la federación de identidades web](WIF.md).

El componente `Condition` de IAM se utiliza para implementar una política de control de acceso precisa. Puede agregar un componente `Condition` a una política de permisos para permitir o denegar el acceso a los elementos y atributos de las tablas e índices de DynamoDB en función de sus requisitos empresariales concretos. 

En el siguiente vídeo se explica el control de acceso detallado en DynamoDB utilizando condiciones de políticas de IAM.

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


## Descripción del control de acceso detallado en DynamoDB
<a name="FGAC_DDB.UnderstandingFineGrainedAccess"></a>

El control de acceso detallado de DynamoDB permite crear límites de permisos precisos en varios niveles:

1. **Control de acceso por elemento:** restrinja a los usuarios el acceso solo a los elementos que contengan valores clave específicos, que normalmente coincidan con su identidad o el alcance de sus permisos.

1. **Control de acceso por atributo:** limite los atributos (columnas) que los usuarios pueden ver o modificar, lo que permitirá proteger la información confidencial y, al mismo tiempo, acceder a la información no confidencial incluida en los mismos elementos.

1. **Controles específicos de la operación:** aplique diferentes reglas de permisos en función del tipo de operación que se esté realizando.

Estos controles se implementan mediante políticas de IAM que utilizan claves de condición específicas de DynamoDB.

## Especificación de condiciones: uso de claves de condición
<a name="FGAC_DDB.ConditionKeys"></a>

AWS proporciona un conjunto de claves de condición predefinidas (las claves de condición generales de AWS), para todos los servicios de AWS que admiten IAM para el control de acceso. Por ejemplo, puede usar la clave de condición `aws:SourceIp` para comprobar la dirección IP del solicitante antes de permitir que se lleve a cabo cualquier acción. Para obtener más información y una lista con las claves generales de AWS, consulte [Claves disponibles para condiciones](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) en la Guía del usuario de IAM.

A continuación, se muestran las claves de condición específicas del servicio de DynamoDB que se aplican a DynamoDB.

**`dynamodb:LeadingKeys`**  
Representa el primer atributo de clave de una tabla; es decir, la clave de partición. El nombre de la clave, `LeadingKeys`, es plural, aunque la clave se utiliza en acciones que afectan a un solo elemento. Además, debe usar el modificador `ForAllValues` cuando utilice `LeadingKeys` en una condición.

**`dynamodb:Select`**  
Representa el parámetro `Select` de una solicitud. `Select` puede ser cualquiera de los valores siguientes:  
+ `ALL_ATTRIBUTES`
+ `ALL_PROJECTED_ATTRIBUTES`
+ `SPECIFIC_ATTRIBUTES`
+ `COUNT`
Aunque suele asociarse a las operaciones de consulta y análisis, esta clave de condición se aplica a todas las operaciones de DynamoDB que devuelven atributos de elementos y es esencial para controlar el acceso a los atributos en todas las acciones de la API. El uso de StringEqualsIfExists o restricciones similares en esta clave de condición aplicará restricciones a las operaciones en las que se aplique esta clave de condición, pero se ignorarán en las operaciones en las que no se aplique.

**`dynamodb:Attributes`**  
Representa una lista de los atributos de *nivel superior* a los que accede una solicitud. Una solicitud accede a un atributo de nivel superior si este, o cualquier atributo anidado que contenga, se especifica en los parámetros de la solicitud. Por ejemplo, si una solicitud `GetItem` especifica una `ProjectionExpression` de `"Name, Address.City"`, la lista de `dynamodb:Attributes` incluiría “Nombre” y “Dirección”. Si el parámetro `Attributes` se enumera en una política de control de acceso preciso, considere también la posibilidad de restringir los parámetros `ReturnValues` y `Select` para garantizar el acceso restringido a atributos específicos en varias acciones de la API, como `GetItem`, `Query` y `Scan`.   
Esta condición se evalúa solo en los atributos especificados en la solicitud (como en ProjectionExpression), no en los atributos de la respuesta. Si no se proporciona ProjectionExpression en la solicitud, se devolverán todos los atributos independientemente de las restricciones de atributos de la política. Consulte la sección “Garantía de cumplimiento de las restricciones basadas en atributos” que aparece a continuación para obtener más información sobre cómo proteger adecuadamente el acceso a los atributos.

**`dynamodb:ReturnValues`**  
Representa el parámetro `ReturnValues` de una solicitud. `ReturnValues` puede tener cualquiera de los valores siguientes en función de la acción de la API:   
+ `ALL_OLD`
+ `UPDATED_OLD`
+ `ALL_NEW`
+ `UPDATED_NEW`
+ `NONE`

**`dynamodb:ReturnConsumedCapacity`**  
Representa el parámetro `ReturnConsumedCapacity` de una solicitud. `ReturnConsumedCapacity` puede ser uno de los valores siguientes:  
+ `TOTAL`
+ `NONE`

**`dynamodb:FirstPartitionKeyValues`**  
Representa el primer atributo de clave de una tabla; es decir, la primera clave de partición. El nombre de la clave, `FirstPartitionKeyValues`, es plural, aunque la clave se utiliza en acciones que afectan a un solo elemento. Además, debe usar el modificador `ForAllValues` cuando utilice `FirstPartitionKeyValues` en una condición. `FirstPartitionKeyValues` y `LeadingKeys` se pueden intercambiar.

**`dynamodb:SecondPartitionKeyValues`**  
Similar a `dynamodb:FirstPartitionKeyValues`. Representa la segunda clave de partición de los recursos. El nombre de la clave, `SecondPartitionKeyValues`, es plural, aunque la clave se utiliza en acciones que afectan a un solo elemento.

**`dynamodb:ThirdPartitionKeyValues`**  
Similar a `dynamodb:FirstPartitionKeyValues`. Representa la tercera clave de partición de los recursos. El nombre de la clave, `ThirdPartitionKeyValues`, es plural, aunque la clave se utiliza en acciones que afectan a un solo elemento.

**`dynamodb:FourthPartitionKeyValues`**  
Similar a `dynamodb:FirstPartitionKeyValues`. Representa la cuarta clave de partición de los recursos. El nombre de la clave, `FourthPartitionKeyValues`, es plural, aunque la clave se utiliza en acciones que afectan a un solo elemento.

### Garantía de cumplimiento de las restricciones basadas en atributos
<a name="FGAC_DDB.EnsuringAttributeRestrictions"></a>

Al utilizar condiciones basadas en atributos para restringir el acceso a atributos específicos, es importante entender cómo se evalúan estas condiciones:
+ **Las condiciones de los atributos se evalúan solo en función de los atributos especificados en la solicitud**, no en los atributos de la respuesta.
+ **Para las operaciones de lectura sin ProjectionExpression** (GetItem, Query, Scan, etc.), se devolverán todos los atributos independientemente de las restricciones de atributos de la política. Para evitar esta posible exposición de información confidencial, implemente ambas condiciones de atributo (`dynamodb:Attributes`) y se debe solicitar una condición que requiera atributos específicos (`dynamodb:Select`).
+ **Para las operaciones de escritura** (PutItem, UpdateItem, DeleteItem), el parámetro ReturnValues puede devolver elementos completos, lo que podría exponer los atributos restringidos incluso cuando la propia operación de escritura cumpla con la política. Para evitar esta exposición, implemente las condiciones de atributo (`dynamodb:Attributes`) y las restricciones en ReturnValues (`dynamodb:ReturnValues`) en la política.

### Limitación del acceso de los usuarios
<a name="FGAC_DDB.LimitingAccess"></a>

Muchas políticas de permisos de IAM permiten a los usuarios obtener acceso únicamente los elementos de una tabla cuyo valor de clave de partición coincide con el identificador de usuario. Por ejemplo, la aplicación de juegos que hemos mencionado antes limita el acceso de este modo, de tal forma que cada usuario solo pueda obtener acceso a los datos de juego que están asociados a su propio identificador de usuario. Las variables de sustitución `${www.amazon.com:user_id}`, `${graph.facebook.com:id}` y `${accounts.google.com:sub}` de IAM contienen identificadores de usuario de Login with Amazon, Facebook y Google. Para saber cómo una aplicación inicia sesión en uno de estos proveedores de identidad y obtiene estos identificadores, consulte [Uso de la federación de identidades web](WIF.md).

**importante**  
No se admite el control de acceso detallado para restringir la replicación de tablas globales. La aplicación de condiciones de política para el control de acceso detallado a [entidades principales de servicio o a roles vinculados al servicio](globaltables-security.md) de DynamoDB utilizados para la replicación de tablas globales puede interrumpir la replicación en una tabla global. 

**nota**  
Cada uno de los ejemplos de la sección siguiente establece en la cláusula `Effect` el valor `Allow` y especifica solamente las acciones, los recursos y los parámetros que se permiten. Únicamente se permite el acceso a aquello que se indica explícitamente en la política de IAM.  
En algunos casos, se pueden modificar estas políticas de tal forma que se basen en la denegación (en cuyo caso, se establecería la cláusula `Effect` en `Deny` y se invertiría toda la lógica de la política). Sin embargo, recomendamos evitar el uso de políticas basadas en la denegación con DynamoDB, ya que son difíciles de escribir correctamente en comparación con las políticas basadas en permiso. Además, cualquier cambio futuro de la API de DynamoDB (o de las entradas a la API existente) podrían dejar sin efectividad una política basada en la denegación.

### Ejemplos de políticas: uso de condiciones para el control de acceso preciso
<a name="FGAC_DDB.Examples"></a>

En esta sección se muestran varias políticas que permiten implementar el control de acceso preciso en las tablas y los índices de DynamoDB.

**nota**  
Todos los ejemplos utilizan la región us-west-2 y contienen identificadores de cuenta ficticios.

#### Ejemplo 1. Control de acceso básico basado en claves de particionamiento con restricciones de atributos
<a name="FGAC_DDB.Examples.BasicPartitionKeyAccess"></a>

Por ejemplo, tomemos una aplicación de juegos para móviles que permite a los usuarios seleccionar un juego entre diversas opciones y jugar a él. La aplicación utiliza una tabla de DynamoDB denominada `GameScores` para llevar la cuenta de las puntuaciones altas y otros datos de los usuarios. Cada elemento de la tabla se identifica de forma exclusiva con un identificador de usuario y el nombre del juego que ha utilizado el usuario. La tabla `GameScores` tiene una clave principal compuesta de una clave de partición (`UserId`) y de una clave de ordenación (`GameTitle`). Cada usuario solo tiene acceso a los datos de juego asociados a su propio identificador de usuario. Para poder jugar, el usuario debe pertenecer a un rol de IAM denominado `GameRole`, que tiene adjunta una política de seguridad.

Para administrar los permisos de los usuarios en esta aplicación, podría escribir una política de permisos como la siguiente:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

Además de conceder permisos para acciones de DynamoDB concretas (componente `Action`) en la tabla `GameScores` (componente `Resource`), el componente `Condition` utiliza las claves de condición siguientes específicas de DynamoDB que limitan los permisos como se indica a continuación:
+ `dynamodb:LeadingKeys`: esta clave de condición permite a los usuarios obtener acceso solo a los elementos cuyo valor de clave de partición coincide con su ID de usuario. Este identificador, `${www.amazon.com:user_id}`, es una variable de sustitución. Para obtener más información sobre las variables de sustitución, consulte [Uso de la federación de identidades web](WIF.md).
+ `dynamodb:Attributes`: esta clave de condición limita el acceso a los atributos concretos, de tal forma que solamente las acciones enumeradas en la política de permisos pueden devolver valores para estos atributos. Además, la cláusula `StringEqualsIfExists` garantiza que la aplicación proporcione siempre una lista de atributos específicos que admiten acciones e impide que aplicación pueda solicitar todos los atributos.

Al evaluar una política de IAM, el resultado siempre es true (verdadero, se permite el acceso) o false (falso, se deniega el acceso). Si cualquier parte del componente `Condition` es false, la política completa se evalúa en false y se deniega el acceso.

**importante**  
Si utiliza `dynamodb:Attributes`, debe especificar los nombres de todos los atributos de clave principal y clave de índice de la tabla y también de todos los índices secundarios enumerados en la política. De lo contrario, DynamoDB no podrá utilizar estos atributos de clave para realizar la acción solicitada.

Los documentos de políticas de IAM solamente pueden contener los siguientes caracteres Unicode: tabulador horizontal (U\$10009), salto de línea (U\$1000A), retorno de carro (U\$1000D) y caracteres comprendidos entre U\$10020 y U\$100FF.

#### Ejemplo 2: concesión de permisos que limitan el acceso a los elementos con un valor de clave de partición específico
<a name="FGAC_DDB.Examples.PartitionKeyValue"></a>

La siguiente política concede permisos que permiten realizar un conjunto de acciones de DynamoDB en la tabla `GamesScore`. En ella, se utiliza la clave de condición `dynamodb:LeadingKeys` para que los usuarios únicamente puedan realizar acciones en los elementos cuyo valor de clave de partición `UserID` coincida con el identificador de usuario exclusivo de Login with Amazon correspondiente a la aplicación.

**importante**  
La lista de acciones no incluye permisos para `Scan`, porque `Scan` devuelve todos los elementos, sean cuales sean sus claves principales.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"FullAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**nota**  
Cuando utiliza variables de políticas, debe especificar de forma explícita la versión 2012-10-17 en la política. La versión predeterminada del lenguaje de la política de acceso, 2008-10-17, no admite variables de políticas.

Para implementar el acceso de solo lectura, puede eliminar todas las acciones que permitan modificar los datos. En la siguiente política, solo se incluyen en la condición las acciones que proporcionan acceso de solo lectura.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"ReadOnlyAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**importante**  
Si utiliza `dynamodb:Attributes`, debe especificar los nombres de todos los atributos de clave principal y clave de índice de la tabla y también de todos los índices secundarios enumerados en la política. De lo contrario, DynamoDB no podrá utilizar estos atributos de clave para realizar la acción solicitada.

#### Ejemplo 3: concesión de permisos que limitan el acceso a determinados atributos de una tabla
<a name="FGAC_DDB.Examples.SpecificAttributes"></a>

La siguiente política de permisos únicamente permite obtener acceso a dos atributos concretos de una tabla; para ello, se agrega la clave de condición `dynamodb:Attributes`. Estos atributos se pueden leer, escribir o evaluar en una escritura condicional o un filtro de examen.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToSpecificAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem",
            "dynamodb:Scan"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "UserId",
                  "TopScore"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

**nota**  
La política adopta un enfoque de lista blanca que permite obtener acceso a los atributos que se nombran explícitamente. Puede escribir una política equivalente que deniegue el acceso a los demás atributos. No recomendados esta estrategia de lista de denegación. Loa usuarios pueden determinar los nombres de estos atributos denegados por medio del principio de mínimo privilegio que se explica en Wikipedia en la dirección http://en.wikipedia.org/wiki/Principle\$1of\$1least\$1privilege y aplicar un enfoque de lista de permisos para enumerar todos los valores permitidos, en lugar de especificar los atributos denegados.

Esta política no permite `PutItem`, `DeleteItem` ni `BatchWriteItem`. Estas acciones siempre sustituyen el elemento anterior en su totalidad y esto permitiría a los usuarios eliminar valores de atributos anteriores a los que no se les permite obtener acceso.

La cláusula `StringEqualsIfExists` de la política de permisos se asegura de que se cumpla lo siguiente:
+ Si el usuario especifica el parámetro `Select`, entonces su valor debe ser `SPECIFIC_ATTRIBUTES`. Este requisito se impide que la acción del API devuelva cualquier atributo que no esté permitido; por ejemplo, desde una proyección de índice.
+ Si el usuario especifica el parámetro `ReturnValues`, entonces su valor debe ser `NONE`, `UPDATED_OLD` o `UPDATED_NEW`. Esto es obligatorio porque la acción `UpdateItem` lleva a cabo, además, operaciones de lectura implícitas para comprobar si un elemento existe antes de sustituirlo y para que los valores de atributos anteriores se puedan devolver en caso de que se soliciten. Al restringir `ReturnValues` de este modo, nos aseguramos de que los usuarios solamente puedan leer o escribir los atributos permitidos.
+ La cláusula `StringEqualsIfExists` se asegura de que solamente se pueda utilizar uno de estos parámetros (`Select` o `ReturnValues`) en cada solicitud, en el contexto de las acciones permitidas.

A continuación se muestran algunas variaciones de esta política:
+ Para permitir exclusivamente acciones de lectura, puede eliminar `UpdateItem` de la lista de acciones permitidas. Dado que ninguna de las acciones restantes aceptan `ReturnValues`, puede eliminar `ReturnValues` de la condición. Además, puede cambiar `StringEqualsIfExists` por `StringEquals`, porque el parámetro `Select` siempre tiene un valor (`ALL_ATTRIBUTES`, a no ser que se especifique otra cosa).
+ Para permitir exclusivamente acciones de escritura, puede eliminar todo excepto `UpdateItem` de la lista de acciones permitidas. Dado que `UpdateItem` no utiliza el parámetro `Select`, puede eliminar `Select` de la condición. Además, debe cambiar `StringEqualsIfExists` por `StringEquals`, porque el parámetro `ReturnValues` siempre tiene un valor (`NONE`, a no ser que se especifique otra cosa).
+ Para permitir todos los atributos cuyo nombre coincida con un patrón, utilice `StringLike` en lugar de `StringEquals` y use un carácter comodín (\$1) que halle coincidencias de patrones con varios caracteres.

#### Ejemplo 4: concesión de permisos para evitar actualizaciones en determinados atributos
<a name="FGAC_DDB.Examples.PreventUpdates"></a>

La siguiente política de permisos limita el acceso del usuario de forma que únicamente pueda actualizar los atributos concretos que se identifican mediante la clave de condición `dynamodb:Attributes`. La condición `StringNotLike` impide que una aplicación actualice los atributos especificados con la clave de condición `dynamodb:Attributes`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"PreventUpdatesOnCertainAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
         "Condition":{
            "ForAllValues:StringNotLike":{
               "dynamodb:Attributes":[
                  "FreeGamesAvailable",
                  "BossLevelUnlocked"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Tenga en cuenta lo siguiente:
+ La acción `UpdateItem`, al igual que otras acciones de escritura, requiere acceso de lectura a los elementos para que pueda devolver valores antes y después de la actualización. En la política, se limita la acción para obtener acceso exclusivamente a los atributos que está permitido actualizar especificando la clave de condición `dynamodb:ReturnValues`. La clave de condición restringe el valor de `ReturnValues` en la solicitud porque solo permite especificar `NONE`, `UPDATED_OLD` o `UPDATED_NEW` y no incluye `ALL_OLD` ni `ALL_NEW`.
+ El operador `StringEqualsIfExists` se asegura de que, si `dynamodb:Select` o `dynamodb:ReturnValues` está presente en la solicitud, debe coincidir con los valores especificados. Esto evita que las operaciones devuelvan elementos completos.
+ Al restringir las actualizaciones de atributos, también debe controlar qué datos se pueden devolver para evitar que se divulgue información sobre los atributos protegidos.
+ Las acciones `PutItem` y `DeleteItem` sustituyen un elemento completo y, por consiguiente, permiten que las aplicaciones modifiquen cualquier atributo. Así pues, para limitar una aplicación de modo que únicamente pueda actualizar determinados atributos, no debe conceder permisos para estos API.

#### Ejemplo 5: concesión de permisos para consultar solo los atributos proyectados de un índice
<a name="FGAC_DDB.Examples.QueryProjectedAttributes"></a>

La siguiente política de permisos permite realizar consultas en un índice secundario (`TopScoreDateTimeIndex`) utilizando la clave de condición `dynamodb:Attributes`. Además, limita las consultas de tal forma que solo se puedan solicitar determinados atributos que se han proyectado en el índice.

Para exigir a la aplicación que especifique una lista de atributos en la consulta, la política especifica también la clave de condición `dynamodb:Select` de modo que requiere que el parámetro `Select` de la acción `Query` de DynamoDB sea `SPECIFIC_ATTRIBUTES`. La lista de atributos se limita a unos elementos concretos que se obtienen utilizando la clave de condición `dynamodb:Attributes`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryOnlyProjectedIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "TopScoreDateTime",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "Attempts"
               ]
            },
            "StringEquals":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

La siguiente política de permisos es similar, pero la consulta debe solicitar todos los atributos que se han proyectado en el índice.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryAllIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "StringEquals":{
               "dynamodb:Select":"ALL_PROJECTED_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

#### Ejemplo 6: concesión de permisos para limitar el acceso a determinados atributos y valores de la clave de partición
<a name="FGAC_DDB.Examples.AttributesAndKeyValues"></a>

La política de permisos siguiente permite realizar acciones de DynamoDB concretas (que se han especificado en el componente `Action`) en una tabla y un índice de tabla (que se han especificado en el componente `Resource`). La política utiliza la clave de condición `dynamodb:LeadingKeys` para restringir los permisos de tal forma que solo incluyan los elementos cuyo valor de clave de partición coincida con el identificador de Facebook del usuario.

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

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToCertainAttributesAndKeyValues",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${graph.facebook.com:id}"
               ],
               "dynamodb:Attributes":[
                  "attribute-A",
                  "attribute-B"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Tenga en cuenta lo siguiente:
+ Las acciones de escritura permitidas por la política (`UpdateItem`) solo pueden modificar el atributo A o el atributo B.
+ Dado que la política permite `UpdateItem`, una aplicación puede insertar nuevos elementos y los atributos ocultos serán null en los nuevos elementos. Si estos atributos se proyectan en `TopScoreDateTimeIndex`, la política incluirá la ventaja agregada de impedir las consultas que generen operaciones de recuperación (fetch) en la tabla.
+ Las aplicaciones no pueden leer ningún atributo que no figure en `dynamodb:Attributes`. Con esta política en vigor, una aplicación debe establecer el parámetro `Select` en `SPECIFIC_ATTRIBUTES` en las solicitudes de lectura y solamente se pueden solicitar los atributos que pertenecen a la lista blanca. En las solicitudes de escritura, la aplicación no puede establecer `ReturnValues` en `ALL_OLD` ni `ALL_NEW` ni puede llevar a cabo operaciones de escritura condicionales basadas en otros atributos que no sean estos.

#### Ejemplo 7: denegación de permisos que limitan el acceso a determinados atributos de una tabla
<a name="FGAC_DDB.Examples.DenySpecificAttributes"></a>

La política siguiente deniega el acceso a los atributos confidenciales y garantiza que no se pueda eludir esta restricción omitiendo una expresión de proyección. Permite el acceso general a la tabla `CustomerData` y, al mismo tiempo, deniega explícitamente el acceso a los atributos `SSN` y `CreditCardNumber`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData"
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "ForAnyValue:StringEquals":{
               "dynamodb:Attributes":[
                  "SSN",
                  "CreditCardNumber"
               ]
            }
         }
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "StringNotEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

## Temas relacionados
<a name="w2aac39c21c15c11"></a>
+  [Identity and Access Management en Amazon DynamoDB](security-iam.md) 
+ [Permisos de la API de DynamoDB: referencia acerca de acciones, recursos y condiciones](api-permissions-reference.md)

# Uso de la federación de identidades web
<a name="WIF"></a>

Cuando escriba una aplicación dirigida a gran cantidad de usuarios, puede utilizar, si lo desea, *identidades web federadas* para llevar a cabo las operaciones de autenticación y autorización. Las identidades web federadas evitan tener que crear usuarios de individuales. En su lugar, los usuarios pueden iniciar sesión en un proveedor de identidades y obtener credenciales de seguridad temporales de AWS Security Token Service (AWS STS). A continuación, la aplicación puede utilizar estas credenciales para obtener acceso a los servicios de AWS.

Las identidades web federadas admiten los siguientes proveedores de identidad:
+ Login with Amazon
+ Facebook
+ Google

## Recursos adicionales para identidades web federadas
<a name="WIF.AdditionalResources"></a>

Los siguientes recursos pueden ayudarle a obtener más información sobre las identidades web federadas:
+ El artículo [Web Identity Federation using the AWS SDK para .NET (Identidad federada web usando NETlong)](https://aws.amazon.com/blogs/developer/web-identity-federation-using-the-aws-sdk-for-net) del blog de desarrolladores de AWS describe paso a paso cómo utilizar las identidades federadas web con Facebook. Incluye fragmentos de código en C\$1 que muestran cómo asumir un rol de IAM con identidad web y cómo usar las credenciales de seguridad temporales para obtener acceso a un recurso de AWS.
+ La [AWS Mobile SDK for iOS](https://aws.amazon.com/sdkforios/) y la [AWS Mobile SDK para Android](https://aws.amazon.com/sdkforandroid/) contienen aplicaciones de ejemplo. Incluyen código que muestra cómo invocar a los proveedores de identidad y, a continuación, cómo utilizar la información de estos proveedores para recibir y utilizar credenciales de seguridad temporales.
+ En el artículo [Web Identity Federation with Mobile Applications](https://aws.amazon.com/articles/4617974389850313) se explican las identidades web federadas y se muestra un ejemplo de cómo utilizarlas para obtener acceso a un recurso de AWS.

## Ejemplo de política para la federación de identidades web
<a name="WIF.Example"></a>

Para mostrarle cómo utilizar las identidades federadas web con DynamoDB, vamos a retomar la tabla *GameScores* presentada en [Uso de condiciones de las políticas de IAM para control de acceso preciso](specifying-conditions.md). Esta es la clave principal para *GameScores*.


****  

| Nombre de la tabla | Tipo de clave principal | Nombre y tipo de clave de partición | Nombre y tipo de clave de ordenación | 
| --- | --- | --- | --- | 
| GameScores (UserId, GameTitle, ...) | Compuesto | Nombre de atributo: UserId Tipo: cadena | Nombre de atributo: GameTitle Tipo: cadena | 

Ahora, supongamos que una aplicación de juegos para móviles utiliza la aplicación, con lo cual esta tiene que aceptar miles o incluso millones de usuarios. A esta escala, resulta muy complicado administrar individualmente a los usuarios de la aplicación y garantizar que cada uno de ellos únicamente pueda obtener acceso a sus propios datos en la tabla *GameScores*. Afortunadamente, muchos usuarios ya tiene cuentas de un proveedor de identidades tercero, como Facebook, Google o Login with Amazon. Por este motivo, es lógico utilizar alguno de ellos para llevar a cabo las tareas de autenticación.

Para hacer esto mediante las identidades web federadas, el desarrollador de la aplicación debe registrar esta última en un proveedor de identidades (como Login with Amazon) y obtener un identificador de aplicación exclusivo. A continuación, el desarrollador debe crear un rol de IAM. (En este ejemplo, este rol se llama *GameRole*). El rol debe tener adjunto un documento de política de IAM en el que se especifiquen las condiciones en virtud de las cuales la aplicación podrá obtener acceso a la tabla *GameScores*.

Cuando un usuario desee jugar, iniciará sesión en esta cuenta de Login with Amazon desde la propia aplicación de juegos. A continuación, la aplicación llama a AWS Security Token Service (AWS STS), lo que proporciona el ID de aplicación de Login with Amazon y solicita formar parte de *GameRole*. AWS STS devolverá credenciales temporales de AWS a la aplicación y permitirá que esta última acceda a la tabla de *GameScores*, de acuerdo con lo establecido en el documento de políticas de *GameRole*.

En el diagrama siguiente se muestra cómo se integran estas piezas entre sí.

![\[El flujo de trabajo de una aplicación de juegos. La aplicación usa el ID de Amazon y AWS STS para obtener credenciales temporales para acceder a una tabla de DynamoDB.\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/wif-overview.png)


**Información general sobre la federación de identidades web**

1. La aplicación llama a un proveedor de identidades tercero para autenticar al usuario y la aplicación. El proveedor de identidades devuelve un token de identidad web a la aplicación.

1. La aplicación llama a AWS STS y pasa el token de identidad web como información de entrada. AWS STS autoriza la aplicación y le proporciona credenciales temporales de acceso a AWS. Se permite que la aplicación asuma un rol de IAM (*GameRole*) y que obtenga acceso a los recursos de AWS de conformidad con la política de seguridad del rol.

1. La aplicación llama a DynamoDB para acceder a la tabla *GameScores*. Dado que la aplicación ha asumido el rol *GameRole*, está sujeta a la política de seguridad asociada a ese rol. El documento de política impide que la aplicación obtenga acceso a datos que no pertenecen al usuario.

Una vez más, esta es la política de seguridad de *GameRole* que se mostró en [Uso de condiciones de las políticas de IAM para control de acceso preciso](specifying-conditions.md):

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

La cláusula `Condition` determina qué elementos de *GameScores* están visibles para la aplicación. Para ello, compara el identificador de Login with Amazon con los valores de las claves de partición `UserId` de `GameScores`. Solamente los elementos que pertenecen al usuario actual se pueden procesar utilizando una de las acciones de DynamoDB que se enumeran en esta política. No se puede obtener acceso a los demás elementos de la tabla. Además, solo se puede obtener acceso a los atributos específicos enumerados en la política.

# Preparación para usar la federación de identidades web
<a name="WIF.PreparingForUse"></a>

Si es un desarrollador de aplicaciones y desea utilizar las identidades web federadas para la aplicación, siga estos pasos:

1. **Inicie sesión como desarrollador con un proveedor de identidades tercero.** Los siguientes enlaces externos proporcionan información sobre cómo inscribirse en los proveedores de identidad admitidos:
   + [Registro con Amazon Developer Center](http://login.amazon.com/)
   + [Registration](https://business.facebook.com/business/loginpage) en el sitio web de Facebook
   + [Using OAuth 2.0 to Access Google APIs](https://developers.google.com/accounts/docs/OAuth2) en el sitio de Google

1. **Registre su aplicación en el proveedor de identidades.** Cuando lo haga, el proveedor le proporcionará un identificador exclusivo de la aplicación. Si desea que la aplicación funcione con varios proveedores de identidades, tendrá que obtener un ID de aplicación de cada proveedor.

1. **Cree uno o varios roles de IAM. **Se requiere un rol para cada proveedor de identidades de cada aplicación. Por ejemplo, puede crear un rol que una aplicación asuma cuando el usuario inicie sesión mediante Login with Amazon, un segundo rol que la misma aplicación use cuando el usuario inicie sesión mediante Facebook y un tercer rol que dicha aplicación utilice cuando el usuario inicie sesión mediante Google.

   Durante el proceso de creación de roles, deberá adjuntar una política de IAM al rol. El documento de política debe definir los recursos de DynamoDB que la aplicación requiere y los permisos para acceder a ellos.

Para obtener más información, consulte [Información sobre la identidad federada web](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) en la *Guía del usuario de IAM*. 

**nota**  
Como alternativa a AWS Security Token Service, puede utilizar Amazon Cognito. Amazon Cognito es el servicio preferido para administrar credenciales temporales de aplicaciones para móviles. Para obtener más información, consulte [Obtención de credenciales](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html) en la *Guía para desarrolladores de Amazon Cognito*. 

## Generación de una política de IAM mediante la consola de DynamoDB
<a name="WIF.PreparingForUse.DDBConsole"></a>

La consola de DynamoDB le puede ayudar a crear una política de IAM para utilizarla con las identidades federadas web. Para ello, se selecciona una tabla de DynamoDB y se especifica el proveedor de identidades, las acciones y los atributos que deben incluirse en la política. A continuación, la consola de DynamoDB genera una política que puede asociar a un rol de IAM.

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 navegación, elija **Tablas**. 

1.  En la lista de tablas, elija aquella para la que desea crear la política de IAM. 

1.  Seleccione el botón **Acciones** y elija **Crear directiva de control de acceso**. 

1.  Elija el proveedor de identidades, las acciones y los atributos de la política. 

    Cuando esté conforme con los ajustes, elija **Generar política**. Aparecerá la política generada. 

1.  Haga clic en **Ver documentación** y siga los pasos necesarios para adjuntar la política generada a un rol de IAM. 

# Cómo escribir la aplicación para usar la federación de identidades web
<a name="WIF.RunningYourApp"></a>

Para utilizar las identidades federadas web, la aplicación debe asumir el rol de IAM que ha creado. A partir de ese momento, la aplicación respetará la política de acceso que se haya asociado al rol.

En tiempo de ejecución, si la aplicación utiliza identidades web federadas, deberá seguir estos pasos:

1. **Autenticarse ante el proveedor de identidades tercero.** La aplicación debe llamar al proveedor de identidades mediante una interfaz proporcionada por este último. La forma exacta en la que se lleva a cabo la autenticación del usuario depende del proveedor y de la plataforma en la que se ejecute la aplicación. Por lo general, si el usuario aún no ha iniciado sesión, el proveedor de identidades (IdP) se encarga de mostrar una página de inicio de sesión propia.

   Una vez que el proveedor de identidades ha autenticado al usuario, devuelve un token de identidad web a la aplicación. El formato de este token depende del proveedor, pero suele ser una cadena muy larga de caracteres.

1. **Obtenga credenciales temporales de seguridad de AWS.** Para ello, la aplicación envía una solicitud `AssumeRoleWithWebIdentity` a AWS Security Token Service (AWS STS). Esta solicitud contiene los siguientes componentes:
   + El token de identidad web del paso anterior
   + El identificador de la aplicación del proveedor de identidades
   + El Nombre de recurso de Amazon (ARN) del rol de IAM que se ha creado para este proveedor de identidades y esta aplicación

   AWS STS devuelve un conjunto de credenciales de seguridad de AWS que vencen transcurrido un periodo determinado (el valor predeterminado son 3600 segundos).

   A continuación se muestra un ejemplo de una solicitud y la respuesta de una acción `AssumeRoleWithWebIdentity` en AWS STS. El token de identidad web se obtuvo del proveedor de identidades Login with Amazon.

   ```
   GET / HTTP/1.1
   Host: sts.amazonaws.com
   Content-Type: application/json; charset=utf-8
   URL: https://sts.amazonaws.com/?ProviderId=www.amazon.com
   &DurationSeconds=900&Action=AssumeRoleWithWebIdentity
   &Version=2011-06-15&RoleSessionName=web-identity-federation
   &RoleArn=arn:aws:iam::123456789012:role/GameRole
   &WebIdentityToken=Atza|IQEBLjAsAhQluyKqyBiYZ8-kclvGTYM81e...(remaining characters omitted)
   ```

   

   ```
   <AssumeRoleWithWebIdentityResponse
     xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
     <AssumeRoleWithWebIdentityResult>
       <SubjectFromWebIdentityToken>amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE</SubjectFromWebIdentityToken>
       <Credentials>
         <SessionToken>AQoDYXdzEMf//////////wEa8AP6nNDwcSLnf+cHupC...(remaining characters omitted)</SessionToken>
         <SecretAccessKey>8Jhi60+EWUUbbUShTEsjTxqQtM8UKvsM6XAjdA==</SecretAccessKey>
         <Expiration>2013-10-01T22:14:35Z</Expiration>
         <AccessKeyId>06198791C436IEXAMPLE</AccessKeyId>
       </Credentials>
       <AssumedRoleUser>
         <Arn>arn:aws:sts::123456789012:assumed-role/GameRole/web-identity-federation</Arn>
         <AssumedRoleId>AROAJU4SA2VW5SZRF2YMG:web-identity-federation</AssumedRoleId>
       </AssumedRoleUser>
     </AssumeRoleWithWebIdentityResult>
     <ResponseMetadata>
       <RequestId>c265ac8e-2ae4-11e3-8775-6969323a932d</RequestId>
     </ResponseMetadata>
   </AssumeRoleWithWebIdentityResponse>
   ```

1. **Acceder a recursos de AWS.** La respuesta de AWS STS contiene información que la aplicación precisa para poder obtener acceso a los recursos de DynamoDB:
   + Los campos `AccessKeyID`, `SecretAccessKey` y `SessionToken` contienen credenciales de seguridad que son válidas para este usuario y esta aplicación exclusivamente. 
   + El campo `Expiration` indica el límite de tiempo tras el cual estas credenciales ya no serán válidas.
   + El campo `AssumedRoleId` contiene el nombre de un rol de IAM que la aplicación ha asumido y es específico de la sesión. La aplicación respeta los controles de acceso del documento de política de IAM mientras dure esta sesión.
   + El campo `SubjectFromWebIdentityToken` contiene el ID exclusivo que aparece en una variable de política de IAM para este proveedor de identidades concreto. A continuación se muestran las variables de política de IAM correspondientes a los proveedores admitidos y algunos ejemplos de valores que pueden adoptar:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/WIF.RunningYourApp.html)

Para obtener ejemplos de políticas de IAM en las que se utilizan estas variables de política, consulte [Ejemplos de políticas: uso de condiciones para el control de acceso preciso](specifying-conditions.md#FGAC_DDB.Examples).

Para obtener más información acerca de cómo se generan las credenciales temporales de acceso en AWS STS, consulte [Solicitud de credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) en la *Guía del ususario de IAM*.

# Permisos de la API de DynamoDB: referencia acerca de acciones, recursos y condiciones
<a name="api-permissions-reference"></a>

Cuando está configurando [Identity and Access Management en Amazon DynamoDB](security-iam.md) y escribiendo una política de permisos que se pueda asociar a una identidad de IAM (políticas basadas en identidad), puede utilizar la lista de [Claves de condición, recursos y acciones de Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html) en la *Guía del usuario IAM*como referencia. En la tabla siguiente, se muestran todas las operaciones de la API de DynamoDB, las acciones correspondientes a las que puede conceder permisos para realizar la acción y el recurso de AWS al que puede conceder los permisos. Las acciones se especifican en el campo `Action` de la política y el valor del recurso se especifica en el campo `Resource` de la política.

Puede utilizar claves de condiciones generales de AWS en sus políticas de DynamoDB para expresar condiciones. Para obtener una lista completa de claves amplias de AWS, consulte la [Referencia de los elementos de política de IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) en la *Guía del usuario de IAM*.

Además de las claves de condición que afectan a AWS en su conjunto, DynamoDB tiene sus propias claves que puede utilizar en las condiciones. Para obtener más información, consulte [Uso de condiciones de las políticas de IAM para control de acceso preciso](specifying-conditions.md).

## Temas relacionados
<a name="w2aac39c21c15c15b9"></a>
+  [Identity and Access Management en Amazon DynamoDB](security-iam.md)
+ [Uso de condiciones de las políticas de IAM para control de acceso preciso](specifying-conditions.md)

# Validación de conformidad por sector para DynamoDB
<a name="Compliance"></a>

Para saber si un Servicio de AWS está incluido en el alcance de programas de cumplimiento específicos, consulte [Servicios de AWS en el ámbito del programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/) y elija el programa de conformidad que le interese. Para obtener información general, consulte [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/).

Puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

Su responsabilidad de conformidad al utilizar Servicios de AWS se determina en función de la confidencialidad de los datos, los objetivos de conformidad de la empresa, así como de la legislación y los reglamentos aplicables. Para obtener más información sobre la responsabilidad de cumplimiento al usar Servicios de AWS, consulte la [Documentación de seguridad de AWS](https://docs.aws.amazon.com/security/).

# Resiliencia y recuperación de desastres en Amazon DynamoDB
<a name="disaster-recovery-resiliency"></a>

La infraestructura global de AWS se compone de regiones y zonas de disponibilidad de AWS. AWS Las regiones proporcionan varias zonas de disponibilidad físicamente independientes y aisladas que se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, además de baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos que realizan una conmutación por error automática entre zonas de disponibilidad sin interrupciones. Las zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras tradicionales de centros de datos únicos o múltiples. 

Si necesita replicar sus datos o aplicaciones sobre grandes distancias geográficas, utilice las regiones locales de AWS. Una región local de AWS es un único centro de datos diseñado para complementar una región de AWS existente. Al igual que en el caso de todas las regiones de AWS, las regiones locales de AWS se encuentran completamente aisladas de las demás regiones de AWS.

Para obtener más información sobre las zonas de disponibilidad y las regiones de AWS, consulte [Infraestructura global de AWS](https://aws.amazon.com/about-aws/global-infrastructure/).

Amazon DynamoDB replica automáticamente los datos en tres zonas de disponibilidad en una región, lo que proporciona una alta durabilidad integrada y un SLA de disponibilidad del 99,99 %. Además, DynamoDB ofrece varias características que lo ayudan con sus necesidades de resiliencia y copia de seguridad de los datos.

**Solicitud de copia de seguridad y restauración**  
DynamoDB proporciona una funcionalidad de backup en diferido. Le permite crear backup completos de las tablas para una retención y archivado a largo plazo. Para obtener más información, consulte [Solicitud de copia de seguridad y restauración para DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Backup-and-Restore.html).

**Recuperación a un momento dado**  
La recuperación a un momento dado ayuda a proteger las tablas de DynamoDB de operaciones accidentales de escritura o eliminación. Al habilitar la recuperación a un momento dado, ya no hay que preocuparse por crear, mantener o planificar backups bajo demanda. Para obtener más información, consulte [Recuperación a un momento dado en DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Point-in-time-recovery.html).

**Tablas globales que se sincronizan entre regiones de AWS**  
DynamoDB distribuye automáticamente los datos y el tráfico de las tablas entre un número suficiente de servidores para satisfacer sus requisitos de almacenamiento y rendimiento, al mismo tiempo que mantiene un desempeño uniforme y rápido. Todos los datos se almacenan en discos de estado sólido (SSD) y se replican automáticamente en varias zonas de disponibilidad de una región de AWS, con objeto de ofrecer prestaciones integradas de alta disponibilidad y durabilidad de los datos. Puede utilizar tablas globales para mantener sincronizadas las tablas de DynamoDB en las regiones de AWS.

# Seguridad de la infraestructura en Amazon DynamoDB
<a name="network-isolation"></a>

Como se trata de un servicio administrado, Amazon DynamoDB está protegido por los procedimientos de seguridad de red globales de AWS que se describen en la sección [Protección de la infraestructura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) de AWS Well-Architected Framework.

Puede utilizar llamadas a la API publicadas de AWS para acceder a DynamoDB a través de la red. Los clientes pueden utilizar la versión 1.2 o 1.3. de TLS (seguridad de la capa de transporte). Los clientes también deben admitir conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos. Además, las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de acceso secreta que esté asociada a una entidad principal de IAM. También puede utilizar [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) para generar credenciales de seguridad temporales para firmar solicitudes.

 También puede utilizar un punto de enlace de la nube virtual privada (VPC) para DynamoDB para permitir que las instancias de Amazon EC2 de la VPC utilicen sus direcciones IP privadas para tener acceso a DynamoDB sin exponerse en la Internet pública. Para obtener más información, consulte [Uso de puntos de conexión de Amazon VPC para tener acceso a DynamoDB](#vpc-endpoints-dynamodb). 

## Uso de puntos de conexión de Amazon VPC para tener acceso a DynamoDB
<a name="vpc-endpoints-dynamodb"></a>

Por razones de seguridad, muchos clientes de AWS ejecutan sus aplicaciones dentro de un entorno de Amazon Virtual Private Cloud (Amazon VPC). Con Amazon VPC, puede lanzar instancias de Amazon EC2 en una nube virtual privada que está aislada de forma lógica de otras redes, incluida la red pública de Internet. Con una Amazon VPC, puede controlar el rango de direcciones IP, las subredes, las tablas de enrutamiento, las gateways de red y los ajustes de seguridad.

**nota**  
Si creó la Cuenta de AWS después del 4 de diciembre de 2013, ya dispone de una VPC predeterminada en cada Región de AWS. Las VPC predeterminadas están listas para usarse; puede comenzar de inmediato a usarlas sin tener que realizar ningún paso de configuración adicional.  
Para obtener más información acerca de las VPC predeterminadas, consulte [VPC predeterminada y subredes predeterminadas](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html) en la *Guía del usuario de Amazon VPC*.

Para obtener acceso a la red pública de Internet, la VPC debe tener un gateway de Internet, es decir, un router virtual que conecta su VPC a Internet. Esto permite a las aplicaciones que se ejecutan en Amazon EC2 en su Amazon VPC acceder a los recursos de Internet, como Amazon DynamoDB.

De forma predeterminada, las comunicaciones de entrada y salida de DynamoDB usan el protocolo HTTPS, que protege el tráfico de la red mediante el uso del cifrado SSL/TLS. En el siguiente diagrama se muestra una instancia de Amazon EC2 en una VPC que accede a DynamoDB, por lo que DynamoDB utiliza una puerta de enlace de Internet en lugar de los puntos de conexión de VPC.

![\[Diagrama de flujo de trabajo que muestra una instancia de Amazon EC2 que accede a DynamoDB a través de un enrutador, una puerta de enlace de Internet e Internet.\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/ddb-no-vpc-endpoint.png)


A muchos clientes les preocupa con razón la privacidad y la seguridad en el envío y recepción de datos a través de la red pública de Internet. Estas preocupaciones se pueden atajar con el uso de una red privada virtual (VPN) para dirigir todo el tráfico de la red de DynamoDB a través de su propia infraestructura de red corporativa. Sin embargo, este enfoque puede conllevar problemas de ancho de banda y disponibilidad.

Estos problemas se pueden solventar con puntos de enlace de la VPC para DynamoDB. Un *punto de enlace de la VPC* para DynamoDB permite que las instancias de Amazon EC2 de la VPC utilicen sus direcciones IP privadas para acceder a DynamoDB sin exponerse en la Internet pública. Sus instancias EC2 no tienen que ser direcciones IP públicas, ni necesita un gateway de Internet, un dispositivo NAT o una gateway privada virtual en su VPC. Para controlar el acceso a DynamoDB se utilizan políticas de punto de enlace. El tráfico entre su VPC y el servicio AWS no sale de la red de Amazon.

**nota**  
 Al utilizar direcciones IP públicas, todas las comunicaciones de VPC entre instancias y servicios alojados en AWS se mantienen privadas dentro de la red de AWS. Los paquetes que se originan en la red de AWS con un destino en la red de AWS permanecen en la red global de AWS, excepto el tráfico con destino u origen en las regiones de China de AWS. 

Cuando crea un punto de enlace de la VPC para DynamoDB todas las solicitudes a un punto de enlace de DynamoDB dentro de la región (por ejemplo, *dynamodb.us-west-2.amazonaws.com*) se enrutan a un punto de enlace de DynamoDB privado dentro de la red de Amazon. No es necesario modificar las aplicaciones que se ejecutan en instancias EC2 en la VPC. El nombre del punto de enlace sigue siendo el mismo, pero la ruta a DynamoDB permanece por completo dentro de la red de Amazon y no accede a la red pública de Internet. 

En el siguiente diagrama se muestra cómo una instancia EC2 de un punto de enlace de la VPC, puede utilizar un punto de conexión de la VPC para acceder a DynamoDB.

![\[Diagrama de flujo de trabajo que muestra una instancia EC2 que accede a DynamoDB a través de un enrutador y un punto de enlace de la VPC solamente.\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/ddb-yes-vpc-endpoint.png)


Para obtener más información, consulte [Tutorial: Uso de un punto de conexión de VPC para DynamoDB](#vpc-endpoints-dynamodb-tutorial).

### Compartir puntos de conexión de VPC de Amazon y DynamoDB
<a name="vpc-endpoints-dynamodb-sharing"></a>

Para habilitar el acceso al servicio de DynamoDB a través del punto de conexión de una puerta de enlace de una subred de VPC, debe tener permisos de cuenta de propietario para esa subred de VPC.

 Una vez que el punto de conexión de una puerta de enlace de una subred de VPC tenga acceso a DynamoDB, cualquier cuenta de AWS con acceso a esa subred puede usar DynamoDB. Esto significa que todos los usuarios de cuentas de la subred de VPC pueden usar cualquier tabla de DynamoDB a la que tengan acceso. Esto incluye las tablas de DynamoDB asociadas a una cuenta diferente a la de la subred de VPC. No obstante, el propietario de la subred de VPC puede restringir a cualquier usuario concreto de la subred el uso del servicio de DynamoDB a través del punto de conexión de la puerta de enlace, según su criterio. 

### Tutorial: Uso de un punto de conexión de VPC para DynamoDB
<a name="vpc-endpoints-dynamodb-tutorial"></a>

En esta sección se explica cómo configurar y usar un punto de enlace de la VPC para DynamoDB.

**Topics**
+ [Paso 1: lanzar una instancia de Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance)
+ [Paso 2: configurar la instancia de Amazon EC2](#vpc-endpoints-dynamodb-tutorial.configure-ec2-instance)
+ [Paso 3: crear un punto de conexión de VPC para DynamoDB](#vpc-endpoints-dynamodb-tutorial.create-endpoint)
+ [Paso 4: (Opcional) Eliminar](#vpc-endpoints-dynamodb-tutorial.clean-up)

#### Paso 1: lanzar una instancia de Amazon EC2
<a name="vpc-endpoints-dynamodb-tutorial.launch-ec2-instance"></a>

En este paso, lanza una instancia de Amazon EC2 en su Amazon VPC predeterminada. A partir de ese momento, podrá crear y utilizar un punto de enlace de la VPC para DynamoDB.

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Elija **Lanzar instancia** y proceda del modo siguiente:

   Paso 1: Elegir una imagen de máquina de Amazon Machine Image (AMI)
   + En la parte superior de la lista de AMI, vaya a **Amazon Linux AMI (AMI de Amazon Linux)** y elija **Select (Seleccionar)**.

   Paso 2: Elegir un tipo de instancia
   + En la parte superior de la lista de tipos de instancias, elija **t2.micro**.
   + Elija **Next: Configure Instance Details**.

   Paso 3: Configurar los detalles de la instancia
   + Vaya a **Network (Red)** y elija la VPC predeterminada.

     Elija **Siguiente: Añadir almacenamiento**.

   Paso 4: Agregar almacenamiento
   + Elija **Next: Tag Instance** para omitir este paso.

   Paso 5: Etiquetar la instancia
   + Elija **Next: Configure Security Group** para omitir este paso.

   Paso 6: Configurar un grupo de seguridad
   + Elija **Seleccionar un grupo de seguridad existente**.
   + En la lista de grupos de seguridad, elija **default**. Se trata del grupo de seguridad predeterminado para la VPC.
   + Elija **Next: Review and Launch**.

   Paso 7: Revisar el lanzamiento de la instancia
   + Elija **Iniciar**.

1. En la ventana **Select an existing key pair or create a new key pair**, proceda del modo siguiente:
   + Si no dispone de un par de claves de Amazon EC2, elija **Create a new key pair (Crear un nuevo par de claves)** y siga las instrucciones. Se le pedirá que descargue un archivo de clave privada (archivo *.pem*); lo necesitará más adelante cuando inicie sesión en la instancia de Amazon EC2.
   + Si ya dispone de un par de claves de Amazon EC2, vaya a **Select a key pair** y elíjalo en la lista. Debe tener el archivo de clave privada (archivo *.pem*) a su disposición para poder iniciar sesión en la instancia de Amazon EC2.

1. Cuando haya configurado el par de claves, elija **Launch Instances**.

1. Vuelva a la página de inicio de la consola de Amazon EC2 y elija la instancia que ha lanzado. En el panel inferior, en la pestaña **Description**, busque el **Public DNS** de su instancia. Por ejemplo: `ec2-00-00-00-00.us-east-1.compute.amazonaws.com`.

   Anote el nombre de DNS público, pues lo necesitará en el paso siguiente de este tutorial ([Paso 2: configurar la instancia de Amazon EC2](#vpc-endpoints-dynamodb-tutorial.configure-ec2-instance)).

**nota**  
La instancia de Amazon EC2 tardará unos minutos en estar disponible. Antes de continuar con el siguiente paso, asegúrese de que **Estado de la instancia** tenga el valor `running` y de que se hayan superado todas las **Comprobaciones de estado**.

#### Paso 2: configurar la instancia de Amazon EC2
<a name="vpc-endpoints-dynamodb-tutorial.configure-ec2-instance"></a>

Una vez que la instancia de Amazon EC2 esté disponible, podrá iniciar sesión en ella y prepararla para utilizarla por primera vez.

**nota**  
En los pasos siguientes se presupone que se va a conectar a la instancia de Amazon EC2 desde un ordenador que ejecuta Linux. Para obtener información sobre otras maneras de conectarse, consulte [Conexión con la instancia de Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) en la Guía del usuario de Amazon EC2.

1. Tendrá que autorizar el tráfico SSH entrante en su instancia de Amazon EC2. Para ello, creará un nuevo grupo de seguridad de EC2 y, a continuación, asignará el grupo de seguridad a la instancia EC2.

   1. En el panel de navegación, elija **Grupos de seguridad**.

   1. Elija **Crear grupo de seguridad**. En la ventana **Crear grupo de seguridad**, haga lo siguiente:
      + **Security group name**: escriba un nombre único para su grupo de seguridad. Por ejemplo: `my-ssh-access`
      + **Description**: escriba una breve descripción del grupo de seguridad.
      + **VPC**: seleccione la VPC predeterminada.
      + En la sección **Security group rules**, elija **Add Rule** y proceda del modo siguiente:
        + **Type**: elija SSH.
        + **Source**: elija My IP.

      Cuando esté conforme con los ajustes, elija **Crear**.

   1. En el panel de navegación, seleccione **Instances (Instancias)**.

   1. Elija la instancia de Amazon EC2 que ha lanzado en [Paso 1: lanzar una instancia de Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance).

   1. Seleccione **Actions** --> **Networking** --> **Change Security Groups**.

   1. En **Cambiar Security Groups**, seleccione el grupo de seguridad que ha creado anteriormente en este procedimiento (por ejemplo: `my-ssh-access`). El grupo de seguridad `default` existente también debe estar seleccionado. Cuando la configuración sea la que desea, elija **Assign Security Groups**.

1. Utilice el comando `ssh` para iniciar sesión en su instancia de Amazon EC2, como se muestra en el siguiente ejemplo.

   ```
   ssh -i my-keypair.pem ec2-user@public-dns-name
   ```

   Deberá especificar el archivo de clave privada (archivo *.pem*) y el nombre de DNS público de la instancia. (Consulte [Paso 1: lanzar una instancia de Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance)). 

   El identificador de inicio de sesión es `ec2-user`. No se requiere contraseña.

1. Configure las credenciales de AWS como se muestra en el siguiente ejemplo. Introduzca su ID de clave de acceso de AWS, una clave secreta, y el nombre de la región predeterminada cuando se le solicite.

   ```
   aws configure
   ```

   ```
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-1
   Default output format [None]:
   ```

Ahora está listo para crear un punto de enlace de la VPC para DynamoDB.

#### Paso 3: crear un punto de conexión de VPC para DynamoDB
<a name="vpc-endpoints-dynamodb-tutorial.create-endpoint"></a>

En este paso, creará un punto de enlace de la VPC para DynamoDB y lo probará para asegurarse de que funciona.

1. Antes de empezar, compruebe que puede comunicarse con DynamoDB mediante su punto de enlace público.

   ```
   aws dynamodb list-tables
   ```

   La salida mostrará una lista de las tablas de DynamoDB que tiene actualmente. (Si no tiene tablas, la lista estará vacía).

1. Compruebe que DynamoDB es un servicio disponible para la creación de puntos de enlace de la VPC en la región de AWS. (El comando se muestra en negrita, seguido del resultado de ejemplo).

   ```
   aws ec2 describe-vpc-endpoint-services
   ```

   ```
   {
       "ServiceNames": [
           "com.amazonaws.us-east-1.s3",
           "com.amazonaws.us-east-1.dynamodb"
       ]
   }
   ```

   En el resultado de ejemplo, DynamoDB es uno de los servicios disponibles, por lo que puede a empezar crear un punto de enlace de la VPC para este servicio.

1. Determine el identificador de su VPC.

   ```
   aws ec2 describe-vpcs
   ```

   ```
   {
       "Vpcs": [
           {
               "VpcId": "vpc-0bbc736e", 
               "InstanceTenancy": "default", 
               "State": "available", 
               "DhcpOptionsId": "dopt-8454b7e1", 
               "CidrBlock": "172.31.0.0/16", 
               "IsDefault": true
           }
       ]
   }
   ```

   En el resultado de ejemplo, el ID de la VPC es `vpc-0bbc736e`.

1. Crear el punto de enlace de la VPC. Para el parámetro `--vpc-id`, especifique el ID de la VPC del paso anterior. Utilice el parámetro `--route-table-ids` para asociar el punto de enlace con las tablas de enrutamiento.

   ```
   aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb --route-table-ids rtb-11aa22bb
   ```

   ```
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-0bbc736e", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.dynamodb", 
           "RouteTableIds": [
               "rtb-11aa22bb"
           ],
           "VpcEndpointId": "vpce-9b15e2f2", 
           "CreationTimestamp": "2017-07-26T22:00:14Z"
       }
   }
   ```

1. Compruebe que puede acceder a DynamoDB a través del punto de enlace de la VPC:

   ```
   aws dynamodb list-tables
   ```

   Si lo desea, puede probar otros comandos de la AWS CLI para DynamoDB. Para obtener más información, consulte [Referencia de comandos de la AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/).

#### Paso 4: (Opcional) Eliminar
<a name="vpc-endpoints-dynamodb-tutorial.clean-up"></a>

Si desea eliminar los recursos que ha creado en este tutorial, siga estos procedimientos:

**Para eliminar el punto de enlace de la VPC para DynamoDB**

1. Inicie sesión en la instancia de Amazon EC2.

1. Determine el ID de punto de enlace de la VPC.

   ```
   aws ec2 describe-vpc-endpoints
   ```

   ```
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-0bbc736e", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.dynamodb", 
           "RouteTableIds": [], 
           "VpcEndpointId": "vpce-9b15e2f2", 
           "CreationTimestamp": "2017-07-26T22:00:14Z"
       }
   }
   ```

   En el resultado de ejemplo, el ID de punto de conexión de VPC es `vpce-9b15e2f2`.

1. Elimine el punto de conexión de VPC.

   ```
   aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2
   ```

   ```
   {
       "Unsuccessful": []
   }
   ```

   La matriz vacía `[]` indica que la operación se ha realizado correctamente (no hay solicitudes con error).

**Para terminar la instancia de Amazon EC2**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia de Amazon EC2.

1. Elija **Actions (Acciones)**, **Instance State (Estado de la instancia)**, **Terminate (Terminar)**.

1. En la ventana de confirmación, elija **Sí, terminar**.

# AWS PrivateLink para DynamoDB
<a name="privatelink-interface-endpoints"></a>

Con AWS PrivateLink para DynamoDB, puede aprovisionar *puntos de conexión de Amazon VPC de la interfaz* (puntos de conexión de la interfaz) en su nube privada virtual (Amazon VPC). A estos puntos de conexión se puede acceder directamente desde las aplicaciones que se encuentran en las instalaciones a través de la VPN y Direct Connect, o bien, en una Región de AWS diferente mediante el [emparejamiento de Amazon VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). Al usar AWS PrivateLink y puntos de conexión de la interfaz, puede simplificar la conectividad de la red privada desde sus aplicaciones a DynamoDB.

Las aplicaciones de la VPC no necesitan direcciones IP públicas para comunicarse con DynamoDB mediante puntos de conexión de interfaz de VPC para operaciones de DynamoDB. Los puntos de conexión de la interfaz se representan mediante una o más interfaces de red elásticas (ENI) a las que se asignan direcciones IP privadas desde subredes de la Amazon VPC. Las solicitudes a DynamoDB a través de puntos de conexión de la interfaz permanecen en la red de Amazon. Asimismo, puede acceder a los puntos de conexión de la interfaz en su Amazon VPC desde aplicaciones en las instalaciones a través de AWS Direct Connect o AWS Virtual Private Network (Site-to-Site VPN). Para obtener más información sobre cómo conectar la Amazon VPC a la red en las instalaciones, consulte la [Direct Connect User Guide](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) y la [AWS Site-to-Site VPN User Guide](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html).

Para obtener información general sobre los puntos de conexión de interfaz, consulte [Puntos de conexión de VPC de interfaz de Amazon (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html) en la *Guía de AWS PrivateLink*. También se admite AWS PrivateLink para puntos de conexión de Amazon DynamoDB Streams. Para obtener más información, consulte [AWS PrivateLink para DynamoDB Streams](privatelink-streams.md).

**Topics**
+ [Tipos de puntos de conexión de Amazon VPC para Amazon DynamoDB](#types-of-vpc-endpoints-for-ddb)
+ [Consideraciones sobre el uso de AWS PrivateLink para Amazon DynamoDB](#privatelink-considerations)
+ [Creación de un punto de conexión de VPC de Amazon](#ddb-creating-vpc)
+ [Acceso a los puntos de conexión de la interfaz de Amazon DynamoDB](#accessing-ddb-interface-endpoints)
+ [Acceso a tablas de DynamoDB y operaciones de la API de control desde los puntos de conexión de la interfaz de DynamoDB](#accessing-tables-apis-from-interface-endpoints)
+ [Actualización de una configuración DNS en las instalaciones](#updating-on-premises-dns-config)
+ [Creación de una política de punto de conexión de Amazon VPC para DynamoDB](#creating-vpc-endpoint-policy)
+ [Uso de puntos de conexión de DynamoDB con acceso privado de Consola de administración de AWS](#ddb-endpoints-private-access)
+ [AWS PrivateLink para DynamoDB Streams](privatelink-streams.md)
+ [Uso de AWS PrivateLink para DynamoDB Accelerator (DAX)](dax-private-link.md)

## Tipos de puntos de conexión de Amazon VPC para Amazon DynamoDB
<a name="types-of-vpc-endpoints-for-ddb"></a>

Puede utilizar dos tipos de puntos de conexión de Amazon VPC para acceder a Amazon DynamoDB: *puntos de conexión de la puerta de enlace* y *puntos de conexión de la interfaz* (mediante AWS PrivateLink). Un *punto de conexión de la puerta de enlace* es una puerta de enlace que se especifica en la tabla de enrutamiento para acceder a DynamoDB desde la Amazon VPC a través de la red de AWS. Los *puntos de conexión de la interfaz* amplían la funcionalidad de los puntos de conexión de la puerta de enlace al usar direcciones IP privadas para enviar solicitudes a DynamoDB desde la Amazon VPC, las instalaciones u otra Amazon VPC en otra Región de AWS mediante el emparejamiento de VPC o AWS Transit Gateway. Para obtener más información, consulte [What is Amazon VPC peering?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) y [Transit Gateway frente a emparejamiento de VPC](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway-vs-vpc-peering.html).

Los puntos de enlace de la interfaz son compatibles con los puntos de enlace de gateway. Si tiene un punto de conexión de la puerta de enlace existente en la Amazon VPC, puede utilizar ambos tipos de puntos de conexión en la misma Amazon VPC.


|  Puntos de conexión de la puerta de enlace para DynamoDB  |  Puntos de conexión de la interfaz para DynamoDB  | 
| --- | --- | 
|  En ambos casos, el tráfico de red permanece en la red de AWS.  | 
|  Utilizar direcciones IP públicas de Amazon DynamoDB  |  Utilizar direcciones IP privadas de su Amazon VPC para acceder a Amazon DynamoDB  | 
|  No permitir el acceso desde las instalaciones  |  Permitir el acceso desde las instalaciones  | 
|  No permitir el acceso desde otra Región de AWS  |  Permitir el acceso desde un punto de conexión de Amazon VPC en otra Región de AWS mediante el uso de emparejamiento de VPC o AWS Transit Gateway  | 
|  No facturado  |  Facturado  | 

Para obtener más información acerca de los puntos de conexión de la puerta de enlace, consulte [Puntos de conexión de Amazon VPC de la puerta de enlace](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-gateway.html) en la *Guía del usuario de AWS PrivateLink*.

## Consideraciones sobre el uso de AWS PrivateLink para Amazon DynamoDB
<a name="privatelink-considerations"></a>

Las consideraciones sobre Amazon VPC se aplican a AWS PrivateLink para Amazon DynamoDB. Para obtener más información, consulte [Consideraciones de los puntos de conexión de la interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations) y [Cuotas de AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) en la *Guía de AWS PrivateLink*. Además, se aplican las siguientes restricciones.

AWS PrivateLink para Amazon DynamoDB no admite lo siguiente:
+ Seguridad de la capa de transporte (TLS) 1.1
+ Servicios de sistema de nombres de dominio (DNS) privado e híbrido

**importante**  
No cree zonas alojadas privadas para anular los nombres DNS de los puntos de conexión de DynamoDB (como `dynamodb.region.amazonaws.com` o `*.region.amazonaws.com`) con el fin de realizar el enrutamiento del tráfico hacia los puntos de conexión de su interfaz. Las configuraciones de DNS de DynamoDB pueden cambiar con el tiempo.   
 Las configuraciones personalizadas de DNS no son compatibles con estos cambios y pueden provocar un enrutamiento inesperado de las solicitudes a través de direcciones IP públicas en lugar de a los puntos de conexión de su interfaz.   
 Para acceder a DynamoDB a través de AWS PrivateLink, configure sus clientes para que utilicen directamente la URL del punto de conexión de Amazon VPC (por ejemplo, `https://vpce-1a2b3c4d-5e6f.dynamodb.region.vpce.amazonaws.com`).

Puede enviar hasta 50 000 solicitudes por segundo para cada punto de conexión de AWS PrivateLink que active.

**nota**  
Los tiempos de espera de conectividad de red con los puntos de conexión de AWS PrivateLink no están incluidos en el ámbito de las respuestas de error de DynamoDB y las aplicaciones que se conecten a los puntos de conexión de PrivateLink deberán gestionarlos adecuadamente.

## Creación de un punto de conexión de VPC de Amazon
<a name="ddb-creating-vpc"></a>

Para crear un punto de conexión de la interfaz de Amazon VPC, consulte [Create an Amazon VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) en la *Guía de AWS PrivateLink*.

## Acceso a los puntos de conexión de la interfaz de Amazon DynamoDB
<a name="accessing-ddb-interface-endpoints"></a>

Cuando se crea un punto de conexión de la interfaz, DynamoDB genera dos tipos de nombres DNS de DynamoDB específicos del punto de conexión: *regional* y *zonal*. 
+ Un nombre DNS *regional* incluye un ID único de punto de conexión de Amazon VPC, un identificador de servicio, la Región de AWS y `vpce.amazonaws.com` en el nombre. Por ejemplo, para el ID de punto de conexión de Amazon VPC `vpce-1a2b3c4d`, el nombre DNS generado podría ser similar a `vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com`.
+ Un nombre de DNS *zonal* incluye la zona de disponibilidad, por ejemplo, `vpce-1a2b3c4d-5e6f-us-east-1a.dynamodb.us-east-1.vpce.amazonaws.com`. Puede utilizar esta opción si la arquitectura aísla Zonas de disponibilidad. Por ejemplo, podría usarlo para la contención de fallos o para reducir los costos de transferencia de datos regionales.

**nota**  
Para lograr una fiabilidad óptima, recomendamos implementar el servicio en un mínimo de tres zonas de disponibilidad.

## Acceso a tablas de DynamoDB y operaciones de la API de control desde los puntos de conexión de la interfaz de DynamoDB
<a name="accessing-tables-apis-from-interface-endpoints"></a>

Puede usar la AWS CLI o los SDK de AWS para acceder a las tablas de DynamoDB y controlar las operaciones de la API a través de los puntos de conexión de la interfaz de DynamoDB.

### AWS CLIEjemplos de
<a name="privatelink-ddb-aws-cli-examples"></a>

Para acceder a las tablas de DynamoDB o a las operaciones de la API de control de DynamoDB a través de los puntos de conexión de la interfaz de DynamoDB en los comandos AWS CLI, use los parámetros `--region` y `--endpoint-url`.

**Ejemplo: crear un punto de conexión de VPC**

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name com.amazonaws.us-east-1.dynamodb \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id
```

**Ejemplo: Modificar un punto de conexión de VPC**

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-endpoint-id \
--policy-document policy-document \ #example optional parameter
--add-security-group-ids security-group-ids \ #example optional parameter 
# any additional parameters needed, see Privatelink documentation for more details
```

**Ejemplo: Enumerar las tablas mediante una URL de punto de conexión**

En el siguiente ejemplo, reemplace la región `us-east-1` y el nombre DNS del ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` con su información.

```
aws dynamodb --region us-east-1 --endpoint https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com list-tables
```

### Ejemplos del SDK de AWS
<a name="privatelink-ddb-aws-sdk-examples"></a>

Para acceder a las tablas de DynamoDB o a las operaciones de la API de control de DynamoDB a través de los puntos de conexión de la interfaz de DynamoDB al utilizar los SDK de AWS, actualice sus SDK a la versión actual. A continuación, configure los clientes para que utilicen una URL de punto de conexión para acceder a una tabla o a una operación de la API de control de DynamoDB a través de los puntos de conexión de la interfaz de DynamoDB.

------
#### [ SDK for Python (Boto3) ]

**Ejemplo: Utilizar una URL de punto de conexión para acceder a una tabla de DynamoDB**  
En el siguiente ejemplo, reemplace la región `us-east-1` y el ID de punto de conexión de VPC `https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` con su información.

```
ddb_client = session.client(
service_name='dynamodb',
region_name='us-east-1',
endpoint_url='https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Ejemplo: Utilizar una URL de punto de conexión para acceder a una tabla de DynamoDB**  
En el siguiente ejemplo, reemplace la región `us-east-1` y el ID de punto de conexión de VPC `https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` con su información.

```
//client build with endpoint config  
final AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
```

------
#### [ SDK for Java 2.x ]

**Ejemplo: Uso de una URL de punto de conexión para acceder a una tabla de DynamoDB**  
En el siguiente ejemplo, reemplace la región us-east-1 y el ID de punto de conexión de VPC https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com por su propia información.

```
Region region = Region.US_EAST_1;
dynamoDbClient = DynamoDbClient.builder().region(region)
.endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com"))
.build()
```

------

## Actualización de una configuración DNS en las instalaciones
<a name="updating-on-premises-dns-config"></a>

 Al utilizar nombres DNS específicos de puntos de conexión para acceder a los puntos de conexión de la interfaz de DynamoDB, no es necesario actualizar la resolución DNS en las instalaciones. Puede resolver el nombre DNS específico del punto de conexión con la dirección IP privada del punto de conexión de la interfaz desde el dominio DNS público de DynamoDB. 

### Uso de puntos de conexión de la interfaz para acceder a DynamoDB sin un punto de conexión de la puerta de enlace o una puerta de enlace de Internet en la Amazon VPC
<a name="using-interface-endpoints"></a>

Los puntos de conexión de la interfaz de su Amazon VPC pueden dirigir tanto las aplicaciones en Amazon VPC como las aplicaciones en las instalaciones hacia DynamoDB a través de la red de Amazon, tal como se muestra en el siguiente diagrama.

![\[En el diagrama de flujo de datos, se muestra el acceso desde las aplicaciones en las instalaciones y en la Amazon VPC a DynamoDB mediante un punto de conexión de la interfaz y AWS PrivateLink.\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/PrivateLink-interfaceEndpoints.png)


En el siguiente diagrama se ilustra lo siguiente: 
+ Su red en las instalaciones utiliza Direct Connect o Site-to-Site VPN para conectarse a la Amazon VPC A.
+ Las aplicaciones en las instalaciones y en la Amazon VPC A utilizan nombres DNS específicos del punto de conexión para acceder a DynamoDB a través del punto de conexión de la interfaz de DynamoDB.
+ Las aplicaciones en las instalaciones envían datos al punto de conexión de la interfaz en la Amazon VPC a través de Direct Connect (o Site-to-Site VPN). AWS PrivateLink transfiere los datos desde el punto de conexión de la interfaz hasta DynamoDB a través de la red de AWS.
+ Las aplicaciones en la Amazon VPC también envían tráfico al punto de conexión de la interfaz. AWS PrivateLink transfiere los datos desde el punto de conexión de la interfaz a DynamoDB a través de la red de AWS.

### Uso de puntos de conexión de la puerta de enlace y puntos de conexión de la interfaz juntos en la misma Amazon VPC para acceder a DynamoDB
<a name="using-gateway-and-interface-endpoints"></a>

Puede crear puntos de conexión de la interfaz y conservar el punto de conexión de la puerta de enlace existente en la misma Amazon VPC, tal como se muestra en el siguiente diagrama. De este modo, permite que las aplicaciones en la Amazon VPC continúen accediendo a DynamoDB a través del punto de conexión de la puerta de enlace, que no se factura. En ese caso, solo las aplicaciones en las instalaciones utilizarían puntos de conexión de la interfaz para acceder a DynamoDB. Para acceder a DynamoDB de esta manera, debe actualizar las aplicaciones en las instalaciones para que utilicen nombres DNS específicos de puntos de conexión para DynamoDB.

![\[El diagrama de flujo de datos muestra el acceso a DynamoDB mediante los puntos de conexión de la puerta de enlace y los puntos de conexión de la interfaz juntos.\]](http://docs.aws.amazon.com/es_es/amazondynamodb/latest/developerguide/images/PL-Image2-InterfaceAndGatewayEP.png)


En el siguiente diagrama se ilustra lo siguiente: 
+ Las aplicaciones en las instalaciones utilizan nombres de DNS específicos de cada punto de conexión para enviar datos al punto de conexión de la interfaz dentro de la Amazon VPC a través de Direct Connect (o Site-to-Site VPN). AWS PrivateLink transfiere los datos desde el punto de conexión de la interfaz hasta DynamoDB a través de la red de AWS.
+ Mediante el uso de nombres regionales predeterminados de DynamoDB, las aplicaciones en la Amazon VPC envían datos al punto de conexión de la puerta de enlace que se conecta a DynamoDB a través de la red de AWS.

Para obtener más información acerca de los puntos de conexión de la puerta de enlace, consulte [Gateway Amazon VPC endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html) en la *Guía del usuario de Amazon VPC*. 

## Creación de una política de punto de conexión de Amazon VPC para DynamoDB
<a name="creating-vpc-endpoint-policy"></a>

Puede asociar una política de punto de conexión con el punto de conexión de Amazon VPC que controla el acceso a DynamoDB. La política especifica la siguiente información: 
+ La entidad principal de AWS Identity and Access Management (IAM) que puede realizar acciones 
+ Las acciones que se pueden realizar 
+ Los recursos en los que se pueden llevar a cabo las acciones 

**Topics**
+ [Ejemplo: Restringir el acceso a una tabla específica desde un punto de conexión de Amazon VPC](#privatelink-example-restrict-access-to-bucket)

### Ejemplo: Restringir el acceso a una tabla específica desde un punto de conexión de Amazon VPC
<a name="privatelink-example-restrict-access-to-bucket"></a>

Puede crear una política de punto de conexión que restrinja el acceso a tablas específicas de DynamoDB. Este tipo de política es útil si tiene otros Servicios de AWS en su Amazon VPC que utilicen tablas. La siguiente política de tablas restringe el acceso únicamente a la `DOC-EXAMPLE-TABLE`. Para utilizar esta política de puntos de conexión, sustituya `DOC-EXAMPLE-TABLE` por el nombre de su tabla.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Id": "Policy1216114807515",
  "Statement": [
    { "Sid": "Access-to-specific-table-only",
      "Principal": "*",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:PutItem"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE",
                   "arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE/*"]
    }
  ]
}
```

------

## Uso de puntos de conexión de DynamoDB con acceso privado de Consola de administración de AWS
<a name="ddb-endpoints-private-access"></a>

Debe configurar el DNS para DynamoDB y DynamoDB Streams cuando utilice puntos de conexión de VPC con la [consola de DynamoDB](https://console.aws.amazon.com/dynamodb) en [Consola de administración de AWS Private Access](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html).

Para configurar que DynamoDB sea accesible en Consola de administración de AWS Private Access, debe crear los dos puntos de conexión de VPC siguientes:
+ `com.amazonaws.<region>.dynamodb`
+ `com.amazonaws.<region>.dynamodb-streams`

Al crear los puntos de conexión de VPC, vaya a la consola de Route53 y cree una zona alojada privada para DynamoDB mediante el punto de conexión regional `dynamodb.us-east-1.amazonaws.com`.

Cree los siguientes dos registros de alias en la zona alojada privada:
+ `dynamodb.<region>.amazonaws.com` que enruta el tráfico al punto de conexión de VPC `com.amazonaws.<region>.dynamodb`.
+ `streams.dynamodb.<region>.amazonaws.com` que enruta el tráfico al punto de conexión de VPC `com.amazonaws.<region>.dynamodb-streams`.

# AWS PrivateLink para DynamoDB Streams
<a name="privatelink-streams"></a>

Con AWS PrivateLink para Amazon DynamoDB Streams, puede aprovisionar puntos de conexión de Amazon VPC de la interfaz (puntos de conexión de la interfaz) en la nube privada virtual (Amazon VPC). A estos puntos de conexión se puede acceder directamente desde las aplicaciones que se encuentran en las instalaciones a través de la VPN y Direct Connect, o bien, en una Región de AWS diferente mediante el emparejamiento de Amazon VPC. Al usar AWS PrivateLink y puntos de conexión de la interfaz, puede simplificar la conectividad de la red privada desde las aplicaciones a DynamoDB Streams.

Las aplicaciones de la Amazon VPC no necesitan direcciones IP públicas para comunicarse con DynamoDB Streams mediante puntos de conexión de interfaz de Amazon VPC para operaciones de DynamoDB Streams. Los puntos de conexión de la interfaz se representan mediante una o más interfaces de red elásticas (ENI) a las que se asignan direcciones IP privadas desde subredes de la Amazon VPC. Las solicitudes a DynamoDB Streams a través de puntos de conexión de interfaz permanecen en la red de Amazon. Asimismo, puede acceder a los puntos de conexión de la interfaz en la Amazon VPC desde aplicaciones en las instalaciones a través de Direct Connect o AWS Virtual Private Network (AWS VPN). Para obtener más información sobre cómo conectar la AWS Virtual Private Network a la red en las instalaciones, consulte la [https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) y la [https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html). 

Para obtener información general sobre los puntos de conexión de interfaz, consulte [Puntos de conexión de Amazon VPC de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) (AWS PrivateLink).

**nota**  
Solo se admiten puntos de conexión de interfaz en DynamoDB Streams. Los puntos de conexión de puerta de enlace no se admiten.

**Topics**
+ [Consideraciones sobre el uso de AWS PrivateLink para Amazon DynamoDB Streams](#privatelink-streams-considerations)
+ [Creación de un punto de conexión de VPC de Amazon](#privatelink-streams-vpc-endpoint)
+ [Acceso a los puntos de conexión de interfaz de Amazon DynamoDB Streams](#privatelink-streams-accessing-ddb-interface-endpoints)
+ [Acceso a operaciones de la API de DynamoDB Streams desde los puntos de conexión de interfaz de DynamoDB Streams](#privatelink-streams-accessing-api-operations-from-interface-endpoints)
+ [Ejemplos del SDK de AWS](#privatelink-streams-aws-sdk-examples)
+ [Creación de una política de punto de conexión de Amazon VPC para DynamoDB Streams](#privatelink-streams-creating-vpc-endpoint-policy)
+ [Uso de puntos de conexión de DynamoDB con acceso privado de Consola de administración de AWS](#ddb-streams-endpoints-private-access)

## Consideraciones sobre el uso de AWS PrivateLink para Amazon DynamoDB Streams
<a name="privatelink-streams-considerations"></a>

Las consideraciones sobre Amazon VPC se aplican a AWS PrivateLink para Amazon DynamoDB Streams. Para obtener más información, consulte [Consideraciones de los puntos de conexión de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) y [Cuotas de AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html). Se aplican las siguientes restricciones.

AWS PrivateLink para Amazon DynamoDB Streams no admite lo siguiente: 
+ Seguridad de la capa de transporte (TLS) 1.1
+ Servicios de sistema de nombres de dominio (DNS) privado e híbrido

**importante**  
No cree zonas alojadas privadas para anular los nombres DNS de los puntos de conexión de DynamoDB Streams con el fin de realizar el enrutamiento del tráfico hacia los puntos de conexión de su interfaz. Las configuraciones de DNS de DynamoDB pueden cambiar con el tiempo, y las modificaciones personalizadas del DNS pueden provocar un enrutamiento inesperado de las solicitudes a través de direcciones IP públicas en lugar de a los puntos de conexión de su interfaz.   
 Para acceder a DynamoDB Streams a través de AWS PrivateLink, configure sus clientes para que usen directamente la URL del punto de conexión de Amazon VPC (por ejemplo, `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.region.vpce.amazonaws.com`).

**nota**  
Los tiempos de espera de conectividad de red con los puntos de conexión de AWS PrivateLink no están incluidos en el ámbito de las respuestas de error de DynamoDB y las aplicaciones que se conecten a los puntos de conexión de AWS PrivateLink deberán gestionarlos adecuadamente.

## Creación de un punto de conexión de VPC de Amazon
<a name="privatelink-streams-vpc-endpoint"></a>

Para crear un punto de conexión de la interfaz de Amazon VPC, consulte [Create an Amazon VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) en la *Guía de AWS PrivateLink*.

## Acceso a los puntos de conexión de interfaz de Amazon DynamoDB Streams
<a name="privatelink-streams-accessing-ddb-interface-endpoints"></a>

Cuando crea un punto de conexión de interfaz, DynamoDB genera dos tipos de nombres DNS de DynamoDB Streams específicos del punto de conexión: *regional* y *zonal*. 
+ Un nombre DNS *regional* incluye un ID único de punto de conexión de Amazon VPC, un identificador de servicio, la Región de AWS y `vpce.amazonaws.com` en el nombre. Por ejemplo, para el ID de punto de conexión de Amazon VPC `vpce-1a2b3c4d`, el nombre DNS generado podría ser similar a `vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com`.
+ Un nombre de DNS *zonal* incluye la zona de disponibilidad, por ejemplo, `vpce-1a2b3c4d-5e6f-us-east-1a.streams.dynamodb.us-east-1.vpce.amazonaws.com`. Puede utilizar esta opción si la arquitectura aísla Zonas de disponibilidad. Por ejemplo, podría usarlo para la contención de fallos o para reducir los costos de transferencia de datos regionales.

## Acceso a operaciones de la API de DynamoDB Streams desde los puntos de conexión de interfaz de DynamoDB Streams
<a name="privatelink-streams-accessing-api-operations-from-interface-endpoints"></a>

Puede utilizar la AWS CLI o los AWS SDK para acceder a operaciones de API de DynamoDB Streams a través de puntos de conexión de interfaz de DynamoDB Streams.

### AWS CLIEjemplos de
<a name="privatelink-streams-aws-cli-examples"></a>

Para acceder a operaciones de DynamoDB Streams o de la API a través de puntos de conexión de interfaz de DynamoDB Streams en comandos de la AWS CLI, utilice los parámetros `--region` y `--endpoint-url`.

**Ejemplo: crear un punto de conexión de VPC**

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name com.amazonaws.us-east-1.dynamodb-streams \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id
```

**Ejemplo: Modificar un punto de conexión de VPC**

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-endpoint-id \
--policy-document policy-document \ #example optional parameter
--add-security-group-ids security-group-ids \ #example optional parameter 
# any additional parameters needed, see Privatelink documentation for more details
```

**Ejemplo: enumerar flujos con una URL de punto de conexión**

En el siguiente ejemplo, reemplace la región `us-east-1` y el nombre DNS del ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` con su información.

```
aws dynamodbstreams --region us-east-1 —endpoint https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com list-streams
```

## Ejemplos del SDK de AWS
<a name="privatelink-streams-aws-sdk-examples"></a>

Para acceder a las operaciones de la API de Amazon DynamoDB Streams a través de los puntos de conexión de interfaz de DynamoDB Streams al utilizar los AWS SDK, actualice los SDK a la versión actual. A continuación, configure los clientes para que utilicen una URL de punto de conexión para la API de control de DynamoDB Streams a través de los puntos de conexión de la interfaz de DynamoDB Streams.

------
#### [ SDK for Python (Boto3) ]

**Ejemplo: utilizar una URL de punto de conexión para acceder a un flujo de DynamoDB**  
En el siguiente ejemplo, reemplace la región `us-east-1` y el ID de punto de conexión de VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` con su información.

```
ddb_streams_client = session.client(
service_name='dynamodbstreams',
region_name='us-east-1',
endpoint_url='https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Ejemplo: utilizar una URL de punto de conexión para acceder a un flujo de DynamoDB**  
En el siguiente ejemplo, reemplace la región `us-east-1` y el ID de punto de conexión de VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` con su información.

```
//client build with endpoint config  
final AmazonDynamoDBStreams dynamodbstreams = AmazonDynamoDBStreamsClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
```

------
#### [ SDK for Java 2.x ]

**Ejemplo: utilizar una URL de punto de conexión para acceder a un flujo de DynamoDB**  
En el siguiente ejemplo, reemplace la región `us-east-1` y el ID de punto de conexión de VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` con su información.

```
Region region = Region.US_EAST_1;
dynamoDbStreamsClient = DynamoDbStreamsClient.builder().region(region)
.endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com"))
.build()
```

------

## Creación de una política de punto de conexión de Amazon VPC para DynamoDB Streams
<a name="privatelink-streams-creating-vpc-endpoint-policy"></a>

Puede asociar una política de punto de conexión con el punto de conexión de Amazon VPC que controla el acceso a DynamoDB Streams. La política especifica la siguiente información: 
+ La entidad principal de AWS Identity and Access Management (IAM) que puede realizar acciones 
+ Las acciones que se pueden realizar 
+ Los recursos en los que se pueden llevar a cabo las acciones 

**Topics**
+ [Ejemplo: restringir el acceso a un flujo específico desde un punto de conexión de Amazon VPC](#privatelink-streams-example-restrict-access-to-bucket)

### Ejemplo: restringir el acceso a un flujo específico desde un punto de conexión de Amazon VPC
<a name="privatelink-streams-example-restrict-access-to-bucket"></a>

Puede crear una política de punto de conexión que restrinja el acceso a flujos de DynamoDB Streams específicos. Este tipo de política es útil si tiene otros Servicios de AWS en la Amazon VPC que utilicen DynamoDB Streams. La siguiente política de flujo restringe el acceso solo al flujo `2025-02-20T11:22:33.444` adjuntado a `DOC-EXAMPLE-TABLE`. Para utilizar esta política de puntos de conexión, reemplace `DOC-EXAMPLE-TABLE` por el nombre de la tabla y `2025-02-20T11:22:33.444` por la etiqueta de flujo.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Id": "Policy1216114807515",
  "Statement": [
    { "Sid": "Access-to-specific-stream-only",
      "Principal": "*",
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:dynamodb:us-east-1:111122223333:table/table-name/stream/2025-02-20T11:22:33.444"]
    }
  ]
}
```

------

**nota**  
Los puntos de conexión de puerta de enlace no son compatibles con DynamoDB Streams.

## Uso de puntos de conexión de DynamoDB con acceso privado de Consola de administración de AWS
<a name="ddb-streams-endpoints-private-access"></a>

Debe configurar el DNS para DynamoDB y DynamoDB Streams cuando utilice puntos de conexión de VPC con la [consola de DynamoDB](https://console.aws.amazon.com/dynamodb) en [Consola de administración de AWS Private Access](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html).

Para configurar que DynamoDB sea accesible en Consola de administración de AWS Private Access, debe crear los dos puntos de conexión de VPC siguientes:
+ `com.amazonaws.<region>.dynamodb`
+ `com.amazonaws.<region>.dynamodb-streams`

Al crear los puntos de conexión de VPC, vaya a la consola de Route53 y cree una zona alojada privada para DynamoDB mediante el punto de conexión regional `dynamodb.us-east-1.amazonaws.com`.

Cree los siguientes dos registros de alias en la zona alojada privada:
+ `dynamodb.<region>.amazonaws.com` que enruta el tráfico al punto de conexión de VPC `com.amazonaws.<region>.dynamodb`.
+ `streams.dynamodb.<region>.amazonaws.com` que enruta el tráfico al punto de conexión de VPC `com.amazonaws.<region>.dynamodb-streams`.

# Uso de AWS PrivateLink para DynamoDB Accelerator (DAX)
<a name="dax-private-link"></a>

AWS PrivateLink para DynamoDB Accelerator (DAX) le permite acceder de forma segura a las API de administración de DAX, como `CreateCluster`, `DescribeClusters` y `DeleteCluster` y a través de direcciones IP privadas, dentro de la nube privada virtual (VPC). Esta característica le permite acceder a los servicios de DAX de forma privada desde las aplicaciones sin exponer el tráfico al Internet público.

DAX PrivateLink admite puntos de conexión de doble pila (`dax.{region}.api.aws`), lo que permite la conectividad IPv4 e IPv6. Con AWS PrivateLink para DAX, los clientes pueden acceder al servicio mediante nombres DNS privados. El soporte para puntos de conexión de doble pila garantiza una conectividad transparente y, al mismo tiempo, mantiene la privacidad de la red. Esto le permite acceder a DAX a través de puntos de conexión públicos de Internet y de VPC sin realizar ningún cambio en la configuración del SDK.

## Consideraciones al usar AWS PrivateLink para DynamoDB Accelerator (DAX)
<a name="dax-privatelink-considerations"></a>

Al realizar la implementación AWS PrivateLink para DynamoDB Accelerator (DAX), se deben tener en cuenta varias consideraciones importantes.

Antes de configurar un punto de conexión de interfaz para DAX, tenga en cuenta lo siguiente:
+ Los puntos de conexión de la interfaz de DAX solo admiten el acceso a las API de administración de DAX dentro de la misma Región de AWS. No puede usar un punto de conexión de interfaz para acceder a las API de administración de DAX en otras regiones.
+ Para acceder a la Consola de administración de AWS de forma privada para la administración de DAX, es posible que deba crear puntos de conexión de VPC adicionales para servicios como `com.amazonaws.region.console` y los servicios relacionados.
+ Se le cobrará por la creación y el uso de cada punto de conexión de interfaz a DAX. Para obtener información sobre precios, consulte [Precios de AWS PrivateLink](https://aws.amazon.com/vpc/pricing/).

## Cómo funciona AWS PrivateLink con DAX
<a name="dax-privatelink-how-it-works"></a>

Al crear un punto de conexión de interfaz para DAX:

1. AWS crea una interfaz de red de punto de conexión en cada subred habilitada para el punto de conexión de interfaz.

1. Se trata de interfaces de red administradas por el solicitante que sirven como punto de entrada para el tráfico destinado para DAX.

1. A continuación, puede acceder a DAX a través de direcciones IP privadas dentro de la VPC.

1. Esta arquitectura le permite utilizar grupos de seguridad de VPC para administrar el acceso a los puntos de conexión.

1. Las aplicaciones pueden acceder a DynamoDB y DAX a través de sus respectivos puntos de conexión de interfaz dentro de una VPC, al tiempo que permiten que las aplicaciones en las instalaciones se conecten a través de Direct Connect o VPN.

1. Esto proporciona un modelo de conectividad uniforme en ambos servicios, simplifica la arquitectura y mejora la seguridad al mantener el tráfico dentro de la red de AWS.

## Creación de puntos de conexión de interfaz para DAX
<a name="dax-privatelink-creating-endpoints"></a>

Puede crear un punto de conexión de interfaz para conectarse a DAX mediante la Consola de administración de AWS, AWS SDK, CloudFormation o la API de AWS.

**Creación de un punto de conexión de interfaz para DAX con la consola**

1. Vaya a la consola de Amazon VPC en [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. En el panel de navegación, elija **Puntos de conexión**.

1. Elija **Crear punto de conexión**.

1. Para la **categoría de servicio**, elija **Servicios de AWS** y, para el **nombre del servicio**, busque y seleccione `com.amazonaws.region.dax`.

1. Para la **VPC**, seleccione la VPC desde la que quiere acceder a DAX y, para las **subredes**, seleccione las subredes en las que AWS creará las interfaces de red de los puntos de conexión.

1. Para **Grupos de seguridad**, seleccione o cree los grupos de seguridad que deban asociarse a las interfaces de red del punto de conexión.

1. En el caso de la **política**, mantenga el **acceso total** predeterminado o personalícelo según sea necesario.

1. Seleccione **Habilitar nombre de DNS** para habilitar un DNS privado para el punto de conexión. Mantenga el nombre de DNS privado habilitado para evitar cambios en la configuración del SDK. Cuando está habilitado, las aplicaciones pueden seguir utilizando el nombre DNS del servicio estándar (ejemplo: `dax.region.amazonaws.com`). AWS crea una zona alojada privada en la VPC que resuelve este nombre en la dirección IP privada del punto de conexión.
**nota**  
Utilice nombres DNS regionales si es necesario. No se recomienda el uso de nombres DNS zonales. Además, seleccione subredes de 3 o más zonas de disponibilidad para garantizar la máxima disponibilidad a través de PrivateLink.

1. Seleccione **Crear punto de conexión**.

**Creación de un punto de conexión de interfaz para DAX con la AWS CLI**  
Use el comando `create-vpc-endpoint` con el parámetro `vpc-endpoint-type` establecido en `Interface` y el parámetro `service-name` establecido en `com.amazonaws.region.dax`.

```
aws ec2 create-vpc-endpoint \
    --vpc-id vpc-ec43eb89 \
    --vpc-endpoint-type Interface \
    --service-name com.amazonaws.us-east-1.dax \
    --subnet-ids subnet-abcd1234 subnet-1a2b3c4d \
    --security-group-ids sg-1a2b3c4d \
    --private-dns-enabled
```

## Recursos adicionales
<a name="dax-privatelink-resources"></a>

Para obtener más información sobre AWS PrivateLink y puntos de conexión de VPC, consulte los siguientes recursos:
+ [AWS PrivateLink para DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-interface-endpoints.html)
+ [AWS PrivateLink para DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-streams.html)
+ [Conectar la VPC a los servicios mediante AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)
+ [Simplificación de la conectividad privada a DynamoDB con AWS PrivateLink](https://aws.amazon.com/blogs//database/simplify-private-connectivity-to-amazon-dynamodb-with-aws-privatelink)
+ [AWS PrivateLink Documento técnico de](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-privatelink.html)

# Configuración y análisis de vulnerabilidades en Amazon DynamoDB
<a name="configuration-vulnerability"></a>

AWS gestiona las tareas de seguridad básicas, como la aplicación de parches en la base de datos y el sistema operativo (SO) de invitado, la configuración del firewall y la recuperación de desastres. Estos procedimientos han sido revisados y certificados por los terceros pertinentes. Para obtener más detalles, consulte los siguientes recursos de :
+ [Validación de la conformidad para Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Compliance.html)
+ [Modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/)
+ [Amazon Web Services: información general de procesos de seguridad](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf) (documento técnico)

Las siguientes prácticas recomendadas sobre seguridad también evalúan la configuración y los análisis de vulnerabilidades en Amazon DynamoDB:
+ [Monitoree la conformidad de DynamoDB con Reglas de AWS Config](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices-security-detective.html#rules)
+ [monitorea la configuración de DynamoDB con AWS Config](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices-security-detective.html#config)

# Prácticas recomendadas de seguridad para Amazon DynamoDB
<a name="best-practices-security"></a>

Amazon DynamoDB proporciona una serie de características de seguridad que debe tener en cuenta a la hora de desarrollar e implementar sus propias políticas de seguridad. Las siguientes prácticas recomendadas son directrices generales y no constituyen una solución de seguridad completa. Puesto que es posible que estas prácticas recomendadas no sean adecuadas o suficientes para el entorno, considérelas como consideraciones útiles en lugar de como normas.

**Topics**
+ [Prácticas recomendadas de seguridad preventivas de DynamoDB](best-practices-security-preventative.md)
+ [Prácticas recomendadas de detección de seguridad en DynamoDB](best-practices-security-detective.md)

# Prácticas recomendadas de seguridad preventivas de DynamoDB
<a name="best-practices-security-preventative"></a>

Las siguientes prácticas recomendadas pueden serle de utilidad para evitar incidentes de seguridad en Amazon DynamoDB.

**Cifrado en reposo**  
DynamoDB cifra en reposo todos los datos de usuario almacenados en tablas, índices, flujos y copias de seguridad mediante claves de cifrado almacenadas en [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/). Esto proporciona una capa adicional de protección de datos al proteger los datos del acceso no autorizado al almacenamiento subyacente.  
Puede especificar si DynamoDB debe utilizar una Clave propiedad de AWS (tipo de cifrado predeterminado), una Clave administrada de AWS, o una clave administrada por el cliente para cifrar los datos del usuario. Para obtener más información, consulte [Cifrado en reposo de Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html).

**Usar roles de IAM para autenticar el acceso a DynamoDB**  
Para acceder a DynamoDB, los usuarios, las aplicaciones y otros servicios de AWStienen que incluir credenciales válidas de AWS en sus solicitudes API de AWS. No debe almacenar las credenciales de AWS de forma directa en la aplicación ni en una instancia EC2. Estas son las credenciales a largo plazo que no rotan automáticamente, por lo tanto, podrían tener un impacto empresarial significativo si se comprometen. Un rol de IAM lo habilita a obtener claves de acceso temporal que se pueden utilizar para tener acceso a los servicios y recursos de AWS.  
Para obtener más información, consulte [Identity and Access Management en Amazon DynamoDB](security-iam.md).

**Usar directivas de IAM para la autorización base de DynamoDB**  
Cuando concede permisos, usted decide quién debe obtenerlos, para qué API de DynamoDB se obtienen y qué acciones específicas desea permitir en esos recursos. La implementación de privilegios mínimos es la clave a la hora de reducir los riesgos de seguridad y el impacto que podrían causar los errores o los intentos malintencionados.  
Asociar políticas de permisos a identidades de IAM (es decir, usuarios, grupos y roles) y, de ese modo, conceder permisos para realizar operaciones en recursos de DynamoDB.  
Para hacerlo, utilice lo siguiente:  
+ [AWS Políticas administradas por (predefinidas](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-aws-managed)
+ [Políticas administradas por el cliente](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-for-sdk-cli)

**Uso de condiciones de políticas de IAM para control de acceso preciso**  
Al conceder permisos en DynamoDB, puede especificar las condiciones que determinan cómo se aplica una política de permisos. La implementación de privilegios mínimos es la clave a la hora de reducir los riesgos de seguridad y el impacto que podrían causar los errores o los intentos malintencionados.  
Puede especificar las condiciones al conceder permisos utilizando la política de IAM. Por ejemplo, puede hacer lo siguiente:  
+ Conceder permisos para que los usuarios puedan obtener acceso de solo lectura a determinados elementos y atributos de una tabla o un índice secundario.
+ Conceder permisos para que los usuarios puedan obtener acceso de solo escritura a determinados atributos de una tabla, según la identidad del usuario en cuestión.
 Para obtener más información, consulte [Uso de condiciones de políticas de IAM para control de acceso preciso](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html).

**Utilizar un punto de enlace de la VPC y políticas para acceder a DynamoDB**  
Si solo necesita acceso a DynamoDB desde una Virtual Private Cloud (VPC), debe usar un punto de enlace de la VPC para limitar el acceso solo desde la VPC requerida. Al hacer esto, impide que el tráfico atraviese la red de Internet de acceso público y esté sujeto a ese entorno.  
El uso de un punto de enlace de la VPC para DynamoDB le permite controlar y limitar el acceso mediante lo siguiente:  
+ Políticas del punto de enlace de la VPC: estas políticas se aplican en el punto de enlace de la VPC de DynamoDB. Le permiten controlar y limitar el acceso de la API a la tabla de DynamoDB.
+ Políticas de IAM: mediante el uso de la condición `aws:sourceVpce` en las políticas asociadas a los usuarios, grupos o roles, puede exigir que todo el acceso a la tabla de DynamoDB se realice a través del punto de conexión de VPC especificado.
 Para obtener más información, consulte [Puntos de enlace para Amazon DynamoDB](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-ddb.html).

**Tenga en cuenta el cifrado del lado del cliente**  
Le recomendamos que planifique la estrategia de cifrado antes de implementar la tabla en DynamoDB. Si almacena datos confidenciales en DynamoDB, considere incluir el cifrado del cliente en el plan. De esta forma, puede cifrar los datos lo más cerca posible del origen y garantizar la protección durante todo el ciclo de vida. El cifrado de su información confidencial en tránsito y en reposo ayuda a garantizar que los datos de texto no cifrado no estén disponibles para ningún tercero.   
 El [SDK de cifrado de base de datos de AWS para DynamoDB](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html) es una biblioteca de software que le ayuda a proteger los datos de la tabla antes de enviarlos a DynamoDB. Cifra, firma, verifica y descifra los elementos de la tabla de DynamoDB. Usted controla qué atributos se cifran y se firman.

**Consideraciones sobre la clave principal**  
No utilice nombres confidenciales ni datos confidenciales en texto sin formato en la [clave principal](HowItWorks.Partitions.md) para la tabla y los índices secundarios globales. Los nombres de la clave aparecerán en la definición de la tabla. Por ejemplo, cualquier persona que tenga permisos para llamar a [DescribeTable](WorkingWithTables.Basics.md#WorkingWithTables.Basics.DescribeTable) puede acceder a los nombres de la clave principal. Los valores de la clave pueden aparecer en [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) y en otros registros. Además, DynamoDB utiliza los valores de la clave para distribuir los datos y enrutar las solicitudes, y los administradores de AWS pueden observar los valores para mantener el buen estado del servicio.  
Si necesita utilizar datos confidenciales en los valores de la tabla o las claves de GSI, le recomendamos que utilice el cifrado de cliente de extremo a extremo. Esto le permite crear referencias de clave-valor a sus datos y, al mismo tiempo, garantizar que nunca aparezcan sin cifrar en los registros relacionados con DynamoDB. Una forma de hacer esto consiste en utilizar el [SDK de cifrado de bases de datos de AWS para DynamoDB](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/client-server-side.html), pero no es obligatorio. Si utiliza su propia solución, siempre debe utilizar un algoritmo de cifrado que sea lo suficientemente seguro. No debe utilizar una opción no criptográfica como un hash, ya que no se considera lo suficientemente segura en la mayoría de las situaciones.  
Si los nombres de clave principal son confidenciales, le recomendamos que utilice ``pk`` y ``sk`` en su lugar. Se trata de una práctica recomendada general que flexibiliza el diseño de la clave de partición.   
Consulte siempre a sus expertos en seguridad o al equipo de cuentas de AWS si no sabe cuál sería la opción correcta. 

# Prácticas recomendadas de detección de seguridad en DynamoDB
<a name="best-practices-security-detective"></a>

Las siguientes prácticas recomendadas para Amazon DynamoDB le pueden ser de utilidad para detectar los incidentes y los posibles puntos débiles de la seguridad.

**Utilice AWS CloudTrail para monitorear el uso de la clave KMS administrada por AWS**  
Si está utilizando una [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) para el cifrado en reposo, el uso de esta clave queda registrado en AWS CloudTrail. CloudTrail proporciona visibilidad de la actividad del usuario mediante el registro de las acciones realizadas en su cuenta. CloudTrail registra información importante acerca de cada acción, incluyendo quién hizo la solicitud, los servicios utilizados, las acciones realizadas, los parámetros de las acciones y los elementos de respuesta devueltos por el servicio de AWS. Esta información le ayuda a realizar un seguimiento de los cambios realizados en sus recursos de AWS y solucionar problemas operativos. CloudTrail facilita la conformidad con las políticas internas y las normas reglamentarias.  
Puede utilizar CloudTrail para auditar el uso de las claves. CloudTrail crea archivos de registro que contienen un historial de las llamadas a la API de AWS y de los eventos relacionados de su cuenta. Estos archivos de registro incluyen todas las solicitudes a la API de AWS KMS realizadas con la Consola de administración de AWS, los SDK de AWS y las herramientas de la línea de comandos, así como las efectuadas a través de los servicios de AWS integrados. Puede utilizar estos archivos de registro para obtener información sobre cuándo se utilizó la clave KMS, la operación que se solicitó, la identidad del solicitante, la dirección IP de la que procede la solicitud, etc. Para obtener más información, consulte [Registro de llamadas a la API de AWS KMS con AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html) en la [Guía del usuario de AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

**Monitorear las operaciones de DynamoDB con CloudTrail**  
CloudTrail puede monitorear tanto los eventos del plano de control como los eventos del plano de datos. Las operaciones del plano de control le permiten crear y administrar tablas de DynamoDB. También permiten usar índices, secuencias y otros objetos que dependen de las tablas. Las operaciones del plano de datos le permiten llevar a cabo acciones de creación, lectura, actualización y eliminación (también denominadas *CRUD*, por sus siglas en inglés) con los datos de una tabla. Algunas de las operaciones del plano de datos permiten también leer datos de un índice secundario. Para habilitar el registro de eventos de plano de datos en CloudTrail, deberá habilitar el registro de la actividad de la API del plano de datos en CloudTrail. Para obtener más información, consulte [Registro de eventos de datos para seguimiento](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html).  
Cuando se produce una actividad en DynamoDB, esa actividad se registra en un evento de CloudTrail junto con otros eventos de servicio de AWS en el historial de eventos. Para obtener más información, consulte [Registro de operaciones de DynamoDB mediante AWS CloudTrail](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/logging-using-cloudtrail.html). Puede ver, buscar y descargar los últimos eventos de la cuenta de AWS. Para obtener más información, consulte [Ver eventos con el historial de eventos de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) en la *Guía del usuario de AWS CloudTrail*.  
Para mantener un registro continuo de eventos en la cuenta de AWS, incluyendo los eventos de DynamoDB, cree un [seguimiento](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html). Un seguimiento habilita a CloudTrail a enviar archivos de registro a un bucket de Amazon Simple Storage Service (Amazon S3). De forma predeterminada, cuando se crea un registro de seguimiento en la consola, este se aplica a todas las regiones de AWS. El registro de seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de S3 especificado. También es posible configurar otros servicios de AWS para analizar en profundidad y actuar en función de los datos de eventos recopilados en los registros de CloudTrail.

**Utilice DynamoDB Streams para monitorear las operaciones del plano de datos**  
DynamoDB se integra con AWS Lambda para que pueda crear desencadenadores, a saber, fragmentos de código que responden automáticamente a los eventos de DynamoDB Streams. Con los desencadenadores, puede crear aplicaciones que reaccionan ante las modificaciones de datos en las tablas de DynamoDB.  
Si habilita DynamoDB Streams en una tabla, puede asociar el nombre de recurso de Amazon (ARN) de la secuencia con una función de Lambda que haya escrito. Inmediatamente después de modificar un elemento de la tabla, aparece un nuevo registro en la secuencia de la tabla. AWS Lambda sondea la secuencia y llama a la función Lambda de forma sincrónica cuando detecta nuevos registros en él. La función Lambda pueden realizar cualquier acción que usted especifique, como, por ejemplo, enviar una notificación o iniciar un flujo de trabajo.  
Para ver un ejemplo consulte [Tutorial: uso de AWS Lambda con Amazon DynamoDB Streams](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb-example.html). En este ejemplo se recibe una entrada de evento de DynamoDB, se procesan los mensajes que contiene y se escriben algunos de los datos de eventos entrantes en los Amazon CloudWatch Logs.

**monitorea la configuración de DynamoDB con AWS Config**  
Utilizando [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html), puede monitorear y registrar continuamente los cambios de configuración de recurso de AWS. También puede utilizar AWS Config para realizar un inventario sur recursos de AWS. Cuando se detecta un cambio con respecto a un estado anterior, se puede enviar una notificación de Amazon Simple Notification Service (Amazon SNS) para que la revise y tome medidas. Siga la guía de [Configuración de AWS Config con la consola](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html), asegurando que se incluyan los tipos de recursos de DynamoDB.  
Puede configurar AWS Config para que transmita cambios de configuración y notificaciones a un tema de Amazon SNS. Por ejemplo, cuando se actualiza un recurso, puede obtener una notificación enviada a su correo electrónico, para que pueda ver los cambios. También se le puede notificar cuando AWS Config evalúa las reglas personalizadas o administradas con respecto a sus recursos.  
Para ver un ejemplo, consulte [Notificaciones que AWS Config envía a un tema de Amazon SNS](https://docs.aws.amazon.com/config/latest/developerguide/notifications-for-AWS-Config.html) en la *Guía para desarrolladores AWS Config*.

**monitorea el cumplimiento de DynamoDB de las reglas AWS Config**  
AWS Config realiza un seguimiento constante de los cambios de configuración que se producen entre los recursos. Comprueba si estos cambios infringen cualquiera de las condiciones de sus reglas. Si un recurso infringe una regla, AWS Config marca el recurso y la regla como no conformes.  
Al utilizar AWS Config para evaluar las configuraciones de los recursos, puede evaluar en qué medida las configuraciones de los recursos cumplen las prácticas internas, las directrices del sector y las normativas. AWS Config proporciona [Reglas administradas de AWS](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html), que son reglas predefinidas y personalizables que AWS Config utiliza para evaluar si los recursos de AWS cumplen las prácticas recomendadas comunes.

**Etiquetar sus recursos de DynamoDB para su identificación y automatización**  
Puede asignar metadatos a los recursos de AWS en forma de etiquetas. Cada etiqueta es una marca que consta de una clave definida por el cliente y un valor opcional que puede hacer que sea más fácil administrar, buscar y filtrar recursos.   
El etiquetado permite implementar controles agrupados. Aunque no hay tipos inherentes de etiquetas, lo habilitan a clasificar los recursos según su finalidad, propietario, entorno u otros criterios. A continuación se muestran algunos ejemplos:  
+ Seguridad: se utiliza para determinar requisitos tales como el cifrado.
+ Confidencialidad: un identificador para el nivel concreto de confidencialidad de los datos que admite un recurso.
+ Entorno: utilizado para distinguir entre el desarrollo, la prueba y la infraestructura de producción.
Para obtener más información, consulte [Estrategias de etiquetado de AWS](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) y [Etiquetado de DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html).

**Monitoree el uso de Amazon DynamoDB en relación con las mejores prácticas de seguridad con AWS Security Hub CSPM.**  
Security Hub CSPM utiliza controles de seguridad para evaluar las configuraciones de los recursos y los estándares de seguridad para cumplir con varios marcos de conformidad.  
Para obtener más información sobre el uso de Security Hub CSPM con el fin de evaluar los recursos de DynamoDB, consulte [Controles de Amazon DynamoDB](https://docs.aws.amazon.com/securityhub/latest/userguide/dynamodb-controls.html) en la *Guía del usuario de AWS Security Hub CSPM*.