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

Uso de las tablas globales de AWS IAM

Rol vinculado a servicios de replicación

Cuando se crea una tabla global por primera vez, Amazon DynamoDB crea automáticamente un rol vinculado a servicios (SLR) de AWS Identity and Access Management (IAM). El SLR se denomina AWSServiceRoleForDynamoDBReplication y permite que DynamoDB administre la replicación entre regiones de las tablas globales en su nombre.

Al aplicar políticas basadas en recursos a las réplicas, asegúrese de no denegar ninguno de los permisos definidos en la política AWSServiceRoleForDynamoDBReplication 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.

  • Si una réplica en una tabla global configurada para coherencia final de varias regiones (MREC) 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.

  • Las réplicas de tablas globales configuradas para una coherencia alta de varias regiones (MRSC) devuelven una AccessDeniedException para operaciones de escritura y lectura altamente coherentes. Si una réplica de una tabla global de MRSC 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, también 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 para gestionar 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 política AWSServiceRoleForApplicationAutoScaling_DynamoDBTable a la entidad principal de SLR del servicio de escalado automático de aplicaciones, ya que esto interrumpiría la funcionalidad de escalado automático.

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.

Permisos necesarios para las tablas globales

Para crear una réplica, debe tener el siguiente permiso en la tabla o réplica a la que va a agregar nuevas réplicas:

  • dynamodb:UpdateTable

Para crear una réplica, debe tener los siguientes permisos en cada región donde se creará una nueva réplica:

  • dynamodb:CreateTable

  • dynamodb:CreateTableReplica

Para crear un testigo, debe tener el siguiente permiso en la región donde se creará un nuevo testigo:

  • dynamodb:CreateGlobalTableWitness

Para eliminar una réplica, debe tener los siguientes permisos en la réplica:

  • dynamodb:DeleteTable

  • dynamodb:DeleteTableReplica

Para eliminar un testigo, debe tener los siguientes permisos en el testigo:

  • dynamodb:DeleteGlobalTableWitness

Para actualizar una política de escalado automático de réplicas mediante la API de UpdateTableReplicaAutoScaling, debe tener los siguientes permisos 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 todas las réplicas:

  • dynamodb:UpdateTimeToLive

Ejemplos de políticas de IAM

Ejemplo: administración de una tabla global

La política de IAM siguiente concede permisos para crear y eliminar réplicas y testigos de tablas globales para la tabla de “usuarios” en tres regiones:

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowManagingUsersGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:CreateGlobalTableWitness", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica", "dynamodb:DeleteGlobalTableWitness", "dynamodb:UpdateTable", "dynamodb:UpdateTimeToLive" ], "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" ] } ] }

Ejemplo: exclusión de los permisos de SLR necesarios de las políticas de denegación con caracteres comodín

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:

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

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.