In che modo posso accedere a un bucket in un altro account utilizzando un punto di accesso S3 limitato a un VPC?

5 minuti di lettura
0

Dispongo di un'entità e un bucket AWS Identity and Access Management (IAM) in diversi account AWS. Desidero concedere all'entità IAM l'accesso multi-account al bucket utilizzando un punto di accesso Amazon Simple Storage Service (Amazon S3) limitato a un Amazon Virtual Private Cloud (Amazon VPC).

Risoluzione

Per concedere a un ruolo o utente IAM in un account AWS (account A) l'accesso a un bucket Amazon S3 in un altro account AWS (account B) utilizzando un punto di accesso S3 limitato a un Amazon VPC, procedi come segue:

  1. Crea e collega un punto di accesso Amazon S3 al bucket nell'account B.
  2. Crea un endpoint VPC del gateway Amazon S3 nell'account A.
  3. Collega il punto di accesso, il bucket e le policy IAM.

Creazione e collegamento di un punto di accesso Amazon S3 al bucket nell'account B

  1. Apri la console Amazon S3.
  2. Nel pannello di navigazione, scegli Access Points (Punti di accesso).
  3. Scegli Create access point (Crea punto di accesso).
  4. Per Access point name (Nome punto di accesso), inserisci un nome per il punto di accesso. Per ulteriori informazioni, consulta Regole per la denominazione degli access point Amazon S3.
  5. Per Bucket name (Nome bucket), inserisci il nome del bucket dall'account B a cui desideri collegare il punto di accesso.
  6. Scegli Virtual Private Cloud (VPC) (Cloud privato virtuale (VPC)) per Network Origin (Origine della rete).
  7. Per VPC ID (ID VPC), inserisci l'ID VPC del primo account AWS (account A).
  8. In Block Public Access settings for this Access Point (Blocca le impostazioni di accesso pubblico per questo punto di accesso), scegli le impostazioni di blocco dell'accesso pubblico che desideri applicare al punto di accesso. 
    Nota: Amazon S3 non supporta attualmente la modifica delle impostazioni di blocco dell'accesso pubblico di un punto di accesso dopo la creazione di quest'ultimo.
  9. Lascia vuoto il campo Access Point Policy (Policy del punto di accesso).
  10. Scegli Create access point (Crea punto di accesso).

Creazione di un endpoint VPC del gateway Amazon S3 nell'account A

Crea un endpoint VPC del gateway S3 nell'account AWS iniziale (account A) nella stessa regione del bucket a cui concedi l'accesso multi-account.

  1. Apri la console Amazon VPC.
  2. Nel pannello di navigazione, scegli Endpoints (Endpoint).
  3. Scegli Create endpoint (Crea endpoint).
  4. Per Service category (Categoria del servizio), scegli AWS services (Servizi AWS).
  5. Per Services (Servizi), aggiungi il filtro Type: Gateway (Tipo: gateway) e seleziona la stessa regione utilizzata per creare il punto di accesso.
  6. Per VPC, scegli lo stesso VPC utilizzato per creare il punto di accesso.
  7. Per Route tables (Tabelle di instradamento), scegli le tabelle di instradamento che devono essere utilizzate dall'endpoint.
  8. Scegli la policy Full access (Accesso completo). Oppure, scegli Custom (Personalizzata) e assicurati che la policy consenta le operazioni S3 richieste.

Nota: gli endpoint gateway non consentono l'accesso da altre regioni AWS. Di seguito è riportato un esempio di policy dell'endpoint VPC che consente tutte le operazioni S3 su tutti i bucket:

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

Collegamento del punto di accesso, del bucket e delle policy IAM

Per consentire all'entità IAM iniziale dell'account AWS (account A) l'accesso multi-account al bucket dell'altro account AWS (account B) tramite il punto di accesso, devi concedere le autorizzazioni dal punto di accesso, dal bucket e dalle policy IAM. Di seguito sono riportate le policy che concedono le autorizzazioni richieste per ogni elemento.

Policy del 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"
  ]
 }]
}

Nota: questa policy concede all'utente o al ruolo IAM dall'account AWS di origine (account A) l'autorizzazione al punto di accesso nell'account AWS di destinazione (account B).

Policy del 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"
   }
  }
 }]
}

Nota: questa policy concede all'utente IAM dell'account AWS di origine (account A) l'autorizzazione al bucket (account B) utilizzando il punto di accesso.

Policy 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/*"
  ]
 }]
}

Nota: questa policy IAM collegata al ruolo o all'utente IAM dell'account AWS di origine (account A) concede l'autorizzazione al bucket e al punto di accesso dell'account AWS di destinazione (account B).

Esempi di comandi dell'Interfaccia della linea di comando AWS (AWS CLI) per eseguire operazioni S3 nei confronti del bucket utilizzando il punto di accesso:

Nota: se ricevi un messaggio di errore durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione di AWS CLI più recente.

Elenco:

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

Caricamento:

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

Download:

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) nel VPC e nella stessa regione del bucket.


AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa