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.
À utiliser PutKeyPolicy
avec un AWS SDK ou CLI
Les exemples de code suivants montrent comment utiliserPutKeyPolicy
.
- CLI
-
- AWS CLI
-
Pour modifier la politique de clé d'une KMS clé
L'
put-key-policy
exemple suivant modifie la politique de clé pour une clé gérée par le client.Pour commencer, créez une politique clé et enregistrez-la dans un JSON fichier local. Dans cet exemple, le fichier est
key_policy.json
. Vous pouvez également spécifier la politique clé sous forme de valeur de chaîne dupolicy
paramètre.La première déclaration de cette politique clé autorise le AWS compte à utiliser des IAM politiques pour contrôler l'accès à la KMS clé. La deuxième instruction donne à l'
test-user
utilisateur l'autorisation d'exécuter leslist-keys
commandesdescribe-key
et sur la KMS touche.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 KMS clé, cet exemple utilise l'identifiant de la clé, mais vous pouvez également utiliser une cléARN. Pour spécifier la politique clé, la commande utilise le
policy
paramètre. Pour indiquer que la politique se trouve dans un fichier, elle utilise lefile://
préfixe 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 lepolicy-name
paramètre avec une valeur dedefault
. Si aucun nom de politique n'est spécifié, la valeur par défaut estdefault
. La seule valeur valide estdefault
.aws kms put-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --policyfile://key_policy.json
Cette commande ne génère pas de sortie. Pour vérifier que la commande est efficace,
get-key-policy
utilisez-la. L'exemple de commande suivant permet d'obtenir la politique de clé pour la même KMS clé. Leoutput
paramètre avec une valeur detext
renvoie un format de texte facile à lire.aws kms get-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --outputtext
Sortie :
{ "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 la section Modification d'une politique clé dans le guide du développeur du service de gestion des AWS clés.
-
Pour API plus de détails, voir PutKeyPolicy
la section Référence des AWS CLI commandes.
-
- PHP
-
- 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 API plus de détails, voir PutKeyPolicyla section AWS SDK for PHP APIRéférence.
-
- Python
-
- SDKpour 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 API plus de détails, reportez-vous PutKeyPolicyà la section AWS SDKrelative à la référence Python (Boto3). API
-
Pour obtenir la liste complète des guides AWS SDK de développement et des exemples de code, consultezL'utilisation de ce service avec un AWS SDK. Cette rubrique inclut également des informations sur la mise en route et des détails sur SDK les versions précédentes.