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