Come faccio a limitare l'accesso all'avvio di istanze Amazon EC2 solo dalle AMI con tag?

3 minuti di lettura
0

Desidero limitare l'accesso degli utenti in modo che possano avviare istanze Amazon Elastic Compute Cloud (Amazon EC2) solo da Amazon Machine Images (AMI) contrassegnate. Come faccio a limitare l'accesso all'avvio delle istanze EC2 utilizzando i tag AMI?

Risoluzione

Per limitare l'accesso degli utenti all'avvio di istanze EC2 utilizzando AMI con tag, crea un'AMI da un'istanza esistente, o usa un'AMI esistente, quindi aggiungi un tag all'AMI. Quindi, crea una policy AWS Identity and Access Management (IAM) personalizzata con una condizione di tag che limita le autorizzazioni degli utenti ad avviare solo le istanze che utilizzano l'AMI etichettata.

In questo esempio di policy IAM, ci sono tre ID di dichiarazione (Sids):

  • Sid ReadOnlyAccess consente agli utenti di visualizzare qualsiasi risorsa EC2 nel tuo account utilizzando **Descrivi\ ***, che include tutte le azioni EC2 che iniziano con Descrivi. Sid ReadOnlyAccess consente inoltre agli utenti di ottenere l'output della console e gli screenshot di un'istanza EC2. Per ulteriori informazioni, vedere GetConsoleOutput e GetConsoleScreenshot. Le autorizzazioni Amazon CloudWatch per DescribeAlarms e GetMetricStatistics consentono di visualizzare le informazioni sanitarie di base sulle istanze EC2 nella console Amazon EC2. L'autorizzazione IAM per ListInstanceProfiles consente di visualizzare i profili di istanza esistenti nell'elenco dei ruoli IAM nella pagina Configura i dettagli dell'istanza quando si avvia un'istanza EC2. Tuttavia, l'API ListInstanceProfiles non consente agli utenti di associare un ruolo IAM a un'istanza EC2.
  • Sid ActionsRequiredtoRunInstancesInVPC concede agli utenti il permesso di eseguire l'API RunInstances utilizzando qualsiasi istanza, coppia di chiavi, gruppo di sicurezza, volume, interfaccia di rete o sottorete nella regione us-east-1 utilizzando autorizzazioni a livello di risorsa specificando l'ARN per ogni risorsa.
  • Sid LaunchingEC2withAMIsAndTags consente agli utenti di avviare istanze EC2 utilizzando un'AMI se l'AMI ha un tag Environment con valore impostato su Prod e l'AMI si trova nella regione us-east-1. L'autorizzazione a livello di risorsa è impostata su un ARN per qualsiasi AMI che si trova nella regione us-east-1 e la condizione corrisponde al valore della chiave del tag EC2:ResourceTag/environment e del valore chiave Prod.

La seguente policy IAM utilizza autorizzazioni a livello di risorsa per le risorse richieste per l'azione API RunInstances. Per ulteriori informazioni sulle risorse richieste per RunInstances, consulta Autorizzazioni a livello di risorsa supportate.

Nota:

  • Questa politica consente agli utenti di elencare i ruoli quando avviano un'istanza EC2, ma non possono avviare un'istanza con un ruolo associato a meno che non dispongano dell'autorizzazione ** iam:PassRole**.
  • Questa politica non consente agli utenti di creare nuovi gruppi di sicurezza. Gli utenti devono selezionare un gruppo di sicurezza esistente per avviare un'istanza EC2 a meno che gli utenti non dispongano dell'autorizzazione EC2 CreateSecurityGroup. L'azione API EC2:createSecurityGroup consente l'accesso per creare solo un gruppo di sicurezza: questa azione non aggiunge o modifica alcuna regola. Per aggiungere regole in entrata, gli utenti devono disporre delle autorizzazioni per l'azione API EC2 AuthorizeSecurityGroupIngress in entrata e l'azione API EC2 AuthorizeSecurityGroupEgress in uscita.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "ec2:GetConsole*",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:GetMetricStatistics",
        "iam:ListInstanceProfiles"
      ],
      "Resource": "*"
    },
    {
      "Sid": "ActionsRequiredtoRunInstancesInVPC",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1:AccountId:instance/*",
        "arn:aws:ec2:us-east-1:AccountId:key-pair/*",
        "arn:aws:ec2:us-east-1:AccountId:security-group/*",
        "arn:aws:ec2:us-east-1:AccountId:volume/*",
        "arn:aws:ec2:us-east-1:AccountId:network-interface/*",
        "arn:aws:ec2:us-east-1:AccountId:subnet/*"
      ]
    },
    {
      "Sid": "LaunchingEC2withAMIsAndTags",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/Environment": "Prod"
        }
      }
    }
  ]
}