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.
Cifrado y descifrado de claves de datos AWS KMS utilizando la versión 3 de AWS SDK para PHP
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.
Puede utilizar las AWS Key Management Service (AWS KMS) de AWS KMS key para generar, cifrar y descifrar claves de datos.
Los siguientes ejemplos muestran cómo:
Todo el código de ejemplo de AWS SDK para PHP está disponible aquí en GitHub
Credenciales
Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en Autenticación AWS con la AWS SDK para PHP versión 3. A continuación, importe AWS SDK para PHP, como se indica en Instalación del AWS SDK para PHP versión 3.
Para obtener más información acerca de AWS Key Management Service (AWS KMS), consulte la AWS KMS Guía para desarrolladores.
Encrypt
La operación Encrypt se ha diseñado para cifrar claves de datos, pero no se utiliza con frecuencia. Las operaciones GenerateDataKey y GenerateDataKeyWithoutPlaintext 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
Para descifrar una clave de datos, use la operación Decrypt.
El ciphertextBlob que especifica debe ser el valor del campo CiphertextBlob desde una respuesta GenerateDataKey, GenerateDataKeyWithoutPlaintext o Encrypt.
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
Para descifrar una clave de datos cifrada y volver a cifrar inmediatamente la clave de datos con otra clave KMS, utilice la operación ReEncrypt. Las operaciones se realizan en su totalidad en el servidor en AWS KMS, por lo que su texto no cifrado nunca se expondrá fuera de AWS KMS.
El ciphertextBlob que especifica debe ser el valor del campo CiphertextBlob desde una respuesta GenerateDataKey, GenerateDataKeyWithoutPlaintext o Encrypt.
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"; }