Gerenciamento de chaves do Amazon SQS - Amazon Simple Queue Service

Gerenciamento de chaves do Amazon SQS

O Amazon SQS integra-se ao AWS Key Management Service (KMS) para gerenciar chaves do KMS para criptografia no lado do servidor (SSE). Consulte Criptografia em repouso no Amazon SQS para obter informações sobre SSE e definições de gerenciamento de chaves. O Amazon SQS usa chaves do KMS para validar e proteger as chaves de dados que criptografam e descriptografam as mensagens. As seções a seguir fornecem informações sobre como trabalhar com chaves do KMS e chaves de dados no produto Amazon SQS.

Configurar permissões do AWS KMS

Cada chave do KMS deve ter uma política de chaves. Observe que não é possível modificar a política de chave de uma chave do KMS gerenciada pela AWS para o Amazon SQS. A política dessa chave do KMS inclui permissões de uso das filas criptografadas para todos os principais na conta (que estão autorizados a usar o Amazon SQS).

O Amazon SQS distingue os chamadores com base em suas credenciais da AWS, independentemente de estarem usando contas AWS, usuários do IAM ou perfis do IAM diferentes. Além disso, o mesmo perfil do IAM com políticas de escopo diferentes será tratada como solicitantes distintos. No entanto, ao usar sessões de perfil do IAM, variar apenas RoleSessionName e manter o mesmo perfil do IAM e políticas de escopo não criará solicitantes distintos. Portanto, ao especificar as entidades principais da política de chave do AWS KMS, evite confiar apenas nas diferenças de RoleSessionName, pois essas sessões serão tratadas como o mesmo solicitante.

Como alternativa, é possível especificar as permissões necessárias em uma política do IAM atribuída aos principais que produzem e consomem mensagens criptografadas. Para obter mais informações, consulte Usar políticas do IAM com AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

nota

Embora você possa configurar permissões globais para enviar e receber do Amazon SQS, o AWS KMS requer a indicação explícita do ARN completo das chaves do KMS em regiões específicas na seção Resource de uma política do IAM.

Configurar permissões do KMS para serviços da AWS

Vários produtos da AWS servem como fontes de evento que podem enviá-los para filas do Amazon SQS. Para permitir que essas origens de evento funcionem com filas criptografadas, é necessário criar uma chave do KMS gerenciada pelo cliente e adicionar permissões na política de chave para que o serviço use os métodos necessários de API do AWS KMS. Execute as etapas a seguir para configurar as permissões.

Atenção

Ao alterar a chave do KMS para criptografar suas mensagens do Amazon SQS, esteja ciente de que as mensagens existentes criptografadas com a chave do KMS antiga permanecerão criptografadas com essa chave. Para descriptografar essas mensagens, você deve reter a chave do KMS antiga e garantir que sua política de chaves conceda ao Amazon SQS as permissões para kms:Decrypt e kms:GenerateDataKey. Depois de atualizar para uma nova chave do KMS para criptografar novas mensagens, certifique-se de que todas as mensagens existentes criptografadas com a chave do KMS antiga sejam processadas e removidas da fila antes de excluir ou desabilitar a chave do KMS antiga.

  1. Para criar uma chave do KMS 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 a origem do evento do serviço da AWS use os métodos de API kms:Decrypt e kms:GenerateDataKey, adicione a instrução a seguir à política de chave do KMS.

    JSON
    { "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }] }

    Substitua “service” no exemplo acima pelo nome do serviço da origem de evento. As origens de evento incluem os serviços a seguir.

    Origem do evento Nome do serviço
    Amazon CloudWatch Events events.amazonaws.com
    Notificações de eventos do Amazon S s3.amazonaws.com
    Assinaturas de tópicos do Amazon SNS sns.amazonaws.com
  3. Configure uma fila com SSE existente usando o ARN de sua chave do KMS.

  4. Forneça o ARN da fila criptografada para a fonte do evento.

Configurar permissões do AWS KMS para produtores

Quando o período de reutilização da chave de dados expirar, a próxima chamada do produtor para SendMessage ou SendMessageBatch também acionará chamadas para kms:Decrypt e kms:GenerateDataKey. A chamada para kms:Decrypt tem o intuito de verificar a integridade da nova chave de dados antes de usá-la. Portanto, o produtor deve ter as permissões kms:Decrypt e kms:GenerateDataKey para a chave do KMS.

Adicione a declaração a seguir à política do IAM do produtor. Lembre-se de usar os valores de ARN corretos para o recurso da chave e o recurso da fila.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/111112222233333" }, { "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:*:123456789012:MyQueue" } ] }

Configurar permissões do AWS KMS para consumidores

Quando o período de reutilização da chave de dados expirar, a próxima chamada do consumidor ReceiveMessage também acionará uma chamada para kms:Decrypt, a fim de verificar a integridade da nova chave de dados antes de usá-la. Portanto, o consumidor deve ter a permissão kms:Decrypt para qualquer chave do KMS que é usada para criptografar as mensagens na fila específica. Se a fila agir como uma dead letter queue, o consumidor também deverá ter a permissão kms:Decrypt para qualquer chave do KMS que for usada para criptografar as mensagens na fila de origem. Adicione a declaração a seguir à política do IAM do consumidor. Lembre-se de usar os valores de ARN corretos para o recurso da chave e o recurso da fila.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/111112222233333" }, { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:*:123456789012:MyQueue" } ] }

Configurar permissões do AWS KMS com proteção contra representante confuso

Quando a entidade principal em uma declaração de política é uma AWSentidade principal do serviço da , você pode usar as chaves de condição global aws:SourceArn ou aws:SourceAccount para proteção contra o cenário de representante confuso. Para usar essas chaves de condição, defina o valor como o nome do recurso da Amazon (ARN) do recurso que está sendo criptografado. Se você não conhece o ARN do recurso, use aws:SourceAccount em vez disso.

Nesta política de chaves do KMS, um recurso específico do serviço que é de propriedade da conta 111122223333 tem permissão para chamar o KMS para ações Decrypt e GenerateDataKey, que ocorrem durante o uso do SSE do Amazon SQS.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sqs.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": [ "arn:aws:sqs:us-west-1:111122223333:resource" ] } } } ] }

Ao usar filas do Amazon SQS habilitadas para SSE, os seguintes serviços são compatíveis com aws:SourceArn:

  • Amazon SNS

  • Amazon S3

  • CloudWatch Events

  • AWS Lambda

  • CodeBuild

  • Amazon Connect Customer Profiles

  • AWS Auto Scaling

  • Amazon Chime

Entender o período de reutilização de chaves de dados

O período de reutilização da chave de dados define a duração máxima de reutilização da mesma chave de dados pelo Amazon SQS. Quando o período de reutilização da chave de dados terminar, o Amazon SQS gerará uma nova chave de dados. Observe as diretrizes a seguir sobre o período de reutilização.

  • Um período menor de reutilização fornece mais segurança, mas resulta em mais chamadas para o AWS KMS, o que pode ser cobrado além do nível gratuito.

  • Embora a chave de dados seja armazenada em cache separadamente para a criptografia e a descriptografia, o período de reutilização se aplica a ambas as cópias da chave de dados.

  • Quando o período de reutilização da chave de dados terminar, a próxima chamada para SendMessage ou SendMessageBatch provavelmente acionará uma chamada para o método AWS KMS do GenerateDataKey a fim de obter uma nova chave de dados. Além disso, as próximas chamadas para SendMessage e ReceiveMessage acionarão chamadas para AWS KMS do Decrypt a fim de verificar a integridade da chave de dados antes de usá-la.

  • Entidades principais (Contas da AWS ou usuários) não compartilham chaves de dados (mensagens enviadas por entidades principais exclusivas sempre obtêm chaves de dados exclusivas). Portanto, o volume de chamadas para o AWS KMS é um múltiplo do número de entidades principais exclusivas em uso durante o período de reutilização da chave de dados.

Estimar os custos do AWS KMS

Para prever custos e entender melhor a sua fatura da AWS, talvez você queira saber com que frequência o Amazon SQS usa a sua chave do KMS.

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

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

R = (B / D) * (2 * P + C)

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

D é o período de reutilização da chave de dados (em segundos).

P é o número de entidades de produção que enviam para a fila do Amazon SQS.

C é o número de entidades de consumo que recebem da fila do Amazon SQS.

Importante

De modo geral, os principais de produção geram o dobro do custo das entidades principais de consumo. Para obter mais informações, consulte Entender o período de reutilização de chaves de dados.

Se o produtor e o consumidor tiverem usuários diferentes do , o custo aumentará.

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: calcular o número de chamadas à API do AWS KMS por duas entidades principais e uma fila

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 é definido como 5 minutos (300 segundos).

  • Há 1 fila.

  • Há 1 entidade principal de produção e 1 entidade principal de consumo.

(2,678,400 / 300) * (2 * 1 + 1) = 26,784

Exemplo 2: calcular o número de chamadas à API do AWS KMS para vários produtores e consumidores e duas filas

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 é definido como 24 horas (86.400 segundos).

  • Há duas filas.

  • A primeira fila tem 3 entidades principais de produção e 1 entidade principal de consumo.

  • A segunda fila tem 5 entidades principais de produção e 2 entidades principais de consumo.

(2,419,200 / 86,400 * (2 * 3 + 1)) + (2,419,200 / 86,400 * (2 * 5 + 2)) = 532

AWS KMSErros de

Ao trabalhar com o Amazon SQS e o AWS KMS, você poderá encontrar erros. As referências a seguir descrevem os erros e possíveis soluções de problemas.