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

Lesedauer: 3 Minute
0

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

Behebung

Die folgenden IAM-Beispielrichtlinien verwenden Bedingungsschlüssel, um tagbasierte Einschränkungen zu erstellen.

**Hinweis:**Um zu ermitteln, welche API-Aktionen Sie ausführen können, empfiehlt es sich, die API-Dokumentation für den Dienst, den Sie verwenden, zu überprüfen.

PrincipalTag-Bedingungsschlüssel

Verwenden Sie den Bedingungsschlüssel aws:PrincipalTag/tag-key, um das Tag, das an den Prinzipal angehängt ist, der die Anfrage stellt, mit dem Tag in der IAM-Richtlinie abzugleichen.

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 den Zugriff auf den 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.

Sie können diesen Bedingungsschlüssel mit der globalen aws:ResourceTag-Version und AWS-Services wie ec2:ResourceTag verwenden. Weitere Informationen finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS-Dienste.

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

Verwenden Sie den Bedingungsschlüssel aws:RequestTag/tag-key, um das in der Benutzeranfrage übergebene Schlüssel-Wert-Paar mit dem in der IAM-Richtlinie angegebenen Tag-Paar zu vergleichen. Sie können diesen Bedingungsschlüssel für Aktionen verwenden, die eine Ressource oder ein Ressourcen-Tag erstellen und die den Wert des Tags überprüfen.

Die folgende Beispielrichtlinie zwingt Benutzer, ein bestimmtes Env-Tag zu erstellen, wenn die Benutzer ein Amazon Elastic Block Store (Amazon EBS) Volume erstellen. Env muss die Dev-, Prod - oder QA-Werte haben:

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

Verwenden Sie den Bedingungsschlüssel aws:TagKeys, um die Tag-Schlüssel in einer Anfrage mit den in der IAM-Richtlinie angegebenen Schlüsseln zu vergleichen. Dieser Bedingungsschlüssel validiert die Tag-Schlüssel, die an eine Ressource angehängt sind.

Da Sie in einer Anfrage mehrere Tag-Schlüssel-Wert-Paare definieren können, kann die Anfrage mehrere Werte haben. Verwenden Sie die Mengenoperatoren ForAllValues oder ForAnyValue, um diese Werte zu vergleichen.

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 beschränkt Benutzer darauf, nur die erforderlichen Tags an die AWS-Ressource anzuhängen. Diese Richtlinie verlangt nicht, dass Benutzer diese Tag-Schlüssel in der Anfrage zur Ressourcenerstellung angeben. Stattdessen erlaubt die Richtlinie Benutzern nicht, Tags mit anderen Schlüssel-Wert-Paaren zu 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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 10 Monaten