Usa un IAM ruolo per concedere le autorizzazioni alle applicazioni in esecuzione su istanze Amazon EC2 - AWS Identity and Access Management

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa un IAM ruolo per concedere le autorizzazioni alle applicazioni in esecuzione su istanze Amazon EC2

Le applicazioni eseguite su un'EC2istanza Amazon devono includere AWS credenziali in AWS APIrichieste. Potresti avere il tuo negozio per sviluppatori AWS credenziali direttamente all'interno dell'EC2istanza Amazon e consenti alle applicazioni in quell'istanza di utilizzare tali credenziali. Ma gli sviluppatori dovrebbero quindi gestire le credenziali e assicurarsi di passarle in modo sicuro a ciascuna istanza e aggiornare ogni EC2 istanza Amazon quando è il momento di aggiornare le credenziali. Si tratta di una notevole quantità di lavoro aggiuntivo.

Invece, puoi e dovresti utilizzare un IAM ruolo per gestire le credenziali temporanee per le applicazioni eseguite su un'EC2istanza Amazon. Quando utilizzi un ruolo, non devi distribuire credenziali a lungo termine (come credenziali di accesso o chiavi di accesso) a un'istanza Amazon. EC2 Al contrario, il ruolo fornisce autorizzazioni temporanee che le applicazioni possono utilizzare quando effettuano chiamate ad altri AWS risorse. Quando avvii un'EC2istanza Amazon, specifichi un IAM ruolo da associare all'istanza. Le applicazioni eseguite sull'istanza possono quindi utilizzare le credenziali temporanee fornite dal ruolo per firmare le richieste. API

L'utilizzo dei ruoli per concedere le autorizzazioni alle applicazioni eseguite su EC2 istanze Amazon richiede una configurazione aggiuntiva. Un'applicazione in esecuzione su un'EC2istanza Amazon viene astratta da AWS dal sistema operativo virtualizzato. A causa di questa separazione aggiuntiva, è necessario un passaggio aggiuntivo per assegnare un AWS assegnare il ruolo e le autorizzazioni associate a un'EC2istanza Amazon e renderle disponibili alle sue applicazioni. Tale passaggio aggiuntivo prevede la creazione di un profilo dell'istanza collegato all'istanza. Il profilo dell'istanza contiene il ruolo e può fornire le credenziali provvisorie del ruolo a un'applicazione eseguita nell'istanza. Queste credenziali temporanee possono quindi essere utilizzate nelle API chiamate dell'applicazione per accedere alle risorse e per limitare l'accesso solo alle risorse specificate dal ruolo.

Nota

È possibile assegnare un solo ruolo alla volta a un'EC2istanza Amazon e tutte le applicazioni sull'istanza condividono lo stesso ruolo e le stesse autorizzazioni. Quando utilizzi Amazon ECS per gestire le tue EC2 istanze Amazon, puoi assegnare ruoli alle ECS attività Amazon che possono essere distinti dal ruolo dell'EC2istanza Amazon su cui è in esecuzione. L'assegnazione di un ruolo a ciascuna attività è conforme al principio dell'accesso con privilegi minimi e consente un controllo più granulare su operazioni e risorse.

Per ulteriori informazioni, consulta Using IAM roles with Amazon ECS Tasks nella Amazon Elastic Container Service Best Practices Guide.

Questo tipo di utilizzo dei ruoli offre diversi vantaggi. Dato che le credenziali dei ruoli sono temporanee e vengono aggiornate automaticamente, non dovrai preoccuparti della gestione né dei rischi di sicurezza a lungo termine. Inoltre, se utilizzi un singolo ruolo per più istanze, quando apporti una modifica a un ruolo, queste si propaga automaticamente a tutte le istanze.

Nota

Sebbene un ruolo venga solitamente assegnato a un'EC2istanza Amazon al momento del lancio, un ruolo può essere associato anche a un'EC2istanza Amazon attualmente in esecuzione. Per informazioni su come assegnare un ruolo a un'istanza in esecuzione, consulta IAMRoles for Amazon EC2.

Come funzionano i ruoli per EC2 le istanze Amazon?

Nella figura seguente, uno sviluppatore esegue un'applicazione su un'EC2istanza Amazon che richiede l'accesso al bucket S3 denominato. amzn-s3-demo-bucket-photos Un amministratore crea il ruolo Get-pics di servizio e lo assegna all'EC2istanza Amazon. Il ruolo include una policy di autorizzazione che consente l'accesso in sola lettura al bucket S3 specificato. Include anche una policy di fiducia che consente all'EC2istanza Amazon di assumere il ruolo e recuperare le credenziali temporanee. Quando l'applicazione viene eseguita sull'istanza, può utilizzare le credenziali provvisorie del ruolo per accedere al bucket delle foto. L'amministratore non ha bisogno di concedere allo sviluppatore l'autorizzazione di accedere al bucket delle foto e lo sviluppatore non si trova mai nella necessità di condividere o gestire credenziali.

Applicazione su un'EC2istanza Amazon che accede a AWS risorsa
  1. L'amministratore lo utilizza IAM per creare il Get-pics ruolo. Nella politica di fiducia del ruolo, l'amministratore specifica che solo le EC2 istanze Amazon possono assumere il ruolo. Nella policy di autorizzazione del ruolo l'amministratore specifica autorizzazioni di sola lettura per il bucket amzn-s3-demo-bucket-photos.

  2. Uno sviluppatore avvia un'EC2istanza Amazon e assegna il Get-pics ruolo a tale istanza.

    Nota

    Se utilizzi la IAM console, il profilo dell'istanza viene gestito automaticamente ed è per lo più trasparente per te. Tuttavia, se si utilizza il AWS CLI oppure API per creare e gestire il ruolo e l'EC2istanza Amazon, devi creare il profilo dell'istanza e assegnargli il ruolo in fasi separate. Quindi, quando avvii l'istanza dovrai specificare il nome del profilo dell'istanza anziché il nome del ruolo.

  3. Quando l'applicazione viene eseguita, ottiene credenziali di sicurezza temporanee dai metadati delle EC2 istanze Amazon, come descritto in Recupero delle credenziali di sicurezza dai metadati delle istanze. Si tratta di credenziali di sicurezza provvisorie che rappresentano il ruolo e hanno un periodo di validità limitato.

    Con alcuni AWS SDKs, lo sviluppatore può utilizzare un provider che gestisce le credenziali di sicurezza temporanee in modo trasparente. (La documentazione per individui AWS SDKsdescrive le funzionalità supportate da quella SDK per la gestione delle credenziali.)

    In alternativa, l'applicazione può ottenere le credenziali temporanee direttamente dai metadati dell'istanza AmazonEC2. Le credenziali e i valori correlati sono disponibili nella categoria iam/security-credentials/role-name (in questo caso iam/security-credentials/Get-pics) dei metadati. Se l'applicazione ottiene le credenziali dai metadati dell'istanza, può memorizzarle nella cache.

  4. Grazie all'utilizzo delle credenziali provvisorie recuperate, l'applicazione può accedere al bucket delle foto. In virtù della policy collegata al ruolo Get-pics (Ottieni foto), l'applicazione dispone di autorizzazioni di sola lettura.

    Le credenziali di sicurezza temporanee disponibili nell'istanza vengono aggiornate automaticamente prima della scadenza, in modo da avere un set valido sempre disponibile. L'applicazione deve solo assicurarsi di ottenere un nuovo set di credenziali dai metadati dell'istanza prima della scadenza di quelle esistenti. È possibile utilizzare il AWS SDKper gestire le credenziali in modo che l'applicazione non debba includere logica aggiuntiva per aggiornare le credenziali. Ad esempio, creando istanze di client con provider di credenziali del profilo dell'istanza. Tuttavia, se l'applicazione ottiene le credenziali di sicurezza provvisorie dai metadati dell'istanza e le memorizza nella cache, è necessario fornire un set di credenziali aggiornato ogni ora o almeno 15 minuti prima della scadenza del set corrente. L'ora di scadenza è indicata nelle informazioni restituite nella categoria iam/security-credentials/role-name.

Autorizzazioni necessarie per l'utilizzo dei ruoli con Amazon EC2

Per avviare un'istanza con un ruolo, lo sviluppatore deve disporre dell'autorizzazione per avviare EC2 istanze Amazon e del permesso di trasferire IAM ruoli.

La seguente politica di esempio consente agli utenti di utilizzare AWS Management Console per avviare un'istanza con un ruolo. La policy include wildcards (*) per consentire a un utente di assegnare qualsiasi ruolo e di eseguire le EC2 azioni Amazon elencate. L'ListInstanceProfilesazione consente agli utenti di visualizzare tutti i ruoli disponibili in Account AWS.

Esempio di politica che concede a un utente l'autorizzazione a utilizzare la EC2 console Amazon per avviare un'istanza con qualsiasi ruolo
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } }, { "Sid": "ListEc2AndListInstanceProfiles", "Effect": "Allow", "Action": [ "iam:ListInstanceProfiles", "ec2:Describe*", "ec2:Search*", "ec2:Get*" ], "Resource": "*" } ] }

Limitazione dei ruoli che possono essere passati alle EC2 istanze Amazon (utilizzando) PassRole

Puoi utilizzare l'PassRoleautorizzazione per limitare il ruolo che un utente può passare a un'EC2istanza Amazon quando l'utente avvia l'istanza. In questo modo si impedisce all'utente di eseguire le applicazioni che dispongono di più autorizzazioni rispetto a quelle concesse all'utente (ovvero di ottenere privilegi elevati). Ad esempio, immagina che l'utente Alice disponga delle autorizzazioni solo per avviare EC2 istanze Amazon e lavorare con i bucket Amazon S3, ma il ruolo che trasferisce a un'istanza Amazon prevede le autorizzazioni per lavorare con EC2 Amazon DynamoDB. IAM In tal caso, Alice potrebbe essere in grado di avviare l'istanza, accedervi, ottenere credenziali di sicurezza temporanee e quindi eseguire IAM azioni DynamoDB per le quali non è autorizzata.

Per limitare i ruoli che un utente può passare a un'EC2istanza Amazon, crei una policy che consenta l'PassRoleazione. Quindi alleghi la policy all'utente (o a un IAM gruppo a cui appartiene l'utente) che avvierà EC2 le istanze Amazon. Nell'Resourceelemento della policy, elenchi il ruolo o i ruoli che l'utente può trasferire alle EC2 istanze Amazon. Quando l'utente avvia un'istanza e le associa un ruolo, Amazon EC2 verifica se l'utente è autorizzato a passare quel ruolo. Ovviamente, devi anche accertarti che il ruolo passato dall'utente non includa un numero di autorizzazioni maggiore di quello consentito all'utente.

Nota

PassRolenon è un'APIazione nello stesso modo in cui RunInstances o ListInstanceProfiles lo è. Si tratta invece di un'autorizzazione che AWS controlla ogni volta che un ruolo ARN viene passato come parametro a un API (o la console lo fa per conto dell'utente). In questo modo, un amministratore ha la possibilità di controllare quali ruoli possono essere passati dai vari utenti. In questo caso, garantisce che all'utente sia consentito assegnare un ruolo specifico a un'EC2istanza Amazon.

Esempio di politica che concede a un utente l'autorizzazione per avviare un'EC2istanza Amazon con un ruolo specifico

La seguente policy di esempio consente agli utenti di utilizzare Amazon EC2 API per avviare un'istanza con un ruolo. L'Resourceelemento specifica l'Amazon Resource Name (ARN) di un ruolo. Specificando ilARN, la policy concede all'utente il permesso di assegnare solo il ruolo. Get-pics Se, all'avvio di un'istanza, l'utente cerca di specificare un ruolo diverso, l'operazione ha esito negativo. L'utente non è autorizzato a eseguire alcuna istanza, indipendentemente dal passaggio di un ruolo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/Get-pics" } ] }

Consentire a un ruolo del profilo dell'istanza di passare a un ruolo in un altro account

Puoi consentire a un'applicazione in esecuzione su un'EC2istanza Amazon di eseguire comandi in un altro account. A tale scopo, devi consentire al ruolo dell'EC2istanza Amazon nel primo account di passare a un ruolo nel secondo account.

Immagina di usarne due Account AWS e vuoi consentire l'esecuzione di un'applicazione in esecuzione su un'EC2istanza Amazon AWS CLIcomandi in entrambi gli account. Supponiamo che l'EC2istanza Amazon esista nell'account111111111111. Tale istanza include il ruolo del profilo dell'istanza abcd che consente all'applicazione di eseguire attività Amazon S3 di sola lettura nel bucket amzn-s3-demo-bucket1 all'interno dello stesso account 111111111111. Tuttavia, l'applicazione deve anche poter assumere il ruolo tra account efgh per accedere al bucket amzn-s3-demo-bucket2 di Amazon S3 nell'account 222222222222.

Il diagramma mostra come uno sviluppatore avvia un'EC2istanza Amazon con il ruolo di accedere alle foto in un bucket Amazon S3.

Il ruolo del profilo dell'EC2istanza abcd Amazon deve avere la seguente politica di autorizzazioni per consentire all'applicazione di accedere al bucket amzn-s3-demo-bucket1 Amazon S3:

Policy di autorizzazioni del ruolo abcd 111111111111 dell'account

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "AllowIPToAssumeCrossAccountRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/efgh" } ] }

Il abcd ruolo deve affidarsi al EC2 servizio Amazon per assumere il ruolo. A tale scopo, il ruolo abcd deve disporre della seguente policy di attendibilità:

Policy di attendibilità del ruolo abcd dell'account 111111111111

{ "Version": "2012-10-17", "Statement": [ { "Sid": "abcdTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"Service": "ec2.amazonaws.com"} } ] }

Supponiamo che il ruolo tra account efgh consenta attività Amazon S3 di sola lettura nel bucket amzn-s3-demo-bucket2 all'interno dello stesso account 222222222222. A tale scopo, il ruolo tra account efgh deve disporre della seguente policy di autorizzazioni:

Policy di autorizzazioni del ruolo efgh 222222222222 dell'account

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket2/*", "arn:aws:s3:::amzn-s3-demo-bucket2" ] } ] }

Il ruolo efgh deve consentire al ruolo del profilo dell'istanza abcd di assumerlo. A tale scopo, il ruolo efgh deve disporre della seguente policy di attendibilità:

Policy di attendibilità del ruolo efgh dell'account 222222222222

{ "Version": "2012-10-17", "Statement": [ { "Sid": "efghTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"} } ] }

Come si inizia?

Per capire come funzionano i ruoli con EC2 le istanze Amazon, devi utilizzare la IAM console per creare un ruolo, avviare un'EC2istanza Amazon che utilizza quel ruolo e quindi esaminare l'istanza in esecuzione. Puoi prendere in esame i metadati dell'istanza per consultare in che modo le credenziali provvisorie del ruolo vengano rese disponibili a un'istanza. Potrai anche consultare il modo in cui un'applicazione eseguita in un'istanza può utilizzare tale ruolo. Per ottenere ulteriori informazioni, usare le risorse indicate di seguito.

Per ulteriori informazioni sulla creazione di ruoli o ruoli per EC2 le istanze Amazon, consulta le seguenti informazioni: