View a markdown version of this page

Configuración de IAM - Amazon Aurora DSQL

Configuración de IAM

importante

Esta característica se ofrece como versión preliminar de AWS y está sujeta a cambios. Para obtener más información, consulte la sección 2, Betas y versiones preliminares, del documento Términos de servicio de AWS. Para obtener más información acerca de los precios de los flujos de CDC, visite la página Precios de Amazon Aurora DSQL.

Antes de la disponibilidad general, añadiremos nuevos tipos de operaciones ("op": "u" para actualizaciones) a la carga útil de su flujo. Para garantizar que su aplicación gestione estos cambios sin necesidad de modificaciones, trate cualquier valor op no reconocido como una operación upsert aplicando la carga útil after. Para obtener más información, consulte Descripción de los registros de CDC.

Los flujos de CDC requieren dos conjuntos distintos de permisos de IAM:

  • Permisos de intermediario: la entidad principal de IAM que llama a las operaciones de la API del flujo de CDC (CreateStream, GetStream, DeleteStream y ListStreams) necesita permiso para realizar estas acciones y para iam:PassRole.

  • Rol de servicio: un rol de IAM que Aurora DSQL asume en tiempo de ejecución para escribir los registros de CDC en su destino. Debe crear este rol, asociar una política de confianza que permita que la entidad principal de Aurora DSQL la asuma y asociar una política de permisos que conceda acceso de escritura al destino.

nota

El rol de servicio de CDC es independiente de cualquier política basada en recursos del clúster de Aurora DSQL. Una política de clúster basada en los recursos controla qué entidades principales pueden conectarse al clúster y consultarlo. El rol de servicio de CDC controla en qué destino puede escribir Aurora DSQL los registros de CDC.

Permisos de intermediario

La entidad principal de IAM que llama a las operaciones de la API del flujo de CDC necesita permisos para las acciones dsql pertinentes y iam:PassRole. La operación CreateStream necesita iam:PassRole porque transfiere el ARN del rol de servicio a Aurora DSQL. A continuación se muestra un ejemplo de política:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DSQLStreamActions", "Effect": "Allow", "Action": [ "dsql:CreateStream", "dsql:GetStream", "dsql:ListStreams", "dsql:DeleteStream" ], "Resource": [ "arn:aws:dsql:region:your-account-id:cluster/cluster-id", "arn:aws:dsql:region:your-account-id:cluster/cluster-id/stream/*" ] }, { "Sid": "PassServiceRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/dsql-cdc-role", "Condition": { "StringEquals": { "iam:PassedToService": "dsql.amazonaws.com" } } } ] }

El elemento Resource incluye tanto el ARN del clúster (requerido por CreateStream y ListStreams) como el patrón de ARN de flujo (requerido por GetStream y DeleteStream).

Para obtener una lista completa de los permisos necesarios para cada operación, consulte CreateStream, GetStream, DeleteStream y ListStreams en la Referencia de la API de Amazon Aurora DSQL.

Rol de servicio

El rol de servicio es el rol de IAM que asume Aurora DSQL para escribir registros de CDC en su destino. Usted crea este rol y pasa su ARN en el campo targetDefinition.kinesis.roleArn al llamarCreateStream. El rol requiere una política de confianza y una política de permisos.

Política de confianza del rol de servicio

La política de confianza debe permitir que la entidad principal de servicio de Aurora DSQL asuma el rol. Para protegerse contra ataques de suplente confuso, utilice las claves de condición aws:SourceAccount y aws:SourceArn.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DSQLAssumeRole", "Effect": "Allow", "Principal": { "Service": "dsql.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:dsql:region:your-account-id:cluster/cluster-id/stream/*" } } } ] }

La condición aws:SourceArn restringe el rol a los flujos de un clúster específico. Debe usar el comodín (stream/*) al crear un flujo, porque Aurora DSQL aún no ha asignado el identificador de flujo. Una vez creado un flujo, puede restringir la condición al ARN exacto del flujo (arn:aws:dsql:region:your-account-id:cluster/cluster-id/stream/stream-id) si el rol gestiona un único flujo.

Para usar el rol con los flujos en cualquier clúster de su cuenta, use un comodín más amplio: arn:aws:dsql:region:your-account-id:cluster/*/stream/*.

Para obtener más información sobre la prevención de ataques de suplente confuso, consulte Prevención de la sustitución confusa entre servicios en esta guía.

Política de permisos de roles de servicio

La política de permisos concede al rol de servicio acceso para escribir registros en su flujo de datos de Kinesis. La siguiente política incluye tanto permisos de escritura de Kinesis como permisos de AWS KMS. La instrucción KMSAccess solo es necesaria si el flujo de datos de Kinesis utiliza una clave administrada por el cliente de AWS KMS, pero puede incluirla de forma preventiva para que, si añade una clave administrada por el cliente más adelante, no se vea afectado su flujo de CDC.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KinesisAccess", "Effect": "Allow", "Action": [ "kinesis:PutRecord", "kinesis:PutRecords", "kinesis:DescribeStreamSummary", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:your-account-id:stream/kinesis-stream-name" }, { "Sid": "KMSAccess", "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:*:*:key/*", "Condition": { "StringEquals": { "kms:ViaService": "kinesis.region.amazonaws.com", "kms:EncryptionContext:aws:kinesis:arn": "arn:aws:kinesis:region:your-account-id:stream/kinesis-stream-name", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } } ] }

Las condiciones de la instrucción AWS KMS proporcionan las siguientes protecciones:

  • kms:ViaService: limita el uso de claves a las solicitudes que llegan a través del servicio de Kinesis de la región especificada.

  • kms:EncryptionContext:aws:kinesis:arn: limita el uso de claves a las operaciones de cifrado del flujo de datos de Kinesis especificado.

  • aws:ResourceAccount: la clave debe pertenecer a la misma cuenta de AWS que la entidad principal que realiza la llamada, lo que impide el uso de claves entre cuentas.

nota

La clave AWS KMS a la que se hace referencia aquí es la clave de cifrado del flujo de datos de Kinesis, no la clave de AWS KMS del clúster. La clave de cifrado del clúster protege los datos de CDC dentro de los límites de Aurora DSQL. La clave de cifrado de Kinesis protege los datos de CDC después de que Aurora DSQL los escriba en el flujo de datos de Kinesis.

Protección de datos

Aurora DSQL utiliza el protocolo de seguridad de la capa de transporte (TLS) para cifrar los datos de CDC en tránsito entre Aurora DSQL y su destino. Dentro de los límites de Aurora DSQL, este servicio cifra los datos de CDC en reposo utilizando la clave de cifrado del clúster.

Si el clúster usa una clave administrada por el cliente de AWS KMS y se pierde el acceso a dicha clave, un flujo ACTIVE o IMPAIRED pasa a IMPAIRED con el código de error CLUSTER_CMK_INACCESSIBLE. Si se pierde el acceso a la clave antes de que finalice la creación del flujo, esta pasa directamente a FAILED.

Para obtener una explicación detallada del cifrado en Aurora DSQL, consulte Cifrado de datos para Amazon Aurora DSQL en esta guía.