Gerenciar chaves e custos de criptografia do Amazon SNS - Amazon Simple Notification Service

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

Gerenciar chaves e custos de criptografia do Amazon SNS

As seções a seguir contêm informações sobre como trabalhar com chaves gerenciadas pelo AWS Key Management Service (AWS KMS).

nota

O Amazon SNS só é compatível com chaves do KMS de criptografia simétrica. Você não pode usar nenhum outro tipo de chave do KMS para criptografar seus recursos de serviço. Para obter ajuda para determinar se uma chave do KMS é simétrica, consulte Identificar chaves assimétricas do KMS.

Estimar os custos do AWS KMS

Para prever custos e entender melhor a sua fatura da AWS, talvez seja interessante saber com que frequência o Amazon SNS usa sua chave do AWS KMS key.

nota

Embora a fórmula a seguir possa dar a você uma boa ideia sobre os custos esperados, os custos reais poderão ser mais altos por conta da natureza distribuída do Amazon SNS.

Para calcular o número de solicitações de APIs (R) por tópico, use a seguinte fórmula:

R = B / D * (2 * P)

B é o período de faturamento (em segundos).

D é o período de reutilização da chave de dados (em segundos: o Amazon SNS reutiliza uma chave de dados por até cinco minutos).

P é o número de principais de publicação enviados para o tópico do Amazon SNS.

Estes são cálculos de exemplo. Para obter informações sobre a definição de preços, consulte Definição de preços do AWS Key Management Service.

Exemplo 1: Cálculo do número de chamadas à API do AWS KMS para 1 editor e 1 tópico

Este exemplo supõe o seguinte:

  • O período de faturamento é de 1 a 31 de janeiro (2.678.400 segundos).

  • O período de reutilização de chave de dados é de 5 minutos (300 segundos).

  • Há 1 tópico.

  • Há 1 entidade principal de publicação.

2,678,400 / 300 * (2 * 1) = 17,856

Exemplo 2: Cálculo do número de chamadas à API do AWS KMS para vários editores e 2 tópicos

Este exemplo supõe o seguinte:

  • O período de faturamento é de 1 a 28 de fevereiro (2.419.200 segundos).

  • O período de reutilização de chave de dados é de 5 minutos (300 segundos).

  • Há 2 tópicos.

  • O primeiro tópico tem 3 entidades principais de publicação.

  • O segundo tópico tem 5 entidades principais de publicação.

(2,419,200 / 300 * (2 * 3)) + (2,419,200 / 300 * (2 * 5)) = 129,024

Configurar permissões do AWS KMS

Antes que possa usar a SSE, você deve configurar as políticas de chaves do AWS KMS key para permitir a criptografia de tópicos, bem como a criptografia e a descriptografia de mensagens. Para obter exemplos e mais informações sobre as permissões do AWS KMS, consulte AWS KMS API Permissions: Actions and Resources Reference no Guia do desenvolvedor do AWS Key Management Service. Para obter detalhes sobre como configurar um tópico do Amazon SNS com a criptografia do lado do servidor, consulte Mais informações.

nota

Você também pode gerenciar permissões para criptografia simétrica de chaves do KMS usando políticas do IAM. Para obter mais informações, consulte Using IAM Policies with AWS KMS.

Embora seja possível configurar permissões globais para envio e recebimento do Amazon SNS, o AWS KMS exige a indicação explícita do ARN completo dos KMSs em regiões específicas na seção Resource de uma política do IAM.

É necessário garantir também que as políticas de chave do AWS KMS key concedam as permissões necessárias. Para fazer isso, indique as entidades principais que produzem e consomem mensagens criptografadas no Amazon SNS como usuários na política de chaves do KMS.

Como alternativa, você pode especificar as ações necessárias do AWS KMS e o ARN do KMS em uma política do IAM atribuída às entidades principais que publicam e se inscrevem para receber mensagens criptografadas no Amazon SNS. Para obter mais informações, consulte Gerenciar o acesso ao AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

Se você estiver selecionando uma chave gerenciada pelo cliente para seu tópico do Amazon SNS e estiver usando aliases para controlar o acesso às chaves do KMS usando políticas do IAM ou políticas de chave do KMS com a chave de condição kms:ResourceAliases, a chave gerenciada pelo cliente selecionada também deverá ter um alias associado. Para obter mais informações sobre o uso de alias para controlar o acesso às chaves do KMS, consulte Usar aliases para controlar o acesso às chaves do KMS no Guia do desenvolvedor do AWS Key Management Service.

Permitir que um usuário envie mensagens a um tópico com SSE

O editor deve ter as permissões kms:GenerateDataKey* e kms:Decrypt para o AWS KMS key.

{ "Statement": [{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }

Habilitar a compatibilidade entre as fontes de eventos de tópicos criptografados e de serviços da AWS

Vários serviços da AWS publicam eventos nos tópicos do Amazon SNS. Para permitir que essas fontes de eventos trabalhem com tópicos criptografados, você deve executar as seguintes etapas:

  1. Use uma chave gerenciada pelo cliente. Para obter mais informações, consulte Criação de chaves no Guia do desenvolvedor AWS Key Management Service.

  2. Para permitir que o serviço da AWS tenha as permissões kms:GenerateDataKey* e kms:Decrypt, adicione a seguinte instrução à política do KMS.

    { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }
    Origem do evento Principal do serviço
    Amazon CloudWatch cloudwatch.amazonaws.com
    Amazon CloudWatch Events events.amazonaws.com
    AWS CodeCommit codecommit.amazonaws.com
    AWS Database Migration Service dms.amazonaws.com
    AWS Directory Service ds.amazonaws.com
    Amazon DynamoDB dynamodb.amazonaws.com
    Amazon Inspector inspector.amazonaws.com
    Amazon Redshift redshift.amazonaws.com
    Amazon RDS events.rds.amazonaws.com
    Amazon Glacier glacier.amazonaws.com
    Amazon Simple Email Service ses.amazonaws.com
    Amazon Simple Storage Service s3.amazonaws.com
    AWS Snowball Edge importexport.amazonaws.com
    AWS Systems Manager Incident Manager

    O AWS Systems Manager Incident Manager consiste em dois princípios de serviço:

    ssm-incidents.amazonaws.com; ssm-contacts.amazonaws.com
    nota

    Algumas fontes de eventos do Amazon SNS exigem que você forneça um perfil do IAM (em vez da entidade principal do serviço) na política do AWS KMS key:

  3. Adicione as chaves de condição aws:SourceAccount e aws:SourceArn à política de recursos do KMS para proteger ainda mais a chave do KMS de ataques confused deputy. Consulte a lista de documentação específica do serviço (acima) para obter detalhes exatos em cada caso.

    Importante

    A adição de aws:SourceAccount, aws:SourceArn e aws:SourceOrgIDa uma política do AWS KMS não é compatível com tópicos criptografados do EventBridge-to.

    { "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "customer-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:service:region:customer-account-id:resource-type:customer-resource-id" } } }
  4. Habilite a SSE para seu tópico usando seu KMS.

  5. Forneça o ARN do tópico criptografado para a fonte do evento.

AWS KMSErros do

Ao trabalhar com o Amazon SNS e o AWS KMS, você poderá encontrar erros. A lista a seguir descreve os erros e as possíveis soluções de problemas.

KMSAccessDeniedException

O texto cifrado faz referência a uma chave que não existe ou à qual você não tem acesso.

Código de Status HTTP: 400

KMSDisabledException

A solicitação foi recusada porque o KMS especificado não está habilitado.

Código de Status HTTP: 400

KMSInvalidStateException

A solicitação foi rejeitada porque o estado do recurso especificado não é válido para essa solicitação. Para obter mais informações, consulte Principais estados do AWS KMS keys no Guia do desenvolvedor do AWS Key Management Service.

Código de Status HTTP: 400

KMSNotFoundException

A solicitação foi rejeitada porque a entidade ou o recurso especificado não pôde ser encontrado.

Código de Status HTTP: 400

KMSOptInRequired

O ID da chave de acesso da AWS precisa de uma assinatura do serviço.

Código de Status HTTP: 403

KMSThrottlingException

A solicitação foi negada devido à limitação da solicitação. Para obter mais informações sobre controle de utilização, consulte Cotas no Guia do desenvolvedor do AWS Key Management Service.

Código de Status HTTP: 400