Da utilizzare PutKeyPolicy con un AWS SDK o CLI - AWS Key Management Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Da utilizzare PutKeyPolicy con un AWS SDK o CLI

I seguenti esempi di codice mostrano come utilizzarePutKeyPolicy.

CLI
AWS CLI

Modificare la politica chiave per una KMS chiave

L'put-key-policyesempio seguente modifica la politica chiave per una chiave gestita dal cliente.

Per iniziare, create una policy chiave e salvatela in un JSON file locale. In questo esempio, il file èkey_policy.json. È inoltre possibile specificare la politica chiave come valore di stringa del policy parametro.

La prima dichiarazione di questa politica chiave autorizza l' AWS account a utilizzare IAM le politiche per controllare l'accesso alla KMS chiave. La seconda istruzione fornisce all'test-userutente il permesso di eseguire i list-keys comandi describe-key and sulla KMS chiave.

Contenuto di 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" : "*" } ] }

Per identificare la KMS chiave, in questo esempio viene utilizzato l'ID della chiave, ma è possibile utilizzare anche una chiaveARN. Per specificare la politica della chiave, il comando utilizza il policy parametro. Per indicare che la politica è contenuta in un file, utilizza il file:// prefisso richiesto. Questo prefisso è necessario per identificare i file su tutti i sistemi operativi supportati. Infine, il comando utilizza il policy-name parametro con un valore didefault. Se non viene specificato alcun nome di policy, il valore predefinito èdefault. L'unico valore valido è default.

aws kms put-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --policy file://key_policy.json

Il comando non produce output. Per verificare che il comando sia stato efficace, utilizzare il get-key-policy comando. Il comando di esempio seguente ottiene la politica della chiave per la stessa KMS chiave. Il output parametro con un valore di text restituisce un formato di testo facile da leggere.

aws kms get-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --output text

Output:

{ "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" : "*" } ] }

Per ulteriori informazioni, vedere Modifica di una politica AWS chiave nella Key Management Service Developer Guide.

  • Per API i dettagli, vedere PutKeyPolicyin AWS CLI Command Reference.

PHP
SDK per PHP
Nota

C'è altro su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice 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; } }
Python
SDKper Python (Boto3)
Nota

C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice 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.")
  • Per API i dettagli, vedere PutKeyPolicyPython (Boto3) Reference.AWS SDK API

Per un elenco completo delle guide per AWS SDK sviluppatori e degli esempi di codice, consulta. Utilizzo di questo servizio con un AWS SDK Questo argomento include anche informazioni su come iniziare e dettagli sulle SDK versioni precedenti.