

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.

# Verwaltung von Geheimnissen mit der Secrets Manager API und der AWS SDK für PHP Version 3
<a name="secretsmanager-examples-manage-secret"></a>

AWS Secrets Manager speichert und verwaltet gemeinsam genutzte Geheimnisse wie Passwörter, API-Schlüssel und Datenbankanmeldedaten. Mit dem Secrets Manager-Dienst können Entwickler hartcodierte Anmeldeinformationen im bereitgestellten Code durch einen eingebetteten Aufruf von Secrets Manager ersetzen.

Secrets Manager unterstützt nativ die automatische geplante Rotation von Anmeldeinformationen für Amazon Relational Database Service (Amazon RDS) -Datenbanken und erhöht so die Anwendungssicherheit. Secrets Manager kann auch Secrets für andere Datenbanken und Dienste von Drittanbietern nahtlos rotieren, AWS Lambda um dienstspezifische Details zu implementieren.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie ein Geheimnis mit [CreateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#createsecret).
+ Rufen Sie ein Geheimnis ab mit [GetSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#getsecretvalue).
+ Listet alle von Secrets Manager gespeicherten Geheimnisse mit auf [ListSecrets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#listsecrets).
+ Rufen Sie Details zu einem bestimmten Geheimnis ab mit [DescribeSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#describesecret).
+ Aktualisieren Sie ein bestimmtes Geheimnis mit [PutSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#putsecretvalue).
+ Richten Sie eine geheime Rotation ein mit [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret).
+ Markieren Sie ein Geheimnis zum Löschen mit [DeleteSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#deletesecret).

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).

## Erstellen Sie ein Geheimnis in Secrets Manager
<a name="create-a-secret-in-asm"></a>

Verwenden Sie die [CreateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#createsecret)Operation, um ein Geheimnis in Secrets Manager zu erstellen.

In diesem Beispiel werden ein Benutzername und ein Passwort als JSON-Zeichenfolge gespeichert.

 **Importe** 

```
require 'vendor/autoload.php';
use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);
$secretName = 'MySecretName';
$secret = json_encode([
    "username" => getenv("SMDEMO_USERNAME"),
    "password" => getenv("SMDEMO_PASSWORD"),
]);
$description = '<<Description>>';
try {
    $result = $client->createSecret([
        'Description' => $description,
        'Name' => $secretName,
        'SecretString' => $secret,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie ein Geheimnis aus Secrets Manager ab
<a name="retrieve-a-secret-from-asm"></a>

Verwenden Sie den [GetSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#getsecretvalue)Vorgang, um den Wert eines in Secrets Manager gespeicherten Geheimnisses abzurufen.

Im folgenden Beispiel `secret` handelt es sich um eine Zeichenfolge, die den gespeicherten Wert enthält. Wenn der Wert für `username` ist `<<USERNAME>>` und der Wert für `password` ist`<<PASSWORD>>`, lautet die Ausgabe von`secret`:

```
{"username":"<<USERNAME>>","password":"<<PASSWORD>>"}
```

Wird verwendet`json_decode($secret, true)`, um auf die Array-Werte zuzugreifen.

 **Importe** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-east-1',
]);

$secretName = 'MySecretName';

try {
    $result = $client->getSecretValue([
        'SecretId' => $secretName,
    ]);
} catch (AwsException $e) {
    $error = $e->getAwsErrorCode();
    if ($error == 'DecryptionFailureException') {
        // Secrets Manager can't decrypt the protected secret text using the provided AWS KMS key.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InternalServiceErrorException') {
        // An error occurred on the server side.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InvalidParameterException') {
        // You provided an invalid value for a parameter.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InvalidRequestException') {
        // You provided a parameter value that is not valid for the current state of the resource.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'ResourceNotFoundException') {
        // We can't find the resource that you asked for.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
}
// Decrypts secret using the associated KMS CMK.
// Depending on whether the secret is a string or binary, one of these fields will be populated.
if (isset($result['SecretString'])) {
    $secret = $result['SecretString'];
} else {
    $secret = base64_decode($result['SecretBinary']);
}
print $secret;
$secretArray = json_decode($secret, true);
$username = $secretArray['username'];
$password = $secretArray['password'];

// Your code goes here;
```

## Im Secrets Manager gespeicherte Geheimnisse auflisten
<a name="list-secrets-stored-in-asm"></a>

Rufen Sie mithilfe der [ListSecrets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#listsecrets)Operation eine Liste aller Geheimnisse ab, die von Secrets Manager gespeichert wurden.

 **Importe** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

try {
    $result = $client->listSecrets([
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie Details zu einem Geheimnis ab
<a name="retrieve-details-about-a-secret"></a>

Gespeicherte Geheimnisse enthalten Metadaten zu Rotationsregeln, den Zeitpunkt des letzten Zugriffs bzw. der letzten Änderung, vom Benutzer erstellte Tags und den Amazon-Ressourcennamen (ARN). Verwenden Sie den [DescribeSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#describesecret)Vorgang, um die Details eines bestimmten Geheimnisses abzurufen, das in Secrets Manager gespeichert ist.

 **Importe** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->describeSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Den Secret-Wert aktualisieren
<a name="update-the-secret-value"></a>

Verwenden Sie den [PutSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#putsecretvalue)Vorgang, um einen neuen verschlüsselten geheimen Wert in Secrets Manager zu speichern.

Auf diese Art wird eine neue Version des Geheimnisses erstellt. Wenn bereits eine Version des Geheimnisses vorhanden ist, fügen Sie den Parameter `VersionStages` mit dem Wert in `AWSCURRENT` hinzu, um sicherzustellen, dass der neue Wert verwendet wird, wenn der Wert abgerufen wird.

 **Importe** 

```
require 'vendor/autoload.php';
use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);
$secretName = 'MySecretName';
$secret = json_encode([
    "username" => getenv("SMDEMO_USERNAME"),
    "password" => getenv("SMDEMO_PASSWORD"),
]);
try {
    $result = $client->putSecretValue([
        'SecretId' => $secretName,
        'SecretString' => $secret,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Den Wert auf ein vorhandenes Geheimnis im Secrets Manager drehen
<a name="rotate-the-value-to-an-existing-secret-in-asm"></a>

Verwenden Sie eine Lambda-Rotationsfunktion und die [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret)Operation, um den Wert eines vorhandenen Geheimnisses, das in Secrets Manager gespeichert ist, zu rotieren.

Bevor Sie beginnen, erstellen Sie eine Lambda-Funktion, um Ihr Geheimnis zu rotieren. Der [AWS Codebeispielkatalog](https://docs.aws.amazon.com/code-samples/latest/catalog/code-catalog-lambda_functions-secretsmanager.html) enthält derzeit mehrere Lambda-Codebeispiele für rotierende Amazon RDS-Datenbankanmeldedaten.

**Anmerkung**  
Weitere Informationen zur Rotation von Geheimnissen finden Sie unter [Rotating Your AWS Secrets Manager Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) im AWS Secrets Manager Benutzerhandbuch.

Nachdem Sie Ihre Lambda-Funktion eingerichtet haben, konfigurieren Sie eine neue geheime Rotation.

 **Importe** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';
$lambda_ARN = 'arn:aws:lambda:us-west-2:123456789012:function:MyTestDatabaseRotationLambda';
$rules = ['AutomaticallyAfterDays' => 30];

try {
    $result = $client->rotateSecret([
        'RotationLambdaARN' => $lambda_ARN,
        'RotationRules' => $rules,
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

Wenn eine Rotation konfiguriert ist, können Sie mithilfe der [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret)Operation eine Rotation implementieren.

 **Importe** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->rotateSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen Sie ein Geheimnis aus Secrets Manager
<a name="delete-a-secret-from-asm"></a>

Verwenden Sie den [DeleteSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#deletesecret)Vorgang, um ein bestimmtes Geheimnis aus Secrets Manager zu entfernen. Um zu verhindern, dass ein Geheimnis versehentlich gelöscht wird, wird dem Geheimnis automatisch ein DeletionDate Stempel hinzugefügt, der ein Wiederherstellungszeitfenster festlegt, in dem Sie den Löschvorgang rückgängig machen können. Wird kein Wiederherstellungszeitraum angegeben, so beträgt er standardmäßig 30 Tage.

 **Importe** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->deleteSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Ähnliche Informationen
<a name="related-information"></a>

In den AWS SDK für PHP Beispielen werden die folgenden REST-Operationen aus der AWS Secrets Manager API-Referenz verwendet:
+  [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) 
+  [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) 
+  [ListSecrets](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ListSecrets.html) 
+  [DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html) 
+  [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html) 
+  [RotateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_RotateSecret.html) 
+  [DeleteSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteSecret.html) 

Weitere Informationen zur Verwendung AWS Secrets Manager finden Sie im [AWS Secrets Manager Benutzerhandbuch](https://docs.aws.amazon.com/secretsmanager/latest/userguide/).