Creación de una tabla con una política basada en recursos - Amazon DynamoDB

Creación de una tabla con una política basada en recursos

Puede añadir una política basada en recursos al crear una tabla desde la consola de DynamoDB, la API CreateTable, la AWS CLI, el SDK de AWS o una plantilla de AWS CloudFormation.

En el siguiente ejemplo se crea una tabla denominada MusicCollection con el comando create-table de la AWS CLI. Este comando también incluye el parámetro resource-policy que añade a la tabla una política basada en recursos. Esta política permite al usuario John realizar las acciones de las API RestoreTableToPointInTime, GetItem y PutItem en la tabla.

Recuerde reemplazar el texto en cursiva por la información específica del recurso.

aws dynamodb create-table \ --table-name MusicCollection \ --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \ --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --resource-policy \ "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:user/John\" }, \"Action\": [ \"dynamodb:RestoreTableToPointInTime\", \"dynamodb:GetItem\", \"dynamodb:DescribeTable\" ], \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\" } ] }"
  1. Inicie sesión en la AWS Management Console y abra la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.

  2. En el panel, elija Crear tabla.

  3. En Detalles de la tabla, especifique el nombre de la tabla, la clave de partición y los detalles de la clave de clasificación.

  4. En Configuración de la tabla, elija Personalizar configuración.

  5. (Opcional) Especifique sus opciones para Clase de tabla, Calculadora de capacidad, Configuración de capacidad de lectura/escritura, Índices secundarios, Cifrado en reposo y Protección contra eliminaciones.

  6. En Política basada en recursos, añada una política para definir los permisos de acceso a la tabla y sus índices. En esta política, se especifica quién tiene acceso a estos recursos y las acciones que se les permite realizar en cada recurso. Para añadir una política, realice alguna de las siguientes operaciones:

    • Escriba o pegue un documento de política de JSON. Para obtener más información sobre el lenguaje de las políticas de IAM, consulte Creación de políticas mediante el editor JSON en la Guía del usuario de IAM.

      sugerencia

      Para ver ejemplos de políticas basadas en recursos en la Guía para desarrolladores de Amazon DynamoDB, elija Ejemplos de políticas.

    • Elija Agregar nueva instrucción. A continuación, añada una nueva instrucción y especifique la información en los campos proporcionados. Repita este paso para tantas instrucciones como desee agregar.

    importante

    Asegúrese de resolver advertencias de seguridad, los errores y las sugerencias antes de guardar la política.

    La siguiente política de IAM de ejemplo permite al usuario John realizar las acciones de la API RestoreTableToPointInTime, GetItem y PutItem en la tabla MusicCollection.

    Recuerde reemplazar el texto en cursiva por la información específica del recurso.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/John" }, "Action": [ "dynamodb:RestoreTableToPointInTime", "dynamodb:GetItem", "dynamodb:PutItem" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection" } ] }
  7. (Opcional) Elija Preview external access (Vista previa del acceso externo) en la esquina inferior derecha para obtener una vista previa de cómo la política nueva afecta al acceso público y entre cuentas al recurso. Antes de guardar la política, puede comprobar si introduce nuevos hallazgos de IAM Access Analyzer o resuelve las conclusiones existentes. Si no ve un analizador activo, elija Go to Access Analyzer (Ir a Access Analyzer) para crear un analizador de la cuenta en Access Analyzer de IAM. Para obtener más información, consulte Acceso de vista previa.

  8. Elija Crear tabla.

Using the AWS::DynamoDB::Table resource

La siguiente plantilla de CloudFormation crea una tabla con una secuencia mediante el recurso AWS::DynamoDB::Table. Esta plantilla también incluye políticas basadas en recursos que se adjuntan tanto a la tabla como a la secuencia.

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "MusicCollectionTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "Artist", "KeyType": "HASH" } ], "BillingMode": "PROVISIONED", "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 }, "StreamSpecification": { "StreamViewType": "OLD_IMAGE", "ResourcePolicy": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::111122223333:user/John" }, "Effect": "Allow", "Action": [ "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:DescribeStream" ], "Resource": "*" } ] } } }, "TableName": "MusicCollection", "ResourcePolicy": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/John" ] }, "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "*" } ] } } } } } }
Using the AWS::DynamoDB::GlobalTable resource

La siguiente plantilla de CloudFormation crea una tabla con el recurso AWS::DynamoDB::GlobalTable y adjunta una política basada en recursos a la tabla y a su secuencia.

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "GlobalMusicCollection": { "Type": "AWS::DynamoDB::GlobalTable", "Properties": { "TableName": "MusicCollection", "AttributeDefinitions": [{ "AttributeName": "Artist", "AttributeType": "S" }], "KeySchema": [{ "AttributeName": "Artist", "KeyType": "HASH" }], "BillingMode": "PAY_PER_REQUEST", "StreamSpecification": { "StreamViewType": "NEW_AND_OLD_IMAGES" }, "Replicas": [ { "Region": "us-east-1", "ResourcePolicy": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/John" ] }, "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "*" }] } }, "ReplicaStreamSpecification": { "ResourcePolicy": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Principal": { "AWS": "arn:aws:iam::111122223333:user/John" }, "Effect": "Allow", "Action": [ "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:DescribeStream" ], "Resource": "*" }] } } } } ] } } } }