Salta al contenuto

Come posso concedere alla mia istanza Amazon EC2 l'accesso a un bucket Amazon S3 in un altro account AWS?

5 minuti di lettura
0

Desidero utilizzare un'istanza Amazon Elastic Compute Cloud (Amazon EC2) per accedere al mio bucket Amazon Simple Storage Service (Amazon S3) in un altro account AWS.

Risoluzione

Per concedere l'accesso multi-account da un'istanza EC2 a un bucket S3, configura una relazione di attendibilità tra due account AWS. Utilizza ruoli AWS Identity and Access Management (AWS IAM) per creare la relazione. Dall'account proprietario del bucket, crea un ruolo che conceda le autorizzazioni per S3. Dall'account proprietario dell'istanza EC2, crea un ruolo che possa assumere il ruolo di proprietario del bucket per accedere al bucket.

Crea un ruolo dall'account proprietario del bucket

Per creare un ruolo IAM (Identity and Access Management) dall'account proprietario del bucket, completa i seguenti passaggi:

  1. Utilizza l'account proprietario del bucket per accedere alla Console di gestione AWS.

  2. Apri la console IAM.

  3. Nel pannello di navigazione, scegli Ruoli, quindi seleziona Crea ruolo.

  4. Per Tipo di entità attendibile, scegli Account AWS.

  5. Seleziona Un altro account AWS, quindi inserisci l'ID dell'account proprietario dell'istanza EC2.
    Nota: non selezionare Require external ID (Richiedi ID esterno) o Richiedi MFA a meno che i requisiti di sicurezza non impongano tali opzioni.

  6. Scegli Avanti.

  7. Collega una policy IAM al ruolo che delega l'accesso ad Amazon S3, quindi scegli Avanti. Ad esempio, la seguente policy IAM concede a s3:GetObject l'accesso agli oggetti contenuti nel bucket:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
                    "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
                ]
            }
        ]
    }

    Nota: sostituisci DOC-EXAMPLE-BUCKET con il nome del tuo bucket. Inoltre, modifica la policy IAM in base alle autorizzazioni a livello di bucket e di oggetto Amazon S3 necessarie per il caso d'uso.

  8. In Nome ruolo, inserisci un nome per il ruolo.

  9. (Facoltativo) Aggiungi tag al ruolo.

  10. Scegli Crea ruolo.

Dall'account proprietario del bucket, identifica il nome della risorsa Amazon (ARN) del ruolo IAM

Per identificare l'ARN del ruolo IAM, completa i seguenti passaggi:

  1. Dal pannello di navigazione della console IAM, scegli Ruoli.
  2. Scegli il ruolo IAM che hai creato.
  3. Prendi nota del valore indicato in ARN ruolo.

Dall'account proprietario dell'istanza EC2, crea un altro ruolo e collegalo all'istanza

Per creare un altro profilo dell'istanza dall'account proprietario dell'istanza EC2 e collegarlo all'istanza, completa i seguenti passaggi:

  1. Utilizza l'account proprietario dell'istanza EC2 per accedere alla Console di gestione AWS.
  2. Apri la console IAM.
  3. Dal pannello di navigazione, scegli Ruoli, quindi seleziona Crea ruolo.
  4. Per Tipo di entità attendibile, scegli Servizio AWS.
  5. Per Servizio o caso d'uso, scegli EC2, quindi seleziona il caso d'uso.
  6. Scegli Avanti.
  7. Nella pagina Aggiungi autorizzazioni scegli Avanti.
  8. In Nome ruolo, inserisci un nome per il ruolo.
  9. (Facoltativo) Aggiungi tag al ruolo.
  10. Scegli Crea ruolo.
  11. Dall'elenco dei ruoli, scegli il ruolo che hai appena creato.
  12. Per Aggiungi autorizzazioni, scegli Crea policy inline.
  13. Per Editor di policy, seleziona JSON, quindi inserisci la seguente policy:
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111111111111:role/ROLENAME"
    }]
}

Nota: sostituisci arn:aws:iam::111111111111:role/ROLENAME con l'ARN del ruolo IAM che hai creato nell'account proprietario del bucket.

  1. Scegli Avanti.
  2. In Nome, inserisci un nome per la policy, quindi scegli Crea policy.
  3. Collega il ruolo IAM all'istanza che utilizzi per accedere al bucket Amazon S3.

Dall'istanza Amazon EC2, crea un profilo per il ruolo nel file di configurazione di CLI

Nota: se utilizzi SSH e Gestione sessione per connetterti alle istanze, devi completare questi passaggi sia per ec2-user che per ssm-user. Gestione sessione è uno strumento di AWS Systems Manager.

Per creare un profilo dall’istanza per il ruolo nel file di configurazione di CLI, completa i seguenti passaggi:

  1. Connettiti all'istanza. Per ulteriori informazioni, consulta Connessione a un'istanza Linux tramite SSH o Connessione all'istanza Windows con il protocollo RDP.

  2. Per determinare se la directory ha già una cartella denominata ~/.aws, esegui questo comando ls per elencarne il contenuto:

    ls -l ~/.aws
  3. Se la cartella ~/.aws è presente, procedi al passaggio successivo. Se la cartella ~/.aws non è presente, esegui questo comando mkdir per crearla:

    mkdir ~/.aws/
  4. Nella cartella ~/.aws, utilizza un editor di testo per creare un file. Denomina il file config.

  5. Nel file, inserisci il seguente testo per definire un profilo per il ruolo:

    [profile enterprofilename]
    role_arn = arn:aws:iam::111111111111:role/ROLENAME
    credential_source = Ec2InstanceMetadata

    Nota: sostituisci enterprofilename con il tuo valore. Sostituisci arn:aws:iam::111111111111:role/ROLENAME con l'ARN del ruolo che hai creato nell'account proprietario del bucket.

  6. Salva il file.

Verifica che il profilo dell'istanza possa assumere il ruolo

Per verificare che il ruolo dell'istanza possa assumere il ruolo nell'account B, connettiti all'istanza ed esegui questo comando:

aws sts get-caller-identity --profile profilename

Nota: sostituisci profilename con il nome del ruolo che hai collegato all'istanza.

Il comando restituisce una risposta simile alla seguente:

"Account": "11111111111",
"UserId": "AROAEXAMPLEID:sessionName",
"Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"

Verifica che il valore di "Arn" corrisponda all'ARN del ruolo che hai creato nell'account proprietario del bucket.

Verifica l'accesso al bucket Amazon S3

Per verificare che l'istanza possa accedere al bucket S3, connettiti all'istanza ed esegui questo comando list:

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename

Nota: sostituisci DOC-EXAMPLE-BUCKET con il nome del tuo bucket e profilename con il nome che hai configurato nel file di configurazione.

Se l’istanza riesce ad accedere correttamente al bucket, ricevi una risposta simile alla seguente:

PRE Hello/
2018-08-15 16:16:51 89 index.html

Informazioni correlate

Tutorial IAM: delega dell'accesso tra account AWS tramite i ruoli IAM

AWS UFFICIALEAggiornata 3 mesi fa