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
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 estadoREPLICATION_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:
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.