

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.

# AWS Key Management ServiceEjemplos de en los que se utiliza la versión 3 de AWS SDK para PHP
<a name="kms-examples"></a>

AWS Key Management Service (AWS KMS) es un servicio administrado que le permite crear y controlar fácilmente las claves de cifrado que se utilizan para cifrar datos. Para obtener más información acerca de AWS KMS, consulte la [documentación de Amazon KMS](https://aws.amazon.com/documentation/kms/). Tanto si escribe aplicaciones seguras para PHP como si envía datos a otros servicios de AWS, AWS KMS le ayuda a mantener el control sobre quién puede usar las claves maestras y obtener acceso a sus datos cifrados.

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

**Topics**
+ [Trabajo con claves](kms-example-keys.md)
+ [Cifrar y descifrar claves de datos](kms-example-encrypt.md)
+ [Trabajar con las políticas de claves](kms-example-key-policy.md)
+ [Trabajar con concesiones](kms-example-grants.md)
+ [Trabajar con alias](kms-example-alias.md)

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

Los recursos principales de AWS Key Management Service (AWS KMS) son [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). Puede usar una clave KMS para cifrar sus datos.

Los siguientes ejemplos muestran cómo:
+ Cree una clave KMS de cliente utilizando [CreateKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createkey).
+ Genere una clave de datos utilizando [GenerateDataKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#generatedatakey).
+ Vea una clave KMS usando [DescribeKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#describekey).
+ Obtenga la clave IDs y el ARN clave de las claves de KMS utilizando [ListKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeys).
+ Habilite las claves KMS usando [EnableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#enablekey).
+ Deshabilite las claves KMS mediante [DisableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#disablekey).

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 clave de KMS.
<a name="create-a-cmk"></a>

Para crear una [clave KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), utilice la [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.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'
]);

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

## Generar una clave de datos
<a name="generate-a-data-key"></a>

Para generar una clave de cifrado de datos, utilice la [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operación. Esta operación devuelve copias en texto no cifrado y cifradas de la clave de datos que crea. Especifique la base AWS KMS key con la que se generará la clave de datos.

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

## Ver una clave KMS
<a name="view-a-cmk"></a>

Para obtener información detallada sobre una clave de KMS, incluidos el nombre de recurso de Amazon (ARN) y el [estado de la clave](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html), utilice la [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operación.

 `DescribeKey` no obtiene los alias. Para obtener los alias, utilice la [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.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';

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

## Obtenga el identificador de clave y la clave ARNs de una clave de KMS
<a name="get-the-key-id-and-key-arns-of-a-cmk"></a>

Para obtener el ID y el ARN de la clave KMS, utilice la [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.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'
]);

$limit = 10;

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

## Habilitar una clave KMS
<a name="enable-a-cmk"></a>

Para habilitar una clave KMS deshabilitada, utilice la [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.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';

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

## Deshabilitar una clave KMS
<a name="disable-a-cmk"></a>

Para deshabilitar una clave KMS, utilice la [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html)operación. Al deshabilitar una clave KMS se impide que se utilice.

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

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

# Cifrado y descifrado de claves de AWS KMS datos con la versión 3 AWS SDK para PHP
<a name="kms-example-encrypt"></a>

Las claves de datos son las claves de cifrado que puede utilizar para cifrar los datos, incluidas grandes cantidades de datos y otras claves de cifrado de datos.

Puedes usar AWS Key Management Service an's (AWS KMS) [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)para generar, cifrar y descifrar claves de datos.

Los siguientes ejemplos muestran cómo:
+ Cifrar una clave de datos mediante [Encrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#encrypt).
+ Descifrar una clave de datos mediante [Decrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#decrypt).
+ Vuelva a cifrar una clave de datos con una nueva clave de KMS mediante. [ReEncrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#reencrypt)

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

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

La operación [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) se ha diseñado para cifrar claves de datos, pero no se utiliza con frecuencia. Las [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)operaciones [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)y devuelven claves de datos cifradas. Podría utilizar el método `Encypt` cuando mueva datos cifrados a una nueva región de AWS y desee cifrar su clave de datos con una CMK en la nueva regió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';
$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>

Para descifrar una clave de datos, use la operación [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

El valor `ciphertextBlob` que especifique debe ser el valor del `CiphertextBlob` campo de una respuesta [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), o de [Encrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)

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

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

## Volver a cifrar
<a name="reencrypt"></a>

Para descifrar una clave de datos cifrada y volver a cifrarla inmediatamente con una clave KMS diferente, utilice la operación. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) Las operaciones se realizan íntegramente desde el lado interno del servidor AWS KMS, por lo que nunca se expone el texto sin formato fuera de él. AWS KMS

El valor `ciphertextBlob` que especifique debe ser el valor del `CiphertextBlob` campo de una respuesta [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), o [Encrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)

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

# Trabajar con políticas AWS KMS clave mediante la AWS SDK para PHP versión 3
<a name="kms-example-key-policy"></a>

Cuando crea una [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), determina quién puede usar y administrar esa clave KMS. Estos permisos se encuentran en un documento denominado la política de claves. Puede utilizar la política de claves para añadir, eliminar o modificar los permisos de una clave de KMS gestionada por el cliente en cualquier momento, pero no puede editar la política de claves de una clave de KMS AWS gestionada. Para obtener más información, consulte [Autenticación y control de acceso para AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html).

Los siguientes ejemplos muestran cómo:
+ Enumere los nombres de las políticas clave que se utilizan [ListKeyPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeypolicies).
+ Obtenga una política clave utilizando [GetKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#getkeypolicy).
+ Establezca una política clave utilizando [PutKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#putkeypolicy).

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

## Enumerar todas las políticas de claves
<a name="list-all-key-policies"></a>

Para obtener los nombres de las políticas de claves de una clave KMS, utilice la operación `ListKeyPolicies`. 

 **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->listKeyPolicies([
        'KeyId' => $keyId,
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Recuperar una política de claves
<a name="retrieve-a-key-policy"></a>

Para obtener la política de claves de una clave KMS, utilice la operación `GetKeyPolicy`.

 `GetKeyPolicy` requiere un nombre de política. A menos que haya creado una política de claves al crear la clave KMS, el único nombre de política válido es el predeterminado. Obtenga más información sobre la [política de claves predeterminada](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) en la *Guía para desarrolladores de AWS Key Management Service *.

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

## Establecer una política de claves
<a name="set-a-key-policy"></a>

Para establecer o cambiar una política de claves para una clave KMS, utilice la operación `PutKeyPolicy`.

 `PutKeyPolicy` requiere un nombre de política. A menos que haya creado una política de claves al crear la clave KMS, el único nombre de política válido es el predeterminado. Obtenga más información sobre la [política de claves predeterminada](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) en la *Guía para desarrolladores de AWS Key Management Service *.

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

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

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

AWS Key Management Service (AWS KMS) proporciona un nombre para mostrar opcional para un alias [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)denominado.

Los siguientes ejemplos muestran cómo:
+ Cree un alias utilizando [CreateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createalias).
+ Vea un alias usando [ListAliases](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listaliases).
+ Actualiza un alias usando [UpdateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#updatealias).
+ Elimine un alias utilizando [DeleteAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#deletealias).

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

## Creación de un alias de
<a name="create-an-alias"></a>

Para crear un alias para una clave de KMS, utilice la [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)operación. El alias debe ser único en la cuenta y AWS la región. Si crea un alias para una clave KMS que ya tiene un alias, `CreateAlias` crea otro alias para la misma clave KMS. No sustituye el alias existente.

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

## Ver un alias
<a name="view-an-alias"></a>

Para enumerar todos los alias de la persona que llama Cuenta de AWS Región de AWS, utilice la [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.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'
]);

$limit = 10;

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

## Actualizar un alias
<a name="update-an-alias"></a>

Para asociar un alias existente a una clave de KMS diferente, utilice la [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.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';
$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";
}
```

## Eliminar un alias
<a name="delete-an-alias"></a>

Para eliminar un alias, utilice la [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)operación. La eliminación de un alias no afecta a la clave KMS subyacente.

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

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