Come posso creare una policy IAM per la restrizione basata su tag con le chiavi di condizione PrincipalTag, ResourceTag, RequestTag e TagKeys?

4 minuti di lettura
0

Desidero creare una policy di AWS Identity and Access Management (IAM) per la restrizione basata su tag. Come si utilizzano le chiavi di condizione PrincipalTag, ResourceTag, RequestTag e TagKeys?

Breve descrizione

Utilizza le seguenti policy di esempio IAM per creare restrizioni basate su tag con chiavi di condizione per il tuo caso d'uso.

Risoluzione

Chiave di condizione PrincipalTag

La chiave di condizione aws:PrincipalTag viene utilizzata per abbinare il tag allegato al principale che effettua la richiesta con il tag nella policy IAM. Il valore della chiave PrincipalTag viene confrontato con il valore del tag IAM con la chiave tag corrispondente, se presente nel codice della richiesta.

L'esempio seguente di policy IAM fornisce restrizioni per un bucket Amazon Simple Storage Service (Amazon S3). L'azione Amazon S3 PutObject ha negato l'autorizzazione al bucket a tutti gli utenti tranne quelli con il titolo "Product-Manager".

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllButProductManagers",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::productionbucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalTag/job-title": "Product-Manager"
        }
      }
    }
  ]
}

Chiave di condizione ResourceTag

La chiave di condizione aws:ResourceTag/tag-key confronta la coppia tag chiave-valore specificata nella policy IAM con la coppia chiave-valore associata alla risorsa AWS. Per ulteriori informazioni, consulta Controlla l’accesso alle risorse AWS.

Durante la valutazione della policy IAM, il tag ResourceTag viene confrontato con il tag IAM. Il valore della chiave ResourceTag viene confrontato con il valore del tag IAM con la coppia chiave-valore corrispondente, se presente per la risorsa AWS. Questa chiave di condizione può essere utilizzata con la versione globale di aws:ResourceTag e con i servizi AWS come ec2:ResourceTag. Per ulteriori informazioni, consulta Azioni, risorse e chiavi di condizione per i servizi AWS.

L'esempio seguente di policy IAM consente agli utenti di avviare, interrompere e terminare le istanze che si trovano nell'ambiente di "test".

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowOnlyForTestEnvironment",
      "Effect": "Allow",
      "Action": [
        "ec2:TerminateInstances",
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/Env": "test"
        }
      }
    }
  ]
}

Chiave di condizione RequestTag

La chiave di condizione aws:RequestTag/tag-key utilizzata per confrontare la coppia chiave-valore passata nella richiesta dell'utente con la coppia di tag specificata nella policy IAM. La chiave di condizione è disponibile per le azioni che creano una risorsa o un tag su una risorsa e controlla il valore del tag.

Ad esempio, vedi la seguente policy IAM. Impone agli utenti di creare un tag specifico "Env" con i valori "Dev", "Prod" o "QA" quando creano un volume Amazon Elastic Block Store (Amazon EBS).

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCreateVolumeWithEnvTag",
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/Env": [
            "Dev",
            "Prod",
            "QA"
          ]
        }
      }
    }
  ]
}

Chiave di condizione TagKeys

La chiave di condizione aws:TagKeys viene utilizzata per confrontare le chiavi tag in una richiesta con le chiavi specificate nella policy IAM. Il valore della chiave TagKeys viene confrontato con l'elenco di tag nella richiesta di risorse AWS. La chiave di condizione TagKeys viene utilizzata per convalidare le chiavi dei tag allegate a una risorsa.

Poiché è possibile definire più coppie chiave-valore di tag in una richiesta, la richiesta può avere più valori. Questi valori possono essere confrontati utilizzando gli operatori di set ForAllValues o ForAnyValue.

La seguente policy di esempio limita i tag creati su una risorsa AWS. I tag "Env" e "CostCenter" sono le uniche chiavi tag che gli utenti possono creare con un nuovo volume Amazon EBS. L'utilizzo dell'operatore di set ForAllValues con aws:TagKeys limita gli utenti ad allegare solo i tag richiesti alla risorsa AWS. Ciò non richiede agli utenti di fornire queste chiavi tag nella richiesta di creazione della risorsa, ma impedisce agli utenti di creare tag con altre coppie chiave-valore.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "Env",
            "CostCenter"
          ]
        }
      }
    }
  ]
}

Informazioni correlate

Tutorial IAM: Definisci le autorizzazioni per accedere alle risorse AWS in base ai tag

Controllo dell'accesso durante le richieste AWS

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa