View a markdown version of this page

Criptografando eventos em um barramento de eventos personalizado - Amazônia EventBridge

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á.

Criptografando eventos em um barramento de eventos personalizado

Um barramento criptografa tudo o que ele armazena: cargas de eventos, metadados de eventos, filtros de assinantes e configuração de destino do assinante. Por padrão, ele usa uma chave que AWS possui e você não configura nada. Em vez disso, para criptografar um barramento com sua própria AWS KMS chave, defina EncryptionConfiguration.KmsKeyIdentifier quando você cria ou atualiza o barramento, por exemploaws eventsv2 create-event-bus --name orders --encryption-configuration KmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab, e adicione as três instruções Escrevendo a política chave à política de chaves.

Escolhendo a chave que criptografa um barramento

Omita EncryptionConfiguration e EventBridge criptografa o barramento com AES de 256 bits sob uma chave própria. AWS Você não pode visualizar ou gerenciar essa chave, seu uso não aparece em seus CloudTrail registros, não custa nada, não é contabilizado em suas AWS KMS cotas e é AWS alternado mensalmente. DescribeEventBusnão retorna EncryptionConfiguration para esse ônibus. Para obter mais informações, consulte Chaves de propriedade da AWS no AWS KMS Guia do desenvolvedor do .

Configure EncryptionConfiguration.KmsKeyIdentifier e EventBridge criptografe o barramento com sua chave gerenciada pelo cliente. Em seguida, você controla a política, a rotação, a desativação e a exclusão da chave e vê cada uso da chave em. CloudTrail A chave incorre na taxa AWS KMS mensal da chave e nas cobranças de solicitação. Como EventBridge criptografa e descriptografa eventos localmente em uma chave de ramificação em cache (consulteComo o ônibus usa sua chave), ele faz algumas AWS KMS solicitações por barramento por janela de cache mais rotação; a contagem de solicitações não aumenta com o volume de eventos. Para obter mais informações, consulte Preços do AWS KMS.

KmsKeyIdentifieraceita um ID de chave, um ARN de chave, um nome de alias comoalias/orders, ou um alias ARN. EventBridge qualifica um ID de chave simples ou nome de alias em sua conta e região, portanto, uma chave em outra conta deve ser nomeada pelo ARN completo da chave. Um alias é resolvido para sua chave quando você cria ou atualiza o barramento, e as respostas de criação e descrição retornam o ARN dessa chave. Re-pointing o alias posteriormente não altera a chave que um barramento usa. A chave deve ser uma chave de criptografia simétrica (SYMMETRIC_DEFAULT, uso da chaveENCRYPT_DECRYPT); EventBridge rejeita chaves assimétricas e HMAC. Uma chave multirregional funciona como uma chave comum: nomeie a réplica na região do ônibus, porque não EventBridge replica nem seus dados nem seu material de chave entre as regiões. Chaves com material de chave importado e chaves em um armazenamento de chaves externo são suportadas.

aws eventsv2 create-event-bus \ --name orders \ --encryption-configuration KmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Sua chave criptografa as cargas e os metadados do evento que o barramento retém, as cópias mantidas para cada assinante durante a entrega e os filtros do assinante e a configuração do alvo. Quatro coisas não são criptografadas com sua chave, pois EventBridge precisa delas para rotear e pesquisar eventos: o nome do ônibus, o ARN e o ID da conta; o ID do grupo de eventos que solicita a entrega do FIFO, portanto, não coloque dados confidenciais nele; o ID de desduplicação, que é EventBridge armazenado como um hash unidirecional; e resultados de correspondência internos e números de sequência. Os serviços de armazenamento criptografam os que estão em repouso com suas próprias chaves.

Como o ônibus usa sua chave

Quando você configura uma chave gerenciada pelo cliente, EventBridge cria uma chave de ramificação para o barramento: uma chave intermediária, armazenada em uma tabela gerenciada por serviços e agrupada por sua AWS KMS chave, seguindo o chaveiro hierárquico do SDK de AWS criptografia. EventBridge deriva uma chave de dados da chave de ramificação para cada evento, portanto, criptografa e descriptografa eventos localmente sem uma AWS KMS chamada por evento.

  • Quando você publica um evento, EventBridge criptografa-o com a chave de ramificação do bus antes de gravá-lo no armazenamento.

  • Ao EventBridge entregar um evento, ele descriptografa o evento para avaliar os filtros e entregá-lo. O alvo recebe o evento descriptografado; a criptografia no alvo é responsabilidade do serviço de destino.

  • EventBridge armazena em cache a chave de ramificação na memória por até 15 minutos. Quando o cache expira, ele chama kms:Decrypt sua chave para desembrulhar a chave de ramificação novamente.

  • EventBridge cria uma nova versão da chave de filial a cada 30 dias e mantém as versões mais antigas, para que os eventos gravados anteriormente permaneçam legíveis durante o período de retenção do ônibus.

EventBridge alcança sua chave em dois caminhos, e a política de chaves deve permitir ambos. Para as verificações executadas enquanto sua chamada de API está em andamento, ele usa suas credenciais, encaminhadas pela chamada. Para o trabalho que realiza após o retorno da chamada, como entregar eventos e gerenciar a chave da filial, ele atua como o principal do events.amazonaws.com serviço, porque suas credenciais não estão mais disponíveis.

Escrevendo a política chave

Adicione três declarações à política de chaves: uma que permita que seus diretores validem a chave, outra que permita que eles passem pelas verificações de acesso EventBridge com suas credenciais e outra para o diretor do events.amazonaws.com serviço. Cada AWS KMS solicitação feita EventBridge por um barramento carrega a chave de contexto de criptografia aws:events:event-busv2:arn com o ARN do barramento, em ambos os caminhos de acesso, de modo que a segunda e a terceira instruções têm como escopo um barramento. Um ARN de barramento termina em um sufixo que é EventBridge gerado na criação, então combine-o com StringLike e um final. /* Mantenha também suas próprias declarações administrativas importantes na política. Substitua a conta, a região, a função e o nome do barramento no exemplo a seguir.

{ "Version": "2012-10-17", "Id": "eventbridge-custom-event-bus-key-policy", "Statement": [ { "Sid": "AllowKeyValidationThroughEventBridge", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "events.us-east-1.amazonaws.com" } } }, { "Sid": "AllowKeyUseThroughEventBridge", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "events.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:events:event-busv2:arn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } } }, { "Sid": "AllowEventBridgeServicePrincipal", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:events:event-busv2:arn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } } } ] }

AllowKeyValidationThroughEventBridgepermite que seus diretores validem a chave ao criar ou atualizar um barramento. EventBridge liga kms:DescribeKey com suas credenciais para confirmar que a chave existe, é simétrica e está ativada. DescribeKeynão usa contexto de criptografia, portanto, essa declaração não tem nenhum; a kms:ViaService limita às solicitações recebidas EventBridge.

AllowKeyUseThroughEventBridgeautoriza as verificações de acesso que são EventBridge executadas com suas credenciais antes de aceitar uma configuração de chave e antes de gravar ou ler dados criptografados para você, para que você não possa configurar uma chave que o trabalho assíncrono posterior do serviço não possa usar. As verificações são tiradas a AWS KMS seco: elas autorizam, mas não criptografam e descriptografam nada. Elas são cobradas como AWS KMS solicitações padrão e contam para suas cotas de AWS KMS solicitação; consulte Testar suas permissões no Guia do AWS KMS desenvolvedor. Cada operação verifica as ações que seu trabalho posterior executa:

  • CreateEventBuscom as verificações de chaves gerenciadas pelo clientekms:GenerateDataKeyWithoutPlaintext,kms:ReEncryptFrom, kms:ReEncryptTokms:Decrypt, e as ações que a criação da chave de ramificação e as leituras posteriores executam.

  • UpdateEventBusque altera a chave verifica kms:Decrypt a chave atual kms:Encrypt e kms:Decrypt a nova chave.

  • PutEventse PutRawEvents em um ônibus com uma verificação de chave gerenciada pelo clientekms:Decrypt. Um produtor que não consegue ler os eventos do ônibus também não pode escrevê-los. Sem isso, a chamada de publicação falha com a AccessDeniedException nomenclatura. KMS_ACCESS_DENIED

  • CreateSubscribere UpdateSubscriber verifiquekms:Decrypt, porque a configuração do assinante é criptografada sob a chave de barramento.

Portanto, esta declaração deve abranger todas as funções que criam ou atualizam o ônibus, publicam nele ou criam assinantes nele. Principal Liste os ARNs da função ou nomeie o principal raiz da conta para delegar a decisão às políticas do IAM em sua conta.

AllowEventBridgeServicePrincipalautoriza que o trabalho seja EventBridge executado conforme o serviço após a conclusão da chamada. kms:GenerateDataKeyWithoutPlaintext,kms:ReEncryptFrom, e kms:ReEncryptTo crie a chave da filial do ônibus e suas novas versões em rotação. kms:Decryptdesembrulha a chave da ramificação para entregar eventos, carregar a configuração do assinante e retornar a configuração descriptografada nas chamadas de descrição. kms:Decryptcom kms:Encrypt embrulha novamente a chave da filial quando você troca a chave do ônibus.

A chave pode estar em outra conta, por exemplo, uma conta de segurança central. Coloque todas as três declarações na política dessa chave, com as funções da conta de ônibus como as principais das duas primeiras e o ARN do barramento da conta de ônibus nos valores do contexto de criptografia. As funções da conta de ônibus também precisam de políticas de identidade do IAM que permitam as mesmas AWS KMS ações no ARN da chave, porque o AWS KMS acesso entre contas exige permissão de ambos os lados. Nomeie a chave pelo ARN da chave completa.

Definindo o escopo da política principal para um ônibus

Para limitar uma declaração a um ônibus, condicione-akms:EncryptionContext:aws:events:event-busv2:arn. Antes que o ônibus exista, use StringLike com um arrasto/*, como na política anterior. Para um barramento existente, você pode combinar o ARN exato que DescribeEventBus retorna comStringEquals. Cada solicitação feita com suas credenciais também é preenchida kms:ViaService comevents.region.amazonaws.com, então você pode restringir seus diretores a usar apenas a chave. EventBridge

As solicitações feitas EventBridge como principal do serviço são enviadas aws:SourceArn com o ARN do ônibus e aws:SourceAccount com a conta do ônibus. Adicione-os para AllowEventBridgeServicePrincipal que EventBridge você possa usar sua chave somente em seus próprios ônibus.

"Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } }

As operações individuais de publicação e entrega usam a chave de ramificação em cache e não verificam novamente a política de chaves por evento. Uma alteração importante na política, incluindo uma que remove EventBridge o acesso, entra em vigor no tratamento de dados de um barramento quando a chave da filial em cache expira, em 15 minutos.

Alterando ou removendo a chave em um ônibus

Ligue UpdateEventBus para mover um ônibus da chave AWS própria para uma chave gerenciada pelo cliente, de uma chave gerenciada pelo cliente para outra ou de volta para a AWS chave própria. Para retornar à chave AWS de propriedade, envie EncryptionConfiguration presente e vazio, como--encryption-configuration '{}'. Omita EncryptionConfiguration completamente e o ônibus manterá sua chave atual.

O ônibus entra UPDATING enquanto EventBridge recoloca a chave da filial sob a nova chave e, em seguida, retorna para. ACTIVE A chave de ramificação em si não muda, portanto, não EventBridge criptografa novamente nenhum evento armazenado, a alteração é concluída rapidamente, seja qual for o barramento, e os eventos gravados anteriormente permanecem legíveis, independentemente do estado da chave antiga. Depois de DescribeEventBus mostrar o ônibus ACTIVE com a nova chave, você pode desativar a chave antiga.

Se EventBridge não puder usar a nova chave, o ônibus se instala UPDATE_FAILED e continua trabalhando com a chave anterior: ele ainda aceita e entrega eventos e DescribeEventBus continua relatando a chave antiga. A chave que falhou nunca se torna a chave do ônibus. Ligue UpdateEventBus novamente com uma chave utilizável ou a mesma chave depois de corrigir a política e o ônibus retornará paraACTIVE. Um barramento cuja criação falha na chave é estabelecido CREATE_FAILED com a StateReason nomeação da AWS KMS negação; esse estado aceita somente DeleteEventBus e UpdateEventBus é rejeitado com uma mensagem nomeando os estados que aceita. [ACTIVE, UPDATE_FAILED] Corrija a política de chaves, exclua o barramento e crie-o novamente. Para os estados, vejaEstados dos ônibus e o que cada um permite.

Se você ativar a rotação automática da chave em sua chave, AWS KMS gira o material de apoio atrás do mesmo ARN da chave. A chave de ramificação permanece envolvida pelo material que a envolveu por último, e a próxima versão da chave de ramificação, criada aproximadamente a cada 30 dias, usa o material atual. Portanto, uma AWS KMS rotação chega ao seu ônibus em aproximadamente um mês.

Quando a chave se torna inutilizável

Se você desabilitar a chave, programá-la para exclusão ou remover o acesso EventBridge do usuário a ela, o barramento continuará funcionando até que sua chave de ramificação em cache expire, em 15 minutos. Em seguida, a publicação no barramento falha com um erro de AWS KMS acesso e a entrega é interrompida. EventBridge não descarta os eventos que já aceitou e não os envia para filas de mensagens mortas; ele os retém e os repete, porque uma falha no acesso à chave é uma condição que você pode corrigir. Quando você restaura o acesso, a publicação e a entrega são retomadas sozinhas. Nenhum evento é perdido, a menos que a interrupção dure mais do que o período de retenção do ônibus.

A exclusão da chave é permanente. Depois de AWS KMS excluir a chave configurada em um barramento, não é mais EventBridge possível desembrulhar a chave da filial do barramento e todos os eventos ainda armazenados no barramento ficam ilegíveis pelo restante do período de retenção. Desative a chave primeiro, confirme o efeito e só então agende a exclusão; consulte Excluindo AWS KMS chaves no Guia do AWS KMS desenvolvedor. DeleteEventBusnão precisa da chave: ela é bem-sucedida quando a chave é desativada ou excluída.

Monitorando o uso de chaves em CloudTrail

Cada solicitação feita EventBridge à chave gerenciada pelo cliente é registrada em CloudTrail; consulte Registro de chamadas de AWS KMS API com CloudTrail. A tabela a seguir lista os eventos esperados.

eventName Quando Identidade de chamada
DescribeKey Validação de chave na criação e atualização do barramento Seu diretor, por meio de EventBridge
Decrypt,Encrypt,GenerateDataKeyWithoutPlaintext, ReEncrypt (funcionamento a seco) Verificações de acesso na criação e atualização do ônibus, na publicação e na criação e atualização do assinante Seu diretor, por meio de EventBridge
GenerateDataKeyWithoutPlaintext, ReEncrypt Criação da chave da filial no bus create e rotação da chave da filial aproximadamente a cada 30 dias events.amazonaws.com
Decrypt A chave de ramificação é desembrulhada quando o cache expira: entrega de eventos, carga de configuração do assinante, descrição de chamadas events.amazonaws.com
Decrypt e Encrypt A chave de ramificação é empacotada novamente quando a chave é UpdateEventBus alterada events.amazonaws.com

CloudTrail grava uma ReEncrypt chamada como um evento; as kms:ReEncryptTo permissões kms:ReEncryptFrom e as autorizam. Uma entrada de execução a seco que DryRunOperationException é exibida é uma verificação de acesso aprovada, não uma falha em sua configuração; uma que mostra AccessDeniedException que o chamador não tem a permissão que está sendo verificada. O requestParameters.encryptionContext valor de cada entrada inclui aws:events:event-busv2:arn o ARN do seu ônibus. As entradas da chave de ramificação também contêm os campos do Chaveiro Hierárquico: branch-key-id (o ARN do barramento),,type,create-time, e. tablename hierarchy-version kms-arn Per-event a criptografia e a descriptografia usam chaves de dados derivadas localmente da chave de ramificação em cache, para que eventos individuais não apareçam nela. CloudTrail

Criptografia em trânsito

Todas as chamadas da API Custom Event Bus vão para um endpoint HTTPS e cada solicitação deve ser assinada com suas credenciais. eventsv2.region.amazonaws.com Um endpoint FIPS está disponível onde você precisar. eventsv2-fips.region.amazonaws.com Para proteção de EventBridge dados em geral, consulteEventBridge Segurança da Amazon.