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.
-
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.
-
Para permitir que a origem do evento do serviço da AWS use os métodos de API
kms:Decryptekms:GenerateDataKey, adicione a instrução a seguir à política de chave do KMS.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.rproxy.govskope.caNotificações de eventos do Amazon S s3.amazonaws.com.rproxy.govskope.caAssinaturas de tópicos do Amazon SNS sns.amazonaws.com -
Configure uma fila com SSE existente usando o ARN de sua chave do KMS.
-
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.
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.
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.
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
SendMessageouSendMessageBatchprovavelmente acionará uma chamada para o método AWS KMS doGenerateDataKeya fim de obter uma nova chave de dados. Além disso, as próximas chamadas paraSendMessageeReceiveMessageacionarão chamadas para AWS KMS doDecrypta 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.