Salta al contenuto

Come posso accedere a un bucket in un altro account tramite un punto di accesso S3 limitato a un VPC?

5 minuti di lettura
0

Ho un'entità AWS Identity and Access Management (IAM) e un bucket Amazon Simple Storage Service (Amazon S3) in diversi account AWS. Desidero concedere all'entità IAM l'accesso multiaccount al bucket tramite un punto di accesso Amazon S3. L'access point è limitato a un Amazon Virtual Private Cloud (Amazon VPC).

Breve descrizione

Puoi concedere a un ruolo o utente IAM in un account AWS l'accesso a un bucket Amazon S3 in un altro account AWS tramite un punto di accesso S3 limitato a un Amazon VPC.

Supponiamo che l'entità IAM sia nell'account A e che il bucket S3 sia nell'account B. Per concedere all'entità IAM l'accesso al bucket tramite un punto di accesso S3 limitato a un Amazon VPC, completa i seguenti passaggi:

  1. Crea e collega un punto di accesso Amazon S3 al bucket nell'account B.
  2. Crea un endpoint gateway Amazon S3 VPC nell'account A.
  3. Allega le policy al punto di accesso, al bucket e all'entità IAM.

**Nota:**l'identità IAM nell'account A deve trovarsi nella stessa regione AWS del bucket S3 nell'account B.

Risoluzione

Creare e collegare un punto di accesso Amazon S3 al bucket nell'account B

Per creare e collegare un access point Amazon S3 al bucket nell'Account B, completa i seguenti passaggi:

  1. Apri la console Amazon S3.
  2. Nel riquadro di navigazione, scegli ** Access Points**.
  3. Scegli Crea punto di accesso.
  4. Per Nome punto di accesso, immettere il nome del punto di accesso. Per ulteriori informazioni su come assegnare un nome ai punti di accesso, consulta Rules for naming Amazon S3 access points.
  5. Per Nome bucket, scegli Scegli un bucket in questo account, quindi inserisci il nome del bucket a cui desideri collegare l'access point.
  6. Per Origine della rete, scegli Cloud privato virtuale (VPC).
  7. Per l'ID VPC, inserisci l'ID VPC dall'altro account AWS (account A).
  8. In Blocca impostazioni di accesso pubblico per questo punto di accesso, scegli le impostazioni di blocco dell'accesso pubblico che desideri applicare all'access point.
    **Nota:**dopo aver creato un punto di accesso, non puoi modificarne le impostazioni di blocco dell'accesso pubblico.
  9. Lascia vuota la policy Access Point.
  10. Scegli Crea punto di accesso.

Crea un endpoint gateway Amazon S3 VPC nell'account A

Per creare un endpoint gateway S3 VPC nell'account A che conceda l'accesso al bucket Amazon S3 nell'account B, completa i seguenti passaggi:

  1. Apri la console Amazon VPC.
  2. Nel pannello di navigazione, scegli Endpoint.
  3. Scegli Crea endpoint.   
  4. In Categoria servizio, scegli Servizi AWS.
  5. Per Servizi, aggiungi il filtro **Type = Gateway ** e seleziona com.amazonaws.<region>.s3.
  6. Per VPC, seleziona il VPC che hai utilizzato per creare il punto di accesso nell'Account B.
  7. Per ** Tabelle di routing**, scegli le tabelle di percorso che devi utilizzare per il tuo endpoint.
  8. In Policy, scegli Accesso completo per consentire tutte le operazioni su tutte le risorse tramite l'endpoint VPC secondo tutti i principi. Oppure, seleziona Personalizzato e utilizza la tua politica che consente le azioni S3 richieste.

Ad esempio, la seguente policy sugli endpoint VPC consente tutte le azioni S3 a tutti i bucket:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:*"
    }
  ]
}

**Nota:**gli endpoint del gateway non consentono l'accesso da altre regioni AWS.

Allega le policy al punto di accesso, al bucket e all'entità IAM

Per consentire all'entità IAM dell'Account A di accedere al bucket nell'Account B tramite il punto di accesso, devi allegare le policy a quanto segue:

  • Il punto di accesso
  • Un bucket S3
  • L'entità IAM

Politica sui punti di accesso

Per concedere all'entità IAM nell'Account A l'autorizzazione al punto di accesso S3 nell'Account B, allega la seguente politica al tuo punto di accesso:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DelegateControlToAccessPoint",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::AccountA-ID:user/user1",
          "arn:aws:iam::AccountA-ID:role/role01"
        ]
      },
      "Action": [
        "s3:ListBucket",
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-acess-point/object/*",
        "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
      ]
    }
  ]
}

Polcy sui bucket

Per concedere all'entità IAM nell'Account A l'autorizzazione al bucket nell'Account B tramite il punto di accesso, allega la seguente policy al tuo bucket:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCrossAccountAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::AccountA-ID:user/user1",
          "arn:aws:iam::AccountA-ID:role/role01"
        ]
      },
      "Action": [
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ],
      "Condition": {
        "StringEquals": {
          "s3:DataAccessPointArn": "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
        }
      }
    }
  ]
}

Policy IAM

Per concedere all'entità IAM nell'Account A l'autorizzazione al bucket e al punto di accesso nell'Account B, allega la seguente policy alla tua entità IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCrossAccountAccessToBucketAndAP",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point",
        "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point/object/*",
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}

Comandi di esempio dell'interfaccia a riga di comando AWS per eseguire operazioni S3 sul bucket tramite il punto di accesso

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per elencare gli oggetti tramite il punto di accesso, esegui il comando ls:

aws s3 ls arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Per caricare file tramite il punto di accesso, esegui il comando cp:

aws s3 cp file.txt s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Puoi anche usare il comando cp per scaricare i file tramite il punto di accesso:

aws s3 cp s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point file.txt

**Nota:**la richiesta deve provenire da un'istanza Amazon Elastic Compute Cloud (Amazon EC2) che si trova nello stesso VPC e nella stessa regione del bucket.

AWS UFFICIALEAggiornata un anno fa