Gestion des clés - Amazon Simple Notification Service

Gestion des clés

Les sections suivantes fournissent des informations sur l’utilisation des clés gérées dans AWS Key Management Service (AWS KMS).

Estimation des coûts AWS KMS

Pour prévoir les coûts et mieux comprendre votre facture AWS, vous souhaiterez peut-être connaître la fréquence à laquelle Amazon SNS utilise votre clé AWS 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 SNS.

Pour calculer le nombre de demandes d’API (R) par rubrique, utilisez la formule suivante :

R = B / D * (2 * P)

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 – Amazon SNS réutilise une clé de données pour une durée maximale de 5 minutes).

P est le nombre de principaux de publication qui envoient des messages à la rubrique Amazon SNS.

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’API AWS KMS pour 1 éditeur et 1 rubrique

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 de 5 minutes (300 secondes).

  • Il y a 1 rubrique.

  • Il y a 1 principal de publication.

2,678,400 / 300 * (2 * 1) = 17,856

Exemple 2 : calcul du nombre d’appels d’API AWS KMS pour plusieurs éditeurs et 2 rubriques

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 de 5 minutes (300 secondes).

  • Il y a 2 rubriques.

  • La première rubrique comporte 3 principals de publication.

  • La deuxième en compte 5.

(2,419,200 / 300 * (2 * 3)) + (2,419,200 / 300 * (2 * 5)) = 129,024

Configuration des autorisations AWS KMS

Avant de pouvoir utiliser le chiffrement SSE, vous devez configurer les politiques de clé d'AWS KMS pour autoriser le chiffrement de rubriques, ainsi que le chiffrement et le déchiffrement de messages. Pour obtenir des exemples et des informations supplémentaires sur les autorisations AWS KMS, consultez Autorisations de l'API AWS KMS : référence des actions et ressources dans le Guide du développeurAWS Key Management Service.

Note

Vous pouvez également gérer les autorisations pour les clés KMS à l'aide de politiques IAM. Pour plus d’informations, consultez Utilisation de politiques IAM avec AWS KMS.

Alors que vous pouvez configurer des autorisations globales pour envoyer et recevoir des messages à destination et en provenance d'Amazon SNS, AWS KMS exige que l'ARN complet des clés KMS de régions spécifiques soit explicitement nommé dans la section Resource d'une politique IAM.

Vous devez aussi vous assurer que les stratégies de clés de la clé AWS KMS accordent les autorisations nécessaires. Pour cela, nommez les mandataires qui produisent et consomment des messages chiffrés dans Amazon SNS en tant qu’utilisateurs dans la stratégie de clé KMS.

Vous pouvez également spécifier les actions AWS KMS requises et l'ARN KMS dans une politique IAM affectée aux principaux qui publient des messages chiffrés dans Amazon SNS et s'y abonnent. Pour en savoir plus, consultez la section Gestion de l'accès à AWS KMS dans le Guide du développeur AWS Key Management Service.

Autoriser un utilisateur à envoyer des messages à une rubrique avec chiffrement SSE

L'éditeur doit disposer des autorisations kms:GenerateDataKey et kms:Decrypt pour la clé AWS KMS.

{ "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": [ "sns:Publish" ], "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }

Activer la compatibilité entre des sources d’événements à partir de services AWS et de rubriques chiffrées

Plusieurs services AWS publient des évènements dans des rubriques Amazon SNS. Pour permettre à ces sources d’événements d’utiliser des rubriques chiffrés, vous devez effectuer les opérations suivantes.

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

  2. Pour permettre au service AWS d'avoir les autorisations kms:GenerateDataKey* et kms:Decrypt, ajoutez l'instruction suivante à la politique de la clé KMS.

    { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }
    Source de l’événement principal du service
    Amazon CloudWatch cloudwatch.amazonaws.com
    Amazon CloudWatch Events events.amazonaws.com
    AWS CodeCommit codecommit.amazonaws.com
    AWS CodeStar codestar-notifications.amazonaws.com
    AWS Database Migration Service dms.amazonaws.com
    AWS Directory Service ds.amazonaws.com
    Amazon DynamoDB dynamodb.amazonaws.com
    Amazon Inspector inspector.amazonaws.com
    Amazon Redshift redshift.amazonaws.com
    Amazon RDS events.rds.amazonaws.com
    Amazon S3 Glacier glacier.amazonaws.com
    Amazon Simple Email Service ses.amazonaws.com
    Amazon Simple Storage Service s3.amazonaws.com
    AWS Snowball importexport.amazonaws.com
    AWSSystems Manager Incident Manager

    AWS Systems Manager Incident Manager comprend deux principes de service :

    ssm-incidents.amazonaws.com; ssm-contacts.amazonaws.com
    Note

    Certaines sources d’évènements Amazon SNS nécessitent que vous fournissiez un rôle IAM (plutôt que le principal du service) dans la politique de la clé AWS KMS :

  3. Ajoutez les clés de condition aws:SourceAccount et aws:SourceArn à la politique basée sur les ressources KMS pour protéger davantage la clé KMS contre les attaques de l'adjoint confus. Reportez-vous à la liste des documents spécifiques au service (ci-dessus) pour connaître les détails précis de chaque cas.

    { "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "customer-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:service:region:customer-account-id:resource-type:customer-resource-id" } } }
  4. Activez le chiffrement SSE pour votre rubrique à l’aide de votre clé KMS.

  5. Fournissez l’ARN de la rubrique chiffré à la source de l’événement.

Erreurs AWS KMS

Lorsque vous utilisez Amazon SNS et AWS KMS, vous risquez de rencontrer des erreurs. La liste suivante décrit les erreurs et les solutions de dépannage possibles.

KMSAccessDeniedException

Le texte chiffré désigne une clé qui n'existe pas ou à laquelle vous n'avez pas accès.

Code d’état HTTP : 400

KMSDisabledException

La demande a été rejetée, car la clé KMS spécifiée n'est pas activée.

Code d’état HTTP : 400

KMSInvalidStateException

La demande a été rejetée, car l'état de la ressource spécifiée n'est pas valide pour cette demande. Pour plus d'informations, consultez Comment l'état d'une clé affecte l'utilisation d'une clé AWS KMS dans le Guide du développeur AWS Key Management Service.

Code d’état HTTP : 400

KMSNotFoundException

La requête a été rejetée, car l'entité ou la ressource spécifiée est introuvable.

Code d’état HTTP : 400

KMSOptInRequired

L’ID de clé d’accès AWS a besoin d’un abonnement pour le service.

Code d’état HTTP : 403

KMSThrottlingException

La demande a été refusée suite à une limitation des demandes. Pour plus d'informations sur ces limites, consultez Limites dans le Guie du développeur AWS Key Management Service.

Code d’état HTTP : 400