Comment puis-je configurer la réplication intercompte dans mes compartiments Amazon S3 avec le verrouillage des objets (Object Lock) activé ?

Lecture de 5 minute(s)
0

Je souhaite configurer la réplication intercompte dans un compartiment Amazon Simple Storage Service (Amazon S3) dans lequel le verrouillage des objets (Object Lock) est activé.

Résolution

Pour configurer la réplication intercompte dans un compartiment Amazon S3 avec le verrouillage des objets (Object Lock), remplissez les conditions préalables suivantes :

  • Assurez-vous que le verrouillage des objets est activé pour le compartiment de destination. Si ce n’est pas le cas, contactez AWS Support pour lui faire part de votre demande.
  • Vérifiez que vous pouvez accéder à l’Interface de la ligne de commande AWS (AWS CLI) ou à AWS CloudShell.
  • Veillez à disposer du jeton de verrouillage des objets (Object Lock) avant de commencer la réplication.

Étape 1 : Création d’un rôle IAM pour effectuer la réplication avec les autorisations nécessaires

1.    Créez un rôle de réplication dans la console AWS Identity and Access Management (IAM) pour le compte source avec une relation de confiance pour Amazon S3.

La relation de confiance se présente comme suit :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

2.    Veillez à associer les autorisations suivantes au rôle IAM :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "s3:GetReplicationConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::SourceBucketName/*",
        "arn:aws:s3:::SourceBucketName"
      ]
    },
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*"
      ]
    }
  ]
}

3.    Si vous utilisez les clés AWS Key Management Service (AWS KMS), veillez à associer également les autorisations suivantes :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "s3:GetReplicationConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::SourceBucketName/*",
        "arn:aws:s3:::SourceBucketName"
      ]
    },
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*"
      ]
    },
    {
      "Sid": "SourceBucketKMSKey",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "SourceBucketKMSKeyARN"
    },
    {
      "Sid": "DestinationBucketKMSKey",
      "Action": [
        "kms:Encrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "DestinationBucketKMSKeyARN"
    }
  ]
}

Étape 2 : Mise à jour des autorisations pour la clé AWS KMS

Assurez-vous que la clé AWS KMS du compte de destination permet d’accéder au rôle IAM de réplication dans le compte source.

Exemple :

{
  "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
  },
  "Action": [
    "kms:GenerateDataKey",
    "kms:Encrypt"
  ],
  "Resource": "*"
}

Remarque : vous ne pouvez pas utiliser la clé AWS KMS AWS/s3 gérée pour la réplication intercompte. Vous pouvez toutefois utiliser le chiffrement SSE-S3.

Remarque : si vous saisissez un astérisque (*) pour Ressource (Resource) dans la stratégie de clé, la stratégie autorise l’utilisation de la clé uniquement au rôle de réplication. La stratégie n’autorise pas le rôle de réplication à élever ses autorisations.

Étape 3 : Ajout de la politique de compartiment suivante au compte de destination

Dans la section Principal, veillez à ajouter l’ARN du rôle IAM de réplication que vous avez créé à l’étape 1.

{
  "Version": "2012-10-17",
  "Id": "PolicyForDestinationBucket",
  "Statement": [
    {
      "Sid": "ReplicationPermissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"
      },
      "Action": [
        "s3:ReplicateDelete",
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetBucketVersioning",
        "s3:PutBucketVersioning"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*",
        "arn:aws:s3:::DestBucketName"
      ]
    }
  ]
}

Étape 4 : Création d’un fichier replication.json

Créez un fichier nommé « replication.json » semblable au fichier suivant dans le compte source :

{
  "Role": "arn:aws:iam::123456789012:role/s3-replication-role",
  "Rules": [
    {
      "Status": "Enabled",
      "Priority": 10,
      "DeleteMarkerReplication": {
        "Status": "Disabled"
      },
      "Filter": {
        "Prefix": ""
      },
      "Destination": {
        "Bucket": "arn:aws:s3:::destination_bucket"
      }
    }
  ]
}

Ce fichier contient les paramètres de la formation JSON qui configurent la réplication. Il s’agit des mêmes paramètres que vous pouvez utiliser lors de la configuration de la réplication à l’aide de la console Amazon S3. Vous devez utiliser l’AWS CLI pour configurer la réplication, car vous ne pouvez pas encore le faire avec la console Amazon S3.

Veillez à remplacer s3-replication-role par le rôle IAM indiqué à l’étape 1. Incluez également l’ARN pour le compartiment de destination, le préfixe et les préférences de marqueurs de suppression, si nécessaire.

Étape 5 : Configuration de la réplication

Après avoir enregistré la configuration précédente, transmettez le fichier à l’aide de la commande AWS CLI suivante :

aws s3api put-bucket-replication --bucket <SOURCE BUCKET> --replication-configuration file://Replication.json --token <TOKEN>

Pour obtenir la valeur du jeton de Verrouillage des objets (Object Lock) à utiliser dans cette commande, contactez AWS Support. La valeur <TOKEN> correspond au jeton de Verrouillage des objets (Object Lock) pour le compartiment source.

Étape 6 : Vérification

Lorsque vous exécutez la commande précédente, la règle de réplication est ajoutée au compartiment source. Cette règle permet de répliquer les objets récemment ajoutés dans le compartiment de destination. Vous pouvez la tester en ajoutant de nouveaux objets dans le compartiment source, puis en vérifiant celui de destination.

Remarque : vous pouvez mettre à jour la configuration de réplication à l’aide de la console Amazon S3 après avoir configuré la réplication. Pour répliquer des objets chiffrés avec AWS KMS, modifiez la configuration de réplication en sélectionnant Répliquer les objets chiffrés avec AWS KMS (Replicate objects encrypted with AWS KMS) sous Chiffrement (Encryption).

Informations connexes

Configuration de la fonction Verrouilage des objets S3 (S3 Object Lock) à l’aide de la console

Activation de la fonction Verrouillage des objets S3 (S3 Object Lock)

Réplication d’objets créés à l’aide du chiffrement côté serveur (SSE-C, SSE-S3, SSE-KMS)

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an