5

Sto cercando di elaborare il flusso logico per un modello AWS CloudFormation che assumerà un ruolo IAM in grado di estrarre file da un bucket S3 in un altro account AWS.Come posso utilizzare AssumeRole da un altro account AWS in un modello CloudFormation?

Quello che ho finora è:

  1. considerazione La ha un roleA
  2. roleA ha politica che permette STS: AssumeRole per un ruolo nel accountB: ARN: AWS: :: iam 11.122.233,444 mila: ruolo/AllowPullS3
  3. accountB ha un ruolo (AllowPullS3) con
  4. politica permettere: s3 listBucket + gET, PUT, eliminare
  5. relazione di trust per considerazione La: Azione: "STS: AssumeRole"

Se creo un'istanza EC2 manualmente con IAM: roleA e poi utilizzo la CLI per ottenere le credenziali del ruolo di presunzione, posso quindi estrarre i file dal secchio S3 dell'altro account come previsto.

Ma che cosa è necessario inserire nel mio account Un modello CF che consenta all'istanza EC2 di assumere il ruoloB e di estrarre il file dal sec di S3 dell'account come parte della formazione?

Ho provato a seguire un sacco di tutorial come this cfn-iam:init tutorial ma ancora non riesco a cogliere appieno cosa va dove.

Grazie per il vostro consiglio.

Art

+0

Avete usare AssumeRole? Basterebbe una politica del bucket o stai cercando di evitarlo? Se hai creato manualmente il ruolo nell'accountA e lo hai allegato all'istanza EC2 utilizzando la proprietà IamInstanceProfile, puoi aggiungere il ruolo ARN dall'accountA a un criterio bucket sul bucket s3 nell'accountB se sei felice di farlo. È più semplice che scherzare con i ruoli degli account incrociati. – lokulin

risposta

1

Non è possibile dire CloudFormation ad assumere un altro ruolo.

Tuttavia, se si dispone di uno script/comando CLI che funziona sull'istanza di Amazon EC2, passare semplicemente lo script come Dati utente. Lo script verrà eseguito all'avvio dell'istanza. I Dati utente possono essere passati nel tuo modello CloudFormation, dove è definita l'istanza EC2.

Vedi: Running Commands on Your Linux Instance at Launch