Come faccio a configurare la replica tra più account nei miei bucket Amazon S3 con Object Lock?

5 minuti di lettura
0

Desidero configurare la replica tra più account su un bucket Amazon Simple Storage Service (Amazon S3) in cui Object Lock è attivato.

Risoluzione

Per configurare la replica tra più account su un bucket Amazon S3 con Object Lock, completa i seguenti prerequisiti:

  • Assicurati che il bucket di destinazione abbia Object Lock attivato. Se Object Lock non è attivato per il bucket di destinazione, contatta il Supporto AWS con la tua richiesta.
  • Assicurati di poter accedere all'interfaccia della linea di comando AWS (AWS CLI) o AWS CloudShell.
  • Assicurati di avere il token Object Lock prima di avviare la replica.

Fase 1: Crea un ruolo IAM per la replica con le autorizzazioni necessarie

1.    Crea un ruolo di replica nella console AWS Identity and Access Management (IAM) per l'account di origine con una relazione di fiducia per Amazon S3.

La relazione di fiducia è la seguente:

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

2.    Assicurati di associare le seguenti autorizzazioni al ruolo 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.    Se utilizzi il Servizio di gestione delle chiavi AWS (AWS KMS), assicurati di allegare anche le seguenti autorizzazioni:

{
  "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"
    }
  ]
}

Fase 2: Aggiorna le autorizzazioni chiave AWS KMS

Assicurati che la chiave AWS KMS per l'account di destinazione consenta l'accesso al ruolo IAM di replica nell'account di origine.

Esempio:

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

Nota: non puoi utilizzare la chiave AWS KMS gestita **aws/S3 ** per la replica tra più account. Tuttavia, è possibile utilizzare la crittografia SSE-S3.

Nota: se utilizzi un asterisco (*) per Resource (Risorsa) nella policy della chiave, la policy concede l'autorizzazione per la chiave solo al ruolo di replica. La policy non consente al ruolo di replica di elevare le proprie autorizzazioni.

Fase 3: Aggiungi la seguente policy del bucket all'account di destinazione

Nella sezione Principal (Principale), assicurati di aggiungere l'ARN del ruolo IAM di replica che hai creato nel passaggio 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"
      ]
    }
  ]
}

Fase 4: Crea un file replication.json

Crea un file chiamato replication.json simile al seguente nell'account di origine:

{
  "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"
      }
    }
  ]
}

Questo file contiene i parametri in formazione JSON che impostano la replica. Questi sono gli stessi parametri che potresti utilizzare per configurare la replica utilizzando la console Amazon S3. È necessario utilizzare l'interfaccia della linea di comando AWS per configurare la replica, poiché non è ancora possibile utilizzare la console Amazon S3 per farlo.

Assicurati di sostituire s3-replication-role con il ruolo IAM dal passaggio 1. Inoltre, includi l'ARN per il bucket di destinazione, la specifica del prefisso ed elimina le preferenze dei marker, se necessario.

Fase 5: Configura la replica

Dopo aver salvato la configurazione precedente, passa il file utilizzando il seguente comando AWS CLI:

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

Per ottenere il valore del token Object Lock da utilizzare in questo comando, contatta il Supporto AWS. Il <TOKEN> valore è il token Object Lock per il bucket di origine.

Fase 6: Verifica

Quando esegui il comando precedente, la regola di replica viene aggiunta al bucket di origine. Questa regola consente di replicare gli oggetti appena aggiunti nel bucket di destinazione. Puoi testare la regola aggiungendo nuovi oggetti all'origine e controllando la destinazione.

Nota: puoi aggiornare la configurazione della replica utilizzando la console Amazon S3 dopo aver configurato la replica. Per replicare oggetti crittografati con AWS KMS, modifica la configurazione di replica selezionando Replicate objects encrypted with AWS KMS (Replica oggetti crittografati con AWS KMS) in Encryption (Crittografia).

Informazioni correlate

Configurazione di S3 Object Lock tramite la console

Attivazione di S3 Object Lock

Replica di oggetti creati con crittografia lato server (SSE-C, SSE-S3, SSE-KMS)

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa