Gestion des clés - Amazon Simple Queue Service

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 s'intègre au AWS Key Management Service (KMS) pour gérer les clés KMS pour le chiffrement côté serveur (SSE). Consultez Chiffrement au repos 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 autorisations AWS KMS

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.

Pour une clé Amazon SQS gérée par le client, vous devez configurer la stratégie de clé afin d'ajouter des autorisations pour chaque producteur et consommateur de file d'attente. Pour ce faire, vous nommez le producteur et le consommateur en tant qu'utilisateurs dans la stratégie de clé KMS. Pour plus d'informations sur AWS KMS les autorisations, consultez les AWS KMS ressources et les opérations ou la référence aux autorisations d'AWS KMS API dans le guide du AWS Key Management Service développeur.

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

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.

  1. Créez une clé KMS gérée par le client. Pour plus d’informations, consultez Création des clés dans le Guide du développeur AWS Key Management Service .

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

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "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.

    Source de l'événement Nom du service
    CloudWatch Événements Amazon events.amazonaws.com
    Notifications d'événements Amazon S3 s3.amazonaws.com
    Abonnements à des rubriques Amazon SNS sns.amazonaws.com
  3. Configurez une file d'attente SSE existante à l'aide de l'ARN de votre clé KMS.

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

Configurer les autorisations KMS pour les producteurs

Lorsque la période de réutilisation de la clé de données expire, le prochain appel du producteur vers SendMessage ou SendMessageBatch déclenche également des appels vers kms:GenerateDataKey et kms:Decrypt. 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:GenerateDataKey et kms:Decrypt 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.

{ "Version": "2012-10-17", "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": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:*:123456789012:MyQueue" }] }

Configurer les autorisations KMS pour les consommateurs

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

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage" ], "Resource": "arn:aws:sqs:*:123456789012:MyQueue" }] }

Configurer les autorisations KMS avec une protection contre le problème de député confus

Lorsque le mandataire dans une instruction de stratégie de clé est un principal de service AWS, vous pouvez utiliser les clés de condition globales aws:SourceArn ou aws:SourceAccount pour vous protéger contre le scénario de député confus. 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.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "<replaceable>service</replaceable>.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": [ "arn:aws:service::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

La période de réutilisation des clés de données 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 (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). Ainsi, 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

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 (en secondes).

P est le nombre de mandataires 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.

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.

Exemple 1 : calcul du nombre d'appels d' AWS KMS API pour 2 principaux et 1 file d'attente

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

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

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.