Politiche di esempio per lavorare con AWS CLI o con un AWS SDK - Amazon Elastic Compute Cloud

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

Politiche di esempio per lavorare con AWS CLI o con un AWS SDK

Devi concedere agli utenti le autorizzazioni necessarie per Amazon EC2 utilizzando le policy IAM. I seguenti esempi mostrano le dichiarazioni di policy che è possibile utilizzare per controllare le autorizzazioni degli utenti per Amazon EC2. Queste politiche sono progettate per le richieste effettuate con AWS CLI o con un AWS SDK. Per ulteriori informazioni, consulta Creazione di policy IAM nella Guida per l'utente IAM. Per le policy di esempio da utilizzare nella console Amazon EC2, consultare Policy di esempio da utilizzare nella console Amazon EC2. Per esempi di policy IAM specifiche per Amazon VPC, consultare Identity and Access Management per Amazon VPC.

Negli esempi seguenti, sostituire ogni segnaposto dell'input utente con le proprie informazioni.

Esempio: accesso in sola lettura

La policy seguente concede agli utenti le autorizzazioni per utilizzare tutte le operazioni dell'API Amazon EC2 i cui nomi iniziano con Describe. L'elemento Resource utilizza un carattere jolly per indicare che tutti gli utenti possono specificare tutte le risorse con queste operazioni dell'API. ‎Il carattere jolly * è necessario inoltre nei casi in cui l'operazione dell'API non supporta le autorizzazioni a livello di risorsa. Per ulteriori informazioni sugli ARN che è possibile utilizzare con le operazioni API Amazon EC2, consulta Operazioni, risorse e chiavi di condizione per Amazon EC2.

Per impostazione predefinita, agli utenti non viene concessa l'autorizzazione per eseguire le operazioni dell'API sulle risorse (a meno che un'altra istruzione non conceda loro l'autorizzazione corrispondente).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" } ] }

Esempio: limitazione dell'accesso a una regione specifica

La policy seguente nega agli utenti le autorizzazioni per utilizzare tutte le operazioni dell'API Amazon EC2, a meno che la regione sia Europa (Francoforte). Utilizza la chiave di condizione globale aws:RequestedRegion, che è supportato da tutte le operazioni API di Amazon EC2.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": "eu-central-1" } } } ] }

In alternativa, è possibile utilizzare la chiave di condizione ec2:Region, specifica per Amazon EC2 ed è supportata da tutte le operazioni API di Amazon EC2.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "ec2:Region": "eu-central-1" } } } ] }

Utilizzo delle istanze

Esempio: descrizione, avvio, arresto e terminazione di tutte le istanze

La policy seguente concede agli utenti le autorizzazioni per utilizzare le operazioni dell'API specificate nell'elemento Action. L'elemento Resource utilizza un carattere jolly * per indicare che tutti gli utenti possono specificare tutte le risorse con queste operazioni dell'API. ‎Il carattere jolly * è necessario inoltre nei casi in cui l'operazione dell'API non supporta le autorizzazioni a livello di risorsa. Per ulteriori informazioni sugli ARN che è possibile utilizzare con le operazioni API Amazon EC2, consulta Operazioni, risorse e chiavi di condizione per Amazon EC2.

Gli utenti non dispongono dell'autorizzazione per utilizzare altre operazioni dell'API (a meno che un'altra istruzione non conceda loro l'autorizzazione corrispondente) perché, per impostazione predefinita, agli utenti non viene concessa l'autorizzazione per utilizzare le operazioni dell'API.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeAvailabilityZones", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:StopInstances", "ec2:StartInstances" ], "Resource": "*" } ] }

Esempio: descrizione di tutte le istanze e arresto, avvio e terminazione soltanto di determinate istanze

La policy seguente consente agli utenti di descrivere tutte le istanze, di avviare e arrestare soltanto le istanze i-1234567890abcdef0 e i-0598c7d356eba48d7 e di terminare soltanto le istanze in della regione Stati Uniti orientali (Virginia settentrionale), (us-east-1) con il tag di risorsa "purpose=test".

La prima istruzione utilizza il carattere jolly * per l'elemento Resource per indicare che gli utenti possono specificare tutte le risorse con questa operazione; in questo caso, possono elencare tutte le istanze. ‎Il carattere jolly * è necessario inoltre nei casi in cui l'operazione dell'API non supporta le autorizzazioni a livello di risorsa (in questo caso, ec2:DescribeInstances). Per ulteriori informazioni sugli ARN che è possibile utilizzare con le operazioni API Amazon EC2, consulta Operazioni, risorse e chiavi di condizione per Amazon EC2.

La seconda istruzione utilizza le autorizzazioni a livello di risorsa per le operazioni StopInstances e StartInstances. Le istanze specifiche sono indicate dai relativi ARN nell'elemento Resource.

La terza istruzione consente agli utenti di chiudere tutte le istanze nella regione Stati Uniti orientali (Virginia settentrionale) (us-east-1) che appartengono all' AWS account specificato, ma solo se l'istanza ha il tag. "purpose=test" L'elemento Condition qualifica l'istruzione della policy applicata.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:StopInstances", "ec2:StartInstances" ], "Resource": [ "arn:aws:ec2:us-east-1:account-id:instance/i-1234567890abcdef0", "arn:aws:ec2:us-east-1:account-id:instance/i-0598c7d356eba48d7" ] }, { "Effect": "Allow", "Action": "ec2:TerminateInstances", "Resource": "arn:aws:ec2:us-east-1:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } } } ] }

Avvia istanze () RunInstances

L'azione RunInstancesAPI avvia una o più istanze On-Demand o una o più istanze Spot. RunInstancesrichiede un AMI e crea un'istanza. Gli utenti possono specificare nella richiesta una coppia di chiavi e un gruppo di sicurezza. L'avvio in un VPC richiede una sottorete e crea un'interfaccia di rete. L'avvio da un'AMI Amazon EBS-backed implica la creazione di un volume. Pertanto, gli utenti devono disporre delle autorizzazioni per utilizzare queste risorse Amazon EC2. Puoi creare un'istruzione della policy che richiede agli utenti di specificare un parametro facoltativo su RunInstances o limitare l'accesso degli utenti a determinati valori dei parametri.

Per ulteriori informazioni sulle autorizzazioni a livello di risorse richieste per avviare un'istanza, consulta Operazioni, risorse e chiavi di condizione per Amazon EC2.

Per impostazione predefinita, gli utenti non dispongono delle autorizzazioni per descrivere, avviare, arrestare o terminare le istanze risultanti. Un modo per concedere agli utenti l'autorizzazione per gestire le istanze risultanti, consiste nel creare un tag specifico per ciascuna istanza e nel creare quindi un'istruzione che consenta loro di gestire le istanze con tale tag. Per ulteriori informazioni, consulta Utilizzo delle istanze.

AMI

La policy seguente consente gli utenti di avviare le istanze soltanto tramite le AMI specificate, ami-9e1670f7 e ami-45cf5c3c. Gli utenti non possono avviare un'istanza con altre AMI (a meno che un'altra istruzione non conceda loro l'autorizzazione corrispondente).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-9e1670f7", "arn:aws:ec2:region::image/ami-45cf5c3c", "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:security-group/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*" ] } ] }

In alternativa, la policy seguente consente agli utenti di avviare le istanze da tutte le AMI di proprietà di Amazon o di determinati partner sicuri e verificati. L'elemento Condition della prima istruzione verifica se ec2:Owner è amazon. Gli utenti non possono avviare un'istanza con altre AMI (a meno che un'altra istruzione non conceda loro l'autorizzazione corrispondente).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*" ], "Condition": { "StringEquals": { "ec2:Owner": "amazon" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

Tipi di istanza

La policy seguente consente agli utenti di avviare le istanze soltanto tramite il tipo di istanza t2.micro o t2.small per consentire di tenere sotto controllo i costi. Gli utenti non possono avviare istanze di dimensioni maggiori perché l'elemento Condition della prima istruzione verifica se ec2:InstanceType è t2.micro o t2.small.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "StringEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

In alternativa, puoi creare una policy che nega agli utenti le autorizzazioni per avviare le istanze a eccezione dei tipi di istanza t2.micro e t2.small.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "StringNotEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

Sottoreti

La policy seguente consente agli utenti di avviare le istanze soltanto tramite la sottorete subnet-12345678 specificata. Il gruppo non può avviare le istanze in altre sottoreti (a meno che un'altra istruzione non conceda agli utenti l'autorizzazione corrispondente).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:subnet/subnet-12345678", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

In alternativa, puoi creare una policy che rifiuti agli utenti le autorizzazioni per avviare le istanze nelle altre sottoreti. Questa istruzione rifiuta l'autorizzazione per la creazione di un'interfaccia di rete, tranne se viene specificata la sottorete subnet-12345678. Questa negazione sostituisce le altre policy create per consentire l'avvio delle istanze in altre sottoreti.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*" ], "Condition": { "ArnNotEquals": { "ec2:Subnet": "arn:aws:ec2:region:account-id:subnet/subnet-12345678" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

Volumi EBS

La policy seguente consente agli utenti di avviare le istanze soltanto se i volumi EBS dell'istanza sono crittografati. Per assicurarsi che il volume root sia crittografato, gli utenti devono avviare un'istanza da un'AMI creata con snapshot crittografate. Anche gli altri eventuali volumi collegati dagli utenti all'istanza durante l'avvio devono essere crittografati.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Bool": { "ec2:Encrypted": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:security-group/*" ] } ] }

Tag

Tag di istanze durante la creazione

La policy seguente consente agli utenti di avviare le istanze e di aggiungervi dei tag durante la creazione. Per le operazioni di creazione delle risorse in cui vengono applicati i tag, gli utenti devono disporre delle autorizzazioni per utilizzare l'operazione CreateTags. La seconda istruzione utilizza la chiave di condizione ec2:CreateAction per consentire agli utenti di creare i tag soltanto nel contesto di RunInstances e soltanto per le istanze. Tramite la richiesta RunInstances, gli utenti non possono aggiungere tag alle risorse esistenti e ai volumi.

Per ulteriori informazioni, consulta Concessione dell'autorizzazione all'applicazione di tag per le risorse durante la creazione.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:account-id:instance/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

Tag di istanze e volumi durante la creazione con tag specifici

La policy seguente include la chiave di condizione aws:RequestTag che richiede agli utenti di applicare tag alle istanze e ai volumi creati da RunInstances con i tag environment=production e purpose=webserver. Se gli utenti non indicano questi tag specifici, o se non specificano nessun tag, la richiesta non riesce.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region::image/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/*", "arn:aws:ec2:region:account-id:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" , "aws:RequestTag/purpose": "webserver" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

Tag di istanze e volumi durante la creazione con almeno un tag specifico

La policy seguente utilizza il modificatore ForAnyValue sulla condizione aws:TagKeys per indicare che occorre specificare almeno un tag nella richiesta e che deve contenere la chiave environment o webserver. I tag devono essere applicati alle istanze e ai volumi. È possibile specificare nella richiesta qualsiasi valore di tag.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region::image/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/*", "arn:aws:ec2:region:account-id:key-pair/*" ] }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:instance/*" ], "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

Se vengono applicati tag alle istanze durante la creazione, è necessario applicare un tag specifico

Nella policy seguente non è necessario che gli utenti specifichino i tag nella richiesta, ma se lo fanno, i tag devono essere di tipo purpose=test. Non sono consentiti altri tag. Gli utenti possono applicare i tag alle risorse compatibili con l'applicazione dei tag nella richiesta RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "test", "ec2:CreateAction" : "RunInstances" }, "ForAllValues:StringEquals": { "aws:TagKeys": "purpose" } } } ] }

Per impedire a chiunque si chiami tag su create for RunInstances

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "VisualEditor0", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }

Consenti solo tag specifici per spot-instances-request. L'incoerenza numero 2 entra in gioco qui. In circostanze normali, se non si specifica alcun tag, il risultato è che non viene autenticato. Nel caso di spot-instances-request, questa politica non verrà valutata in assenza di spot-instances-request tag, pertanto una richiesta Spot on Run senza tag avrà esito positivo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", ] }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } } ] }

Tag in un modello di avvio

Nell'esempio seguente, gli utenti possono avviare le istanze, ma solo tramite un modello di avvio specifico (lt-09477bcd97b0d310e). La chiave di condizione ec2:IsLaunchTemplateResource impedisce agli utenti di sovrascrivere le risorse specificate nel modello di avvio. La seconda parte dell'istruzione consente agli utenti di assegnare tag alle istanze al momento della creazione; questa parte dell'istruzione è necessaria se sono stati specificati dei tag per l'istanza nel modello di avvio.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d310e" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

GPU elastiche

Nella policy seguente, gli utenti possono avviare un'istanza e specificare una GPU elastica da collegare all'istanza. Gli utenti possono avviare le istanze in qualsiasi regione, ma possono collegare una GPU elastica durante l'avvio soltanto nella regione us-east-2.

La chiave di condizione ec2:ElasticGpuType garantisce che le istanze utilizzino il tipo di GPU elastica eg1.mediumeg1.large.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:account-id:elastic-gpu/*" ], "Condition": { "StringEquals": { "ec2:Region": "us-east-2", "ec2:ElasticGpuType": [ "eg1.medium", "eg1.large" ] } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/ami-*", "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:instance/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:volume/*", "arn:aws:ec2:*:account-id:key-pair/*", "arn:aws:ec2:*:account-id:security-group/*" ] } ] }

Modelli di lancio

Nell'esempio seguente, gli utenti possono avviare le istanze, ma solo tramite un modello di avvio specifico (lt-09477bcd97b0d310e). Gli utenti possono sovrascrivere i parametri nel modello di avvio specificandolo nell'operazione RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d310e" } } } ] }

In questo esempio, gli utenti possono avviare le istanze solo se utilizzano un modello di avvio specifico. La policy utilizza la chiave di condizione ec2:IsLaunchTemplateResource per impedire agli utenti di sovrascrivere qualsiasi ARN preesistente del modello di avvio.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } } ] }

La policy di esempio seguente consente agli utenti di avviare le istanze, ma solo tramite un modello di avvio. Gli utenti non possono sovrascrivere i parametri di sottorete e interfaccia di rete della richiesta; tali parametri possono essere specificati soltanto nel modello di avvio. La prima parte dell'istruzione utilizza l'NotResourceelemento per consentire tutte le altre risorse tranne le sottoreti e le interfacce di rete. La seconda parte dell'istruzione consente le risorse di sottorete e interfaccia di rete, ma soltanto se provenienti dal modello di avvio.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": ["arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/*" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": ["arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:network-interface/*" ], "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } } ] }

L'esempio seguente consente agli utenti di avviare le istanze solo tramite un modello di avvio e solo se quest'ultimo dispone del tag Purpose=Webservers. Gli utenti non possono sovrascrivere nessuno dei parametri del modello di avvio nell'operazione RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "NotResource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:region:account-id:launch-template/*" }, "Bool": { "ec2:IsLaunchTemplateResource": "true" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Webservers" } } } ] }

Utilizzo delle Istanze spot

È possibile utilizzare l' RunInstances azione per creare richieste di istanze Spot e contrassegnare le richieste di istanze Spot al momento della creazione. La risorsa da specificare RunInstances èspot-instances-request.

La risorsa spot-instances-request viene valutata nella policy IAM come segue:

  • Se non tagghi una richiesta di istanza Spot al momento della creazione, Amazon EC2 non valuta la spot-instances-request risorsa nell' RunInstancesistruzione.

  • Se tagghi una richiesta di istanza Spot al momento della creazione, Amazon EC2 valuta la spot-instances-request risorsa nell'istruzione. RunInstances

Pertanto, per la risorsa spot-instances-request, alla policy IAM si applicano le seguenti regole:

  • Se utilizzi RunInstances per creare una richiesta di istanza Spot e non intendi taggare la richiesta di istanza Spot al momento della creazione, non è necessario consentire esplicitamente la spot-instances-request risorsa; la chiamata avrà esito positivo.

  • Se utilizzi RunInstances per creare una richiesta di istanza Spot e intendi taggare la richiesta di istanza Spot al momento della creazione, devi includere la spot-instances-request risorsa nell'istruzione RunInstances allow, altrimenti la chiamata avrà esito negativo.

  • Se utilizzi RunInstances per creare una richiesta di istanza Spot e intendi contrassegnare la richiesta di istanza Spot al momento della creazione, devi specificare la spot-instances-request risorsa o il * carattere jolly nell'istruzione CreateTags allow, altrimenti la chiamata avrà esito negativo.

Puoi richiedere istanze Spot utilizzando RunInstances o. RequestSpotInstances I seguenti esempi di policy IAM si applicano solo quando si richiedono istanze Spot utilizzando. RunInstances

Esempio: richiedi istanze Spot utilizzando RunInstances

La seguente politica consente agli utenti di richiedere istanze Spot utilizzando l'azione RunInstances . La spot-instances-request risorsa, creata da RunInstances, richiede istanze Spot.

Nota

Da utilizzare RunInstances per creare richieste di istanze Spot, puoi ometterle spot-instances-request dall'Resourceelenco se non intendi taggare le richieste di istanze Spot al momento della creazione. Questo perché Amazon EC2 non valuta la spot-instances-request risorsa nell' RunInstancesistruzione se la richiesta dell'istanza Spot non è contrassegnata al momento della creazione.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] } ] }
avvertimento

NON SUPPORTATO — Esempio: nega agli utenti l'autorizzazione a richiedere istanze Spot utilizzando RunInstances

La seguente policy non è supportata per la risorsa spot-instances-request.

La seguente policy intende concedere agli utenti l'autorizzazione per l'avvio di Istanze on demand, ma nega agli utenti l'autorizzazione a richiedere Istanze spot. La spot-instances-request risorsa, creata da RunInstances, è la risorsa che richiede le istanze Spot. La seconda affermazione ha lo scopo di negare l' RunInstances azione per la spot-instances-request risorsa. Tuttavia, questa condizione non è supportata perché Amazon EC2 non valuta la spot-instances-request risorsa nell' RunInstances istruzione se la richiesta dell'istanza Spot non è contrassegnata al momento della creazione.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*" ] }, { "Sid": "DenySpotInstancesRequests - NOT SUPPORTED - DO NOT USE!", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*" } ] }

Esempio: tag di richieste di istanze spot durante la creazione

La seguente policy consente agli utenti di applicare un tag a tutte le risorse create durante l'avvio dell'istanza. La prima istruzione consente di RunInstances creare le risorse elencate. La spot-instances-request risorsa, creata da RunInstances, è la risorsa che richiede le istanze Spot. La seconda istruzione include il carattere jolly * per consentire a tutte le risorse l'applicazione di tag quando vengono create all'avvio dell'istanza.

Nota

Se tagghi una richiesta di istanza Spot al momento della creazione, Amazon EC2 valuta la spot-instances-request risorsa nell'istruzione. RunInstances Pertanto, è necessario consentire esplicitamente alla spot-instances-request risorsa di eseguire l' RunInstances azione, altrimenti la chiamata avrà esito negativo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

Esempio: assegnazione di tag di diniego durante la creazione per richieste di istanze spot

La seguente policy nega agli utenti l'autorizzazione di applicare un tag alle risorse create durante l'avvio dell'istanza.

La prima istruzione consente di RunInstances creare le risorse elencate. La spot-instances-request risorsa, creata da RunInstances, è la risorsa che richiede le istanze Spot. La seconda istruzione include il carattere jolly * per negare a tutte le risorse l'applicazione di tag quando vengono create all'avvio dell'istanza. Se spot-instances-request o qualsiasi altra risorsa viene taggata in fase di creazione, la RunInstances chiamata avrà esito negativo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "DenyTagResources", "Effect": "Deny", "Action": "ec2:CreateTags", "Resource": "*" } ] }
avvertimento

NON SUPPORTATO - Esempio: autorizzazione per la creazione di una richiesta di istanza spot solo se è stato applicato un tag specifico

La seguente policy non è supportata per la risorsa spot-instances-request.

La seguente politica ha lo scopo di concedere RunInstances l'autorizzazione a creare una richiesta di istanza Spot solo se la richiesta è contrassegnata con un tag specifico.

La prima istruzione consente RunInstances di creare le risorse elencate.

La seconda istruzione intende concedere agli utenti l'autorizzazione a creare una richiesta di istanza spot solo se alla richiesta è applicato il tag environment=production. Se questa condizione viene applicata ad altre risorse create da RunInstances, l'indicazione di nessun tag genera un Unauthenticated errore. Tuttavia, se non viene specificato alcun tag per la richiesta dell'istanza Spot, Amazon EC2 non valuta la spot-instances-request risorsa nell' RunInstances istruzione, il che comporta la creazione di richieste di istanze Spot senza tag da. RunInstances

Tieni presente che specificare un altro tag diverso da 1 environment=production genera un Unauthenticated errore, perché se un utente tagga una richiesta di istanza Spot, Amazon EC2 valuta spot-instances-request la risorsa nell'istruzione. RunInstances

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*" ] }, { "Sid": "RequestSpotInstancesOnlyIfTagIs_environment=production - NOT SUPPORTED - DO NOT USE!", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

Esempio: diniego della creazione di una richiesta di istanza spot se ha un tag specifico applicato

La seguente politica nega RunInstances l'autorizzazione a creare una richiesta di istanza Spot se la richiesta è contrassegnata con. environment=production

La prima istruzione consente di RunInstances creare le risorse elencate.

La seconda istruzione nega agli utenti l'autorizzazione per creare una richiesta di istanza spot se la richiesta ha il tag environment=production. Se si specifica environment=production come tag, viene generato un errore Unauthenticated. Se si specificano altri tag o se non si specifica alcun tag, verrà creata una richiesta di istanza spot.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRun", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "DenySpotInstancesRequests", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } }, { "Sid": "TagResources", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }

Esempio: utilizzo delle Istanze riservate

La policy seguente fornisce agli utenti l'autorizzazione per visualizzare, modificare e acquistare le Istanze riservate nell'account.

Non è possibile impostare le autorizzazioni a livello di risorsa per singole Istanze riservate. Questa policy significa che gli utenti hanno accesso a tutte le Istanze riservate dell'account.

L'elemento Resource utilizza il carattere jolly * per indicare che gli utenti possono specificare tutte le risorse tramite questa operazione; in questo caso, possono elencare e modificare tutte le Istanze riservate nell'account. Possono inoltre acquistare le Istanze riservate con le credenziali dell'account. ‎Il carattere jolly * è necessario inoltre nei casi in cui l'operazione dell'API non supporta le autorizzazioni a livello di risorsa.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:PurchaseReservedInstancesOffering", "ec2:DescribeAvailabilityZones", "ec2:DescribeReservedInstancesOfferings" ], "Resource": "*" } ] }

Per consentire agli utenti di visualizzare e modificare le Istanze riservate nell'account, ma non di acquistare nuove Istanze riservate.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:DescribeAvailabilityZones" ], "Resource": "*" } ] }

Esempio: aggiunta di tag alle risorse

La policy seguente consente agli utenti di utilizzare l'operazione CreateTags per applicare tag a un'istanza soltanto se il tag contiene la chiave environment e il valore production. Non sono consentiti altri tag e l'utente non può aggiungere tag ad altri tipi di risorse.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "production" } } } ] }

La policy seguente consente agli utenti di assegnare tag a tutte le risorse compatibili con l'assegnazione di tag e che dispongono già di un tag con una chiave owner e un valore corrispondente al nome utente. Inoltre, gli utenti devono specificare nella richiesta un tag con la chiave anycompany:environment-type e un valore test o prod. Gli utenti possono specificare altri tag nella richiesta.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "aws:RequestTag/anycompany:environment-type": ["test","prod"], "aws:ResourceTag/owner": "${aws:username}" } } } ] }

Puoi creare una policy IAM che consenta agli utenti di eliminare tag specifici per una risorsa. Ad esempio, la policy seguente consente agli utenti di eliminare i tag di un volume se le chiavi di tag specificate nella richiesta sono environment o cost-center. È possibile specificare qualsiasi valore per il tag, ma la chiave di tag deve corrispondere a una delle chiavi specificate.

Nota

Se elimini una risorsa, verranno eliminati anche tutti i tag associati alla risorsa. Gli utenti non necessitano delle autorizzazioni per utilizzare l'operazione ec2:DeleteTags per eliminare una risorsa con tag; necessitano soltanto delle autorizzazioni per effettuare l'operazione di eliminazione.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DeleteTags", "Resource": "arn:aws:ec2:us-east-1:account-id:volume/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] } } } ] }

Questa policy consente agli utenti di eliminare soltanto il tag environment=prod su qualsiasi risorsa e soltanto se la risorsa dispone già di un tag con una chiave owner e di un valore corrispondente al nome utente. Gli utenti non possono eliminare nessun altro tag di una risorsa.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteTags" ], "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": "prod", "aws:ResourceTag/owner": "${aws:username}" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["environment"] } } } ] }

Esempio: utilizzo dei ruoli IAM

La policy seguente consente agli utenti di collegare, sostituire e scollegare un ruolo IAM dalle istanze che includono il tag department=test. Per la sostituzione o lo scollegamento di un ruolo IAM è necessario un ID di associazione, pertanto la policy concede agli utenti anche l'autorizzazione per utilizzare l'operazione ec2:DescribeIamInstanceProfileAssociations.

Per trasferire il ruolo all'istanza, gli utenti devono disporre dell'autorizzazione per utilizzare l'operazione iam:PassRole.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:DisassociateIamInstanceProfile" ], "Resource": "arn:aws:ec2:us-east-1:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/department":"test" } } }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/DevTeam*" } ] }

La policy seguente consente agli utenti di collegare o sostituire un ruolo IAM per qualsiasi istanza. Gli utenti possono collegare o sostituire soltanto i ruoli IAM il cui nome inizia con TestRole-. Per l'operazione iam:PassRole, assicurarsi di specificare il nome del ruolo IAM e non il profilo dell'istanza (se i nomi sono diversi). Per ulteriori informazioni, consulta Profili delle istanze.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DescribeIamInstanceProfileAssociations", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/TestRole-*" } ] }

Esempio: utilizzo delle tabelle di routing

La policy seguente consente agli utenti di aggiungere, rimuovere e sostituire gli instradamenti delle tabelle di routing associate soltanto al VPC vpc-ec43eb89. Per specificare un VPC per la chiave di condizione ec2:Vpc, devi specificare l'ARN completo del VPC.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteRoute", "ec2:CreateRoute", "ec2:ReplaceRoute" ], "Resource": [ "arn:aws:ec2:region:account-id:route-table/*" ], "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-ec43eb89" } } } ] }

Esempio: consentire a un'istanza specifica di visualizzare le risorse in altri AWS servizi

Di seguito è riportato un esempio di policy che è possibile collegare a un ruolo IAM. La policy consente a un'istanza di visualizzare le risorse in vari AWS servizi. Utilizza la chiave di condizione ec2:SourceInstanceARN per specificare che l'istanza da cui è stata creata la richiesta deve essere l'istanza i-093452212644b0dd6. Se lo stesso ruolo IAM è associato a un'altra istanza, l'altra istanza non può effettuare nessuna di queste operazioni.

La ec2:SourceInstanceARN chiave è una chiave di condizione AWS globale, quindi può essere utilizzata per altre azioni di servizio, non solo per Amazon EC2.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "s3:ListAllMyBuckets", "dynamodb:ListTables", "rds:DescribeDBInstances" ], "Resource": [ "*" ], "Condition": { "ArnEquals": { "ec2:SourceInstanceARN": "arn:aws:ec2:region:account-id:instance/i-093452212644b0dd6" } } } ] }

Esempio: utilizzo dei modelli di avvio

La policy seguente consente agli utenti di creare una versione del modello di avvio e di modificarne uno, ma solo nel caso di un modello di avvio specifico (lt-09477bcd97b0d3abc). Gli utenti non possono utilizzare altri modelli di lancio.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateLaunchTemplateVersion", "ec2:ModifyLaunchTemplate" ], "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d3abc" } ] }

La policy seguente consente agli utenti di eliminare i modelli di avvio e la relativa versione, purché il modello di avvio disponga del tag Purpose=Testing.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DeleteLaunchTemplate", "ec2:DeleteLaunchTemplateVersions" ], "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Testing" } } } ] }

Utilizzo dei metadati delle istanze

Le policy seguenti assicurano che gli utenti possano recuperare i metadati delle istanze solo utilizzando Servizio di metadati dell'istanza Versione 2 (IMDSv2). Puoi combinare le quattro policy seguenti in un'unica policy con quattro istruzioni. Se vengono combinate in un'unica policy, questa può essere utilizzata come policy di controllo dei servizi (SCP). Può funzionare altrettanto bene come policy deny applicata a una policy IAM esistente (togliendo e limitando le autorizzazioni esistenti) o come policy di controllo dei servizi (SCP) applicata a livello globale a un account, a un'unità organizzativa o a un'intera organizzazione.

Nota

Le seguenti politiche relative alle opzioni di RunInstances metadati devono essere utilizzate insieme a una politica che fornisca le autorizzazioni principali con cui avviare un'istanza. RunInstances Se il principale non dispone anche RunInstances delle autorizzazioni, non sarà in grado di avviare un'istanza. Per ulteriori informazioni, consulta le policy Utilizzo delle istanze e Avvia istanze () RunInstances.

Importante

Se si utilizzano gruppi Auto Scaling e si deve richiedere l'uso di IMDSv2 su tutte le nuove istanze, i gruppi Auto Scaling devono utilizzare i modelli di avvio.

Quando un gruppo Auto Scaling utilizza un modello di avvio, le ec2:RunInstances autorizzazioni del principal IAM vengono controllate quando viene creato un nuovo gruppo Auto Scaling. Vengono inoltre controllati quando un gruppo Auto Scaling esistente viene aggiornato per utilizzare un nuovo modello di avvio o una nuova versione di un modello di avvio.

Le restrizioni sull'uso di IMDSv1 su principal IAM per RunInstances vengono verificate solo quando viene creato o aggiornato un gruppo Auto Scaling che utilizza un modello di avvio. Per un gruppo Auto Scaling configurato per l'utilizzo del modello di avvio Latest o Default, le autorizzazioni non vengono controllate quando viene creata una nuova versione del modello di avvio. Per controllare le autorizzazioni, è necessario configurare il gruppo Auto Scaling in modo da utilizzare una versione specifica del modello di avvio.

Per applicare l'uso di IMDSv2 su istanze lanciate dai gruppi Auto Scaling, sono necessari i seguenti passaggi aggiuntivi:
  1. Disabilitare l'utilizzo delle configurazioni di avvio per tutti gli account dell'organizzazione utilizzando i limiti delle autorizzazioni IAM o le policy di controllo del servizio (SCP) per i nuovi principal creati. Per i principal IAM esistenti con autorizzazioni di gruppo Auto Scaling, aggiornare le policy associate con questa chiave di condizione. Per disabilitare l'utilizzo delle configurazioni di avvio, creare o modificare la policy IAM, il limite delle autorizzazioni o la relativa policy di controllo del servizio con la chiave di condizione "autoscaling:LaunchConfigurationName" con il valore specificato come null.

  2. Per i nuovi modelli di avvio, configurare le opzioni dei metadati dell'istanza nel modello di avvio. Per i modelli di avvio esistenti, creare una nuova versione del modello di avvio e configurare le opzioni dei metadati dell'istanza nella nuova versione.

  3. Nella policy che concede a qualsiasi principal l'autorizzazione per utilizzare un modello di avvio, limitare l'associazione di $latest e $default specificando "autoscaling:LaunchTemplateVersionSpecified": "true". Limitando l'utilizzo a una versione specifica di un modello di avvio, è possibile assicurarsi che vengano avviate nuove istanze utilizzando la versione in cui sono configurate le opzioni dei metadati dell'istanza. Per ulteriori informazioni, consulta il riferimento LaunchTemplateSpecificationall'API Amazon EC2 Auto Scaling, in particolare il parametro. Version

  4. Per un gruppo Auto Scaling che utilizza una configurazione di avvio, sostituire la configurazione di avvio con un modello di avvio. Per ulteriori informazioni, consulta Sostituzione di una configurazione di avvio con un modello di avvio nella Guida per l'utente di Amazon EC2 Auto Scaling.

  5. Per un gruppo Auto Scaling che utilizza un modello di avvio, assicurarsi che utilizzi un nuovo modello di avvio con le opzioni di metadati dell'istanza configurate oppure utilizzi una nuova versione del modello di avvio corrente con le opzioni dei metadati dell'istanza configurate. Per ulteriori informazioni, consulta la sezione update-auto-scaling-group nella Documentazione di riferimento dellaAWS CLI .

Richiesta dell'uso di IMDSv2

La seguente politica specifica che non è possibile chiamare l' RunInstances API a meno che l'istanza non abbia anche scelto di richiedere l'uso di IMDSv2 (indicato da). "ec2:MetadataHttpTokens": "required" Se non si specifica che l'istanza richiede IMDSv2, viene visualizzato un errore quando si chiama l'API. UnauthorizedOperation RunInstances

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }

Come negare l'esclusione da IMDSv2

La seguente policy specifica che non puoi chiamare l'API ModifyInstanceMetadataOptions e consentire l'opzione IMDSv1 o IMDSv2. Se chiami l'API ModifyInstanceMetadataOptions, l'attributo HttpTokens deve essere impostato su required.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyIMDSv1HttpTokensModification", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:Attribute/HttpTokens": "required" }, "Null": { "ec2:Attribute/HttpTokens": false } } }] }

Specificare limite massimo di hop

La seguente politica specifica che non è possibile chiamare l' RunInstances API a meno che non si specifichi anche un limite di hop e il limite di hop non può essere superiore a 3. Se non lo fai, ricevi un UnauthorizedOperation errore quando chiami l' RunInstances API.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "MaxImdsHopLimit", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "NumericGreaterThan": { "ec2:MetadataHttpPutResponseHopLimit": "3" } } } ] }

Limitazione di chi può modificare le opzioni dei metadati dell'istanza

Con la policy seguente, gli utenti con il ruolo ec2-imds-admins potranno apportare modifiche alle opzioni di metadati dell'istanza. Se un principale diverso dal ec2-imds-admins ruolo tenta di chiamare l' ModifyInstanceMetadataOptions API, riceverà un UnauthorizedOperation errore. Questa istruzione potrebbe essere utilizzata per controllare l'uso dell' ModifyInstanceMetadataOptions API; attualmente non esistono controlli di accesso (condizioni) dettagliati per l'API. ModifyInstanceMetadataOptions

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyImdsAdminsToModifySettings", "Effect": "Deny", "Action": "ec2:ModifyInstanceMetadataOptions", "Resource": "*", "Condition": { "StringNotLike": { "aws:PrincipalARN": "arn:aws:iam::*:role/ec2-imds-admins" } } } ] }

Richiesta delle credenziali del ruolo da recuperare da IMDSv2

La policy seguente specifica che se questa policy viene applicata a un ruolo e il ruolo viene assunto dal servizio EC2 e le credenziali risultanti vengono utilizzate per firmare una richiesta, la richiesta deve essere firmata dalle credenziali del ruolo EC2 recuperate da IMDSv2. In caso contrario, per tutte le relative chiamate all'API si verifica un errore UnauthorizedOperation. Questa istruzione/policy può essere applicata a livello generale perché, se la richiesta non è firmata dalle credenziali del ruolo EC2, non ha alcun effetto.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAllEc2RolesToUseV2", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NumericLessThan": { "ec2:RoleDelivery": "2.0" } } } ] }

Lavora con volumi e snapshot di Amazon EBS

Ad esempio, le politiche per l'utilizzo di volumi e snapshot di Amazon EBS, consulta Esempi di policy basate sull'identità per Amazon EBS.