Réplication d'objets créés avec le chiffrement côté serveur (SSE-C, SSE-S3, SSE-KMS)
Important
Amazon S3 applique désormais le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de base du chiffrement pour chaque compartiment d'Amazon S3. À partir du 5 janvier 2023, tous les nouveaux chargements d'objets sur Amazon S3 sont automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. Le statut de chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour les nouveaux chargements d'objets est disponible dans les journaux AWS CloudTrail, S3 Inventory, S3 Storage Lens, dans la console Amazon S3, et en tant qu'en-tête de réponse supplémentaire de l'API Amazon S3 dans l'AWS Command Line Interface et les kits SDK AWS. Pour plus d'informations, consultez la FAQ sur le chiffrement par défaut.
Par défaut, Amazon S3 ne réplique pas les objets stockés au repos à l'aide d'un chiffrement côté serveur avec des clés gérées par le client stockées dans AWS KMS. Cette section explique la configuration supplémentaire que vous pouvez ajouter de manière à indiquer à Amazon S3 de répliquer ces objets.
Pour découvrir un exemple avec des instructions pas à pas, veuillez consulter Réplication d'objets chiffrés. Pour obtenir des informations sur la création d'une configuration de réplication, veuillez consulter Réplication d'objets.
Note
Vous pouvez utiliser une clé AWS KMS keys multi-régions dans Amazon S3. Cependant, Amazon S3 traite actuellement les clés multi-régions comme s'il s'agissait de clés à région unique et n'utilise pas les fonctions multi-régions de la clé. Pour en savoir plus, consultez la section Utilisation des clés multi-régions dans le Guide du développeur AWS Key Management Service.
Rubriques
Utilisation du chiffrement de compartiment par défaut avec la réplication
Après avoir activé le chiffrement par défaut pour un compartiment de destination de réplication, le comportement de chiffrement suivant s'applique :
-
Si des objets du compartiment source ne sont pas chiffrés, les objets réplica du compartiment de destination sont chiffrés à l'aide des paramètres de chiffrement par défaut du compartiment de destination. Cela produit un
ETag
de l'objet source différent de l'ETag
de l'objet réplica. Vous devez mettre à jour les applications qui utilisent l'ETag
pour compenser cette différence. -
Si des objets du compartiment source sont chiffrés à l'aide de SSE-S3 ou de SSE-KMS, les objets réplica du compartiment de destination utilisent le même chiffrement que celui de l'objet source. Les paramètres de chiffrement par défaut du compartiment de destination ne sont pas utilisés.
Réplication d'objets chiffrés (SSE-C)
Vous pouvez gérer les clés propriétaires en utilisant un chiffrement côté serveur avec des clés fournies par le client (SSE-C). Avec le SSE-C, vous gérez les clés tandis qu'Amazon S3 gère le processus de chiffrement et de déchiffrement. Vous devez fournir une clé de chiffrement dans le cadre de votre demande, mais vous n'avez pas besoin d'écrire de code pour effectuer le chiffrement ou le déchiffrement d'objets. Lorsque vous chargez un objet, Amazon S3 chiffre l'objet au moyen de la clé que vous avez fournie. Amazon S3 élimine ensuite cette clé de la mémoire. Lorsque vous récupérez un objet, vous devez fournir la même clé de chiffrement dans la demande. Pour de plus amples informations, veuillez consulter Utilisation du chiffrement côté serveur avec les clés fournies par le client (SSE-C).
La réplication S3 prend en charge les objets chiffrés avec le SSE-C. Vous pouvez configurer la réplication d'objets SSE-C dans la console Amazon S3 ou à l'aide des kits AWS SDK, de la même manière que vous configurez la réplication pour les objets non chiffrés. La réplication S3 réplique automatiquement les objets chiffrés par le SSE-C récemment chargés s'ils sont éligibles, conformément à votre configuration de réplication S3. Pour répliquer des objets existants dans vos compartiments, utilisez la réplication par lot S3. Il n'existe pas d'autorisations SSE-C supplémentaires au-delà de celles actuellement requises pour la réplication. Pour plus d'informations sur la réplication d'objets existants, consultez Configuration de la réplication et Réplication d'objets existants via la réplication par lot S3.
La réplication d'objets SSE-C n'entraîne pas de frais supplémentaires. Pour en savoir plus sur la tarification de la réplication, consultez la page de tarification d'Amazon S3
Réplication d'objets chiffrés (SSE-S3, SSE-KMS)
Par défaut, Amazon S3 ne réplique pas les objets stockés au repos à l'aide d'un chiffrement côté serveur avec des AWS KMS keys stockées dans AWS KMS. Cette section explique la configuration supplémentaire que vous devez ajouter de manière à indiquer à Amazon S3 de répliquer ces objets.
Pour découvrir un exemple avec des instructions pas à pas, veuillez consulter Réplication d'objets chiffrés. Pour obtenir des informations sur la création d'une configuration de réplication, veuillez consulter Réplication d'objets.
Spécification d'informations supplémentaires dans la configuration de la réplication
Dans la configuration de réplication, procédez comme suit :
-
Dans la configuration
Destination
, ajoutez la clé AWS KMS symétrique gérée par le client qu'Amazon S3 doit utiliser pour chiffrer les réplicas d'objets. -
Validez explicitement votre choix en activant la réplication d'objets chiffrés au moyen de clés KMS, en ajoutant l'élément
SourceSelectionCriteria
.
<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>
AWS KMS key ID for the Région AWS of the destination bucket.
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>
Important
La clé KMS doit avoir été créée dans la même Région AWS que les compartiments de destination.
La clé KMS doit être valide. L'API de réplication du compartiment PUT
ne vérifie pas la validité des clés KMS. Si vous utilisez une clé KMS non valide, vous recevrez le code de statut HTTP 200 OK en réponse, mais la réplication échouera.
L'exemple suivant montre une configuration de réplication qui inclut des éléments de configuration facultatifs.
<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration> <Role>arn:aws:iam::
account-id
:role/role-name
</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::destination-bucket
</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>The AWS KMS key ID for the Région AWS of the destination buckets. (S3 uses this key to encrypt object replicas.)
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>
Cette configuration de réplication a une règle. Cette règle s'applique aux objets dotés du préfixe de clé Tax
. Amazon S3 utilise l'ID AWS KMS key pour chiffrer ces réplicas d'objets.
Octroi d'autorisations supplémentaires pour le rôle IAM
Pour répliquer des objets chiffrés au repos avec AWS KMS, octroyez les autorisations supplémentaires suivantes au rôle AWS Identity and Access Management (IAM) que vous spécifiez dans la configuration de réplication. Vous octroyez ces autorisations en mettant à jour la stratégie d'autorisations associée au rôle IAM.
-
Action
s3:GetObjectVersionForReplication
pour les objets sources – Cette action permet à Amazon S3 de répliquer les objets non chiffrés et les objets créés à l'aide du chiffrement côté serveur au moyen de clés SSE-S3 ou de clés SSE-KMS.Note
Nous vous recommandons d'utiliser l'action
s3:GetObjectVersionForReplication
à la place de l'actions3:GetObjectVersion
, cars3:GetObjectVersionForReplication
fournit uniquement à Amazon S3 le minimum d'autorisations nécessaires pour la réplication. De plus, l'actions3:GetObjectVersion
permet la réplication des objets non chiffrés et des objets chiffrés avec le SSE-S3, mais pas des objets créés au moyen d'une clé SSE-KMS. -
Action AWS KMS
kms:Decrypt
etkms:Encrypt
pour les clés KMS-
Vous devez accorder des autorisations
kms:Decrypt
pour l'AWS KMS key utilisée pour déchiffrer l'objet source. -
Vous devez accorder des autorisations
kms:Encrypt
pour la AWS KMS key utilisée pour chiffrer le réplica source.
-
Nous vous recommandons de restreindre ces autorisations uniquement aux compartiments et aux objets de destination à l'aide des clés de condition AWS KMS. Le compte AWS qui possède le rôle IAM doit avoir des autorisations pour ces actions AWS KMS (kms:Encrypt
et kms:Decrypt
) pour les clés KMS répertoriées dans la politique. Si les clés KMS sont détenues par un autre compte Compte AWS, le propriétaire des clés KMS devra accorder ces autorisations au Compte AWS qui possède le rôle IAM. Pour en savoir plus sur la gestion de l'accès à ces clés KMS, consultez Utilisation des politiques IAM avec AWS KMS dans le guide du développeur AWS Key Management Service.
Clés de compartiment Amazon S3 et réplication
Pour utiliser la réplication avec une clé de compartiment S3, la politique de AWS KMS key pour la clé KMS utilisée pour chiffrer le réplica d'objet doit inclure des autorisations kms:Decrypt
pour le principal qui appelle. L'appel à kms:Decrypt
vérifie l'intégrité de la clé de compartiment S3 avant de l'utiliser. Pour de plus amples informations, veuillez consulter Utilisation d'une clé de compartiment S3 avec réplication.
Lorsqu'une clé de compartiment S3 est activée pour le compartiment source ou de destination, le contexte de chiffrement est l'Amazon Resource Name (ARN) du compartiment et non l'ARN de l'objet (par exemple, arn:aws:s3:::
). Vous devez mettre à jour vos politiques IAM pour utiliser l'ARN du compartiment pour le contexte de chiffrement :bucket_ARN
"kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::
bucket_ARN
" ]
Pour plus d'informations, consultez Contexte de chiffrement (x-amz-server-side-encryption-context) et Modifications à prendre en compte avant d'activer une clé de compartiment S3.
Exemples de politiques : Utilisation du SSE-S3 et du SSE-KMS avec la réplication
L'exemple suivant de politiques IAM montre des instructions pour l'utilisation du SSE-S3 et du SSE-KMS avec la réplication.
Exemple : Utilisation du SSE-KMS – compartiments de destination distincts
L'exemple suivant de politique présente des instructions pour l'utilisation du SSE-KMS avec des compartiments de destination distincts.
{ "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.
source-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::source-bucket-name
/key-prefix1
*" ] } }, "Resource": [ "List of AWS KMS key ARNs used to encrypt source objects.
" ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-1-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::destination-bucket-name-1
/key-prefix1
*" ] } }, "Resource": [ "AWS KMS key ARNs (for the Région AWS of the destination bucket 1). Used to encrypt object replicas created in destination bucket 1.
" ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-2-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::destination-bucket-2-name
/key-prefix1
*" ] } }, "Resource": [ "AWS KMS key ARNs (for the Région AWS of destination bucket 2). Used to encrypt object replicas created in destination bucket 2.
" ] }
Exemple : Réplication d'objets créés avec le SSE-S3 et le SSE-KMS
Vous trouverez ci-dessous une politique IAM complète qui accorde les autorisations nécessaires pour répliquer des objets non chiffrés, des objets créés avec le SSE-S3 et des objets créés avec le SSE-KMS.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::
source-bucket
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source-bucket
/key-prefix1
*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::destination-bucket
/key-prefix1
*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::source-bucket-name
/key-prefix1
*" ] } }, "Resource":[ "List of AWS KMS key ARNs used to encrypt source objects.
" ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::destination-bucket-name
/prefix1
*" ] } }, "Resource":[ "AWS KMS key ARNs (for the Région AWS of the destination buckets) to use for encrypting object replicas
" ] } ] }
Octroi d'autorisations supplémentaires pour les scénarios à plusieurs comptes
Dans un scénario à plusieurs comptes où les compartiments source et de destination appartiennent à différents Comptes AWS, vous pouvez utiliser une clé KMS pour chiffrer les réplicas d'objet. Le propriétaire de la clé KMS doit accorder au propriétaire du compartiment source l'autorisation d'utiliser la clé KMS.
Note
Les objets chiffrés via Clés gérées par AWS ne peuvent pas être partagés entre comptes car vous ne pouvez pas modifier les stratégies de clé. Si vous devez répliquer des données SSE-KMS entre comptes, vous devez utiliser une clé gérée par le client provenant d'AWS KMS.
Pour accorder au propriétaire du compartiment source l'autorisation d'utiliser la clé KMS (console AWS KMS)
-
Connectez-vous à la AWS Management Console et ouvrez la console AWS KMS à l'adresse https://console.aws.amazon.com/kms
. -
Pour changer de Région AWS, utilisez le sélecteur de région dans l'angle supérieur droit de la page.
-
Pour afficher les clés de votre compte que vous créez et gérez vous-même, dans le volet de navigation, choisissez Clés gérées par le client.
-
Sélectionnez la clé KMS.
-
Sous Configuration générale, choisissez l'onglet Politique de clé).
-
Faites défiler la page jusqu'à Autres Comptes AWS.
-
Choisissez Ajouter d'autres Comptes AWS.
-
arn:aws:iam::, saisissez l'ID de compte du compartiment source.
-
Choisissez Enregistrer.
Pour octroyer au propriétaire du compartiment source l'autorisation d'utiliser la clé KMS (AWS CLI)
-
Pour plus d'informations sur la commande AWS CLI, consultez put-key-policy dans la Référence de commande de l'interface AWS CLI. Pour plus d'informations sur l'API sous-jacente, consultez PutKeyPolicy dans la Référence de l'API AWS Key Management Service.
Considérations relatives aux quotas de transactions AWS KMS
Une fois que vous avez activé la réplication entre régions, lorsque vous ajoutez un grand nombre de nouveaux objets avec le chiffrement AWS KMS, vous pouvez rencontrer des limitations (erreurs HTTP 503 Service non disponible). La limitation survient lorsque le nombre de transactions AWS KMS par seconde dépasse le quota actuel. Pour de plus amples informations, veuillez consulter Quotas dans le Guide du développeur AWS Key Management Service.
Pour demander l'augmentation d'un quota, utilisez Service Quotas. Pour plus d'informations, consultez Quotas. Si les Service Quotas ne sont pas pris en charge dans votre Région, ouvrez un cas de AWS Support