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


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?