Mise à jour du chiffrement côté serveur pour les données existantes - Amazon Simple Storage Service

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.

Mise à jour du chiffrement côté serveur pour les données existantes

Tous les compartiments Amazon S3 ont le chiffrement configuré par défaut et les objets sont automatiquement chiffrés à l’aide du chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3). Ce paramètre de chiffrement par défaut s'applique à tous les nouveaux objets de vos compartiments Amazon S3.

À l'aide de l'opération UpdateObjectEncryption API, vous pouvez automatiquement mettre à jour le type de chiffrement côté serveur d'un objet chiffré existant dans un compartiment à usage général, du chiffrement côté serveur avec le chiffrement géré par Amazon S3 (SSE-S3) au chiffrement côté serveur avec () des clés de chiffrement (SSE-KMS). AWS Key Management Service AWS KMS L'opération UpdateObjectEncryption API utilise le chiffrement d'enveloppe pour rechiffrer la clé de données utilisée pour chiffrer et déchiffrer votre objet avec le nouveau type de chiffrement côté serveur que vous avez spécifié.

Amazon S3 effectue cette mise à jour de type de chiffrement sans aucun mouvement de données. En d'autres termes, lorsque vous utilisez cette UpdateObjectEncryption opération, vos données ne sont pas copiées, les objets archivés dans S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive ne sont pas restaurés, et les objets de la classe de stockage S3 Intelligent-Tiering ne sont pas déplacés entre les niveaux. En outre, l'UpdateObjectEncryptionopération préserve toutes les propriétés des métadonnées de l'objet, notamment la classe de stockage, la date de création, la date de dernière modification et les propriétés de somme de contrôle. ETag

L'UpdateObjectEncryptionopération est prise en charge pour toutes les classes de stockage S3 prises en charge par des buckets à usage général. Vous pouvez utiliser cette UpdateObjectEncryption opération pour effectuer les opérations suivantes :

  • Transformez les objets chiffrés du chiffrement côté serveur avec le chiffrement géré par Amazon S3 (SSE-S3) au chiffrement côté serveur avec () des clés de chiffrement AWS Key Management Service (SSE-KMS AWS KMS).

  • Mettez à jour les objets chiffrés SSE-KMS au niveau de l'objet pour utiliser les clés de compartiment S3, ce qui réduit le trafic de AWS KMS demandes d'Amazon S3 vers. AWS KMS Pour de plus amples informations, veuillez consulter Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3.

  • Modifiez la clé KMS gérée par le client qui est utilisée pour chiffrer vos données afin de vous conformer aux normes personnalisées de rotation des clés.

Note

Les objets source non chiffrés ou chiffrés à l'aide d'un chiffrement double couche côté serveur (DSSE-KMS) ou de clés de chiffrement fournies par le client AWS KMS keys (SSE-C) ne sont pas pris en charge par cette opération.

L'UpdateObjectEncryptionopération s'effectue généralement en quelques millisecondes, quelle que soit la taille de l'objet ou la classe de stockage, y compris S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive. Cette opération n'est pas considérée comme un accès pour S3 Intelligent-Tiering, de sorte que les objets du niveau Accès peu fréquent ou du niveau Archive Instant Access ne reviendront pas automatiquement au niveau Accès fréquent si vous modifiez le type de chiffrement côté serveur de votre objet.

UpdateObjectEncryptionest une opération d'API au niveau de l'objet (plan de données) qui est enregistrée dans les journaux d'accès et les événements de AWS CloudTrail données du serveur Amazon S3. Pour de plus amples informations, veuillez consulter Options de journalisation pour Amazon S3.

Le prix de l'UpdateObjectEncryptionopération est le même que celui des LIST requêtes PUTCOPY,POST, et (pour 1 000 demandes) et est toujours facturée en tant que demande de classe de stockage standard S3, quelle que soit la classe de stockage de l'objet sous-jacent. Pour plus d’informations, consultez Tarification Amazon S3.

Restrictions et considérations

Lors de l'utilisation de UpdateObjectEncryption cette opération, les restrictions et considérations suivantes s'appliquent :

  • L'UpdateObjectEncryptionopération ne prend pas en charge les objets non chiffrés ni les objets chiffrés à l'aide d'un chiffrement double couche côté serveur (DSSE-KMS) ou de clés de chiffrement fournies par le client AWS KMS keys (SSE-C). En outre, vous ne pouvez pas spécifier SSE-S3 comme nouvelle demande de type UpdateObjectEncryption de chiffrement demandée.

  • Vous pouvez utiliser cette UpdateObjectEncryption opération pour mettre à jour des objets dans des compartiments sur lesquels le contrôle de version S3 est activé. Pour mettre à jour le type de chiffrement d'une version donnée, vous devez spécifier un ID de version dans votre UpdateObjectEncryption demande. Si vous ne spécifiez pas d'ID de version, la UpdateObjectEncryption demande agit sur la version actuelle de l'objet. Pour plus d’informations sur la gestion des versions S3, consultez Conservation de plusieurs versions d’objets grâce à la gestion des versions S3.

  • L'UpdateObjectEncryptionopération échoue sur tout objet auquel un mode de rétention S3 Object Lock ou un blocage légal est appliqué. Si un objet est soumis à une période de conservation en mode gouvernance ou à une suspension légale, vous devez d'abord supprimer le statut Object Lock de l'objet avant d'émettre votre UpdateObjectEncryption demande. Vous ne pouvez pas utiliser cette UpdateObjectEncryption opération avec des objets auxquels une période de conservation du mode de conformité Object Lock est appliquée. Pour plus d'informations sur la fonctionnalité de verrouillage des objets S3, veuillez consulter Verrouillage d’objets avec la fonctionnalité de verrouillage d’objet.

  • UpdateObjectEncryptionles requêtes sur les compartiments source pour lesquels la réplication en direct est activée ne déclencheront pas d'événements de réplication dans le compartiment de destination. Si vous souhaitez modifier le type de chiffrement des objets dans vos compartiments source et de destination, vous devez lancer des UpdateObjectEncryption demandes distinctes sur les objets des compartiments source et de destination.

  • Par défaut, toutes les UpdateObjectEncryption demandes qui spécifient une clé KMS gérée par le client sont limitées aux clés KMS détenues par le propriétaire du bucket. Compte AWS Si vous utilisez AWS Organizations, vous pouvez demander la possibilité d'utiliser des comptes AWS KMS keys appartenant à d'autres membres au sein de votre organisation en contactant AWS Support.

  • Si vous utilisez S3 Batch Replication pour répliquer des ensembles de données entre régions et que le type de chiffrement côté serveur de vos objets a déjà été mis à jour de SSE-S3 à SSE-KMS, vous aurez peut-être besoin d'autorisations supplémentaires. Dans le compartiment de la région source, vous devez disposer kms:decrypt d'autorisations. Ensuite, vous aurez besoin des kms:encrypt autorisations kms:decrypt et pour le compartiment dans la région de destination.

  • Vous devez fournir un ARN de clé KMS complet dans votre UpdateObjectEncryption demande. Vous ne pouvez pas utiliser de nom d'alias ou d'ARN d'alias. Vous pouvez déterminer l'ARN complet de la clé KMS dans la console AWS KMS ou à l'aide de l'DescribeKeyAPI AWS KMS.

Autorisations requises

Pour effectuer l'UpdateObjectEncryptionopération, vous devez disposer des autorisations suivantes :

  • s3:PutObject

  • s3:UpdateObjectEncryption

  • kms:Encrypt

  • kms:Decrypt

  • kms:GenerateDataKey

  • kms:ReEncrypt*

Si vous utilisez AWS Organizations, pour utiliser cette opération avec des clés KMS gérées par le client provenant d'autres membres Comptes AWS de votre organisation, vous devez avoir l'organizations:DescribeAccountautorisation. Vous devez également demander la possibilité d'utiliser des comptes AWS KMS keys appartenant à d'autres membres au sein de votre organisation en contactant AWS Support.

Pour effectuer l'UpdateObjectEncryptionopération, ajoutez la politique Gestion des identités et des accès AWS (IAM) suivante à votre rôle IAM. Pour utiliser cette politique, amzn-s3-demo-bucket remplacez-la par le nom de votre compartiment à usage général et remplacez l'autre user input placeholders par vos propres informations.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowUpdateObjectEncryption", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:UpdateObjectEncryption", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncrypt*", "organizations:DescribeAccount" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

Mise à jour du chiffrement en masse

Pour mettre à jour le type de chiffrement côté serveur de plusieurs objets Amazon S3 avec une seule demande, vous pouvez utiliser S3 Batch Operations. Vous pouvez fournir à S3 Batch Operations une liste d'objets sur lesquels opérer, ou vous pouvez demander à Batch Operations de générer une liste d'objets basée sur des métadonnées d'objets, notamment le préfixe, la classe de stockage, la date de création, le type de cryptage, l'ARN de la clé KMS ou le statut de la clé de compartiment S3. La fonctionnalité des opérations par lot S3 appelle l’opération d’API respective pour effectuer l’opération spécifiée. Une seule tâche Batch Operations peut effectuer l'opération spécifiée sur des milliards d'objets au sein d'un bucket contenant des pétaoctets de données. Pour en savoir plus sur les opérations par lots, veuillez consulter Exécution d’opérations groupées sur des objets avec Batch Operations.

La fonctionnalité d’opérations par lot S3 suit la progression, envoie des notifications et stocke un rapport de fin détaillé sur toutes les actions, offrant ainsi une expérience sans serveur entièrement gérée et qui peut être vérifiée. Vous pouvez utiliser S3 Batch Operations via la console Amazon S3 AWS Command Line Interface (AWS CLI) AWS SDKs ou l'API REST Amazon S3. Pour de plus amples informations, veuillez consulter Mettre à jour le chiffrement des objets.

Mettre à jour le chiffrement des objets

Vous pouvez mettre à jour le type de chiffrement côté serveur pour un objet via AWS Command Line Interface (AWS CLI) AWS SDKs ou via l'API REST Amazon S3.

Mettre à jour le chiffrement d'un objet

Pour exécuter les commandes suivantes, vous devez les avoir AWS CLI installées et configurées. Si ce n'est pas le cas AWS CLI , consultez la section Installer ou mettre à jour vers la dernière version du AWS CLI Guide de l'AWS Command Line Interface utilisateur.

Vous pouvez également exécuter des AWS CLI commandes depuis la console en utilisant AWS CloudShell. AWS CloudShell est un shell pré-authentifié basé sur un navigateur que vous pouvez lancer directement depuis le. AWS Management Console Pour plus d'informations, voir Qu'est-ce que c'est CloudShell ? et Mise en route AWS CloudShell dans le guide de AWS CloudShell l'utilisateur.

Pour mettre à jour le chiffrement d'un objet à l'aide du AWS CLI

Pour utiliser l’exemple de commande suivant, remplacez les user input placeholders par vos propres informations.

  1. Utilisez la commande suivante pour mettre à jour le chiffrement d'un seul objet (index.html) dans votre compartiment à usage général (par exemple,amzn-s3-demo-bucket) afin d'utiliser SSE-KMS avec une clé de compartiment S3 :

    aws s3api update-object-encryption \ --bucket amzn-s3-demo-bucket \ --key index.html \ --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'
    Note

    Vous devez spécifier le nom complet de la ressource AWS KMS key Amazon (ARN). L'ID de clé KMS et l'alias de clé KMS ne sont pas pris en charge.

  2. Exécutez la head-object commande pour afficher le type de chiffrement mis à jour de votre objet :

    aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html

Vous pouvez envoyer des requêtes REST pour mettre à jour le chiffrement d'un objet. Pour de plus amples informations, veuillez consulter UpdateObjectEncryption.

Vous pouvez utiliser le AWS SDKs pour mettre à jour le chiffrement d'un objet. Pour plus d'informations, consultez la liste des produits pris en charge SDKs.

Java
Exemple

L' AWS SDK for Java 2.x exemple suivant met à jour le type de chiffrement en SSE-KMS pour un objet dans un compartiment à usage général.

public void updateObjectEncryption(String bucketName, String objectKey, String versionId, String kmsKeyArn, boolean bucketKeyEnabled) { // Create the target object encryption type. ObjectEncryption objectEncryption = ObjectEncryption.builder() .ssekms(SSEKMSEncryption.builder() .kmsKeyArn(kmsKeyArn) .bucketKeyEnabled(bucketKeyEnabled) .build()) .build(); // Create the UpdateObjectEncryption request. UpdateObjectEncryptionRequest request = UpdateObjectEncryptionRequest.builder() .bucket(bucketName) .key(objectKey) .versionId(versionId) .objectEncryption(objectEncryption) .build(); // Update the object encryption. try { getS3Client().updateObjectEncryption(request); logger.info("Object encryption updated to SSE-KMS for {} in bucket {}", objectKey, bucketName); } catch (S3Exception e) { logger.error("Failed to update to object encryption: {} - Error code: {}", e.awsErrorDetails().errorMessage(), e.awsErrorDetails().errorCode()); throw e; } }
Python
Exemple

L' AWS SDK pour Python (Boto3) exemple suivant montre comment mettre à jour le type de chiffrement SSE-KMS pour un objet dans un compartiment à usage général.

response = client.update_object_encryption( Bucket='string', Key='string', VersionId='string', ObjectEncryption={ 'SSEKMS': { 'KMSKeyArn': 'string', 'BucketKeyEnabled': True|False } } )