Wie erstelle ich eine IAM-Richtlinie für tagbasierte Einschränkungen mit den Bedingungsschlüsseln PrincipalTag, ResourceTag, RequestTag und TagKeys?

Lesedauer: 4 Minute
0

Ich möchte eine AWS-Richtlinie für Identity and Access Management (IAM) für tagbasierte Einschränkungen erstellen. Wie verwende ich die Bedingungsschlüssel PrincipalTag, ResourceTag, RequestTag und TagKeys?

Kurzbeschreibung

Verwenden Sie die folgenden IAM-Beispielrichtlinien, um eine tagbasierte Einschränkung mit Bedingungsschlüsseln für Ihren Anwendungsfall zu erstellen.

Lösung

PrincipalTag-Bedingungsschlüssel

Der aws:PrincipalTag-Bedingungsschlüssel wird verwendet, um das Tag, das an den Principal angehängt ist, der die Anfrage stellt, dem Tag in der IAM-Richtlinie zuzuordnen. Der Wert des PrincipalTag-Schlüssels wird mit dem Wert des IAM-Tags mit dem passenden Tag-Schlüssel verglichen, sofern dieser auf dem Principal der Anfrage vorhanden ist.

Die folgende Beispiel-IAM-Richtlinie sieht Einschränkungen für einen Amazon Simple Storage Service (Amazon S3)-Bucket vor. Die Amazon S3-Aktion PutObject verweigerte allen Benutzern außer denen mit dem Titel „Product-Manager“ die Berechtigung zum Bucket.

{
  "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 angehängt ist. Weitere Informationen finden Sie unter Steuern des Zugriffs auf AWS-Ressourcen.

Während der Bewertung der IAM-Richtlinie wird das Tag ResourceTag mit dem IAM-Tag verglichen. Der Wert des ResourceTag-Schlüssels wird mit dem Wert des IAM-Tags mit dem passenden Schlüssel-Wert-Paar verglichen, sofern es für die AWS-Ressource vorhanden ist. Dieser Bedingungsschlüssel kann mit der globalen Version aws:ResourceTag und mit AWS-Services wie ec2:ResourceTag verwendet werden. Weitere Informationen finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS-Services.

Die folgende Beispiel-IAM-Richtlinie ermöglicht Benutzern das Starten, Stoppen und Beenden von Instanzen, 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

Der Bedingungsschlüssel aws:requestTag/tag-key, der verwendet wird, um das in der Benutzeranfrage übergebene Schlüssel-Wert-Paar mit dem in der IAM-Richtlinie angegebenen Tag-Paar zu vergleichen. Der Bedingungsschlüssel ist für Aktionen verfügbar, die eine Ressource oder ein Tag für eine Ressource erstellen, und überprüft den Wert des Tags.

Sehen Sie sich beispielsweise die folgende IAM-Richtlinie an. Sie zwingt Benutzer, bei der Erstellung eines Amazon Elastic Block Store (Amazon EBS)-Volumes ein bestimmtes Tag „Env“ mit den Werten „Dev“, „Prod“ oder „QA“ zu erstellen.

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

Der Bedingungsschlüssel aws:TagKeys wird verwendet, um die Tag-Schlüssel in einer Anfrage mit den in der IAM-Richtlinie angegebenen Schlüsseln zu vergleichen. Der Wert des TagKeys-Schlüssels wird mit der Liste der Tags in der AWS-Ressourcenanfrage verglichen. Der TagKeys-Bedingungsschlüssel wird verwendet, um die an eine Ressource angehängten Tag-Schlüssel zu überprüfen.

Da Sie in einer Anfrage mehrere Tag-Schlüssel-Wert-Paare definieren können, kann die Anfrage mehrere Werte haben. Diese Werte können mit den Mengenoperatoren ForAllValues oder ForAnyValue verglichen werden.

Die folgende Beispielrichtlinie schränkt die für eine AWS-Ressource erstellten Tags ein. Die Tags „Env“ und „CostCenter“ sind die einzigen Tag-Schlüssel, die Benutzer mit einem neuen Amazon EBS-Volume erstellen können. Die Verwendung des Mengenoperators ForAllValues mit aws:TagKeys schränkt Benutzer ein, nur die erforderlichen Tags an die AWS-Ressource anzuhängen. Dies erfordert nicht, dass Benutzer diese Tag-Schlüssel in der Anforderung zur Ressourcenerstellung angeben, aber es verhindert, dass Benutzer Tags mit anderen Schlüssel-Wert-Paaren erstellen.

{
  "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 Sie Berechtigungen für den Zugriff auf AWS-Ressourcen auf der Grundlage von Tags

Zugriffskontrolle bei AWS-Anfragen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr