Prevenção contra o ataque do “substituto confuso” em todos os serviços - Amazon Quantum Ledger Database (Amazon QLDB)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Prevenção contra o ataque do “substituto confuso” em todos os serviços

O problema “confused deputy” é um problema de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executá-la. Em AWS, a falsificação de identidade entre serviços pode resultar no problema confuso do deputado.

A imitação entre serviços pode ocorrer quando um serviço (o serviço de chamada) chama outro serviço (o serviço chamado). O serviço de chamada pode ser manipulado para utilizar as suas permissões para atuar nos recursos de outro cliente em que, de outra forma, ele não teria permissão para acessar. Para evitar esse problema confuso, AWS fornece ferramentas que ajudam você a proteger seus dados em todos os serviços com diretores de serviços que receberam acesso aos recursos em sua conta.

Recomendamos o uso das chaves de contexto de condição global aws:SourceArn e aws:SourceAccount em políticas de recursos para limitar as permissões que o Amazon QLDB concede ao recurso para outro serviço. Se você utilizar ambas as chaves de contexto de condição global, o valor aws:SourceAccount e a conta no valor aws:SourceArn deverão utilizar o mesmo ID de conta quando utilizados na mesma instrução de política.

A tabela a seguir lista os valores possíveis de aws:SourceArn para as operações QLDB API ExportJournalToS3 e StreamsJournalToKinesis. Essas operações estão no escopo desse problema de segurança porque elas chamam AWS Security Token Service (AWS STS) para assumir uma função do IAM especificada por você.

Operação de API Serviço chamado leis: SourceArn
ExportJournalToS3 AWS STS (AssumeRole)

Permite que o QLDB assuma a função de qualquer recurso QLDB na conta:

arn:aws:qldb:us-east-1:123456789012:*

Atualmente, o QLDB suporta apenas esse ARN curinga para exportações de diários.

StreamsJournalToKinesis AWS STS (AssumeRole)

Permite que o QLDB assuma a função de um fluxo QLDB específico:

arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/IiPT4brpZCqCq3f4MTHbYy

Observação: você só pode especificar um ID de fluxo no ARN após a criação do recurso de fluxo. Usando esse ARN, você pode permitir que a função seja usada somente para um único fluxo do QLDB.

Permite que o QLDB assuma a função de qualquer fluxo QLDB de um ledger:

arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*

Permite que o QLDB assuma a função de qualquer fluxo de QLDB na conta:

arn:aws:qldb:us-east-1:123456789012:stream/*

Permite que o QLDB assuma a função de qualquer recurso QLDB na conta:

arn:aws:qldb:us-east-1:123456789012:*

A maneira mais eficaz de se proteger contra o problema do substituto confuso é usar a chave de contexto de condição global aws:SourceArn com o ARN completo do recurso. Se você não conhecer o ARN completo do recurso ou se estiver especificando vários recursos, use a chave de condição de contexto global aws:SourceArn com caracteres curingas (*) para as porções desconhecidas do ARN, por exemplo, arn:aws:qldb:us-east-1:123456789012:*.

O exemplo de política de confiança de uma função IAM a seguir mostra como é possível usar as chaves de contexto de condição globais aws:SourceArn e aws:SourceAccount para evitar o problema de substituto confuso. Com essa política de confiança, o QLDB pode assumir a função de qualquer fluxo de QLDB na conta 123456789012 somente para o ledger myExampleLedger.

Para usar essa política, substitua us-east-1, 123456789012 e, no exemplo, por suas próprias informações. myExampleLedger

{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "qldb.amazonaws.com" }, "Action": [ "sts:AssumeRole" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } }