

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 subventions à l'aide de l' AWS KMS API et de la AWS SDK pour PHP version 3
<a name="kms-example-grants"></a>

Un octroi est un autre mécanisme permettant de fournir des autorisations. C'est une alternative à la politique clé. Vous pouvez utiliser des subventions pour accorder un accès à long terme qui permet AWS aux principaux d'utiliser votre AWS Key Management Service (AWS KMS) géré par le client [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). Pour plus d'informations, consultez la section [Subventions AWS KMS dans](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) le *guide du AWS Key Management Service développeur*.

Les exemples suivants montrent comment :
+ Créez une autorisation pour une clé KMS à l'aide de [CreateGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#creategrant).
+ Affichez une autorisation pour une clé KMS à l'aide de [ListGrants](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listgrants).
+ Retirez une subvention pour une clé KMS en utilisant [RetireGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#retiregrant).
+ Révoquez une autorisation pour une clé KMS en utilisant [RevokeGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#revokegrant).

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

## Créer un octroi
<a name="create-a-grant"></a>

Pour créer une subvention pour un AWS KMS key, utilisez l'[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)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';
$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";
}
```

## Affichage d’un octroi
<a name="view-a-grant"></a>

Pour obtenir des informations détaillées sur les subventions sur un AWS KMS key, utilisez l'[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)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->listGrants([
        'KeyId' => $keyId,
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Retrait d'une subvention
<a name="retire-a-grant"></a>

Pour annuler une subvention pour un AWS KMS key, utilisez l'[RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)opération. Résilier un octroi pour nettoyer une fois que vous avez fini de l'utiliser.

 **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'
]);

$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";
}
```

## Révoquer une subvention
<a name="revoke-a-grant"></a>

Pour révoquer une subvention accordée à un AWS KMS key, utilisez l'[RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)opération. Vous pouvez révoquer un octroi pour refuser explicitement les opérations qui en dépendent.

 **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';
$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";
}
```