View a markdown version of this page

Configuração do IAM - Amazon Aurora DSQL

Configuração do IAM

Importante

Esse recurso é fornecido como visualização prévia da AWS e está sujeito a alterações. Para obter mais informações, consulte a seção 2, Versões beta e visualizações prévias, nos Termos de serviço da AWS. Para saber mais sobre precificação para fluxos de CDC, consulte a página de precificação do Aurora DSQL.

Antes da disponibilidade geral, adicionaremos novos tipos de operação ("op": "u" para atualizações) à carga útil do fluxo. Para garantir que seu aplicativo processe essas alterações sem modificações, trate qualquer valor op não reconhecido como um acréscimo aplicando a carga útil after. Para mais detalhes, consulte Noções básicas sobre os registros de CDC.

Os fluxos de CDC exigem dois conjuntos separados de permissões do IAM:

  • Permissões do chamador: a entidade principal do IAM que chama as operações da API de fluxo de CDC (CreateStream, GetStream, DeleteStream, ListStreams) precisa de permissão para essas ações e para iam:PassRole.

  • Perfil de serviço: um perfil do IAM que o Aurora DSQL assume em runtime para gravar registros de CDC em seu destino. Você cria esse perfil, anexa uma política de confiança que permite que a entidade principal do serviço do Aurora DSQL o assuma e anexa uma política de permissões que concede acesso de gravação ao destino.

nota

O perfil de serviço de CDC é separado de qualquer política baseada em recursos em seu cluster do Aurora DSQL. Uma política baseada em recursos de cluster controla quais entidades principais podem se conectar e consultar o cluster. O perfil de serviço de CDC controla em qual destino o Aurora DSQL pode gravar registros de CDC.

Permissões do chamador

A entidade principal do IAM que chama as operações de API do fluxo de CDC precisa de permissões para as ações dsql relevantes e iam:PassRole. A operação CreateStream requer iam:PassRole porque ela transmite o ARN do perfil de serviço para o Aurora DSQL. Veja abaixo um exemplo 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" } } } ] }

O elemento Resource inclui o ARN do cluster (exigido por CreateStream e ListStreams) e o padrão de ARN do fluxo (exigido por GetStream e DeleteStream).

Para obter uma lista completa das permissões necessárias para cada operação, consulte CreateStream, GetStream, DeleteStream e ListStreams na Referência de API do Amazon Aurora DSQL.

Perfil de serviço

O perfil de serviço é o perfil do IAM que o Aurora DSQL assume para gravar registros de CDC em seu destino. Você cria essa função e transmite o ARN no campo targetDefinition.kinesis.roleArn ao chamar CreateStream. O perfil exige uma política de confiança e uma política de permissões.

Política de confiança do perfil de serviço

A política de confiança deve permitir que a entidade principal do serviço do Aurora DSQL assuma o perfil. Para se proteger contra ataques confused deputy, use as chaves de condição aws:SourceAccount e 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/*" } } } ] }

A condição aws:SourceArn restringe o perfil aos fluxos em um cluster específico. Você deve usar o curinga (stream/*) ao criar um fluxo porque o Aurora DSQL ainda não atribuiu o identificador do fluxo. Depois de criar um fluxo, você pode restringir a condição ao ARN exato do fluxo (arn:aws:dsql:region:your-account-id:cluster/cluster-id/stream/stream-id) se o perfil servir a um único fluxo.

Para usar o perfil com fluxos em qualquer cluster em sua conta, use um curinga mais amplo: arn:aws:dsql:region:your-account-id:cluster/*/stream/*.

Para saber mais sobre a prevenção contra ataques confused deputy, consulte Prevenção contra o ataque do “substituto confuso” em todos os serviços neste guia.

Política de permissões do perfil de serviço

A política de permissões concede o acesso ao perfil de serviço para gravar registros em seu fluxo de dados do Kinesis. A política a seguir inclui tanto as permissões de gravação do Kinesis quanto as permissões do AWS KMS. A instrução KMSAccess só será necessária se seu fluxo de dados do Kinesis usar uma chave gerenciada pelo cliente do AWS KMS, mas você pode incluí-la preventivamente para que a adição de uma chave gerenciada pelo cliente não interrompa seu fluxo de CDC posteriormente.

{ "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}" } } } ] }

As condições na instrução AWS KMS fornecem as seguintes proteções:

  • kms:ViaService: restringe o uso da chave às solicitações que chegam por meio do serviço do Kinesis na região especificada.

  • kms:EncryptionContext:aws:kinesis:arn: restringe o uso da chave às operações de criptografia para o fluxo de dados do Kinesis especificado.

  • aws:ResourceAccount: a chave deve pertencer à mesma conta da AWS da entidade principal responsável pela chamada, o que impede o uso da chave entre contas.

nota

A chave do AWS KMS referenciada aqui é a chave de criptografia no fluxo de dados do Kinesis, não a chave do AWS KMS do cluster. A chave de criptografia do cluster protege os dados de CDC dentro do limite do Aurora DSQL. A chave de criptografia do Kinesis protege os dados de CDC depois que o Aurora DSQL os grava no fluxo de dados do Kinesis.

Proteção de dados

O Aurora DSQL usa a Transport Layer Security (TLS) para criptografar dados em trânsito de CDC entre o Aurora DSQL e seu destino. Dentro do limite do Aurora DSQL, o Aurora DSQL criptografa os dados em repouso de CDC usando a chave de criptografia do cluster.

Se o cluster usar uma chave gerenciada pelo cliente do AWS KMS e essa chave ficar inacessível, um fluxo ACTIVE ou IMPAIRED mudará para IMPAIRED com o código de erro CLUSTER_CMK_INACCESSIBLE. Se a chave ficar inacessível antes que o fluxo termine de ser criado, o fluxo mudará diretamente para FAILED.

Para obter uma explicação detalhada sobre criptografia no Aurora DSQL, consulte Criptografia de dados para o Amazon Aurora DSQL neste guia.