

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.

# Utilisation des politiques AWS KMS clés à l'aide de la AWS SDK pour PHP version 3
<a name="kms-example-key-policy"></a>

Lorsque vous créez une clé KMS [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), vous déterminez qui peut utiliser et gérer cette clé KMS. Ces autorisations sont contenues dans un document appelé politique de clé. Vous pouvez utiliser la politique clé pour ajouter, supprimer ou modifier des autorisations à tout moment pour une clé KMS gérée par le client, mais vous ne pouvez pas modifier la politique clé pour une clé KMS AWS gérée. Pour plus d'informations, consultez [Authentification et contrôle d'accès pour AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html).

Les exemples suivants montrent comment :
+ Répertoriez les noms des principales politiques à l'aide de [ListKeyPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeypolicies).
+ Obtenez une politique clé en utilisant [GetKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#getkeypolicy).
+ Définissez une politique clé à l'aide de [PutKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#putkeypolicy).

Tous les exemples de code pour le AWS SDK pour PHP sont [disponibles ici GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Informations d’identification
<a name="examplecredentials"></a>

Avant d'exécuter l'exemple de code, configurez vos AWS informations d'identification, comme décrit dans[Authentification à l' AWS aide de AWS SDK pour PHP la version 3](credentials.md). Importez ensuite le AWS SDK pour PHP, comme décrit dans[Installation de la AWS SDK pour PHP version 3](getting-started_installation.md).

Pour plus d'informations sur l'utilisation de AWS Key Management Service (AWS KMS), consultez le [manuel du AWS KMS développeur](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Répertorier toutes les politiques clés
<a name="list-all-key-policies"></a>

Pour obtenir les noms des politiques clés pour une clé KMS, utilisez l'`ListKeyPolicies`opération. 

 **Importations** 

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

use Aws\Exception\AwsException;
```

 **Exemple de 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";
}
```

## Récupérer une politique clé
<a name="retrieve-a-key-policy"></a>

Pour obtenir la politique de clé d'une clé KMS, utilisez l'`GetKeyPolicy`opération.

 `GetKeyPolicy` nécessite un nom de politique. À moins que vous n'ayez créé une politique clé lors de la création de la clé KMS, le seul nom de politique valide est le nom par défaut. Pour en savoir plus sur la [politique relative aux clés par défaut](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html), consultez le *guide du AWS Key Management Service développeur*.

 **Importations** 

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

use Aws\Exception\AwsException;
```

 **Exemple de 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";
}
```

## Définissez une politique clé
<a name="set-a-key-policy"></a>

Pour établir ou modifier une politique de clé pour une clé KMS, utilisez l'`PutKeyPolicy`opération.

 `PutKeyPolicy` nécessite un nom de politique. À moins que vous n'ayez créé une politique clé lors de la création de la clé KMS, le seul nom de politique valide est le nom par défaut. Pour en savoir plus sur la [politique relative aux clés par défaut](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html), consultez le *guide du AWS Key Management Service développeur*.

 **Importations** 

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

use Aws\Exception\AwsException;
```

 **Exemple de 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";
}
```