Uso de IAM con tablas globales
importante
Esta documentación corresponde a la versión 2017.11.29 (heredada) de las tablas globales, lo que debe evitarse en el caso de las tablas globales nuevas. Los clientes deberían utilizar la versión 2019.11.21 (actual) de las tablas globales siempre que sea posible, ya que proporciona mayor flexibilidad, mayor eficacia y consume menos capacidad de escritura que la 2017.11.29 (heredada).
Para determinar qué versión utiliza, consulte Determinación de la versión de las tablas globales de DynamoDB utilizadas. Para actualizar las tablas globales existentes de la versión 2017.11.29 (heredada) a la versión 2019.11.21 (actual), consulte Actualización de tablas globales.
Cuando se crea una tabla global por primera vez, Amazon DynamoDB crea automáticamente un rol vinculado al servicio AWS Identity and Access Management (IAM). Este rol se denomina AWSServiceRoleForDynamoDBReplication
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.
Para crear y mantener las tablas globales en DynamoDB, debe contar con el permiso de dynamodb:CreateGlobalTable
para obtener acceso a cada uno de los siguientes elementos:
-
La réplica de tabla que quiera agregar.
-
Cada réplica existente que ya forme parte de la tabla global.
-
La misma tabla global.
Para actualizar la configuración (UpdateGlobalTableSettings
) para una tabla global en DynamoDB, debe tener los permisos dynamodb:UpdateGlobalTable
, dynamodb:DescribeLimits
, application-autoscaling:DeleteScalingPolicy
y application-autoscaling:DeregisterScalableTarget
.
Se requieren los permisos application-autoscaling:DeleteScalingPolicy
y application-autoscaling:DeregisterScalableTarget
cuando se actualiza una política de escalado existente. Esto es para que el servicio de tablas globales pueda eliminar la política de escalado anterior antes de adjuntar la nueva política a la tabla o al índice secundario.
Si usa una política de IAM para administrar el acceso a una réplica de tabla, deberá aplicar una política idéntica al resto de réplicas de dicha tabla global. De este modo, podrá mantener un modelo de permisos coherente en todas las réplicas de tablas.
Al usar políticas de IAM idénticas en todas las réplicas de una tabla global, puede evitar que se conceda inintencionadamente acceso de lectura y escritura a la tabla global de datos. Pongamos como ejemplo a un usuario que obtenga acceso a una única réplica de una tabla global. Si tal usuario puede escribir en esa réplica, DynamoDB propagará lo que haya escrito al resto de las réplicas de tabla. En efecto, el usuario puede escribir (indirectamente) en el resto de réplicas de la tabla global. Esta situación se puede evitar si usa políticas de IAM coherentes en todas las tablas de réplica.
Ejemplo: permitir la acción CreateGlobalTable
Antes de agregar una réplica a una tabla global, debe contar con el permiso de dynamodb:CreateGlobalTable
de la tabla global y de cada una de sus tablas de réplica.
La siguiente política de IAM concede permiso para llevar a cabo la acción CreateGlobalTable
en todas las tablas.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:CreateGlobalTable"], "Resource": "*" } ] }
Ejemplo: permitir las acciones UpdateGlobalTable, DescribeLimits, application-autoscaling:DeleteScalingPolicy y application-autoscaling:DeregisterScalableTarget
Para actualizar la configuración (UpdateGlobalTableSettings
) para una tabla global en DynamoDB, debe tener los permisos dynamodb:UpdateGlobalTable
, dynamodb:DescribeLimits
, application-autoscaling:DeleteScalingPolicy
y application-autoscaling:DeregisterScalableTarget
.
La siguiente política de IAM concede permiso para llevar a cabo la acción UpdateGlobalTableSettings
en todas las tablas.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateGlobalTable", "dynamodb:DescribeLimits", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeregisterScalableTarget" ], "Resource": "*" } ] }
Ejemplo: permitir la acción CreateGlobalTable para un nombre de tabla global específico con réplicas permitidas solo en ciertas regiones
La siguiente política de IAM concede permisos para permitir la acción CreateGlobalTable
para crear una tabla global denominada Customers
con réplicas en dos regiones.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:CreateGlobalTable", "Resource": [ "arn:aws:dynamodb::123456789012:global-table/Customers", "arn:aws:dynamodb:us-east-1:123456789012:table/Customers", "arn:aws:dynamodb:us-west-1:123456789012:table/Customers" ] } ] }