View a markdown version of this page

Migrazione del client di crittografia Amazon S3 (da V1 a V2) nel AWS SDK per PHP Versione 3 - AWS SDK per PHP

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Migrazione del client di crittografia Amazon S3 (da V1 a V2) nel AWS SDK per PHP Versione 3

Nota

Se stai utilizzando la versione 2 (V2) del client di crittografia Amazon S3 e desideri migrare alla versione 3 (V3), consulta. Migrazione del client di crittografia Amazon S3 (da V2 a V3) nel AWS SDK per PHP Versione 3

Questo argomento mostra come migrare le applicazioni dalla versione 1 (V1) del client di crittografia Amazon Simple Storage Service (Amazon S3) alla versione 2 (V2) e garantire la disponibilità delle applicazioni durante tutto il processo di migrazione.

Panoramica della migrazione

Questa migrazione avviene in due fasi:

1. Aggiorna i client esistenti per leggere nuovi formati. Innanzitutto, distribuisci una versione aggiornata dell' AWS SDK per PHP applicazione. Ciò consente ai client di crittografia V1 esistenti di decrittografare gli oggetti scritti dai nuovi client V2. Se l'applicazione utilizza più AWS SDK, è necessario aggiornare ciascun SDK separatamente.

2. Esegui la migrazione dei client di crittografia e decrittografia alla V2. Una volta che tutti i client di crittografia V1 sono in grado di leggere i nuovi formati, è possibile migrare i client di crittografia e decrittografia esistenti alle rispettive versioni V2.

Aggiorna i client esistenti per leggere nuovi formati

Il client di crittografia V2 utilizza algoritmi di crittografia non supportati dalle versioni precedenti del client. Il primo passaggio della migrazione consiste nell'aggiornare i client di decrittografia V1 all'ultima versione SDK. Dopo aver completato questo passaggio, i client V1 dell'applicazione saranno in grado di decrittografare gli oggetti crittografati dai client di crittografia V2. Vedi i dettagli di seguito per ciascuna versione principale di. AWS SDK per PHP

Aggiornamento AWS SDK per PHP Versione 3

La versione 3 è la versione più recente di AWS SDK per PHP. Per completare questa migrazione, è necessario utilizzare la versione 3.148.0 o successiva del pacchetto. aws/aws-sdk-php

Installazione dalla riga di comando

Per i progetti installati tramite Composer, nel file Composer, aggiorna il pacchetto SDK alla versione 3.148.0 dell'SDK e quindi esegui il seguente comando.

composer update aws/aws-sdk-php

Installazione utilizzando il file Phar o Zip

Utilizzare uno dei seguenti metodi. Assicurati di inserire il file SDK aggiornato nella posizione richiesta dal codice, determinata dall'istruzione require.

Per i progetti installati utilizzando il file Phar, scarica il file aggiornato:. aws.phar

<?php require '/path/to/aws.phar'; ?>

Per i progetti installati utilizzando il file Zip, scarica il file aggiornato: .

<?php require '/path/to/aws-autoloader.php'; ?>

Migra i client di crittografia e decrittografia su V2

Dopo aver aggiornato i client per leggere i nuovi formati di crittografia, è possibile aggiornare le applicazioni ai client di crittografia e decrittografia V2. I passaggi seguenti mostrano come migrare correttamente il codice dalla V1 alla V2.

Requisiti per l'aggiornamento ai client V2

1. Il contesto di AWS KMS crittografia deve essere passato ai S3EncryptionClientV2::putObjectAsync metodi S3EncryptionClientV2::putObject and. AWS KMS il contesto di crittografia è un array associativo di coppie chiave-valore, che è necessario aggiungere al contesto di crittografia per AWS KMS la crittografia delle chiavi. Se non è richiesto alcun contesto aggiuntivo, è possibile passare un array vuoto.

2. @SecurityProfiledeve essere passato ai getObjectAsync metodi getObject e inS3EncryptionClientV2. @SecurityProfileè un nuovo parametro obbligatorio dei getObject... metodi. Se impostato su'V2', solo gli oggetti crittografati in V2-compatible formato possono essere decrittografati. L'impostazione di questo parametro su consente 'V2_AND_LEGACY' anche la decrittografia degli oggetti crittografati in V1-compatible formato. Per supportare la migrazione, imposta su@SecurityProfile. 'V2_AND_LEGACY' Usare 'V2' solo per lo sviluppo di nuove applicazioni.

3. (opzionale) Includi il @KmsAllowDecryptWithAnyCmk parametro in S3EncryptionClientV2::getObject e È stato aggiunto S3EncryptionClientV2::getObjectAsync* methods. un nuovo parametro chiamato@KmsAllowDecryptWithAnyCmk. L'impostazione di questo parametro su true abilita la decrittografia senza fornire una chiave KMS. Il valore predefinito è false.

4. Per la decrittografia con un client V2, se il @KmsAllowDecryptWithAnyCmk parametro non è impostato su true per le chiamate al "getObject..." metodo, è necessario fornire un kms-key-id valore al costruttore. KmsMaterialsProviderV2

Esempi di migrazione

Esempio 1: migrazione ai client V2

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

Esempio 2: utilizzo AWS KMS con kms-key-id

Nota

Questi esempi utilizzano importazioni e variabili definite nell'Esempio 1. Ad esempio, $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, ]);