

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.

# AWS Key Management Service Beispiele mit der AWS SDK für PHP Version 3
<a name="kms-examples"></a>

AWS Key Management Service (AWS KMS) ist ein verwalteter Dienst, der es Ihnen leicht macht, die zur Verschlüsselung Ihrer Daten verwendeten Verschlüsselungsschlüssel zu erstellen und zu kontrollieren. Weitere Informationen zu AWS KMS finden Sie in der [Amazon KMS-Dokumentation](https://aws.amazon.com/documentation/kms/). Ganz gleich, ob Sie sichere PHP-Anwendungen schreiben oder Daten an andere AWS Dienste senden, es AWS KMS hilft Ihnen, die Kontrolle darüber zu behalten, wer Ihre Schlüssel verwenden und Zugriff auf Ihre verschlüsselten Daten erhalten kann.

Der gesamte Beispielcode für die AWS SDK für PHP Version 3 ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Arbeiten mit Schlüsseln](kms-example-keys.md)
+ [Verschlüsseln und Entschlüsseln von Datenschlüsseln](kms-example-encrypt.md)
+ [Arbeiten mit Schlüsselrichtlinien](kms-example-key-policy.md)
+ [Arbeiten mit Erteilungen](kms-example-grants.md)
+ [Arbeiten mit Aliasen](kms-example-alias.md)

# Arbeiten mit Schlüsseln mithilfe der AWS KMS API und der AWS SDK für PHP Version 3
<a name="kms-example-keys"></a>

Die primären Ressourcen in AWS Key Management Service () sind.AWS KMS[AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) Sie können einen KMS-Schlüssel verwenden, um Ihre Daten zu verschlüsseln.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Kunden-KMS-Schlüssel mit [CreateKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createkey).
+ Generieren Sie einen Datenschlüssel mit [GenerateDataKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#generatedatakey).
+ Zeigen Sie einen KMS-Schlüssel an mit [DescribeKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#describekey).
+ Schlüssel IDs und Schlüssel-ARNS von KMS-Schlüsseln abrufen mithilfe [ListKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeys)von.
+ Aktivieren Sie KMS-Schlüssel mit [EnableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#enablekey).
+ Deaktivieren Sie KMS-Schlüssel mit [DisableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#disablekey).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Erstellen Sie einen KMS-Schlüssel
<a name="create-a-cmk"></a>

Verwenden Sie den [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)Vorgang, um einen [KMS-Schlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) zu erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

//Creates a customer master key (CMK) in the caller's AWS account.
$desc = "Key for protecting critical data";

try {
    $result = $KmsClient->createKey([
        'Description' => $desc,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Erzeugen eines Datenschlüssels
<a name="generate-a-data-key"></a>

Verwenden Sie den [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)Vorgang, um einen Datenverschlüsselungsschlüssel zu generieren. Diese Operation gibt eine Klartextkopie und eine verschlüsselte Kopie des von ihr erstellten Datenschlüssels zurück. Geben Sie den an, AWS KMS key unter dem der Datenschlüssel generiert werden soll.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$keySpec = 'AES_256';

try {
    $result = $KmsClient->generateDataKey([
        'KeyId' => $keyId,
        'KeySpec' => $keySpec,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Einen KMS-Schlüssel anzeigen
<a name="view-a-cmk"></a>

Verwenden Sie den [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)Vorgang, um detaillierte Informationen zu einem KMS-Schlüssel zu erhalten, einschließlich des Amazon-Ressourcennamens (ARN) und des [Schlüsselstatus](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) des KMS-Schlüssels.

 Mit `DescribeKey` können keine Aliasnamen abgerufen werden. Verwenden Sie den [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)Vorgang, um Aliase abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->describeKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Ruft die Schlüssel-ID und den Schlüssel ARNs eines KMS-Schlüssels ab
<a name="get-the-key-id-and-key-arns-of-a-cmk"></a>

Verwenden Sie den [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)Vorgang, um die ID und den ARN des KMS-Schlüssels abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$limit = 10;

try {
    $result = $KmsClient->listKeys([
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aktivieren Sie einen KMS-Schlüssel
<a name="enable-a-cmk"></a>

Verwenden Sie den [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)Vorgang, um einen deaktivierten KMS-Schlüssel zu aktivieren.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->enableKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Deaktivieren Sie einen KMS-Schlüssel
<a name="disable-a-cmk"></a>

Verwenden Sie den [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html)Vorgang, um einen KMS-Schlüssel zu deaktivieren. Das Deaktivieren eines KMS-Schlüssels verhindert, dass er verwendet wird.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->disableKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Verschlüsselung und Entschlüsselung von AWS KMS Datenschlüsseln mit der Version 3 AWS SDK für PHP
<a name="kms-example-encrypt"></a>

Datenschlüssel sind Verschlüsselungsschlüssel, mit denen Sie Daten verschlüsseln können. Dazu gehören große Datenmengen und andere Datenverschlüsselungsschlüssel.

Sie können AWS Key Management Service an's (AWS KMS) verwenden, [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)um Datenschlüssel zu generieren, zu verschlüsseln und zu entschlüsseln.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Verschlüsseln Sie einen Datenschlüssel mit [Encrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#encrypt).
+ Entschlüsseln Sie einen Datenschlüssel mit [Decrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#decrypt).
+ Verschlüsseln Sie einen Datenschlüssel erneut mit einem neuen KMS-Schlüssel mithilfe von. [ReEncrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#reencrypt)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Encrypt
<a name="encrypt"></a>

Die Operation [Encrypt (Verschlüsseln)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) ist für die Verschlüsselung von Datenschlüsseln konzipiert, wird aber nicht häufig verwendet. Die [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)Operationen [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)und geben verschlüsselte Datenschlüssel zurück. Sie können die `Encypt` Methode verwenden, wenn Sie verschlüsselte Daten in eine neue AWS Region verschieben und deren Datenschlüssel mithilfe eines KMS-Schlüssels in der neuen Region verschlüsseln möchten.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$message = pack('c*', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);

try {
    $result = $KmsClient->encrypt([
        'KeyId' => $keyId,
        'Plaintext' => $message,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Decrypt
<a name="decrypt"></a>

Zur Entschlüsselung eines Datenschlüssels verwenden Sie die Produktion [Decrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

Der Wert`ciphertextBlob`, den Sie angeben, muss der Wert des `CiphertextBlob` Felds aus einer [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), oder [Encrypt-Antwort](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) sein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$ciphertext = 'Place your cipher text blob here';

try {
    $result = $KmsClient->decrypt([
        'CiphertextBlob' => $ciphertext,
    ]);
    $plaintext = $result['Plaintext'];
    var_dump($plaintext);
} catch (AwsException $e) {
    // Output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Neuverschlüsseln
<a name="reencrypt"></a>

Verwenden Sie den Vorgang, um einen verschlüsselten Datenschlüssel zu entschlüsseln und den Datenschlüssel dann sofort unter einem anderen KMS-Schlüssel erneut zu verschlüsseln. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) Die Operationen werden ausschließlich serverseitig innerhalb von ausgeführt AWS KMS, sodass Ihr Klartext niemals außerhalb von angezeigt wird. AWS KMS

Der Wert`ciphertextBlob`, den Sie angeben, muss der Wert des `CiphertextBlob` Felds aus einer [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), oder [Encrypt-Antwort](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) sein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$ciphertextBlob = 'Place your cipher text blob here';

try {
    $result = $KmsClient->reEncrypt([
        'CiphertextBlob' => $ciphertextBlob,
        'DestinationKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Mit der AWS SDK für PHP Version 3 mit AWS KMS wichtigen Richtlinien arbeiten
<a name="kms-example-key-policy"></a>

Wenn Sie einen erstellen [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), legen Sie fest, wer diesen KMS-Schlüssel verwenden und verwalten kann. Diese Berechtigungen werden in einem Dokument namens Schlüsselrichtlinie festgehalten. Sie können die Schlüsselrichtlinie verwenden, um jederzeit Berechtigungen für einen vom Kunden verwalteten KMS-Schlüssel hinzuzufügen, zu entfernen oder zu ändern, aber Sie können die Schlüsselrichtlinie für einen AWS verwalteten KMS-Schlüssel nicht bearbeiten. Weitere Informationen finden Sie unter [Authentifizierung und Zugriffskontrolle für AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Listet die Namen der wichtigsten Richtlinien auf, die verwendet [ListKeyPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeypolicies)werden.
+ Holen Sie sich eine wichtige Richtlinie mit [GetKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#getkeypolicy).
+ Legen Sie eine wichtige Richtlinie fest mit [PutKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#putkeypolicy).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Alle wichtigen Richtlinien auflisten
<a name="list-all-key-policies"></a>

Verwenden Sie den `ListKeyPolicies` Vorgang, um die Namen der wichtigsten Richtlinien für einen KMS-Schlüssel abzurufen. 

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$limit = 10;

try {
    $result = $KmsClient->listKeyPolicies([
        'KeyId' => $keyId,
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie eine wichtige Richtlinie ab
<a name="retrieve-a-key-policy"></a>

Verwenden Sie den `GetKeyPolicy` Vorgang, um die Schlüsselrichtlinie für einen KMS-Schlüssel abzurufen.

 `GetKeyPolicy` erfordert einen Richtliniennamen. Sofern Sie beim Erstellen des KMS-Schlüssels keine Schlüsselrichtlinie erstellt haben, ist der einzig gültige Richtlinienname der Standardwert. Weitere Informationen zur [Standardschlüsselrichtlinie](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) finden Sie im *AWS Key Management Service Entwicklerhandbuch*.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$policyName = "default";

try {
    $result = $KmsClient->getKeyPolicy([
        'KeyId' => $keyId,
        'PolicyName' => $policyName
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Legen Sie eine wichtige Richtlinie fest
<a name="set-a-key-policy"></a>

Verwenden Sie den `PutKeyPolicy` Vorgang, um eine Schlüsselrichtlinie für einen KMS-Schlüssel einzurichten oder zu ändern.

 `PutKeyPolicy` erfordert einen Richtliniennamen. Sofern Sie beim Erstellen des KMS-Schlüssels keine Schlüsselrichtlinie erstellt haben, ist der einzig gültige Richtlinienname der Standardwert. Weitere Informationen zur [Standardschlüsselrichtlinie](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) finden Sie im *AWS Key Management Service Entwicklerhandbuch*.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$policyName = "default";

try {
    $result = $KmsClient->putKeyPolicy([
        'KeyId' => $keyId,
        'PolicyName' => $policyName,
        'Policy' => '{ 
            "Version":"2012-10-17",		 	 	  
            "Id": "custom-policy-2016-12-07", 
            "Statement": [ 
                { "Sid": "Enable IAM User Permissions", 
                "Effect": "Allow", 
                "Principal": 
                   { "AWS": "arn:aws:iam::111122223333:user/root" }, 
                "Action": [ "kms:*" ], 
                "Resource": "*" }, 
                { "Sid": "Enable IAM User Permissions", 
                "Effect": "Allow", 
                "Principal":                 
                   { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, 
                "Action": [
                    "kms:Encrypt*",
                    "kms:GenerateDataKey*",
                    "kms:Decrypt*",
                    "kms:DescribeKey*",
                    "kms:ReEncrypt*"
                ], 
                "Resource": "*" }                 
            ]            
        } '
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Arbeiten mit Zuschüssen mithilfe der AWS KMS API und der AWS SDK für PHP Version 3
<a name="kms-example-grants"></a>

Eine Erteilung ist ein weiterer Mechanismus für die Bereitstellung von Berechtigungen. Es ist eine Alternative zur wichtigsten Richtlinie. Sie können Zuschüsse verwenden, um langfristigen Zugriff zu gewähren, sodass AWS Schulleiter Ihr AWS Key Management Service (AWS KMS) vom Kunden [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)verwaltetes () nutzen können. Weitere Informationen finden Sie unter [Grants AWS KMS im AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) *Developer* Guide.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Grant für einen KMS-Schlüssel mithilfe von [CreateGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#creategrant).
+ Einen Zuschuss für einen KMS-Schlüssel anzeigen mit [ListGrants](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listgrants).
+ Einen Zuschuss für einen KMS-Schlüssel zurückziehen mit [RetireGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#retiregrant).
+ Widerrufen Sie eine Erteilung für einen KMS-Schlüssel mithilfe von [RevokeGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#revokegrant).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Erstellen einer Erteilung
<a name="create-a-grant"></a>

Verwenden Sie die [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)Operation AWS KMS key, um einen Zuschuss für einen zu erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$granteePrincipal = "arn:aws:iam::111122223333:user/Alice";
$operation = ['Encrypt', 'Decrypt']; // A list of operations that the grant allows.

try {
    $result = $KmsClient->createGrant([
        'GranteePrincipal' => $granteePrincipal,
        'KeyId' => $keyId,
        'Operations' => $operation
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Anzeigen einer Gewährung
<a name="view-a-grant"></a>

Um detaillierte Informationen zu den Zuschüssen für eine zu erhalten AWS KMS key, verwenden Sie die [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)Operation.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$limit = 10;

try {
    $result = $KmsClient->listGrants([
        'KeyId' => $keyId,
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Einen Zuschuss zurückziehen
<a name="retire-a-grant"></a>

Um einen Zuschuss für einen zurückzuziehen AWS KMS key, verwenden Sie den [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)Vorgang. Heben Sie nicht mehr benötigte Erteilungen auf.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$grantToken = 'Place your grant token here';

try {
    $result = $KmsClient->retireGrant([
        'GrantToken' => $grantToken,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}

//Can also identify grant to retire by a combination of the grant ID
//and the Amazon Resource Name (ARN) of the customer master key (CMK)
$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$grantId = 'Unique identifier of the grant returned during CreateGrant operation';

try {
    $result = $KmsClient->retireGrant([
        'GrantId' => $grantToken,
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Widerrufen Sie einen Zuschuss
<a name="revoke-a-grant"></a>

Um einen Zuschuss für einen zu widerrufen AWS KMS key, verwenden Sie den [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)Vorgang. Sie können eine Erteilung widerrufen, um ausdrücklich Produktionen abzulehnen, die diese Erteilung unbedingt benötigen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$grantId = "grant1";

try {
    $result = $KmsClient->revokeGrant([
        'KeyId' => $keyId,
        'GrantId' => $grantId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Arbeiten mit Aliasen unter Verwendung der AWS KMS API und der AWS SDK für PHP Version 3
<a name="kms-example-alias"></a>

AWS Key Management Service (AWS KMS) bietet einen optionalen Anzeigenamen für einen [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)aufgerufenen Alias.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Alias mit [CreateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createalias).
+ Einen Alias anzeigen mit [ListAliases](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listaliases).
+ Aktualisieren Sie einen Alias mit [UpdateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#updatealias).
+ Löschen Sie einen Alias mit [DeleteAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#deletealias).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Erstellen eines Alias
<a name="create-an-alias"></a>

Verwenden Sie den [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)Vorgang, um einen Alias für einen KMS-Schlüssel zu erstellen. Der Alias muss für das Konto und die AWS Region eindeutig sein. Wenn Sie einen Alias für einen KMS-Schlüssel erstellen, der bereits über einen Alias verfügt, `CreateAlias` wird ein weiterer Alias für denselben KMS-Schlüssel erstellt. Der vorhandene Alias wird nicht ersetzt.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->createAlias([
        'AliasName' => $aliasName,
        'TargetKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Einen Alias anzeigen
<a name="view-an-alias"></a>

Verwenden Sie die Operation, um alle Aliase im AWS-Konto und AWS-Region des Anrufers aufzulisten. [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$limit = 10;

try {
    $result = $KmsClient->listAliases([
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aktualisieren Sie einen Alias
<a name="update-an-alias"></a>

Verwenden Sie den [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)Vorgang, um einen vorhandenen Alias einem anderen KMS-Schlüssel zuzuordnen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->updateAlias([
        'AliasName' => $aliasName,
        'TargetKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Einen Alias löschen
<a name="delete-an-alias"></a>

Verwenden Sie den [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)Vorgang, um einen Alias zu löschen. Das Löschen eines Alias hat keine Auswirkungen auf den zugrunde liegenden KMS-Schlüssel.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->deleteAlias([
        'AliasName' => $aliasName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```