Weitere AWS SDK Beispiele sind im Repo AWS Doc SDK Examples
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden Sie es PutKeyPolicy
mit einem AWS SDK oder CLI
Die folgenden Codebeispiele zeigen die VerwendungPutKeyPolicy
.
- CLI
-
- AWS CLI
-
Um die Schlüsselrichtlinie für einen KMS Schlüssel zu ändern
Im folgenden
put-key-policy
Beispiel wird die Schlüsselrichtlinie für einen vom Kunden verwalteten Schlüssel geändert.Erstellen Sie zunächst eine Schlüsselrichtlinie und speichern Sie sie in einer lokalen JSON Datei. In diesem Beispiel ist die Datei
key_policy.json
. Sie können die Schlüsselrichtlinie auch als Zeichenfolgenwert despolicy
Parameters angeben.Die erste Anweisung in dieser Schlüsselrichtlinie erteilt dem AWS Konto die Erlaubnis, IAM Richtlinien zur Steuerung des Zugriffs auf den KMS Schlüssel zu verwenden. Die zweite Anweisung erteilt dem
test-user
Benutzer die Erlaubnis, dielist-keys
Befehledescribe-key
und auf dem KMS Schlüssel auszuführen.Inhalt von
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" : "*" } ] }
Um den KMS Schlüssel zu identifizieren, verwendet dieses Beispiel die Schlüssel-ID, Sie können aber auch einen Schlüssel verwendenARN. Um die Schlüsselrichtlinie anzugeben, verwendet der Befehl den
policy
Parameter. Um anzugeben, dass sich die Richtlinie in einer Datei befindet, wird das erforderlichefile://
Präfix verwendet. Dieses Präfix ist erforderlich, um Dateien auf allen unterstützten Betriebssystemen zu identifizieren. Schließlich verwendet der Befehl denpolicy-name
Parameter mit dem Wertdefault
. Wenn kein Richtlinienname angegeben ist, ist der Standardwertdefault
. Der einzige gültige Wert istdefault
.aws kms put-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --policyfile://key_policy.json
Dieser Befehl erzeugt keine Ausgabe. Verwenden Sie den Befehl, um zu überprüfen, ob der
get-key-policy
Befehl wirksam war. Mit dem folgenden Beispielbefehl wird die Schlüsselrichtlinie für denselben KMS Schlüssel abgerufen. Deroutput
Parameter mit dem Wert vontext
gibt ein Textformat zurück, das leicht zu lesen ist.aws kms get-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --outputtext
Ausgabe:
{ "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" : "*" } ] }
Weitere Informationen finden Sie unter Ändern einer Schlüsselrichtlinie im AWS Key Management Service Developer Guide.
-
APIEinzelheiten finden Sie PutKeyPolicy
in der AWS CLI Befehlsreferenz.
-
- PHP
-
- SDK für PHP
-
Anmerkung
Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository
einrichten und ausführen. /*** * @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; } }
-
APIEinzelheiten finden Sie PutKeyPolicyin der AWS SDK for PHP APIReferenz.
-
- Python
-
- SDKfür Python (Boto3)
-
Anmerkung
Es gibt noch mehr dazu. GitHub Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository
einrichten und ausführen. 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.")
-
APIEinzelheiten finden Sie unter PutKeyPolicyPython (Boto3) API -Referenz.AWS SDK
-