Exemples de politiques d'autorisations RAM pour Key Management Service (KMS). Copiez la politique correspondant à votre cas d'utilisation, remplacez les espaces réservés et attachez-la à l'utilisateur RAM, au groupe d'utilisateurs ou au rôle cible.
Remplacez ${region} et ${account} par votre ID de région réel et votre ID de compte Alibaba Cloud. Restreignez la portée des ressources en fonction de vos besoins métier.
Choisissez une politique
| Cas d'utilisation | Politique |
|---|---|
| Gestion complète du cycle de vie des clés (création, rotation, suppression, étiquetage) | Gérer les clés |
| Inventaire des clés et métadonnées en lecture seule | Interroger les clés |
| Chiffrement, déchiffrement et génération de clés de données | Opérations cryptographiques symétriques |
| Chiffrement et déchiffrement avec des clés asymétriques | Chiffrement et déchiffrement asymétriques |
| Signature et vérification avec des clés asymétriques | Signature et vérification asymétriques |
| Accorder l'accès aux clés partageant un tag spécifique | Accès cryptographique basé sur les tags |
| Gestion complète du cycle de vie des secrets (création, rotation, suppression, étiquetage) | Gérer les secrets |
| Inventaire des secrets et métadonnées en lecture seule | Interroger les secrets |
| Récupérer une valeur de secret spécifique | Récupérer une valeur de secret |
| Restreindre la création d'instances KMS à des régions spécifiques | Restreindre la création d'instances par région |
| Autoriser l'accès uniquement depuis des adresses IP spécifiques | Contrôle d'accès basé sur l'IP |
Politique permettant l'accès à toutes les ressources KMS
Pour garantir la sécurité des données, nous vous recommandons de ne pas configurer de politiques autorisant l'accès à toutes les ressources Key Management Service (KMS). L'octroi de kms:* sur * viole le principe du moindre privilège et augmente la surface d'impact en cas de compromission d'un identifiant. Utilisez plutôt l'une des politiques limitées ci-dessous.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:*"
],
"Resource": [
"*"
]
}
]
}
Politique autorisant des blocs CIDR ou des adresses IP spécifiques à accéder à toutes les ressources KMS
La clé de condition acs:SourceIp restreint les appels API KMS aux requêtes provenant de plages IP spécifiques. Dans cet exemple, le bloc CIDR 192.168.0.0/16 et l'adresse IP 172.16.215.218 sont autorisés à appeler n'importe quelle action KMS.
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"kms:*"
],
"Resource": [
"*"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"192.168.0.0/16",
"172.16.215.218"
]
}
}
}]
}
Tout principal capable de modifier l'IP source de ses requêtes (par exemple, via un proxy ou un VPN) peut contourner cette restriction. Combinez les conditions basées sur l'IP avec une limitation de la portée des ressources pour un contrôle plus robuste.
Politique permettant de gérer les clés dans KMS
Cette politique accorde des permissions complètes de gestion des clés : liste, description, création, activation, désactivation, mise à jour, suppression, étiquetage, importation de matériel de clé et planification de la suppression des clés. La portée des ressources couvre à la fois les clés et les alias de votre compte.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:Describe*",
"kms:Create*",
"kms:Enable*",
"kms:Disable*",
"kms:Get*",
"kms:Set*",
"kms:Update*",
"kms:Delete*",
"kms:Cancel*",
"kms:TagResource",
"kms:UntagResource",
"kms:TagResources",
"kms:UntagResources",
"kms:ImportKeyMaterial",
"kms:ScheduleKeyDeletion"
],
"Resource": [
"acs:kms:${region}:${account}:key",
"acs:kms:${region}:${account}:key/*",
"acs:kms:${region}:${account}:alias",
"acs:kms:${region}:${account}:alias/*"
]
}
]
}
Politique permettant d'interroger la liste des clés et leurs métadonnées
Utilisez cette politique pour un accès en lecture seule à l'inventaire des clés. Le principal peut lister les clés et afficher leurs métadonnées, mais ne peut pas effectuer d'opérations cryptographiques ni apporter de modifications.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:Describe*"
],
"Resource": [
"acs:kms:${region}:${account}:key",
"acs:kms:${region}:${account}:key/*"
]
}
]
}
Politique permettant d'utiliser des clés pour chiffrer des données, les déchiffrer et générer des clés de données
Cette politique convient aux comptes de service d'application qui effectuent un chiffrement sous enveloppe : kms:Encrypt et kms:Decrypt pour le chiffrement direct, et kms:GenerateDataKey pour obtenir une clé de données destinée au chiffrement côté client.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"acs:kms:${region}:${account}:key/*",
"acs:kms:${region}:${account}:alias/*"
]
}
]
}
Si vous identifiez une clé par son alias lors d'opérations cryptographiques, incluez la ressource d'alias (acs:kms:${region}:${account}:alias/*) dans la politique. Sans cela, les appels basés sur l'alias seront refusés, même si la clé sous-jacente est autorisée.
Politique permettant d'utiliser des clés portant des tags spécifiques pour mettre en œuvre le chiffrement sous enveloppe, le déchiffrement et la génération de clés de données
La condition StringEqualsIgnoreCase sur kms:tag/Project limite les opérations cryptographiques aux clés taguées avec Project=Apollo. Cela vous permet de contrôler l'accès en taguant les clés plutôt qu'en répertoriant individuellement les ARN des clés.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"acs:kms:${region}:${account}:key/*"
],
"Condition": {
"StringEqualsIgnoreCase": {
"kms:tag/Project": [
"Apollo"
]
}
}
}
]
}
Tout principal disposant de l'autorisation d'ajouter, de modifier ou de supprimer des tags sur une clé peut effectivement élargir ou restreindre l'accès accordé par cette politique. N'accordez les permissions de gestion des tags (kms:TagResource, kms:TagResources, kms:UntagResource, kms:UntagResources) qu'à des administrateurs de confiance.
Politique permettant d'utiliser des clés asymétriques pour le chiffrement et le déchiffrement
Cette politique accorde les actions kms:AsymmetricEncrypt et kms:AsymmetricDecrypt sur les clés et les alias. Utilisez-la pour les comptes de service qui effectuent des opérations de chiffrement et de déchiffrement asymétriques.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:AsymmetricEncrypt",
"kms:AsymmetricDecrypt"
],
"Resource": [
"acs:kms:${region}:${account}:key/*",
"acs:kms:${region}:${account}:alias/*"
]
}
]
}
Si vous identifiez une clé par son alias lors d'opérations cryptographiques, incluez la ressource d'alias (acs:kms:${region}:${account}:alias/*) dans la politique. Sans cela, les appels basés sur l'alias seront refusés, même si la clé sous-jacente est autorisée.
Politique permettant d'utiliser des clés asymétriques pour la signature et la vérification
Cette politique accorde les actions kms:AsymmetricSign et kms:AsymmetricVerify sur les clés et les aliases. Utilisez-la pour les comptes de service qui signent ou vérifient des données à l'aide de clés asymétriques.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:AsymmetricSign",
"kms:AsymmetricVerify"
],
"Resource": [
"acs:kms:${region}:${account}:key/*",
"acs:kms:${region}:${account}:alias/*"
]
}
]
}
Si vous identifiez une clé par son alias lors d'opérations cryptographiques, incluez la ressource d'alias (acs:kms:${region}:${account}:alias/*) dans la politique. Sans cela, les appels basés sur l'alias seront refusés, même si la clé sous-jacente est autorisée.
Politique permettant de gérer les secrets dans KMS
Cette politique accorde des permissions complètes de gestion des secrets : liste, description, création, mise à jour, rotation, restauration, suppression et étiquetage des secrets. La portée des ressources couvre les secrets et leurs alias associés.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:Describe*",
"kms:PutSecretValue",
"kms:Update*",
"kms:DeleteSecret",
"kms:RestoreSecret",
"kms:RotateSecret",
"kms:TagResource",
"kms:UntagResource",
"kms:TagResources",
"kms:UntagResources"
],
"Resource": [
"acs:kms:${region}:${account}:secret",
"acs:kms:${region}:${account}:secret/*",
"acs:kms:${region}:${account}:alias",
"acs:kms:${region}:${account}:alias/*"
]
}
]
}
Politique permettant d'interroger la liste des secrets et leurs métadonnées
Utilisez cette politique pour un accès en lecture seule à l'inventaire des secrets. Le principal peut lister les secrets et afficher leurs métadonnées, mais ne peut pas lire les valeurs des secrets ni apporter de modifications.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:Describe*"
],
"Resource": [
"acs:kms:${region}:${account}:secret",
"acs:kms:${region}:${account}:secret/*",
"acs:kms:${region}:${account}:alias",
"acs:kms:${region}:${account}:alias/*"
]
}
]
}
Politique permettant de récupérer la valeur d'un secret
Cette politique accorde l'accès à un seul secret nommé (example-secret) ainsi qu'à la clé spécifique (keyId-example) utilisée pour le chiffrer. Les deux instructions sont requises : kms:GetSecretValue récupère la valeur du secret, et kms:Decrypt déchiffre la clé de chiffrement associée.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "kms:GetSecretValue",
"Resource": "acs:kms:${region}:${account}:secret/example-secret"
},
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "acs:kms:${region}:${account}:key/keyId-example"
}
]
}
Politique restreignant la création d'instances KMS à des régions spécifiées
Cette politique empêche la création d'instances KMS partout sauf à Singapour (ap-southeast-1) et à Kuala Lumpur, en Malaisie (ap-southeast-3). Elle s'applique uniquement aux utilisateurs RAM, aux groupes d'utilisateurs RAM et aux rôles RAM qui détiennent déjà l'autorisation AliyunKMSFullAccess. Pour savoir comment attacher cette politique, consultez les rubriques Accorder des autorisations à un utilisateur RAM, Accorder des autorisations à un groupe d'utilisateurs RAM et Accorder des autorisations à un rôle RAM.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"bss:CreateInstance",
"bss:ModifyInstance"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"bssapi:ProductCode": [
"kms"
]
},
"StringNotLike": {
"Resource": [
"acs:kms:ap-southeast-1:*:*",
"acs:kms:ap-southeast-3:*:*"
]
}
}
},
{
"Effect": "Deny",
"Action": "kms:CreateInstance",
"Resource": "*"
}
]
}