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à.
Esempi di politiche per controllare l'accesso all' EC2 API Amazon
Puoi utilizzare le policy IAM per concedere agli utenti le autorizzazioni necessarie per lavorare con Amazon EC2. Per step-by-step istruzioni, consulta Creazione di politiche IAM nella Guida per l'utente IAM.
Gli esempi seguenti mostrano le politiche che puoi utilizzare per concedere agli utenti le autorizzazioni per utilizzare Amazon EC2. Queste politiche sono progettate per le richieste effettuate utilizzando AWS CLI o un AWS SDK. Negli esempi seguenti, sostituisci ciascuno di essi user input placeholder
con le tue informazioni.
Ad esempio, le politiche per lavorare nella EC2 console Amazon, vediEsempi di politiche per controllare l'accesso alla EC2 console Amazon.
Esempio: accesso in sola lettura
La seguente politica concede agli utenti le autorizzazioni per utilizzare tutte le azioni dell' EC2 API Amazon 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 su quali azioni dell' EC2 API Amazon ARNs puoi utilizzare, consulta Azioni, 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 seguente politica nega agli utenti l'autorizzazione a utilizzare tutte le azioni delle EC2 API Amazon a meno che la regione non sia Europa (Francoforte). Utilizza la chiave di condizione globaleaws:RequestedRegion
, supportata da tutte le azioni EC2 dell'API Amazon.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": "eu-central-1" } } } ] }
In alternativa, puoi utilizzare la chiave di condizioneec2:Region
, che è specifica di Amazon EC2 ed è supportata da tutte le azioni EC2 API di Amazon.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:*", "Resource": "*", "Condition": { "StringNotEquals": { "ec2:Region": "eu-central-1" } } } ] }
Utilizzo delle istanze
Esempi
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 su quali azioni dell' EC2 API Amazon ARNs puoi utilizzare, consulta Azioni, 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 su quali azioni dell' EC2 API Amazon ARNs puoi utilizzare, consulta Azioni, 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 da loro ARNs nell'Resource
elemento.
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 dove 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. RunInstances
richiede 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, l'utente deve disporre delle autorizzazioni per utilizzare queste EC2 risorse Amazon. 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 risorsa necessarie per avviare un'istanza, consulta Azioni, 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.
Risorse
AMIs
La seguente politica consente agli utenti di avviare istanze utilizzando solo le istanze specificate, e. AMIs ami-9e1670f7
ami-45cf5c3c
Gli utenti non possono avviare un'istanza utilizzando altre istanze AMIs (a meno che un'altra istruzione non conceda agli utenti l'autorizzazione a farlo).
{ "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 seguente politica consente agli utenti di avviare istanze da tutte AMIs di proprietà di Amazon o da determinati partner affidabili e verificati. L'elemento Condition
della prima istruzione verifica se ec2:Owner
è amazon
. Gli utenti non possono avviare un'istanza utilizzando altre istanze AMIs (a meno che un'altra dichiarazione non conceda agli utenti l'autorizzazione a farlo).
{ "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-
specificata. Il gruppo non può avviare le istanze in altre sottoreti (a meno che un'altra istruzione non conceda agli utenti l'autorizzazione corrispondente).12345678
{ "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-
. Questa negazione sostituisce le altre policy create per consentire l'avvio delle istanze in altre sottoreti.12345678
{ "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 Concedi l'autorizzazione a taggare EC2 le risorse Amazon 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" } } } ] }
Elastico GPUs
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.medium
o eg1.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 ec2:IsLaunchTemplateResource
condition per impedire agli utenti di sovrascrivere qualsiasi elemento preesistente ARNs nel modello di lancio.
{ "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' RunInstancesistruzione.
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'Resource
elenco 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 di istanza Spot non è contrassegnata in fase di 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 RunInstances di 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' RunInstances istruzione. Pertanto, devi consentire esplicitamente alla spot-instances-request
risorsa di eseguire l' RunInstances azione, altrimenti la chiamata fallirà.
{ "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 di 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 environment=production
1 genera un Unauthenticated
errore, perché se un utente tagga una richiesta di istanza Spot, Amazon EC2 valuta la spot-instances-request
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ò taggare nessun altro tipo di risorsa.
{ "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: consenti 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 globale 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.
{ "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-
). Gli utenti non possono utilizzare altri modelli di lancio.09477bcd97b0d3abc
{ "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 seguenti politiche garantiscono che gli utenti possano recuperare i metadati dell'istanza solo utilizzando Instance Metadata Service Version 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 utilizzate i gruppi Auto Scaling e dovete richiederne l'uso IMDSv2 su tutte le nuove istanze, i gruppi Auto Scaling devono utilizzare 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 all'uso di IMDSv1 on IAM principal for RunInstances
vengono verificate solo quando viene creato o aggiornato un gruppo di 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 imporre l'uso di IMDSv2 sulle istanze lanciate dai gruppi di Auto Scaling, sono necessari i seguenti passaggi aggiuntivi:
-
Disabilita l'uso delle configurazioni di avvio per tutti gli account dell'organizzazione utilizzando le policy di controllo del servizio (SCPs) o i limiti delle autorizzazioni IAM per i nuovi principali che vengono 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 comenull
. -
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.
-
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 ilVersion
parametro. -
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 Migrare i gruppi di Auto Scaling per lanciare modelli nella Amazon Auto EC2 Scaling User Guide.
-
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 update-auto-scaling-group
.
Esempi
Richiesta dell'uso di IMDSv2
La seguente politica specifica che non puoi 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 specifichi che l'istanza richiede IMDSv2, viene visualizzato un UnauthorizedOperation
errore quando chiami l' RunInstances API.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
Negare la disattivazione di IMDSv2
La seguente politica specifica che non è possibile chiamare l'ModifyInstanceMetadataOptions
API e consentire l'opzione di o. IMDSv1 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" } } } ] }
Richiedi che le credenziali del ruolo vengano recuperate da IMDSv2
La seguente politica specifica che se questa politica viene applicata a un ruolo e il ruolo viene assunto dal EC2 servizio e le credenziali risultanti vengono utilizzate per firmare una richiesta, la richiesta deve essere firmata con le credenziali di EC2 ruolo recuperate da. IMDSv2 In caso contrario, per tutte le relative chiamate all'API si verifica un errore UnauthorizedOperation
. Questa dichiarazione/politica può essere applicata in generale perché, se la richiesta non è firmata dalle credenziali del EC2 ruolo, 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 Amazon EBS
Per esempi sulle politiche per l'utilizzo di volumi e snapshot di Amazon EBS, consulta Esempi di policy basate sull'identità per Amazon EBS.