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
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 paraiam: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:) se o perfil servir a um único fluxo.region:your-account-id:cluster/cluster-id/stream/stream-id
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.