Come posso creare una policy IAM per concedere esplicitamente le autorizzazioni per creare e gestire istanze EC2 in un VPC specificato con tag?
Desidero creare una policy AWS Identity and Access Management (IAM) che conceda esplicitamente le autorizzazioni alle identità IAM per gestire le istanze Amazon Elastic Compute Cloud (Amazon EC2) in un cloud privato virtuale (VPC).
Breve descrizione
La policy IAM deve limitare le autorizzazioni dell'identità IAM per gestire le istanze nel VPC con tag.
Amazon EC2 fornisce autorizzazioni parziali a livello di risorsa, ma è possibile avviare diverse azioni, risorse e condizioni a livello di servizio. Per controllare l'accesso alle risorse EC2, usa i tag delle risorse.
Soluzione
Crea una policy che conceda le autorizzazioni per avviare le istanze nel VPC ma limiti le autorizzazioni dell'identità IAM per la gestione delle istanze. Per limitare la gestione delle istanze, utilizza la condizione della policy EC2:ResourceTag.
Creazione di una policy gestita da collegare alle identità IAM che lanciano le istanze
Completa i seguenti passaggi:
-
Apri la console IAM, scegli Policy, quindi scegli Crea policy.
-
Scegli la scheda JSON, quindi inserisci la seguente policy personalizzata:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GrantIAMPassRoleOnlyForEC2", "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME", "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME" ], "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } }, { "Sid": "ReadOnlyEC2WithNonResource", "Action": [ "ec2:Describe*", "iam:ListInstanceProfiles" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "ModifyingEC2WithNonResource", "Action": [ "ec2:CreateKeyPair", "ec2:CreateSecurityGroup" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "RunInstancesWithTagRestrictions", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*" ], "Condition": { "StringEquals": { "aws:RequestTag/TAG-KEY": "TAG-VALUE" } } }, { "Sid": "RemainingRunInstancePermissionsNonResource", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:REGION::image/*", "arn:aws:ec2:REGION::snapshot/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER*:network-interface/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER*:key-pair/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER*:security-group/*" ] }, { "Sid": "EC2RunInstancesVpcSubnet", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:subnet/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:REGION:ACCOUNTNUMBER:vpc/VPC-ID" } } }, { "Sid": "EC2VpcNonResourceSpecificActions", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkAcl", "ec2:DeleteNetworkAclEntry", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:DeleteSecurityGroup", "ec2:CreateNetworkInterfacePermission", "ec2:CreateRoute", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:UpdateSecurityGroupRuleDescriptionsIngress" ], "Resource": "*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:REGION:ACCOUNTNUMBER:vpc/VPC-ID" } } }, { "Sid": "AllowInstanceActionsTagBased", "Effect": "Allow", "Action": [ "ec2:RebootInstances", "ec2:StopInstances", "ec2:TerminateInstances", "ec2:StartInstances", "ec2:AttachVolume", "ec2:DetachVolume", "ec2:AssociateIamInstanceProfile", "ec2:DisassociateIamInstanceProfile", "ec2:GetConsoleScreenshot", "ec2:ReplaceIamInstanceProfileAssociation" ], "Resource": [ "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/TAG-KEY": "TAG-VALUE" } } }, { "Sid": "AllowCreateTagsOnlyLaunching", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*" ], "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }
Nota: sostituisci i parametri ACCOUNTNUMBER, REGION, TAG-KEY, TAG-VALUE, VPC-ID e ROLENAME con i tuoi valori.
-
(Facoltativo) Per assegnare la policy solo agli utenti o ai gruppi IAM, sostituisci i parametri TAG-KEY o TAG-VALUE con la variabile di policy IAM ${aws:username}. Questa variabile di policy consente a IAM di precompilare i parametri con il nome intuitivo dell'utente IAM. Gli utenti IAM possono avviare un'istanza solo nel VPC specificato e controllare le proprie istanze.
-
Scegli Verifica policy, quindi inserisci un nome. Ad esempio, inserisci VPC_Lockdown_VPC-ID.
-
Scegli Crea policy.
Nota: alcuni articoli devono essere sostituiti con risorse specifiche del tuo ambiente. Per altre informazioni, consulta i nomi della risorsa Amazon (ARN).
Associazione della policy a un utente, un gruppo o un ruolo
Completa i seguenti passaggi:
- Apri la console IAM.
- Nel riquadro di navigazione, scegli Utenti, Gruppi o Ruoli, quindi scegli l'identità IAM.
- Scegli Aggiungi autorizzazioni, quindi scegli Collega policy.
- Inserisci il nome della policy, quindi scegli la tua policy.
- Scegli Collega policy.
Quando la policy personalizzata è collegata, l'identità IAM può accedere alla Console di gestione AWS, aprire la dashboard EC2 e avviare un'istanza EC2. L'identità IAM deve specificare la sottorete, il VPC e il tag per avviare l'istanza EC2.
La condizione ec2:ResourceTags limita le seguenti azioni:
- Avvia un'istanza.
- Interrompi un'istanza.
- Riavvia un'istanza.
- Termina un'istanza.
- Collega un volume all'istanza.
- Scollega un volume dall'istanza.
- Dissocia il profilo dell'istanza IAM dall'istanza.
- Associa un profilo dell'istanza.
- Sostituisci l'associazione del profilo dell'istanza IAM per l'istanza.
- Acquisisci uno screenshot dell'istanza sulla console.
Questa policy limita le seguenti azioni nei confronti del VPC:
- Elimina i gruppi di sicurezza.
- Crea ed elimina routing.
- Elimina le tabelle di routing.
- Elimina liste di controllo degli accessi alla rete (ACL).
- Elimina le voci ACL di rete.
- Autorizza o revoca regole di ingresso e uscita dei gruppi di sicurezza.
- Crea autorizzazioni per l'interfaccia di rete.
- Aggiorna la descrizione dei gruppi di sicurezza per le regole di ingresso e uscita.
Informazioni correlate
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 mesi fa
- AWS UFFICIALEAggiornata 10 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa