

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