Seguridad de las tablas globales de DynamoDB - Amazon DynamoDB

Seguridad de las tablas globales de DynamoDB

Las réplicas de tablas globales son tablas de DynamoDB, por lo que se utilizan los mismos métodos para controlar el acceso a las réplicas que se utilizan para las tablas de una sola región, incluyendo las políticas de identidad y las políticas basadas en recursos de AWS Identity and Access Management (IAM).

En este tema se describe cómo proteger las tablas globales de DynamoDB mediante permisos de IAM y cifrado de AWS Key Management Service (AWS KMS). Obtendrá información sobre los roles vinculados a servicios (SLR) que permiten la replicación y el escalado automático entre regiones, los permisos de IAM necesarios para crear, actualizar y eliminar tablas globales y las diferencias entre las tablas de coherencia final multirregional (MREC) y multirregional de coherencia sólida (MRSC). También obtendrá información sobre las claves de cifrado de AWS KMS para administrar de forma segura la replicación entre regiones.

Roles vinculados a servicios para tablas globales

Las tablas globales de DynamoDB se basan en roles vinculados a servicios (SLR) para administrar la replicación entre regiones y las capacidades de escalado automático.

Solo tiene que configurar estos roles una vez por cuenta de AWS. Una vez creados, los mismos roles sirven en todas las tablas globales de la cuenta. Para obtener más información acerca los roles vinculados a servicios, consulte Uso de roles vinculados a servicios en la Guía del usuario de IAM.

Rol vinculado a servicios de replicación

Amazon DynamoDB crea automáticamente el rol vinculado al servicio (SLR) AWSServiceRoleForDynamoDBReplication cuando se crea la primera tabla global. Este rol administra la replicación entre regiones por usted.

Al aplicar políticas basadas en recursos a las réplicas, asegúrese de no denegar ninguno de los permisos definidos en AWSServiceRoleForDynamoDBReplicationPolicy a la entidad principal de SLR, ya que esto interrumpiría la replicación. Si deniega los permisos de SLR necesarios, la replicación hacia y desde las réplicas afectadas se detendrá y el estado de la tabla de réplicas cambiará a REPLICATION_NOT_AUTHORIZED.

  • Para tablas globales de coherencia final multirregional (MREC), si una réplica permanece en el estado REPLICATION_NOT_AUTHORIZED durante más de 20 horas, la réplica se convierte irreversiblemente en una tabla de DynamoDB de una sola región.

  • Para las tablas globales de coherencia alta multirregionales (MRSC), la denegación de los permisos necesarios se traduce en AccessDeniedException para operaciones de escritura y lectura altamente coherentes. Si una réplica permanece en el estado REPLICATION_NOT_AUTHORIZED durante más de siete días, la réplica se vuelve permanentemente inaccesible y las operaciones de escritura y de lectura altamente coherentes seguirán produciendo un error. Algunas operaciones de administración, como la eliminación de réplicas, se realizarán correctamente.

Rol vinculado a un servicio de escalado automático

Al configurar una tabla global para el modo de capacidad aprovisionada, se debe configurar el escalado automático para la tabla global. El escalado automático de DynamoDB utiliza el servicio de escalado automático de aplicaciones de AWS para ajustar dinámicamente la capacidad de rendimiento aprovisionada en las réplicas de tabla global. El servicio de escalado automático de aplicaciones crea un rol vinculado a un servicio (SLR) denominado AWSServiceRoleForApplicationAutoScaling_DynamoDBTable. Este rol vinculado al servicio se crea automáticamente en la cuenta de AWS al configurar el escalado automático para una tabla de DynamoDB. Permite al escalado automático de aplicaciones administrar la capacidad de la tabla aprovisionada y crear alarmas de CloudWatch.

Al aplicar políticas basadas en recursos a las réplicas, asegúrese de no denegar ninguno de los permisos definidos en la AWSApplicationAutoscalingDynamoDBTablePolicy a la entidad principal de SLR de escalado automático de aplicaciones, ya que esto interrumpiría la funcionalidad de escalado automático.

Políticas de IAM de ejemplo para roles vinculados a servicios

Una política de IAM con la siguiente condición no afecta a los permisos necesarios para la SLR de replicación de DynamoDB y SLR de escalado automático de AWS. Esta condición se puede agregar a políticas que, de otro modo, serían ampliamente restrictivas para evitar interrumpir involuntariamente la replicación o el escalado automático.

En el siguiente ejemplo se muestra cómo excluir a las entidades principales de roles vinculados al servicio de las instrucciones de denegación:

"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws::iam::111122223333:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws::iam::111122223333:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }

Uso de las tablas globales de AWS IAM

En las siguientes secciones se describen los permisos necesarios para las distintas operaciones de las tablas globales y se proporcionan ejemplos de políticas que le ayudarán a configurar el acceso adecuado para los usuarios y aplicaciones.

nota

Todos los permisos descritos se deben aplicar al ARN del recurso de tabla específico en las regiones afectadas. El ARN del recurso de tabla sigue el formato arn:aws:dynamodb:region:account-id:table/table-name, en el que debe especificar los valores reales de la región, el ID de cuenta y el nombre de la tabla.

Creación de tablas globales y agregación de réplicas

Las tablas globales de DynamoDB admiten dos modos de coherencia: coherencia final multirregional (MREC) y coherencia alta multirregional (MRSC). Las tablas globales de MREC pueden tener varias réplicas en cualquier número de regiones y proporcionar coherencia final. Las tablas globales de MRSC requieren exactamente tres regiones (tres réplicas o dos réplicas y un testigo) y proporcionan una coherencia sólida con un objetivo de punto de recuperación (RPO).

Los permisos necesarios para crear tablas globales dependen de si se crea una tabla global con o sin un testigo.

Permisos para crear tablas globales

Los siguientes permisos son necesarios para la creación inicial de la tabla global y para agregar réplicas posteriormente. Estos permisos se aplican a las tablas globales de coherencia final multirregional (MREC) y coherencia alta multirregional (MRSC).

  • Las tablas globales requieren la replicación entre regiones, que DynamoDB administra mediante el rol vinculado a servicios AWSServiceRoleForDynamoDBReplication (SLR). El siguiente permiso permite a DynamoDB crear este rol automáticamente al crear una tabla global por primera vez:

    • iam:CreateServiceLinkedRole

  • Para crear una tabla global o agregar una réplica mediante la API de UpdateTable, debe tener el siguiente permiso en el recurso de la tabla de origen:

    • dynamodb:UpdateTable

  • Debe tener los siguientes permisos en el recurso de la tabla en las regiones para que se agreguen las réplicas:

    • dynamodb:CreateTable

    • dynamodb:CreateTableReplica

    • dynamodb:Query

    • dynamodb:Scan

    • dynamodb:UpdateItem

    • dynamodb:PutItem

    • dynamodb:GetItem

    • dynamodb:DeleteItem

    • dynamodb:BatchWriteItem

Permisos adicionales para las tablas globales de MRSC mediante un testigo

Al crear una tabla global de coherencia alta multirregional (MRSC) con una región testigo, debe tener el siguiente permiso en el recurso de tabla en todas las regiones participantes (incluidas las regiones réplica y la región testigo):

  • dynamodb:CreateGlobalTableWitness

Políticas de IAM de ejemplo para crear tablas globales

La siguiente política basada en la identidad le permite crear una tabla global de MREC o MRSC denominada “usuarios” en tres regiones, incluida la creación del rol vinculado al servicio de replicación de DynamoDB necesario.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingUsersGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

La siguiente política basada en la identidad le permite crear réplicas de tablas globales de DynamoDB en regiones específicas mediante la clave de condición aws:RequestedRegion, incluida la creación del rol vinculado al servicio de replicación de DynamoDB necesario.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowAddingReplicasToSourceTable", "Effect": "Allow", "Action": [ "dynamodb:UpdateTable" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1" ] } } }, { "Sid": "AllowCreatingReplicas", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-2", "us-west-2" ] } } }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

La siguiente política basada en la identidad le permite crear una tabla global de MRSC de DynamoDB denominada “usuarios” con réplicas en us-east-1 y us-east-2 y un testigo en us-west-2, incluida la creación del rol vinculado al servicio de replicación de DynamoDB necesario.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingUsersGlobalTableWithWitness", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:CreateGlobalTableWitness", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users" ] }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

Esta política basada en la identidad le permite crear una tabla global de MRSC con réplicas restringidas en regiones específicas mediante la clave de condición aws:RequestedRegion y la creación de testigos sin restricción en todas las regiones, incluida la creación del rol vinculado al servicio de replicación de DynamoDB necesario.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingReplicas", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } } }, { "Sid": "AllowCreatingWitness", "Effect": "Allow", "Action": [ "dynamodb:CreateGlobalTableWitness" ], "Resource": "*" }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

Actualización de tablas globales

Para modificar la configuración de réplica de una tabla global existente mediante la API de UpdateTable, necesita el siguiente permiso en el recurso de tabla de la región en la que va a realizar la llamada a la API:

  • dynamodb:UpdateTable

Además, puede actualizar otras configuraciones de tablas globales, como las políticas de escalado automático y la configuración del tiempo de vida. Se requieren los siguientes permisos para estas operaciones de actualización adicionales:

  • Para actualizar una política de escalado automático de réplicas con la API de UpdateTableReplicaAutoScaling, debe tener los siguientes permisos en el recurso de la tabla en todas las regiones que contengan réplicas:

    • application-autoscaling:DeleteScalingPolicy

    • application-autoscaling:DeleteScheduledAction

    • application-autoscaling:DeregisterScalableTarget

    • application-autoscaling:DescribeScalableTargets

    • application-autoscaling:DescribeScalingActivities

    • application-autoscaling:DescribeScalingPolicies

    • application-autoscaling:DescribeScheduledActions

    • application-autoscaling:PutScalingPolicy

    • application-autoscaling:PutScheduledAction

    • application-autoscaling:RegisterScalableTarget

  • Para actualizar la configuración de Tiempo de vida con la API de UpdateTimeToLive, debe tener el siguiente permiso en el recurso de la tabla en todas las regiones que contienen réplicas:

    • dynamodb:UpdateTimeToLive

    Tenga en cuenta que el Tiempo de vida (TTL) solo se admite para tablas globales configuradas con coherencia final multirregional (MREC). Para obtener más información sobre cómo funcionan las tablas globales con TTL, consulte Cómo funcionan las tablas globales de DynamoDB.

Eliminación de tablas globales y réplicas

Para eliminar una tabla global, debe eliminar todas las réplicas. Los permisos necesarios para esta operación varían en función de si se elimina una tabla global con o sin una región testigo.

Permisos para eliminar tablas globales y réplicas

Los siguientes permisos son necesarios para eliminar réplicas individuales y para eliminar por completo tablas globales. Al eliminar una configuración de tabla global, solo se elimina la relación de replicación entre tablas de distintas regiones. No se eliminará la tabla de DynamoDB de la última región restante. La tabla de la última región sigue existiendo como tabla estándar de DynamoDB con los mismos datos y configuraciones. Estos permisos se aplican a las tablas globales de coherencia final multirregional (MREC) y coherencia alta multirregional (MRSC).

  • Para eliminar réplicas de una tabla global mediante la API de UpdateTable, necesita el siguiente permiso en el recurso de tabla de la región desde la que va a realizar la llamada a la API:

    • dynamodb:UpdateTable

  • Necesita los siguientes permisos en el recurso de tabla en cada región en la que vaya a eliminar una réplica:

    • dynamodb:DeleteTable

    • dynamodb:DeleteTableReplica

Permisos adicionales para las tablas globales de MRSC mediante un testigo

Para eliminar una tabla global de coherencia alta multirregional (MRSC) con una región testigo, debe tener el siguiente permiso en el recurso de tabla en todas las regiones participantes (incluidas las regiones réplica y la región testigo):

  • dynamodb:DeleteGlobalTableWitness

Políticas de IAM de ejemplo para eliminar las réplicas de una tabla global

Esta política basada en la identidad le permite eliminar una tabla global de DynamoDB denominada “usuarios” y sus réplicas en tres regiones:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateTable", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] } ] }

Esta política basada en la identidad le permite eliminar la réplica y el testigo de una tabla global de MRSC denominada “usuarios”:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateTable", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica", "dynamodb:DeleteGlobalTableWitness" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users" ] } ] }

Uso de las tablas globales de AWS KMS

Como todas las tablas de DynamoDB, las réplicas de tablas globales siempre cifran los datos en reposo mediante claves de cifrado almacenadas en AWS Key Management Service (AWS KMS).

Todas las réplicas de una tabla global se deben configurar con el mismo tipo de clave de KMS (clave propia de AWS, clave administrada de AWS o clave administrada por el cliente).

importante

DynamoDB requiere acceso a la clave de cifrado de la réplica para eliminarla. Si desea desactivar o eliminar una clave administrada por el cliente que se utiliza para cifrar una réplica porque va a eliminar la réplica, primero debe eliminar la réplica, esperar a que el estado de la tabla en una de las réplicas restantes cambie a ACTIVE y luego desactivar o eliminar la clave.

Para una tabla global configurada para una coherencia final de varias regiones (MREC), si desactiva o revoca el acceso de DynamoDB a una clave administrada por el cliente que se utiliza para cifrar una réplica, la replicación hacia y desde la réplica se detendrá y el estado de la réplica cambiará a INACCESSIBLE_ENCRYPTION_CREDENTIALS. Si una réplica de una tabla global de MREC permanece en el estado INACCESSIBLE_ENCRYPTION_CREDENTIALS durante más de 20 horas, la réplica se convierte irreversiblemente en una tabla de DynamoDB de una sola región.

Para una tabla global configurada para una coherencia alta de varias regiones (MRSC), si desactiva o revoca el acceso de DynamoDB a una clave administrada por el cliente que se utiliza para cifrar una réplica, la replicación hacia y desde la réplica se detendrá, los intentos para realizar escrituras o lecturas altamente coherentes en la réplica devolverán un error y el estado de la réplica cambiará a INACCESSIBLE_ENCRYPTION_CREDENTIALS. Si una réplica de una tabla global de MRSC permanece en el estado INACCESSIBLE_ENCRYPTION_CREDENTIALS durante más de siete días, dependiendo de los permisos específicos revocados, la réplica se archivará o quedará inaccesible permanentemente.