Verschlüsseln und Entschlüsseln von AWS KMS Datenschlüsseln mit der AWS SDK for PHP Version 3 - AWS SDK for PHP

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verschlüsseln und Entschlüsseln von AWS KMS Datenschlüsseln mit der AWS SDK for PHP Version 3

Datenschlüssel sind Verschlüsselungsschlüssel, mit denen Sie Daten verschlüsseln können. Dazu gehören große Datenmengen und andere Datenverschlüsselungsschlüssel.

Sie können die (AWS KMS) eines verwenden, AWS KMS key um Datenschlüssel zu generieren, zu AWS Key Management Serviceverschlüsseln und zu entschlüsseln.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:

  • Verschlüsseln Sie einen Datenschlüssel mit Encrypt.

  • Entschlüsseln Sie einen Datenschlüssel mit Decrypt.

  • Verschlüsseln Sie einen Datenschlüssel erneut mit einem neuen KMS-Schlüssel mit ReEncrypt.

Der gesamte Beispielcode für die AWS SDK for PHP ist hier auf GitHubverfügbar.

Anmeldeinformationen

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen, wie unter beschriebenAnmeldeinformationen. Importieren Sie dann die AWS SDK for PHP, wie unter beschriebenGrundlegende Verwendung.

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im AWS KMS -Entwicklerhandbuch.

Encrypt

Die Operation Encrypt (Verschlüsseln) ist für die Verschlüsselung von Datenschlüsseln konzipiert, wird aber nicht häufig verwendet. Die GenerateDataKeyWithoutPlaintext Operationen GenerateDataKey und geben verschlüsselte Datenschlüssel zurück. Sie können die Encypt Methode verwenden, wenn Sie verschlüsselte Daten in eine neue AWS Region verschieben und ihren Datenschlüssel mit einem KMS-Schlüssel in der neuen Region verschlüsseln möchten.

Importe

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

Beispiel-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'; $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

Zur Entschlüsselung eines Datenschlüssels verwenden Sie die Produktion Decrypt.

Die ciphertextBlob von Ihnen angegebene muss der Wert des CiphertextBlob Feldes aus einer GenerateDataKey-, - oder -Verschlüsselungsantwort GenerateDataKeyWithoutPlaintextsein.

Importe

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

Beispiel-Code

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

Neuverschlüsseln

Um einen verschlüsselten Datenschlüssel zu entschlüsseln und dann den Datenschlüssel sofort mit einem anderen KMS-Schlüssel erneut zu verschlüsseln, verwenden Sie die -ReEncryptOperation. Die Operationen werden vollständig serverseitig in AWS KMS ausgeführt, sodass Ihr Klartext niemals außerhalb von AWS KMS sichtbar ist.

Die ciphertextBlob von Ihnen angegebene muss der Wert des CiphertextBlob Feldes aus einer GenerateDataKey-, - GenerateDataKeyWithoutPlaintextoder -Verschlüsselungsantwort sein.

Importe

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

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