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

Voglio utilizzare un'istanza Amazon Elastic Compute Cloud (Amazon EC2) per accedere al mio bucket Amazon Simple Storage Service (Amazon S3) in un altro account. Come posso concedere questo accesso senza memorizzare le credenziali sull'istanza?

Soluzione

Nota: i passaggi per concedere l'accesso all'istanza a un bucket Amazon S3 sono simili a quelli per concedere l'accesso ad altre risorse AWS in un altro account.

Segui questi passaggi per concedere a un'istanza Amazon EC2 nell'Account A l'accesso a un bucket in un altro account (Account B).

Dall'account B, crea un ruolo IAM

1.    Accedi alla Console di gestione AWS con l'account B.

2.    Apri la console AWS Identity and Access Management (IAM).

3.    Nel riquadro di navigazione, scegli Ruoli.

4.    Scegli Crea ruolo.

5.    Per Seleziona il tipo di entità affidabile, scegli Un altro account AWS.

6.    Per ID account, inserisci l'ID account dell'account A.

7.    Scegli Avanti: Autorizzazioni.

8.    Associa una policy al ruolo che delega l'accesso ad Amazon S3. Ad esempio, questa policy concede l'accesso a s3:GetObject sugli oggetti archiviati 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: è possibile modificare la policy IAM in base alle autorizzazioni a livello di bucket e di oggetto di Amazon S3 richieste per il tuo caso d'uso.

9.    Scegli Avanti: Aggiungi tag.

10.    È possibile aggiungere tag opzionali al ruolo. In alternativa, puoi lasciare i campi vuoti, quindi scegliere Avanti: Rivedi.

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

12.    Scegli Crea ruolo.

Dall'account B, ottieni l'ARN del ruolo

1.    Dal riquadro di navigazione della console IAM, scegli Ruoli.

2.    Scegli il ruolo IAM che hai creato.

3.    Prendi nota del valore elencato per ruolo ARN.

Dall'account A, crea un altro ruolo (profilo dell'istanza) e collegalo all'istanza

1.    Accedi alla Console di gestione AWS con l'account A.

2.    Apri la console IAM.

3.    Nel riquadro di navigazione, scegli Ruoli.

4.    Scegli Crea ruolo.

5.    Per Seleziona il tipo di entità affidabile, scegli servizio AWS.

6.    In Scegli il servizio che utilizzerà questo ruolo, scegli EC2.

7.    Scegli Avanti: Autorizzazioni.

8.    Scegli Avanti: Tag.

9.    È possibile aggiungere tag opzionali al ruolo. In alternativa, puoi lasciare i campi vuoti, quindi scegliere Avanti: Rivedi.

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

11.    Scegli Crea ruolo.

12.    Dall'elenco dei ruoli, scegli il ruolo che hai appena creato.

13.    Scegli Aggiungi policy in linea, quindi scegli la visualizzazione JSON.

14.    Inserisci la seguente policy. Sostituisci arn:aws:iam::111111111111:role/ROLENAME con il nome della risorsa Amazon (ARN) del ruolo IAM che hai creato nell'Account B.

{
	"Version": "2012-10-17",
	"Statement": [{
		"Effect": "Allow",
		"Action": "sts:AssumeRole",
		"Resource": "arn:aws:iam::111111111111:role/ROLENAME"
	}]
}

15.    Scegli Rivedi policy.

16.    In Nome, inserisci un nome per la policy.

17.    Scegli Crea policy.

18.    Associa il ruolo IAM (profilo dell'istanza) all'istanza Amazon EC2 che usi per accedere al bucket Amazon S3.

Dall'istanza Amazon EC2, crea un profilo per il ruolo nel file di configurazione dell’interfaccia della linea di comando

Nota: se usi SSH e Session Manager per connetterti alle tue istanze EC2, devi eseguire questi passaggi sia per ec2-user che per ssm-user.

1.    Connettiti all'istanza Amazon EC2. Per ulteriori informazioni, consulta Connessione all'istanza di Linux o Connecting to your Windows instance.

2.    Dopo esserti connesso all'istanza, verifica se nella directory è già presente una cartella denominata ~/.aws.

Per trovare la cartella ~/.aws, esegui il seguente comando ls per elencare la directory:

ls -l ~/.aws

3.    Se trovi la cartella ~/.aws, procedi al passaggio successivo. Se la directory non ha ancora una cartella ~/.aws, crea la cartella eseguendo il comando mkdir:

mkdir ~/.aws/

4.    All'interno della cartella ~/.aws, usa un editor di testo per creare un file. Assegna config come nome del file.

5.    Nel file, inserisci il testo seguente. Sostituisci enterprofilename con il nome del ruolo che hai assegnato all'istanza. Quindi, sostituisci arn:aws:iam::111111111111:role/ROLENAME con l'ARN del ruolo che hai creato nell'Account B.

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

credential_source = Ec2InstanceMetadata

6.    Salva il file.

Verifica che il profilo dell'istanza possa assumere il ruolo

Per verificare che il ruolo dell'istanza (profilo dell'istanza) possa assumere il ruolo nell'account B, esegui il comando seguente mentre sei connesso all'istanza. Sostituisci profilename con il nome del ruolo che hai assegnato all'istanza.

$aws sts get-caller-identity --profile profilename

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 B.

Verifica l'accesso al bucket Amazon S3

Per verificare che la tua istanza possa accedere al bucket Amazon S3, esegui questo comando list mentre sei connesso all'istanza. Sostituisci profilename con il nome del ruolo che hai assegnato all'istanza.

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

Se la tua istanza può accedere al bucket con successo, riceverai una risposta che elenca il contenuto del bucket, come questa:

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 UFFICIALE
AWS UFFICIALEAggiornata un anno fa