

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Trabajar con subvenciones mediante la AWS KMS API y la AWS SDK para PHP versión 3
<a name="kms-example-grants"></a>

Una concesión es otro mecanismo para proporcionar permisos. Es una alternativa a la política de claves. Puedes utilizar las concesiones para conceder un acceso a largo plazo que permita a AWS los directores utilizar tu AWS Key Management Service (AWS KMS) gestionado por el cliente [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). Para obtener más información, consulte [Concesiones AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) en la*AWS Key Management Service Guía para desarrolladores*.

Los siguientes ejemplos muestran cómo:
+ Cree una concesión para una clave de KMS utilizando. [CreateGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#creategrant)
+ Vea una concesión para una clave KMS utilizando [ListGrants](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listgrants).
+ Retira una concesión para una clave KMS utilizando [RetireGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#retiregrant).
+ Revoca la concesión de una clave KMS mediante [RevokeGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#revokegrant).

Todo el código de ejemplo para el AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Antes de ejecutar el código de ejemplo, configure sus AWS credenciales, tal y como se describe en[Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe las AWS SDK para PHP, tal y como se describe en[Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

Para obtener más información sobre el uso de AWS Key Management Service (AWS KMS), consulte la [Guía del AWS KMS desarrollador](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Crear una concesión
<a name="create-a-grant"></a>

Para crear una concesión para un AWS KMS key, utilice la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operación.

 **Importaciones** 

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

use Aws\Exception\AwsException;
```

 **Código de muestra** 

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

## Visualización de una concesión
<a name="view-a-grant"></a>

Para obtener información detallada sobre las subvenciones de una AWS KMS key, utilice la [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operación.

 **Importaciones** 

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

use Aws\Exception\AwsException;
```

 **Código de muestra** 

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

## Retirada de una concesión
<a name="retire-a-grant"></a>

Para retirar una subvención de un AWS KMS key, utilice la [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)operación. Retire una concesión para efectuar una limpieza cuando termine de utilizarla.

 **Importaciones** 

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

use Aws\Exception\AwsException;
```

 **Código de muestra** 

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

## Revocación de una concesión
<a name="revoke-a-grant"></a>

Para revocar una concesión a un AWS KMS key, utilice la [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)operación. Puede revocar una concesión para denegar explícitamente las operaciones que dependen de ella.

 **Importaciones** 

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

use Aws\Exception\AwsException;
```

 **Código de muestra** 

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