

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

# Gerenciamento de chaves do Amazon SQS
<a name="sqs-key-management"></a>

O Amazon SQS se integra ao AWS Key Management Service (KMS) para gerenciar [chaves KMS para criptografia do lado](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) do servidor (SSE). Consulte [Criptografia em repouso no Amazon SQS](sqs-server-side-encryption.md) 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.

## Configurando permissões AWS KMS
<a name="sqs-what-permissions-for-sse"></a>

Cada chave do KMS deve ter uma política de chaves. Observe que você não pode modificar a política de chaves de uma chave KMS AWS gerenciada 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 AWS credenciais, independentemente de estarem usando AWS contas, usuários do IAM ou funções 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 os AWS KMS principais princípios de política, evite confiar apenas nas `RoleSessionName` diferenças, 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](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) no *Guia do desenvolvedor do AWS Key Management Service *.

**nota**  
Embora você possa configurar permissões globais para enviar e receber do Amazon SQS, é AWS KMS necessário nomear explicitamente o ARN completo das chaves KMS em regiões específicas na seção de uma política do IAM. `Resource`

### Configurar permissões do KMS para serviços AWS
<a name="compatibility-with-aws-services"></a>

Vários AWS serviços atuam como fontes de eventos que podem enviar eventos para as filas do Amazon SQS. Para permitir que essas fontes de eventos funcionem com filas criptografadas, você deve criar uma chave KMS gerenciada pelo cliente e adicionar permissões na política de chaves para que o serviço use os métodos de AWS KMS API necessários. 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](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) no *Guia do desenvolvedor AWS Key Management Service *.

1. Para permitir que a fonte do evento de AWS serviço use os métodos `kms:Decrypt` e `kms:GenerateDataKey` da API, adicione a seguinte declaração à política de chaves 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.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)

1.  [Configure uma fila com SSE existente](sqs-configure-sse-existing-queue.md) usando o ARN de sua chave do KMS.

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

### Configurar AWS KMS permissões para produtores
<a name="send-to-encrypted-queue"></a>

Quando o [período de reutilização da chave de dados](#sqs-how-does-the-data-key-reuse-period-work) 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 AWS KMS permissões para consumidores
<a name="receive-from-encrypted-queue"></a>

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](sqs-dead-letter-queues.md), 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"
        }
    ]
}
```

------

### Configure AWS KMS permissões com proteção delegada confusa
<a name="sqs-adding-confused-deputy-protection"></a>

Quando a entidade principal em uma declaração de política é uma [AWS entidade principal do serviço da ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), você pode usar as chaves de condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) ou [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) para proteção contra o [cenário de representante confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). 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 Eventos
+ AWS Lambda
+ CodeBuild
+ Amazon Connect Customer Profiles
+ AWS Auto Scaling
+ Amazon Chime

## Entender o período de reutilização de chaves de dados
<a name="sqs-how-does-the-data-key-reuse-period-work"></a>

O [período de reutilização da chave de dados](sqs-server-side-encryption.md#sqs-sse-key-terms) 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 de reutilização mais curto oferece melhor segurança, mas resulta em mais chamadas para AWS KMS, o que pode gerar cobranças 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 termina, a próxima chamada `SendMessage` ou `SendMessageBatch` normalmente aciona uma chamada para o AWS KMS `GenerateDataKey` método para obter uma nova chave de dados. Além disso, as próximas chamadas para `SendMessage` e cada uma `ReceiveMessage` acionará uma chamada AWS KMS `Decrypt` para verificar a integridade da chave de dados antes de usá-la.
+ [Diretores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal) (Contas da AWS ou usuários) não compartilham chaves de dados (mensagens enviadas por diretores exclusivos sempre recebem chaves de dados exclusivas). Portanto, o volume de chamadas para AWS KMS é um múltiplo do número de principais exclusivos em uso durante o período de reutilização da chave de dados.

## Estimando custos AWS KMS
<a name="sqs-estimate-kms-usage-costs"></a>

Para prever custos e entender melhor sua AWS fatura, talvez você queira saber com que frequência o Amazon SQS usa sua chave 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](sqs-server-side-encryption.md#sqs-sse-key-terms) (em segundos).

`P` é o número de [entidades](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal) 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](#sqs-how-does-the-data-key-reuse-period-work).  
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](https://aws.amazon.com/kms/pricing/).

### Exemplo 1: cálculo do número de chamadas de AWS KMS API para 2 principais e 1 fila
<a name="example-1-queue-2-principals"></a>

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: cálculo do número de chamadas de AWS KMS API para vários produtores e consumidores e duas filas
<a name="example-2-queues-multiple-principals"></a>

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 KMS erros
<a name="sqs-sse-troubleshooting-errors"></a>

Quando você trabalha com o Amazon SQS e AWS KMS, você pode encontrar erros. As referências a seguir descrevem os erros e possíveis soluções de problemas.
+ [Erros comuns do AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/CommonErrors.html)
+ [Erros de descriptografia do AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html#API_Decrypt_Errors)
+ [AWS KMS GenerateDataKey erros](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html#API_GenerateDataKey_Errors)