Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation PutKeyPolicy avec un AWS SDK ou une CLI
Les exemples de code suivants illustrent comment utiliser PutKeyPolicy.
- CLI
-
- AWS CLI
-
Pour modifier la stratégie de clé d’une clé KMS
L’exemple
put-key-policysuivant modifie la stratégie de clé pour une clé gérée par le client.Pour commencer, créez une stratégie de clé et enregistrez-la dans un fichier JSON local. Dans cet exemple, le fichier est
key_policy.json. Vous pouvez également spécifier la stratégie de clé sous forme de valeur de chaîne du paramètrepolicy.La première déclaration de cette politique clé autorise le AWS compte à utiliser les politiques IAM pour contrôler l'accès à la clé KMS. La deuxième instruction autorise l’utilisateur
test-userà exécuter les commandesdescribe-keyetlist-keyssur la clé KMS.Contenu de
key_policy.json:{ "Version":"2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:DescribeKey", "kms:ListKeys" ], "Resource" : "*" } ] }Pour identifier la clé KMS, cet exemple utilise l’ID de clé, mais vous pouvez également utiliser un ARN de clé. Pour spécifier la stratégie de clé, la commande utilise le paramètre
policy. Pour indiquer que la stratégie se trouve dans un fichier, elle utilise le préfixefile://requis. Ce préfixe est nécessaire pour identifier les fichiers sur tous les systèmes d’exploitation pris en charge. Enfin, la commande utilise le paramètrepolicy-nameavec la valeurdefault. Si aucune stratégie n’est spécifiée, la valeur par défaut estdefault. La seule valeur valide estdefault.aws kms put-key-policy \ --policy-namedefault\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab\ --policyfile://key_policy.jsonCette commande ne génère pas de sortie. Pour vérifier que la commande est efficace, utilisez la commande
get-key-policy. L’exemple de commande suivant obtient la stratégie de clé pour la même clé KMS. Le paramètreoutputavec la valeurtextrenvoie un format de texte facile à lire.aws kms get-key-policy \ --policy-namedefault\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab\ --outputtextSortie :
{ "Version":"2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:Describe", "kms:List" ], "Resource" : "*" } ] }Pour plus d’informations, consultez Modification d’une stratégie de clé dans le Guide du développeur AWS Key Management Service.
-
Pour plus de détails sur l'API, reportez-vous PutKeyPolicy
à la section Référence des AWS CLI commandes.
-
- PHP
-
- Kit SDK pour PHP
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. /*** * @param string $keyId * @param string $policy * @return void */ public function putKeyPolicy(string $keyId, string $policy) { try { $this->client->putKeyPolicy([ 'KeyId' => $keyId, 'Policy' => $policy, ]); }catch(KmsException $caught){ echo "There was a problem replacing the key policy: {$caught->getAwsErrorMessage()}\n"; throw $caught; } }-
Pour plus de détails sur l'API, reportez-vous PutKeyPolicyà la section Référence des AWS SDK pour PHP API.
-
- Python
-
- SDK pour Python (Boto3)
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. class KeyPolicy: def __init__(self, kms_client): self.kms_client = kms_client @classmethod def from_client(cls) -> "KeyPolicy": """ Creates a KeyPolicy instance with a default KMS client. :return: An instance of KeyPolicy initialized with the default KMS client. """ kms_client = boto3.client("kms") return cls(kms_client) def set_policy(self, key_id: str, policy: dict[str, any]) -> None: """ Sets the policy of a key. Setting a policy entirely overwrites the existing policy, so care is taken to add a statement to the existing list of statements rather than simply writing a new policy. :param key_id: The ARN or ID of the key to set the policy to. :param policy: The existing policy of the key. :return: None """ principal = input( "Enter the ARN of an IAM role to set as the principal on the policy: " ) if key_id != "" and principal != "": # The updated policy replaces the existing policy. Add a new statement to # the list along with the original policy statements. policy["Statement"].append( { "Sid": "Allow access for ExampleRole", "Effect": "Allow", "Principal": {"AWS": principal}, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:DescribeKey", "kms:ReEncrypt*", ], "Resource": "*", } ) try: self.kms_client.put_key_policy(KeyId=key_id, Policy=json.dumps(policy)) except ClientError as err: logger.error( "Couldn't set policy for key %s. Here's why %s", key_id, err.response["Error"]["Message"], ) raise else: print(f"Set policy for key {key_id}.") else: print("Skipping set policy demo.")-
Pour plus de détails sur l'API, consultez PutKeyPolicyle AWS manuel de référence de l'API SDK for Python (Boto3).
-
Pour obtenir la liste complète des guides de développement du AWS SDK et des exemples de code, consultezUtilisation de ce service avec un AWS SDK. Cette rubrique comprend également des informations sur le démarrage et sur les versions précédentes de SDK.