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). Pour en savoir plus sur
Note
Amazon SNS prend uniquement en charge que les clés KMS de chiffrement symétriques. Vous ne pouvez utiliser aucun autre type de clé KMS pour crypter les ressources de votre service. Pour savoir si une clé KMS est symétrique, consultez Identification de clés asymétriques 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 AWS KMS key.
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 d'AWS KMS key 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. Pour plus d'informations sur la configuration d'une rubrique Amazon SNS avec le chiffrement côté serveur, consultez Configurer une rubrique Amazon SNS avec le chiffrement côté serveur.
Note
Vous pouvez également gérer les autorisations pour les clés KMS à chiffrement symétrique à 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 AWS KMS key 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.
Si vous sélectionnez une clé gérée par le client pour votre rubrique Amazon SNS et que vous utilisez des alias pour contrôler l'accès aux clés KMS à l'aide de politiques IAM ou de stratégies de clés KMS avec la clé de condition kms:ResourceAliases
, veillez à ce qu'un alias soit également associé à la clé gérée par le client sélectionnée. Pour plus d'informations sur l'utilisation d'alias pour contrôler l'accès aux clés KMS, consultez Utilisation d'alias pour contrôler l'accès aux clés KMS dans le Guide du développeur AWS Key Management Service.
Autoriser un utilisateur à envoyer des messages à une rubrique avec chiffrement SSE
Le diffuseur de publication doit disposer des autorisations kms:GenerateDataKey*
et kms:Decrypt
pour la AWS KMS key.
{ "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.
-
Utilisez une clé 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.
-
Pour permettre au service AWS d'avoir les autorisations
kms:GenerateDataKey*
etkms: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 AWS KMS key :
-
Ajoutez les clés de condition
aws:SourceAccount
etaws: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.Important
L'ajout du
aws:SourceAccount
et deaws:SourceArn
à une politique AWS KMS n'est pas pris en charge pour les rubriques EventBridge-to-encrypted.{ "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
" } } } -
Activez le chiffrement SSE pour votre rubrique à l’aide de votre clé KMS.
-
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 États de clé de AWS KMS keys dans le Manuel 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 cette limitation, consultez Quotas dans le Manuel du développeur AWS Key Management Service.
Code d'état HTTP : 400