Comment puis-je empêcher les politiques IAM d'autoriser un utilisateur ou un rôle à accéder à une clé KMS dans AWS KMS ?

Lecture de 4 minute(s)
0

Je souhaite empêcher les identités AWS Identity and Access Management (IAM) d'accéder à ma clé AWS Key Management Service (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.

Brève description

La politique de clé KMS par défaut contient l'instruction suivante :

{
    "Sid": "Enable IAM User Permissions",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
    },
    "Action": "kms:*",
    "Resource": "*"
}

Dans l'exemple précédent, les éléments Effect et Principal ne font pas référence au compte utilisateur root AWS. L'Amazon Resource Name (ARN) autorise l'accès à la clé KMS avec cette politique IAM. Si vous attachez les autorisations requises à l'entité IAM, tout principal du compte AWS 111122223333 dispose d'un accès racine à la clé KMS.

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 root de perdre l'accès à la clé KMS.

Remplacez le Sid « Enable IAM User Permissions » dans la politique de clé KMS par défaut par le Sid « EnableRootAccessAndPreventPermissionDelegation ». Ajoutez également un élément Condition semblable à celui de la politique suivante :

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"
        }
    }
}

Vous pouvez ajouter des utilisateurs ou des rôles IAM d'administrateur de clés pour autoriser la gestion de la clé dans l'instruction avec Sid « Allow access for Key Administrators ». Vous pouvez également autoriser les utilisateurs ou les rôles IAM à utiliser la clé pour des opérations cryptographiques et avec d'autres services AWS. Ajoutez les ARN des utilisateurs ou des rôles IAM aux instructions avec le Sid « Allow use of the key » et « Allow attachment of persistent resources ».

Remarque : vous devez créer la clé avec la politique modifiée et le compte utilisateur root. Vous pouvez également utiliser un principal autorisé dans l'instruction « Allow access for Key Administrators ». Cela permet d'éviter l'erreur de politique « MalformedPolicyDocumentException ».

La politique de clé KMS par défaut modifiée est semblable à la suivante :

{
    "Id": "key-consolepolicy-1",
    "Version": "2012-10-17",
    "Statement":
    [
        {
            "Sid": "EnableRootAccessAndPreventPermissionDelegation",
            "Effect": "Allow",
            "Principal":
            {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*",
            "Condition":
            {
                "StringEquals":
                {
                    "aws:PrincipalType": "Account"
                }
            }
        },
        {
            "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": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal":
            {
                "AWS":
                [
                    "arn:aws:iam::111122223333:user/ExampleUser",
                    "arn:aws:iam::111122223333:role/ExampleRole"
                ]
            },
            "Action":
            [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow attachment of persistent resources",
            "Effect": "Allow",
            "Principal":
            {
                "AWS":
                [
                    "arn:aws:iam::111122223333:user/ExampleUser",
                    "arn:aws:iam::111122223333:role/ExampleRole"
                ]
            },
            "Action":
            [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition":
            {
                "Bool":
                {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}

La politique de clé fournit les autorisations suivantes :

  • Le compte utilisateur root AWS a un accès complet à la clé.
  • Les principaux KMSAdminUser et KMSAdminRole permettent d'effectuer des opérations de gestion sur la clé.
  • Les principaux ExampleUser et ExampleRole peuvent utiliser la clé.

Informations connexes

Bonnes pratiques de gestion des clés d'accès AWS

Clés AWS KMS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an