Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Migration du client de chiffrement Amazon S3 (V1 vers V2) dans le AWS SDK pour PHP Version 3
Note
Si vous utilisez la version 2 (V2) du client de chiffrement Amazon S3 et que vous souhaitez migrer vers la version 3 (V3), consultezMigration du client de chiffrement Amazon S3 (V2 vers V3) dans le AWS SDK pour PHP Version 3.
Cette rubrique explique comment migrer vos applications de la version 1 (V1) du client de chiffrement Amazon Simple Storage Service (Amazon S3) vers la version 2 (V2) et garantir la disponibilité des applications tout au long du processus de migration.
Aperçu de la migration
Cette migration s'effectue en deux phases :
1. Mettez à jour les clients existants pour qu'ils puissent lire les nouveaux formats. Tout d'abord, déployez une version mise AWS SDK pour PHP à jour de celui-ci dans votre application. Cela permet aux clients de chiffrement V1 existants de déchiffrer les objets écrits par les nouveaux clients V2. Si votre application utilise plusieurs AWS kits de développement logiciel, vous devez les mettre à niveau séparément.
2. Migrez les clients de chiffrement et de déchiffrement vers la V2. Une fois que tous vos clients de chiffrement V1 peuvent lire les nouveaux formats, vous pouvez migrer vos clients de chiffrement et de déchiffrement existants vers leurs versions V2 respectives.
Mettre à jour les clients existants pour lire les nouveaux formats
Le client de chiffrement V2 utilise des algorithmes de chiffrement que les anciennes versions du client ne prenaient pas en charge. La première étape de la migration consiste à mettre à jour vos clients de déchiffrement V1 vers la dernière version du SDK. Une fois cette étape terminée, les clients V1 de votre application seront en mesure de déchiffrer les objets chiffrés par les clients de chiffrement V2. Voir les détails ci-dessous pour chaque version majeure du AWS SDK pour PHP.
Mise à niveau AWS SDK pour PHP Version 3
La version 3 est la dernière version du AWS SDK pour PHP. Pour effectuer cette migration, vous devez utiliser la version 3.148.0 ou ultérieure du aws/aws-sdk-php package.
Installation depuis la ligne de commande
Pour les projets installés à l'aide de Composer, dans le fichier Composer, mettez à jour le package SDK vers la version 3.148.0 du SDK, puis exécutez la commande suivante.
composer update aws/aws-sdk-php
Installation à l'aide du fichier Phar ou Zip
Utilisez l’une des méthodes suivantes. Veillez à placer le fichier SDK mis à jour à l'emplacement requis par votre code, qui est déterminé par l'instruction require.
Pour les projets installés à l'aide du fichier Phar, téléchargez le fichier mis à jour : aws.phar.
<?php require '/path/to/aws.phar'; ?>
Pour les projets installés à l'aide du fichier Zip, téléchargez le fichier mis à jour : .
<?php require '/path/to/aws-autoloader.php'; ?>
Migrer les clients de chiffrement et de déchiffrement vers la version V2
Après avoir mis à jour vos clients pour lire les nouveaux formats de chiffrement, vous pouvez mettre à jour vos applications vers les clients de chiffrement et de déchiffrement V2. Les étapes suivantes vous montrent comment réussir la migration de votre code de la V1 vers la V2.
Exigences relatives à la mise à jour vers les clients V2
1. Le contexte de AWS KMS chiffrement doit être transmis aux S3EncryptionClientV2::putObjectAsync méthodes S3EncryptionClientV2::putObject et. AWS KMS Le contexte de chiffrement est un tableau associatif de paires clé-valeur, que vous devez ajouter au contexte de chiffrement pour AWS KMS le chiffrement par clé. Si aucun contexte supplémentaire n'est requis, vous pouvez transmettre un tableau vide.
2. @SecurityProfiledoivent être transmis dans getObject et les getObjectAsync méthodes dansS3EncryptionClientV2. @SecurityProfileest un nouveau paramètre obligatoire des getObject... méthodes. Si ce paramètre est défini sur'V2', seuls les objets dont le V2-compatible format est chiffré peuvent être déchiffrés. La définition de ce paramètre pour 'V2_AND_LEGACY' autoriser également le déchiffrement des objets chiffrés V1-compatible au format. Pour prendre en charge la migration, définissez @SecurityProfile sur'V2_AND_LEGACY'. À utiliser 'V2' uniquement pour le développement de nouvelles applications.
3. (facultatif) Incluez le @KmsAllowDecryptWithAnyCmk paramètre dans le S3EncryptionClientV2::getObject et S3EncryptionClientV2::getObjectAsync* methods. Un nouveau paramètre a été ajouté appelé@KmsAllowDecryptWithAnyCmk. La définition de ce paramètre true permet le déchiffrement sans fournir de clé KMS. La valeur par défaut est false.
4. Pour le déchiffrement avec un client V2, si le @KmsAllowDecryptWithAnyCmk paramètre n'est pas défini sur true pour les appels de "getObject..." méthode, un kms-key-id doit être fourni au KmsMaterialsProviderV2 constructeur.
Exemples de migration
Exemple 1 : migration vers des clients 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', ]) );
Exemple 2 : utilisation AWS KMS avec kms-key-id
Note
Ces exemples utilisent les importations et les variables définies dans l'exemple 1. Par exemple, $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, ]);