Come posso utilizzare i tag dei criteri IAM per limitare le modalità di creazione di un'istanza EC2 o di un volume EBS?
Voglio consentire agli utenti o ai gruppi di AWS Identity and Access Management (IAM) di lanciare nuove istanze Amazon Elastic Compute Cloud (Amazon EC2). Voglio anche consentire agli utenti IAM di creare nuovi volumi Amazon Elastic Block Store (Amazon EBS), ma solo se applicano tag specifici.
Breve descrizione
Specifica i tag per le istanze EC2 e i volumi EBS come parte della chiamata API che crea le risorse. Utilizzando questo principio, puoi richiedere agli utenti IAM di taggare le risorse specifiche applicando condizioni alla propria policy IAM. Le seguenti policy di esempio non consentono agli utenti di creare gruppi di sicurezza o coppie di chiavi, pertanto gli utenti devono selezionare quelli preesistenti.
Il seguente esempio di policy IAM consente agli utenti di:
- Avviare istanze EC2 con chiavi e valori di tag corrispondenti
- Avviare istanze EC2 con almeno un tag e un valore corrispondenti
- Avviare istanze EC2 con almeno una chiave di tag corrispondente
- Avviare istanze EC2 che dispongono solo dell'elenco di tag specificato
Risoluzione
Avviare istanze EC2 con chiavi e valori di tag corrispondenti
La seguente policy di esempio consente a un utente di avviare un'istanza EC2 e creare un volume EBS solo se applica tutti i tag definiti nella policy utilizzando il qualificatore ForAllValues. Se l'utente applica un tag che non è incluso nella policy, l'azione viene negata. Per applicare la distinzione tra maiuscole e minuscole, utilizza la condizione aws:TagKeys.
Nota: Modifica key1 e value1 nelle policy di esempio per includere i tag e i valori che si applicano alle tue risorse:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDescribeAll", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "AllowRunInstances", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/*", "arn:aws:ec2:*::snapshot/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:key-pair/*" ] }, { "Sid": "AllowRunInstancesWithRestrictions", "Effect": "Allow", "Action": [ "ec2:CreateVolume", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "aws:RequestTag/key1": "value1", "aws:RequestTag/key2": "value2" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "key1", "key2" ] } } }, { "Sid": "AllowCreateTagsOnlyLaunching", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "ec2:CreateAction": [ "RunInstances", "CreateVolume" ] } } } ] }
Importante: Per avviare correttamente le istanze EC2, questa policy deve includere chiavi e valori di tag corrispondenti. Se le coppie chiave e valore non corrispondono, viene visualizzato l'errore "Launch Failed" o un messaggio di errore dell'API simile.
Risultati di esempio
Key/Value | Risultato |
key1/value1 e key2/value2 | consenti |
key1/value1 | nega |
key1/value2 | nega |
nessuna chiave e nessun valore | nega |
Avviare istanze EC2 con almeno un tag e un valore corrispondenti
Nell'esempio seguente, sostituisci il blocco di condizioni AllowRunInstancesWithRestrictions per consentire a un utente di avviare un'istanza EC2 e creare volumi EBS quando almeno una chiave di tag è denominata key1 e il suo valore è value1. È possibile aggiungere un numero qualsiasi di tag aggiuntivi nella richiesta RunInstances:
"Condition": { "StringEquals": { "aws:RequestTag/key1": "value1" }, "ForAnyValue:StringEquals": { "aws:TagKeys": [ "key1" ] } }
Risultati di esempio
Key/Value | Risultato |
key1/value1 e key2/value2 | consenti |
key1/value1 | consenti |
key1/value2 | nega |
nessuna chiave e nessun valore | nega |
Avviare istanze EC2 con almeno una chiave di tag corrispondente
Nel seguente esempio di policy, sostituisci il blocco di condizioni AllowRunInstancesWithRestrictions per consentire a un utente di avviare un'istanza EC2 e creare volumi EBS quando almeno una chiave di tag è denominata key1. Non è richiesto alcun valore specifico per il tag key1 e nella richiesta RunInstances è possibile aggiungere un numero qualsiasi di tag aggiuntivi.
"Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": [ "key1" ] } }
Risultati di esempio
Key/Value | Risultato |
key1/value1 e key2/value2 | consenti |
key1/value1 | consenti |
key1/value2 | consenti |
nessuna chiave e nessun valore | nega |
Avviare istanze EC2 che dispongono solo dell'elenco di tag specificato
Nel seguente esempio di policy, sostituisci il blocco di condizioni AllowRunInstancesWithRestrictions per consentire a un utente di avviare un'istanza EC2 e creare volumi EBS solo quando nella richiesta sono fornite le chiavi di tag key1 e key2. Non è richiesto alcun valore specifico per nessuna delle chiavi di tag e non è possibile aggiungere ulteriori tag nella richiesta RunInstances:
"Condition": { "StringLike": { "aws:RequestTag/key1": "*", "aws:RequestTag/key2": "*" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "key1", "key2" ] } }
Nota: La condizione StringLike è obbligatoria per assicurarsi che tutti i tag siano presenti.
Risultati di esempio
Key/Value | Risultato |
key1/AnyValue e key2/AnyValue | Consenti |
key1/AnyValue | Nega |
key2/AnyValue | Nega |
Nessuna chiave o valore | Nega |
key1/AnyValue, key2/AnyValue, key3/AnyValue | Nega |
Informazioni correlate
How do I create an IAM policy to control access to Amazon EC2 resources using tags?
Creazione di una condizione con più chiavi o valori
Esempi di policy basate su identità IAM
Contenuto pertinente
- AWS UFFICIALEAggiornata 3 mesi fa
- AWS UFFICIALEAggiornata 3 anni fa