Comment puis-je empêcher les identités IAM d'accéder à une clé CMK dans AWS KMS ?

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é principale client (CMK). Toutefois, la stratégie CMK le permet par défaut grâce aux autorisations IAM du compte. Comment puis-je éviter ce problème ?

Brève description

La stratégie IAM CMK par défaut contient une instruction similaire à l'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é CMK avec cette stratégie IAM. Tout principal du compte AWS 111122223333 dispose d'un accès racine à la CMK si les autorisations AWS Key Management Service (AWS KMS) requises sont attachées à l'entité IAM.

Solution

Vous pouvez empêcher les entités IAM d'accéder à la CMK et permettre au compte utilisateur racine de gérer cette clé. Cette méthode évite également la perte d'accès du compte utilisateur racine à la CMK.

Vérifiez que la stratégie CMK 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 stratégie IAM CMK 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 Account.

{
    "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 stratégie CMK peuvent gérer la clé.


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


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