

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Gestion des clés Amazon SQS
<a name="sqs-key-management"></a>

Amazon SQS s'intègre au AWS Key Management Service (KMS) pour gérer les [clés KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) pour le chiffrement côté serveur (SSE). Consultez [Chiffrement au repos dans Amazon SQS](sqs-server-side-encryption.md) pour obtenir des informations sur le SSE et les définitions de la gestion des clés. Amazon SQS utilise des clés KMS pour valider et sécuriser les clés de données qui chiffrent et déchiffrent les messages. Les sections suivantes fournissent des informations sur l'utilisation des clés KMS et de données dans le service Amazon SQS.

## Configuration des AWS KMS autorisations
<a name="sqs-what-permissions-for-sse"></a>

Chaque clé KMS doit avoir une politique de clé. Notez que vous ne pouvez pas modifier la politique de clé d'une clé KMS AWS gérée pour Amazon SQS. La stratégie de cette clé KMS inclut des autorisations permettant à tous les mandataires du compte (autorisés à utiliser Amazon SQS) d'utiliser des files d'attente chiffrées. 

 Amazon SQS fait la distinction entre les appelants en fonction de leurs AWS informations d'identification, qu'ils utilisent des AWS comptes, des utilisateurs IAM ou des rôles IAM différents. En outre, le même rôle IAM avec des politiques de cadrage différentes sera traité comme des demandeurs distincts. Toutefois, lorsque vous utilisez des sessions de rôle IAM, le simple fait de les modifier `RoleSessionName` tout en conservant le même rôle IAM et les mêmes politiques de portée ne créera pas de demandeurs distincts. Par conséquent, lorsque vous spécifiez des principes de politique AWS KMS clés, évitez de vous fier uniquement aux `RoleSessionName` différences, car ces sessions seront traitées comme le même demandeur. 

Vous pouvez également spécifier les autorisations requises dans une stratégie IAM affectée aux mandataires qui produisent et consomment des messages chiffrés. Pour de plus amples informations, veuillez consulter [Utilisation des stratégies IAM avec AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) dans le *Guide du développeur AWS Key Management Service *.

**Note**  
Bien que vous puissiez configurer des autorisations globales pour envoyer et recevoir depuis Amazon SQS, vous devez nommer AWS KMS explicitement l'ARN complet des clés KMS dans des régions spécifiques dans la `Resource` section d'une politique IAM.

### Configuration des autorisations KMS pour les AWS services
<a name="compatibility-with-aws-services"></a>

Plusieurs AWS services agissent comme des sources d'événements qui peuvent envoyer des événements aux files d'attente Amazon SQS. Pour permettre à ces sources d'événements de fonctionner avec des files d'attente chiffrées, vous devez créer une clé KMS gérée par le client et ajouter des autorisations dans la politique des clés afin que le service utilise les méthodes d' AWS KMS API requises. Effectuez les étapes suivantes pour configurer les autorisations.

**Avertissement**  
Lorsque vous modifiez la clé KMS pour chiffrer vos messages Amazon SQS, sachez que les messages existants chiffrés avec l'ancienne clé KMS resteront chiffrés avec cette clé. Pour déchiffrer ces messages, vous devez conserver l'ancienne clé KMS et vous assurer que sa politique en matière de clés accorde à Amazon SQS les autorisations `kms:Decrypt` pour et. `kms:GenerateDataKey` Après la mise à jour vers une nouvelle clé KMS pour chiffrer les nouveaux messages, assurez-vous que tous les messages existants chiffrés avec l'ancienne clé KMS sont traités et retirés de la file d'attente avant de supprimer ou de désactiver l'ancienne clé KMS.

1. Créez une clé KMS gérée par le client. Pour plus d’informations, consultez [Création des clés](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) dans le *Guide du développeur AWS Key Management Service *.

1. Pour autoriser la source de l'événement de AWS service à utiliser les méthodes `kms:Decrypt` et `kms:GenerateDataKey` API, ajoutez l'instruction suivante à la politique de clé KMS.

------
#### [ JSON ]

****  

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

------

   Remplacez « service » dans l'exemple ci-dessus par le *nom de service* de la source de l'événement. Les sources d'événements incluent les services suivants.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)

1.  [Configurez une file d'attente SSE existante](sqs-configure-sse-existing-queue.md) à l'aide de l'ARN de votre clé KMS.

1. Fournissez l'ARN de la file d'attente chiffrée à la source de l'événement.

### Configurer AWS KMS les autorisations pour les producteurs
<a name="send-to-encrypted-queue"></a>

Lorsque la [période de réutilisation de la clé de données](#sqs-how-does-the-data-key-reuse-period-work) expire, le prochain appel du producteur vers `SendMessage` ou `SendMessageBatch` déclenche également des appels vers `kms:Decrypt` et `kms:GenerateDataKey`. L'appel à `kms:Decrypt` a pour but de vérifier l'intégrité de la nouvelle clé de données avant de l'utiliser. Par conséquent, le producteur doit disposer des autorisations `kms:Decrypt` et `kms:GenerateDataKey` pour la clé KMS. 

Ajoutez l'instruction suivante à la stratégie IAM du producteur. N'oubliez pas d'utiliser les valeurs ARN correctes pour la ressource clé et la ressource de file d'attente.

------
#### [ 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"
        }
    ]
}
```

------

### Configurer AWS KMS les autorisations pour les consommateurs
<a name="receive-from-encrypted-queue"></a>

Lorsque la période de réutilisation de la clé de données expire, le prochain appel du consommateur vers `ReceiveMessage` déclenche également un appel de `kms:Decrypt`, pour vérifier l'intégrité de la nouvelle clé de données avant de l'utiliser. Par conséquent, le consommateur doit disposer de l'autorisation `kms:Decrypt` pour toute clé KMS permettant de chiffrer les messages dans la file d'attente spécifiée. Si la file d'attente sert de [file d'attente de lettres mortes](sqs-dead-letter-queues.md), le consommateur doit également disposer de l'autorisation `kms:Decrypt` pour toute clé KMS permettant de chiffrer les messages dans la file d'attente source. Ajoutez l'instruction suivante à la stratégie IAM du consommateur. N'oubliez pas d'utiliser les valeurs ARN correctes pour la ressource clé et la ressource de file d'attente.

------
#### [ 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"
        }
    ]
}
```

------

### Configurer AWS KMS les autorisations avec une protection adjointe confuse
<a name="sqs-adding-confused-deputy-protection"></a>

Lorsque le mandataire dans une instruction de stratégie de clé est un [principal de service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), vous pouvez utiliser les clés de condition globales [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) pour vous protéger contre le [scénario de député confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Pour utiliser ces clés de condition, définissez comme valeur l'Amazon Resource Name (ARN) de la ressource à chiffrer. Si vous ne connaissez pas l'ARN de la ressource, utilisez `aws:SourceAccount` à la place. 

Dans cette stratégie de clé KMS, une ressource spécifique issue d'un *service* appartenant au compte `111122223333` est autorisée à appeler KMS pour les actions `Decrypt` et `GenerateDataKey`, qui se produisent lors de l'utilisation du SSE d'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"
                    ]
                }
            }
        }
    ]
}
```

------

Lorsque vous utilisez des files d'attente Amazon SQS compatibles SSE, les services suivants prennent en charge `aws:SourceArn` :
+ Amazon SNS
+ Amazon S3
+ CloudWatch Événements
+ AWS Lambda
+ CodeBuild
+ Profils des clients Amazon Connect
+ AWS Auto Scaling
+ Amazon Chime

## Présentation de la période de réutilisation des clés de données
<a name="sqs-how-does-the-data-key-reuse-period-work"></a>

La [période de réutilisation des clés de données](sqs-server-side-encryption.md#sqs-sse-key-terms) définit la durée maximale de réutilisation de la même clé de données par Amazon SQS. Lorsque la période de réutilisation de la clé de données se termine, Amazon SQS génère une nouvelle clé de données. Notez les instructions suivantes concernant la période de réutilisation.
+ Une période de réutilisation plus courte améliore la sécurité, mais entraîne un plus grand nombre d'appels AWS KMS, ce qui peut entraîner des frais au-delà du niveau gratuit.
+ Bien que la clé de données soit mise en cache séparé pour le chiffrement et le déchiffrement, la période de réutilisation s'applique aux deux copies de cette clé.
+ Lorsque la période de réutilisation des clés de données prend fin, le prochain appel `SendMessage` ou déclenche `SendMessageBatch` généralement un appel à la AWS KMS `GenerateDataKey` méthode pour obtenir une nouvelle clé de données. De plus, les prochains appels à `SendMessage` et `ReceiveMessage` déclencheront chacun un appel AWS KMS `Decrypt` pour vérifier l'intégrité de la clé de données avant de l'utiliser.
+ [Les principaux](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal) (Comptes AWS ou utilisateurs) ne partagent pas les clés de données (les messages envoyés par des principaux uniques reçoivent toujours des clés de données uniques). Par conséquent, le volume d'appels AWS KMS est un multiple du nombre de principaux uniques utilisés pendant la période de réutilisation des clés de données.

## Estimation AWS KMS des coûts
<a name="sqs-estimate-kms-usage-costs"></a>

Pour prévoir les coûts et mieux comprendre votre AWS facture, vous souhaiterez peut-être savoir à quelle fréquence Amazon SQS utilise votre clé KMS.

**Note**  
Bien que la formule ci-après puisse vous donner une très bonne idée des coûts à prévoir, les coûts réels risquent d'être plus élevés en raison de la nature distribuée d'Amazon SQS.

Pour calculer le nombre de demandes d'API (`R`) *par file d'attente*, utilisez la formule suivante :

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

`B` est la période de facturation (en secondes).

`D` est la [période de réutilisation des clés de données](sqs-server-side-encryption.md#sqs-sse-key-terms) (en secondes).

`P` est le nombre de [mandataires](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal) productifs qui envoient des messages à la file d'attente Amazon SQS.

`C` est le nombre de mandataires consommateurs qui reçoivent des messages de la file d'attente Amazon SQS.

**Important**  
En général, les mandataires productifs ont un coût deux fois plus élevé que celui des mandataires consommateurs. Pour de plus amples informations, veuillez consulter [Présentation de la période de réutilisation des clés de données](#sqs-how-does-the-data-key-reuse-period-work).  
Si le producteur et le consommateur ont des utilisateurs différents, le coût augmente.

Voici des exemples de calcul. Pour obtenir des informations précises sur la tarification, consultez [Tarification AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

### Exemple 1 : calcul du nombre d'appels d' AWS KMS API pour 2 principaux et 1 file d'attente
<a name="example-1-queue-2-principals"></a>

Cet exemple suppose que :
+ La période de facturation va du 1er au 31 janvier (2 678 400 secondes).
+ La période de réutilisation des clés de données est définie sur 5 minutes (300 secondes).
+ Il y a 1 file d'attente.
+ Il y a 1 mandataire productif et 1 mandataire consommateur.

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

### Exemple 2 : calcul du nombre d'appels d' AWS KMS API pour plusieurs producteurs et consommateurs et pour deux files d'attente
<a name="example-2-queues-multiple-principals"></a>

Cet exemple suppose que :
+ La période de facturation va du 1er au 28 février (2 419 200 secondes).
+ La période de réutilisation des clés de données est définie sur 24 heures (86 400 secondes).
+ Il y a 2 files d'attente.
+ La première file d'attente comporte 3 mandataires productifs et 1 mandataire consommateur.
+ La seconde file d'attente comporte 5 mandataires productifs et 2 mandataires consommateurs.

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

## AWS KMS erreurs
<a name="sqs-sse-troubleshooting-errors"></a>

Lorsque vous travaillez avec Amazon SQS AWS KMS, vous pouvez rencontrer des erreurs. Les références suivantes décrivent les erreurs et les solutions de dépannage possibles.
+ [Erreurs AWS KMS courantes](https://docs.aws.amazon.com/kms/latest/APIReference/CommonErrors.html)
+ [Erreurs de déchiffrement AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html#API_Decrypt_Errors)
+ [AWS KMS GenerateDataKey erreurs](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html#API_GenerateDataKey_Errors)