Come posso creare un criterio IAM per concedere esplicitamente le autorizzazioni a un utente, gruppo o ruolo IAM per creare e gestire le istanze EC2 in un VPC specificato utilizzando i tag?

5 minuti di lettura
0

Come posso creare un criterio IAM (Identity and Access Management) di AWS che conceda esplicitamente a un utente, gruppo o ruolo IAM le autorizzazioni per creare e gestire istanze Amazon Elastic Compute Cloud (Amazon EC2) in una specifica VPC? Il criterio deve limitare le autorizzazioni in modo che l'entità IAM possa creare istanze EC2 con tag specifici e gestire tali istanze EC2 in un VPC utilizzando tali tag.

Descrizione breve

Amazon EC2 fornisce un numero limitato di autorizzazioni a livello di risorsa supportate, ma ci sono diverse azioni, risorse e condizioni da prendere in considerazione. Alcune azioni API Amazon EC2, come il lancio di un'istanza EC2, possono essere controllate tramite l'ARN VPC usando i tag per controllare le istanze.

Risoluzione

Applica una policy IAM personalizzata per limitare le autorizzazioni di un gruppo, ruolo o utente IAM per la creazione di istanze EC2 in un VPC specificato con tag. Utilizza la condizione della policy "ec2:ResourceTags2" per limitare il controllo delle istanze. Questa policy concede le autorizzazioni per lanciare istanze EC2 in un VPC designato con un tag univoco. È quindi possibile gestire le istanze EC2 usando tag restrittivi.

Creare una policy gestita da applicare alle entità IAM che lanciano le tue istanze

1.    Apri la console IAM, scegli Policy, quindi scegli Crea policy.

2.    Scegli la scheda JSON, quindi inserisci questa 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"
        }
      }
    }
  ]
}

3.    Sostituisci i parametri ACCOUNTNUMBER, REGION, TAG-KEY, TAG-VALUE, VPC-ID, e ROLENAME con i valori del tuo ambiente.

4.    (Facoltativo) Se assegni questa policy solo a utenti o gruppi IAM, puoi sostituire i parametri TAG-KEY o TAG-VALUE con la variabile di policy IAM ${aws:username}. Questa variabile di policy consente al servizio IAM di precompilare questi parametri con il nome intuitivo dell'utente IAM chiamante. Questo passaggio consente agli utenti IAM di avviare un'istanza solo nel VPC specificato e di controllare le proprie istanze.

5.    Scegli Rivedi policy, quindi inserisci un nome in Nome. Ad esempio, inserisci "VPC_Lockdown_VPC-ID", dove "VPC-ID" è l'ID del VPC intendi applicare la policy.

6.    Scegli Crea policy.

Nota: Alcuni articoli devono essere sostituiti con risorse specifiche del tuo ambiente. Per ulteriori informazioni, consulta i nomi della risorsa Amazon (ARN).

Associa la policy a un utente, un gruppo o un ruolo

1.    Nel pannello di navigazione della console IAM, scegli **Utenti **, Gruppi o Ruoli.

2.    Scegli l'utente, il gruppo o il ruolo a cui collegare la policy.

3.    Scegli Associa policy.

4.    Inserisci il nome della policy che hai creato nella casella di ricerca, quindi seleziona la tua policy. Ad esempio, inserisci "VPC\ _Lockdown\ _VPC-ID".

5.    Scegli Collega policy.

Un'entità IAM con questa policy personalizzata collegata può accedere alla Console di gestione AWS, aprire la dashboard di Amazon EC2 e quindi avviare un'istanza EC2 dopo aver specificato la sottorete, il VPC e il tag.

Questa policy limita le seguenti azioni usando la condizione "ec2:ResourceTags":

  • Avvio dell'istanza
  • Arresto dell'istanza
  • Riavvio dell'istanza
  • Interruzione dell'istanza
  • Collegamento di un volume all'istanza
  • Scollegamento di un volume dall'istanza
  • Dissociazione del profilo dell'istanza IAM dall'istanza
  • Sostituzione dell'associazione del profilo dell'istanza IAM per l'istanza
  • Ottenere uno screenshot dell'istanza sulla console

Questa policy limita le seguenti azioni nei confronti del VPC specificato:

  • Eliminazione dei gruppi di sicurezza
  • Creazione ed eliminazione di percorsi
  • Eliminazione delle tabelle di routing
  • Eliminazione degli ACL di rete
  • Eliminazione delle voci ACL
  • Autorizzazione o revoca delle regole di ingresso e uscita dei gruppi di sicurezza
  • Creazione di autorizzazioni per l'interfaccia di rete
  • Aggiornamento della descrizione dei gruppi di sicurezza per le regole di ingresso e uscita

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa