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.
Migration des Amazon S3-Verschlüsselungsclients (V1 auf V2) im AWS SDK für PHP Version 3
Anmerkung
Wenn Sie Version 2 (V2) des Amazon S3-Verschlüsselungsclients verwenden und auf Version 3 (V3) migrieren möchten, finden Sie weitere Informationen unterMigration des Amazon S3-Verschlüsselungsclients (V2 auf V3) im AWS SDK für PHP Version 3.
In diesem Thema wird gezeigt, wie Sie Ihre Anwendungen von Version 1 (V1) des Amazon Simple Storage Service (Amazon S3) -Verschlüsselungsclients auf Version 2 (V2) migrieren und die Anwendungsverfügbarkeit während des gesamten Migrationsprozesses sicherstellen.
Überblick über die Migration
Diese Migration erfolgt in zwei Phasen:
1. Aktualisieren Sie bestehende Clients, damit sie neue Formate lesen können. Stellen Sie zunächst eine aktualisierte Version von AWS SDK für PHP in Ihrer Anwendung bereit. Auf diese Weise können vorhandene V1-Verschlüsselungsclients Objekte entschlüsseln, die von den neuen V2-Clients geschrieben wurden. Wenn Ihre Anwendung mehrere AWS SDKs verwendet, müssen Sie jedes SDK separat aktualisieren.
2. Migrieren Sie die Verschlüsselungs- und Entschlüsselungsclients auf V2. Sobald alle Ihre V1-Verschlüsselungsclients neue Formate lesen können, können Sie Ihre vorhandenen Verschlüsselungs- und Entschlüsselungsclients auf ihre jeweiligen V2-Versionen migrieren.
Aktualisieren Sie bestehende Clients, um neue Formate zu lesen
Der V2-Verschlüsselungsclient verwendet Verschlüsselungsalgorithmen, die ältere Versionen des Clients nicht unterstützen. Der erste Schritt der Migration besteht darin, Ihre V1-Entschlüsselungsclients auf die neueste SDK-Version zu aktualisieren. Nach Abschluss dieses Schritts können die V1-Clients Ihrer Anwendung Objekte entschlüsseln, die mit V2-Verschlüsselungsclients verschlüsselt wurden. Einzelheiten zu den einzelnen Hauptversionen von finden Sie weiter unten. AWS SDK für PHP
Wird geupgradet AWS SDK für PHP Version 3
Version 3 ist die neueste Version von AWS SDK für PHP. Um diese Migration abzuschließen, müssen Sie Version 3.148.0 oder höher des aws/aws-sdk-php Pakets verwenden.
Installation über die Befehlszeile
Aktualisieren Sie für Projekte, die mit Composer installiert wurden, in der Composer-Datei das SDK-Paket auf Version 3.148.0 des SDK und führen Sie dann den folgenden Befehl aus.
composer update aws/aws-sdk-php
Installation mithilfe der Phar- oder Zip-Datei
Verwenden Sie eine der folgenden Methoden: Stellen Sie sicher, dass Sie die aktualisierte SDK-Datei an dem Ort platzieren, der für Ihren Code erforderlich ist. Dieser wird in der Requre-Anweisung festgelegt.
Laden Sie für Projekte, die mithilfe der Phar-Datei installiert wurden, die aktualisierte Datei herunter: aws.phar.
<?php require '/path/to/aws.phar'; ?>
Laden Sie für Projekte, die mithilfe der Zip-Datei installiert wurden, die aktualisierte Datei herunter: .
<?php require '/path/to/aws-autoloader.php'; ?>
Migrieren Sie die Verschlüsselungs- und Entschlüsselungsclients auf V2
Nachdem Sie Ihre Clients auf die neuen Verschlüsselungsformate aktualisiert haben, können Sie Ihre Anwendungen auf die V2-Verschlüsselungs- und Entschlüsselungsclients aktualisieren. Die folgenden Schritte zeigen Ihnen, wie Sie Ihren Code erfolgreich von V1 auf V2 migrieren.
Anforderungen für die Aktualisierung auf V2-Clients
1. Der AWS KMS Verschlüsselungskontext muss an die S3EncryptionClientV2::putObjectAsync Methoden S3EncryptionClientV2::putObject und übergeben werden. AWS KMS Der Verschlüsselungskontext ist ein assoziatives Array von Schlüssel-Wert-Paaren, die Sie dem Verschlüsselungskontext für AWS KMS die Schlüsselverschlüsselung hinzufügen müssen. Wenn kein zusätzlicher Kontext erforderlich ist, können Sie ein leeres Array übergeben.
2. @SecurityProfilemuss in die getObject und getObjectAsync Methoden in übergeben werdenS3EncryptionClientV2. @SecurityProfileist ein neuer obligatorischer Parameter der getObject... Methoden. Wenn auf gesetzt'V2', können nur Objekte entschlüsselt werden, V2-compatible deren Format verschlüsselt ist. Wenn Sie diesen Parameter auf setzen, können 'V2_AND_LEGACY' auch Objekte, die im V1-compatible Format verschlüsselt sind, entschlüsselt werden. Um die Migration zu unterstützen, setzen Sie den Wert @SecurityProfile auf'V2_AND_LEGACY'. 'V2'Nur für die Entwicklung neuer Anwendungen verwenden.
3. (optional) Fügen Sie den @KmsAllowDecryptWithAnyCmk Parameter in das S3EncryptionClientV2::getObjectAsync* methods. ein S3EncryptionClientV2::getObject und Es wurde ein neuer Parameter namens hinzugefügt@KmsAllowDecryptWithAnyCmk. Wenn Sie diesen Parameter so einstellen, dass die Entschlüsselung ohne Angabe eines KMS-Schlüssels true aktiviert wird. Der Standardwert ist false.
4. Wenn für die Entschlüsselung mit einem V2-Client der @KmsAllowDecryptWithAnyCmk Parameter true für die "getObject..." Methodenaufrufe nicht auf gesetzt ist, kms-key-id muss a an den KmsMaterialsProviderV2 Konstruktor übergeben werden.
Beispiele für Migrationen
Beispiel 1: Migration zu V2-Clients
Pre-migration
use Aws\S3\Crypto\S3EncryptionClient; use Aws\S3\S3Client; $encryptionClient = new S3EncryptionClient( new S3Client([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => 'latest', ]) );
Post-migration
use Aws\S3\Crypto\S3EncryptionClientV2; use Aws\S3\S3Client; $encryptionClient = new S3EncryptionClientV2( new S3Client([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => 'latest', ]) );
Beispiel 2: Verwenden AWS KMS mit kms-key-id
Anmerkung
Diese Beispiele verwenden Importe und Variablen, die in Beispiel 1 definiert sind. Beispiel, $encryptionClient.
Pre-migration
use Aws\Crypto\KmsMaterialsProvider; use Aws\Kms\KmsClient; $kmsKeyId = 'kms-key-id'; $materialsProvider = new KmsMaterialsProvider( new KmsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => 'latest', ]), $kmsKeyId ); $bucket = 'the-bucket-name'; $key = 'the-file-name'; $cipherOptions = [ 'Cipher' => 'gcm', 'KeySize' => 256, ]; $encryptionClient->putObject([ '@MaterialsProvider' => $materialsProvider, '@CipherOptions' => $cipherOptions, 'Bucket' => $bucket, 'Key' => $key, 'Body' => fopen('file-to-encrypt.txt', 'r'), ]); $result = $encryptionClient->getObject([ '@MaterialsProvider' => $materialsProvider, '@CipherOptions' => $cipherOptions, 'Bucket' => $bucket, 'Key' => $key, ]);
Post-migration
use Aws\Crypto\KmsMaterialsProviderV2; use Aws\Kms\KmsClient; $kmsKeyId = 'kms-key-id'; $materialsProvider = new KmsMaterialsProviderV2( new KmsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => 'latest', ]), $kmsKeyId ); $bucket = 'the-bucket-name'; $key = 'the-file-name'; $cipherOptions = [ 'Cipher' => 'gcm', 'KeySize' => 256, ]; $encryptionClient->putObject([ '@MaterialsProvider' => $materialsProvider, '@CipherOptions' => $cipherOptions, '@KmsEncryptionContext' => ['context-key' => 'context-value'], 'Bucket' => $bucket, 'Key' => $key, 'Body' => fopen('file-to-encrypt.txt', 'r'), ]); $result = $encryptionClient->getObject([ '@KmsAllowDecryptWithAnyCmk' => true, '@SecurityProfile' => 'V2_AND_LEGACY', '@MaterialsProvider' => $materialsProvider, '@CipherOptions' => $cipherOptions, 'Bucket' => $bucket, 'Key' => $key, ]);