Usando AWS re:Post, accetti AWS re:Post Termini di utilizzo

Come posso usare i tag delle policy IAM per limitare la creazione e l'accesso a un'istanza EC2 o a un volume EBS?

6 minuti di lettura
0

Voglio consentire alle identità di AWS Identity and Access Management (IAM) di lanciare nuove istanze Amazon Elastic Compute Cloud (Amazon EC2). Voglio anche consentire alle identità IAM di creare nuovi volumi Amazon Elastic Block Store (Amazon EBS) quando applicano tag specifici.

Breve descrizione

Specifica i tag per le istanze EC2 e i volumi Amazon EBS come parte della chiamata API che crea le risorse. Applica condizioni alla policy IAM per richiedere agli utenti IAM di applicare tag a risorse specifiche.

Le policy di esempio che seguono non consentono agli utenti di creare gruppi di sicurezza o coppie di chiavi, pertanto gli utenti devono selezionare quelli esistenti.

Le policy IAM di esempio che seguono consentono agli utenti di avviare istanze con le configurazioni seguenti:

  • Chiavi e valori dei tag corrispondenti
  • Almeno un tag e un valore corrispondenti
  • Almeno una chiave tag corrispondente
  • Solo l'elenco di tag specificato

Le policy IAM di esempio consentono inoltre agli utenti di gestire istanze e volumi con chiavi e valori dei tag corrispondenti.

Nota: per utilizzare le policy di esempio, sostituisci i valori di esempio con i tuoi valori.

Risoluzione

Limita la creazione di istanze EC2 e volumi EBS in base ai tag

Le policy di esempio che seguono consentono a un utente di avviare un'istanza e creare un volume basato sui tag.

Avvia istanze EC2 con chiavi e valori dei tag corrispondenti

Nella policy di esempio seguente, la condizione RequestTag controlla l'applicazione dei tag. Se l'utente applica un tag che non è incluso nella policy, l'azione viene rifiutata. Per applicare la distinzione tra maiuscole e minuscole, usa la condizione aws:TagKeys:

{  "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, la policy precedente deve includere chiavi e valori dei tag corrispondenti. Se le coppie chiave e valore non corrispondono, verrà visualizzato l'errore Avvio non riuscito o un messaggio simile di errore dell'API.

Risultati di esempio

Key/ValueRisultato
key1/value1 e key2/value2consenti
key1/value1rifiuta
key1/value2rifiuta
nessuna chiave e nessun valorerifiuta

Avvia istanze EC2 con almeno una chiave tag corrispondente

Nella policy di esempio seguente, sostituisci il blocco di condizioni AllowRunInstancesWithRestrictions quando almeno una chiave tag è denominata key1. Non è richiesto alcun valore specifico per il tag key1 e puoi aggiungere tag nella richiesta RunInstances:

"Condition": {  "StringEquals": {
    "aws:RequestTag/key1": "value1"
  },
  "ForAnyValue:StringEquals": {
    "aws:TagKeys": [
      "key1"
    ]
  }
}

Risultati di esempio

Key/ValueRisultato
key1/value1 e key2/value2consenti
key1/value1consenti
key1/value2consenti
nessuna chiave e nessun valorerifiuta

Avvia istanze EC2 che hanno solo tag presenti nell'elenco specificato

Nella policy di esempio seguente, sostituisci il blocco di condizioni AllowRunInstancesWithRestrictions quando nella richiesta vengono fornite le chiavi tag key1 e key2. Non è richiesto alcun valore specifico per nessuna delle chiavi tag e non puoi aggiungere tag nella richiesta RunInstances:

"Condition": {  "StringLike": {
      "aws:RequestTag/key1": "*",
      "aws:RequestTag/key2": "*"
  },
  "ForAllValues:StringEquals": {
    "aws:TagKeys": [
        "key1",
        "key2"
    ]
  }
}

Nota: nella policy precedente, la condizione StringLike è necessaria per consentire l'uso di caratteri jolly di corrispondenza con più caratteri (*) nei valori.

Risultati di esempio

Key/ValueRisultato
key1/AnyValue e key2/AnyValueConsenti
key1/AnyValueRifiuta
key2/AnyValueRifiuta
Nessuna chiave o valoreRifiuta
key1/AnyValue, key2/AnyValue, key3/AnyValueRifiuta

Limita la gestione delle istanze EC2 e dei volumi EBS in base alle chiavi e ai valori dei tag

Le policy di esempio che seguono limitano la gestione da parte degli utenti di istanze e volumi in base alle chiavi e ai valori dei tag.

Gestisci istanze EC2 con chiavi e valori dei tag corrispondenti

La policy di esempio seguente limita l'accesso di un'identità IAM al solo avvio, arresto o riavvio di istanze EC2. L'istanza deve avere un tag chiave Owner con Bob come valore del tag:

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:RebootInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:111122223333:instance/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/Owner": "Bob"
        }
      }
    }
  ]
}

Nota: sostituisci Owner con la tua chiave tag, Bob con il nome del tuo utente IAM e l'ARN della risorsa con l'ARN della tua risorsa.

Per ulteriori informazioni, consulta Posso limitare l'accesso di identità IAM a risorse Amazon EC2 specifiche?

Gestisci volumi EBS con chiavi e valori dei tag corrispondenti

La policy di esempio seguente consente all'identità IAM di scollegare o eliminare un volume EBS. Per l'azione API DeleteVolume, il volume deve avere una chiave tag Owner con Mary come valore del tag. Per l'azione API detachVolume, sia l'istanza che il volume devono avere la stessa chiave tag Owner con Mary come valore del tag:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "ec2:DetachVolume",
                "ec2:DeleteVolume"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333:volume/*",
                "arn:aws:ec2:*:111122223333:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "Mary"
                }
            }
        }
    ]
}

Nota: sostituisci Owner con la tua chiave tag, Mary con il nome del tuo utente IAM e l'ARN della risorsa con l'ARN della tua risorsa.

Informazioni correlate

Come posso creare una policy IAM per controllare l'accesso alle risorse di Amazon EC2 utilizzando i tag?

Example IAM identity-based policies

Tagging delle risorse Amazon EC2

Operazioni, risorse e chiavi di condizione per Amazon EC2

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 mesi fa