Ho impostato la replica tra i miei bucket, ma i nuovi oggetti non si replicano. Come posso risolvere questo problema?

9 minuti di lettura
0

Ho impostato la replica interregionale (CRR) o la replica nella stessa regione (SRR) tra i miei bucket Amazon Simple Storage Service (Amazon S3). Tuttavia, gli oggetti non si replicano nel bucket di destinazione.

Risoluzione

Per risolvere i problemi relativi agli oggetti che non si replicano nel bucket di destinazione, controlla i diversi tipi di autorizzazioni per il bucket. Inoltre, controlla le impostazioni di accesso pubblico e le impostazioni di proprietà del bucket.

**Suggerimento:**Assicurati di testare la replica dopo ogni modifica alla configurazione caricando un oggetto nel bucket di origine. È consigliabile apportare una modifica alla configurazione alla volta per identificare eventuali problemi di configurazione della replica.

Dopo aver risolto i problemi che causavano il fallimento della replica, potrebbero esserci oggetti nel bucket di origine che non sono stati replicati. Per impostazione predefinita, la replicazione S3 non replica oggetti o oggetti esistenti con lo stato di replicaFAILED oREPLICA. Replica questi oggetti utilizzando la replica batch S3.

Autorizzazioni minime Amazon S3

Verifica che il ruolo AWS Identity Access Management (IAM) disponga delle autorizzazioni corrette. Se i bucket di origine e di destinazione si trovano in account diversi, verifica che la politica dei bucket dell'account di destinazione conceda anche autorizzazioni sufficienti per il ruolo di replica.

L'esempio seguente mostra una informativa IAM con le autorizzazioni minime richieste per la replica. In base alle opzioni delle regole di replica, potrebbe essere necessario concedere autorizzazioni aggiuntive.

{
    “Versione”: “17/10/2012”,
    “Dichiarazione”: [
        {
            “Effetto”: “Consenti”,
            “Azione”: [
                "s3:GetReplicationConfiguration",
                "s3: elenco completo"
            ],
            “Risorsa”: [
                “arn:aws:s3:::SourceBucket”
            ]
        },
        {
            “Effetto”: “Consenti”,
            “Azione”: [
                “S3: Ottieni la versione dell'oggetto per la replica”,
                "s3:GetObjectVersionAcl",
                “S3: ottieni il tag della versione dell’oggetto"
            ],
            “Risorsa”: [
                "arn:aws:s3:::SourceBucket/*"
            ]
        },
        {
            “Effetto”: “Consenti”,
            “Azione”: [
                "s3:ReplicateObject",
                "s3:ReplicateTags"
            ],
            "Resource": "arn:aws:s3:::DestinationBucket/*"
        }
    ]
}

Nota: Sostituisci SourceBucket eDestinationBucket con i nomi dei tuoi bucket S3.

Il ruolo IAM deve avere una politica di fiducia, che consenta ad Amazon S3 di assumere il ruolo di replica degli oggetti. Ad esempio:

{
    “Versione”: “17/10/2012”,
    “Dichiarazione”: [
        {
            “Effetto”: “Consenti”,
            “Preside”: {
                “Servizio”: “s3.amazonaws.com”
            },
            “Azione”: "sts:AssumeRole"
        }
    ]
}

Se il bucket di destinazione si trova in un altro account, la politica del bucket di destinazione deve concedere le seguenti autorizzazioni:

{
    “Versione”: “17/10/2012”,
    “ID”: “Politica 1644945280205”,
    “Dichiarazione”: [
        {
            “Lato”: “Stmt1644945277847”,
            “Effetto”: “Consenti”,
            “Preside”: {
                “AWS”: “arn:aws:iam::123456789101:role/s3-replication-role”
            },
            “Azione”: [
                "s3:ReplicateObject",
                "s3:ReplicateTags"
            ],
            "Resource": "arn:aws:s3:::DestinationBucket/*"
        }
    ]
}

Nota: Sostituisci arn:aws:iam::123456789101:role/s3-replication-role con l'ARN del tuo ruolo di replica.

Autorizzazioni Amazon S3 aggiuntive

Se la regola di replica è impostata su Cambia la proprietà dell'oggetto al proprietario del bucket di destinazione, il ruolo IAM deve disporre delle autorizzazioni** s3:ObjectOwnerOverrideToBucketOwner**. Questa autorizzazione viene inserita nella risorsa oggetto S3. Ad esempio:

{
    “Effetto”: "Consenti”,
         “Azione”:[
       "s3:ObjectOwnerOverrideToBucketOwner"
    ],
    “Risorsa” :"arn:aws:s3:::DestinationBucket/*”
}

L'account di destinazione deve inoltre concedere l'autorizzazione** s3:ObjectOwnerOverrideToBucketOwner** tramite la politica del bucket:

{
  “Versione”: “17/10/2012”,
  “ID”: “Politica 1644945280205”,
  “Dichiarazione”: [
    {
      “Lato”: “Stmt1644945277847”,
      “Effetto”: “Consenti”,
      “Preside”: {
        “AWS”: “arn:aws:iam::123456789101:role/s3-replication-role”
      },
      “Azione”: [
        "s3:ReplicateObject",
        “S3: Replica i tag”,
        "s3:ObjectOwnerOverrideToBucketOwner"
      ],
      "Resource": "arn:aws:s3:::DestinationBucket/*"
    }
  ]
}

Nota: Se le impostazioni di proprietà degli oggetti del bucket di destinazione includono l'imposizione del proprietario del bucket, non è necessario modificare la proprietà dell'oggetto con il proprietario del bucket di destinazione nella regola di replica. Questa modifica avverrà per impostazione predefinita.

Se la regola di replica ha attivato la replica del marker di eliminazione, il ruolo IAM deve disporre delle autorizzazioni s3:ReplicateDelete. Se il bucket di destinazione si trova in un altro account, anche il proprietario del bucket di destinazione deve concedere questa autorizzazione tramite la policy del bucket. Ad esempio:

{
    “Effetto”: "Consenti”,
         “Azione”:[
       "s3:ReplicateDelete"
    ],
    “Risorsa” :"arn:aws:s3:::DestinationBucket/*”

}

Nota: Sostituisci DestinationBucket con il nome del tuo bucket S3.

La stessa autorizzazione deve essere concessa anche tramite la politica dei bucket sul bucket di destinazione:

{
  “Versione”: “17/10/2012”,
  “ID”: “Politica 1644945280205”,
  “Dichiarazione”: [
    {
      “Lato”: “Stmt1644945277847”,
      “Effetto”: “Consenti”,
      “Preside”: {
        “AWS”: “arn:aws:iam::123456789101:role/s3-replication-role”
      },
      “Azione”: [
        "s3:ReplicateObject",
        “S3: Replica i tag”,
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:ReplicateDelete"
      ],
      "Resource": "arn:aws:s3:::DestinationBucket/*"
    }
  ]
}

Autorizzazioni AWS KMS

Se gli oggetti sorgente di un bucket sono crittografati con una chiave AWS Key Management Service (AWS KMS), la regola di replica deve essere configurata per includere oggetti crittografati con KMS.

Per includere oggetti crittografati con AWS KMS:

  1. Apri la console Amazon S3.

  2. Scegli il bucket S3 che contiene gli oggetti di origine.

3.    Nella scheda Gestione selezionare una regola di replica.

  1. Scegli Modifica.

  2. In Crittografia, seleziona Replica oggetti crittografati con AWS KMS.

  3. Nella chiave AWS KMS per la crittografia degli oggetti di destinazione, seleziona una chiave AWS KMS. L'opzione predefinita consiste nell'utilizzare la chiave AWS KMS (AWS/s3).

Importante: Se il bucket di destinazione si trova in un altro account AWS, specifica una chiave gestita dal cliente KMS di proprietà dell'account di destinazione. Non utilizzare la chiave AWS/s3 predefinita. Questo crittografa gli oggetti con la chiave gestita da AWS, che è di proprietà dell'account di origine, e non può essere condivisa con un altro account. Di conseguenza, l'account di destinazione non può accedere agli oggetti nel bucket di destinazione.

Per utilizzare una chiave AWS KMS che appartiene all'account di destinazione per crittografare gli oggetti di destinazione, l'account di destinazione deve concedere il ruolo di replica nella policy delle chiavi KMS:

{
    “Lato”: "AllowS3ReplicationSourceRoleToUseTheKey",
    “Effetto”: “Consenti”,
    “Preside”: {
        “AWS”: “arn:aws:iam::123456789101:role/s3-replication-role”
    },
    "Azione": ["kms:GenerateDataKey", "kms:Encrypt"],
    “Risorsa”: “*”
}

**Nota:**Se utilizzi un asterisco (\ *) per Risorse nella policy chiave di AWS KMS, la policy concede l'autorizzazione per la chiave KMS solo al ruolo di replica. La policy non consente al ruolo di replica di elevare le proprie autorizzazioni.

Inoltre, l'account di origine deve aggiungere le seguenti autorizzazioni minime alla politica IAM del ruolo di replica:

{
    “Effetto”: “Consenti”,
    “Azione”: [
        "kms:Decrypt",
        "kms:GenerateDataKey"
    ],
    “Risorsa”: [
        "SourceKmsKeyArn"
    ]
},
{
    “Effetto”: “Consenti”,
    “Azione”: [
        "kms:GenerateDataKey",
        "kms:Encrypt"
    ],
    “Risorsa”: [
        "DestinationKmsKeyArn"
    ]
}

Per impostazione predefinita, la politica delle chiavi KMS concede all'utente root le autorizzazioni complete per la chiave. Queste autorizzazioni possono essere delegate ad altri utenti nello stesso account. A meno che non vi siano dichiarazioni di rifiuto nella politica chiave KMS di origine, è sufficiente utilizzare una politica IAM per concedere le autorizzazioni del ruolo di replica alla chiave KMS di origine.

Dichiarazioni esplicite di rifiuto e autorizzazione condizionale

Se i tuoi oggetti non si replicano ancora dopo aver convalidato le autorizzazioni, verifica la presenza di eventuali dichiarazioni di rifiuto esplicite:

  • Negare le dichiarazioni nella policy del bucket di destinazione o le politiche chiave KMS che limitano l'accesso a intervalli CIDR, endpoint VPC o punti di accesso S3 specifici possono causare il fallimento della replica.
  • Negare le dichiarazioni o i limiti di autorizzazione associati al ruolo IAM può causare il fallimento della replica.
  • Negare le dichiarazioni nelle policy di controllo dei servizi di AWS Organizations allegate agli account di origine o di destinazione può causare il fallimento della replica.

**Suggerimento:**Prima di rimuovere qualsiasi dichiarazione di rifiuto esplicita, conferma il motivo dell'utilizzo del rifiuto e determina se la dichiarazione ha un impatto sulla sicurezza dei dati.

Se le chiavi KMS di origine o di destinazione concedono le autorizzazioni in base al contesto di crittografia, verifica che le Bucket Keys S3 siano attivate per i bucket. Se i bucket hanno le Bucket Keys attivate, il contesto di crittografia deve riguardare la risorsa a livello di bucket:

“KMS:EncryptionContext:AWS:S3:arn”: [
     “arn:aws:s3: ::SOURCE_BUCKET_NAME”
     ]
“KMS:EncryptionContext:AWS:S3:arn”: [
     “arn:aws:s3: ::DESTINATION_BUCKET_NAME”
     ]

Nota: Sostituisci SOURCE\ _BUCKET\ _NAME e** DESTINATION\ _BUCKET\ _NAME** con i nomi dei bucket di origine e destinazione.

Se le chiavi bucket non sono attivate per i bucket di origine o di destinazione, il contesto di crittografia deve essere la risorsa a livello di oggetto:

“KMS:EncryptionContext:AWS:S3:arn”: [
     “arn:aws:s3: ::SOURCE_BUCKET_NAME/*”
     ]
“KMS:EncryptionContext:AWS:S3:arn”: [
     “arn:aws:s3: ::DESTINATION_BUCKET_NAME/*”
     ]

Nota: Sostituisci SOURCE\ _BUCKET\ _NAME e DESTINATION\ _BUCKET\ _NAME con i nomi dei bucket di origine e destinazione.

Oggetto: ACL e blocco dell'accesso pubblico

Verifica se i bucket di origine e destinazione utilizzano gli ACL. Se all'oggetto è collegato un ACL che consente l'accesso pubblico ma il bucket di destinazione utilizza l'accesso pubblico a blocchi, la replica ha esito negativo.

Proprietà dell'oggetto di origine

Se gli oggetti nel bucket di origine sono stati caricati da un altro account AWS, l'account di origine potrebbe non avere l'autorizzazione per tali oggetti. Controlla il bucket di origine per vedere se gli ACL sono disattivati. Se il bucket di origine ha gli ACL disattivati, l'account di origine è il proprietario di tutti gli oggetti nel bucket. Se il bucket di origine non ha gli ACL disattivati, controlla se la proprietà dell'oggetto è impostata su Preferito del proprietario dell'oggetto o preferito del proprietario del bucket. Se il bucket è impostato su Preferito del proprietario del bucket, gli oggetti del bucket di origine necessitano di un ACL con controllo completo del proprietario del bucket affinché il proprietario del bucket diventi il proprietario dell'oggetto.

L'account di origine può assumere la proprietà di tutti gli oggetti nel proprio bucket disattivando gli ACL. La maggior parte dei casi d'uso non richiede l'uso di ACL per gestire l'accesso. È consigliabile utilizzare le policy IAM e bucket per gestire l'accesso alle risorse S3. Per disattivare gli ACL sul bucket S3, consulta Controllo della proprietà degli oggetti e disabilitazione degli ACL per il bucket. Assicurati di valutare l'uso corrente degli ACL nel bucket e negli oggetti. Le tue attuali policy relative a bucket e IAM devono concedere autorizzazioni sufficienti per poter disattivare gli ACL senza influire sull'accesso ad Amazon S3.


Informazioni correlate

Procedure dettagliate: Esempi di configurazione della replica

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa