Usa un ruolo IAM 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 ruolo IAM per concedere le autorizzazioni alle applicazioni in esecuzione su istanze Amazon EC2

Le applicazioni eseguite su un' EC2 istanza Amazon devono includere AWS credenziali nelle richieste AWS API. Potresti chiedere ai tuoi sviluppatori di archiviare AWS le credenziali direttamente all'interno dell' EC2istanza Amazon e consentire 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 ruolo IAM per gestire le credenziali temporanee per le applicazioni eseguite su un' EC2 istanza 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 altre risorse. AWS Quando avvii un' EC2istanza Amazon, specifichi un ruolo IAM da associare all'istanza. Le applicazioni eseguite nell'istanza possono quindi utilizzare le credenziali provvisorie 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' EC2 istanza Amazon viene astratta AWS dal sistema operativo virtualizzato. A causa di questa ulteriore separazione, è necessario un passaggio aggiuntivo per assegnare un AWS ruolo e le relative autorizzazioni a un' EC2 istanza 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. Le credenziali provvisorie possono essere utilizzate nelle chiamate dell'API dell'applicazione per accedere alle risorse e limitare l'accesso alle sole risorse specificate dal ruolo.

Nota

È possibile assegnare un solo ruolo alla volta a un' EC2 istanza 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 attività di Amazon ECS che possono essere distinti dal ruolo dell' EC2 istanza 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 la pagina Utilizzo dei ruoli IAM con le attività Amazon ECS nella Guida alle best practice per Amazon Elastic Container Service.

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' EC2 istanza Amazon al momento del lancio, un ruolo può essere associato anche a un' EC2 istanza Amazon attualmente in esecuzione. Per scoprire come associare un ruolo a un'istanza in esecuzione, consulta IAM Roles for Amazon EC2.

Come funzionano i ruoli per EC2 le istanze Amazon?

Nella figura seguente, uno sviluppatore esegue un'applicazione su un' EC2 istanza 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' EC2 istanza 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' EC2 istanza 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' EC2 istanza Amazon che accede a una AWS risorsa
  1. L'amministratore utilizza IAM per creare il ruolo Get-pics. 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' EC2 istanza Amazon e assegna il Get-pics ruolo a tale istanza.

    Nota

    Se utilizzi la console IAM, il profilo dell'istanza viene gestito in automatico, con un processo quasi completamente trasparente. Tuttavia, se utilizzi l'API AWS CLI or per creare e gestire il ruolo e l' EC2 istanza Amazon, devi creare il profilo dell'istanza e assegnargli il ruolo in passaggi separati. 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 singoli utenti AWS SDKs descrive le funzionalità supportate da tale SDK per la gestione delle credenziali.)

    In alternativa, l'applicazione può ottenere le credenziali temporanee direttamente dai metadati dell'istanza Amazon EC2 . 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 l' AWS SDK per 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 avere l'autorizzazione per avviare EC2 istanze Amazon e il permesso di passare ruoli IAM.

La seguente policy 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'operazione ListInstanceProfiles consente agli utenti di visualizzare tutti i ruoli disponibili nell' 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
JSON
{ "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' EC2 istanza 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 abbia le autorizzazioni per funzionare con IAM e EC2 Amazon DynamoDB. In questo caso, Alice potrebbe essere in grado di avviare l'istanza, accedere a essa, ottenere credenziali di sicurezza temporanee e quindi eseguire operazioni IAM o DynamoDB per cui non dispone dell'autorizzazione.

Per limitare i ruoli che un utente può passare a un' EC2 istanza Amazon, crei una policy che consenta l'PassRoleazione. Quindi alleghi la policy all'utente (o a un gruppo IAM a cui appartiene l'utente) che lancerà 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

PassRole non è un'operazione API pari a RunInstances o ListInstanceProfiles. Si tratta invece di un'autorizzazione che AWS verifica ogni volta che l'ARN di un ruolo 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' EC2 istanza Amazon.

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

La seguente policy di esempio consente agli utenti di utilizzare l' EC2 API Amazon per avviare un'istanza con un ruolo. L'elemento Resource specifica l'Amazon Resource Name (ARN) di un ruolo. Specificando l'ARN, la policy concede all'utente l'autorizzazione di passare 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.

JSON
{ "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' EC2 istanza Amazon di eseguire comandi in un altro account. A tale scopo, devi consentire al ruolo dell' EC2 istanza Amazon nel primo account di passare a un ruolo nel secondo account.

Immagina di usarne due Account AWS e di voler consentire a un'applicazione in esecuzione su un' EC2 istanza Amazon di eseguire AWS CLIcomandi in entrambi gli account. Supponiamo che l' EC2 istanza 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' EC2 istanza Amazon con il ruolo di accedere alle foto in un bucket Amazon S3.

Il ruolo del profilo dell' EC2 istanza 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

JSON
{ "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

JSON
{ "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

JSON
{ "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

JSON
{ "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 console IAM per creare un ruolo, avviare un' EC2 istanza 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: