Salta al contenuto

In che modo le chiavi di condizione PrincipalTag, ResourceTag, RequestTag e TagKeys controllano l'accesso nelle policy IAM?

3 minuti di lettura
0

Desidero utilizzare le chiavi di condizione basate su tag PrincipalTag, ResourceTag, RequestTag e TagKeys in una policy AWS Identity and Access Management (AWS IAM) per controllare l'accesso alle risorse AWS.

Risoluzione

I seguenti esempi di policy IAM utilizzano chiavi di condizione per controllare l'accesso alle risorse AWS con tag.

Per determinare le azioni API che puoi intraprendere, è consigliabile consultare la documentazione API per il servizio utilizzato.

Chiave di condizione PrincipalTag

Utilizza la chiave di condizione aws:PrincipalTag/tag-key per confrontare i seguenti tag:

  • Tag collegato al principale che effettua la richiesta
  • Tag specificato nella policy IAM

Nell'esempio seguente, l'azione PutObject di Amazon Simple Storage Service (Amazon S3) nega l'accesso 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

Utilizza la chiave di condizione aws:ResourceTag/tag-key per confrontare la coppia chiave-valore di tag specificata nella policy IAM con la coppia chiave-valore collegata alla risorsa AWS. Per ulteriori informazioni, consulta Controllo dell'accesso alle risorse AWS.

Puoi utilizzare la chiave di condizione aws:ResourceTag/tag-key con la versione globale aws:ResourceTag e i servizi AWS, come ec2:ResourceTag.

Nel seguente esempio, la policy IAM consente agli utenti di avviare, arrestare e terminare le istanze Amazon Elastic Compute Cloud (Amazon EC2) presenti 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

Utilizza la chiave di condizione aws:RequestTag/tag-key per confrontare la coppia chiave-valore contenuta nella richiesta dell'utente con la coppia di tag specificata nella policy IAM. Puoi utilizzare questa chiave di condizione per controllare le azioni che creano risorse e convalidare i tag durante queste operazioni.

Nell'esempio seguente, la policy IAM consente agli utenti di creare volumi Amazon Elastic Block Store (Amazon EBS) solo quando includono un tag Env con valori Dev, Prod o QA:

{
  "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

Utilizza la chiave di condizione aws:TagKeys per confrontare le chiavi di tag contenute in una richiesta con quelle specificate nella policy IAM. Questa chiave di condizione convalida le chiavi di tag collegate a una risorsa.

Quando una richiesta contiene più coppie chiave-valore, utilizza gli operatori di set ForAllValues o ForAnyValue per confrontare questi valori.

Nell'esempio seguente, la policy IAM limita la creazione di tag sulle risorse AWS. Consente agli utenti di creare solo i tag Env e CostCenter quando gli utenti creano un nuovo volume Amazon EBS. L'operatore di set ForAllValues con la chiave di condizione aws:TagKeys consente agli utenti di collegare i tag richiesti alla risorsa. La policy rende opzionali queste chiavi di tag durante la creazione delle risorse e impedisce la creazione di 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: definizione delle autorizzazioni per accedere alle risorse AWS in base ai tag