Comment puis-je empêcher les politiques IAM d'autoriser un utilisateur ou un rôle à accéder à une clé KMS dans AWS KMS ?
Date de la dernière mise à jour : 17/02/2021
Je souhaite empêcher les identités AWS Identity and Access Management (IAM) (utilisateurs, groupes et rôles) d'accéder à ma clé AWS KMS. Toutefois, la politique de clé KMS par défaut permet aux identités IAM du compte d'accéder à la clé KMS avec les autorisations IAM. Comment puis-je éviter ce problème ?
Brève description
La politique IAM de clé KMS par défaut contient une instruction similaire à celle donnée en exemple ci-dessous :
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}
Ici, les éléments Effect et Principal ne font pas référence au compte utilisateur racine AWS. L'Amazon Resource Name (ARN) autorise l'accès à la clé KMS avec cette politique IAM. Tout principal du compte AWS 111122223333 dispose d'un accès racine à la clé KMS si les autorisations AWS Key Management Service (AWS KMS) requises sont attachées à l'entité IAM.
Résolution
Vous pouvez empêcher les entités IAM d'accéder à la clé KMS et permettre au compte utilisateur racine de la gérer. Cela empêche également le compte utilisateur racine de perdre l'accès à la clé KMS.
Vérifiez que la politique de clé KMS contient des administrateurs clés dans le même compte, comme dans cet exemple :
{
"Sid": "Allow access for Key Administrators",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/KMSAdminUser",
"arn:aws:iam::111122223333:role/KMSAdminRole"
]
},
"Action": [
"kms:Create*",
"kms:Describe*",
"kms:Enable*",
"kms:List*",
"kms:Put*",
"kms:Update*",
"kms:Revoke*",
"kms:Disable*",
"kms:Get*",
"kms:Delete*",
"kms:TagResource",
"kms:UntagResource",
"kms:ScheduleKeyDeletion",
"kms:CancelKeyDeletion"
],
"Resource": "*"
}
Remplacez le Sid de politique IAM de clé KMS par « EnableRootAccessAndPreventPermissionDelegation » et ajoutez un élément Condition comme suit :
Important : remplacez le compte 111122223333 par votre numéro de compte et assurez-vous que la clé de condition aws:PrincipalType est définie sur Compte.
{
"Sid": "EnableRootAccessAndPreventPermissionDelegation",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalType": "Account"
}
}
}
Seuls l'utilisateur racine du compte et les entités IAM répertoriées dans la section Administrateurs de la politique de clé KMS peuvent gérer la clé.
Informations connexes
Cet article vous a-t-il été utile ?
Besoin d'aide pour une question technique ou de facturation ?