Direkt zum Inhalt

Wie steuern die Bedingungsschlüssel PrincipalTag, ResourceTag, RequestTag und TagKeys den Zugriff in IAM-Richtlinien?

Lesedauer: 3 Minute
0

Ich möchte die tagbasierten Bedingungsschlüssel PrincipalTag, ResourceTag, RequestTag und TagKeys in einer AWS Identity and Access Management (IAM)-Richtlinie verwenden, um den Zugriff auf AWS-Ressourcen zu steuern.

Lösung

Die folgenden IAM-Beispielrichtlinien verwenden Bedingungsschlüssel, um den Zugriff auf AWS-Ressourcen mithilfe von Tags zu steuern.

Um zu ermitteln, welche API-Aktionen du ausführen kannst, empfiehlt es sich, die API-Dokumentation für den Service, den du verwendest, zu überprüfen.

PrincipalTag-Bedingungsschlüssel

Verwende den Bedingungsschlüssel aws:PrincipalTag/tag-key, um die folgenden Tags zu vergleichen:

  • Das Tag, das an den Prinzipal angefügt ist, der die Anforderung stellt
  • Das Tag, das du in der IAM-Richtlinie angibst

Im folgenden Beispiel verweigert die PutObject-Aktion von Amazon Simple Storage Service (Amazon S3) allen Benutzern, außer jenen mit dem Titel Product-Manager, den Bucket-Zugriff:

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

ResourceTag-Bedingungsschlüssel

Der Bedingungsschlüssel aws:ResourceTag/tag-key vergleicht das in der IAM-Richtlinie angegebene Tag-Schlüssel-Wert-Paar mit dem Schlüssel-Wert-Paar, das an die AWS-Ressource angefügt ist. Weitere Informationen findest du unter Steuern des Zugriffs auf AWS-Ressourcen.

Du kannst den Bedingungsschlüssel aws:ResourceTag/tag-key mit der globalen Version aws:ResourceTag und AWS-Services wie ec2:ResourceTag verwenden.

Im folgenden Beispiel ermöglicht die IAM-Richtlinie Benutzern das Starten, Anhalten und Beenden von Amazon Elastic Compute Cloud (Amazon EC2)-Instances, die sich in der Test-Umgebung befinden:

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

RequestTag-Bedingungsschlüssel

Verwende den Bedingungsschlüssel aws:RequestTag/tag-key, um das Schlüssel-Wert-Paar in der Benutzeranforderung mit dem in der IAM-Richtlinie angegebenen Tag-Paar zu vergleichen. Du kannst diesen Bedingungsschlüssel verwenden, um Aktionen zu steuern, die Ressourcen erstellen, und um Tags während dieser Operationen zu überprüfen.

Im folgenden Beispiel erlaubt die IAM-Richtlinie Benutzern, Amazon Elastic Block Store (Amazon EBS)-Volumes nur zu erstellen, wenn sie ein Env-Tag mit den Werten Dev, Prod oder QA enthalten:

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

TagKeys-Bedingungsschlüssel

Verwende den Bedingungsschlüssel aws:TagKeys, um die Tag-Schlüssel in einer Anforderung mit denen zu vergleichen, die du in der IAM-Richtlinie angibst. Dieser Bedingungsschlüssel validiert die Tag-Schlüssel, die an eine Ressource angefügt sind.

Wenn eine Anforderung mehrere Schlüssel-Wert-Paare enthält, verwende die Mengenoperatoren ForAllValues oder ForAnyValue, um diese Werte zu vergleichen.

Im folgenden Beispiel schränkt die IAM-Richtlinie die Tag-Erstellung auf AWS-Ressourcen ein. Sie ermöglicht Benutzern, nur die Env- und CostCenter-Tags zu erstellen, wenn Benutzer ein neues Amazon-EBS-Volume erstellen. Der Mengenoperator ForAllValues mit dem Bedingungsschlüssel aws:TagKeys ermöglicht es Benutzern, die erforderlichen Tags an die Ressource anzufügen. Die Richtlinie macht diese Tag-Schlüssel während der Ressourcenerstellung optional und verhindert die Tag-Erstellung mit anderen Schlüssel-Wert-Paaren:

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

Ähnliche Informationen

IAM-Tutorial: Definieren der Berechtigungen für den Zugriff auf AWS-Ressourcen auf der Grundlage von Tags