Erteilen der Berechtigung zum Markieren von Ressourcen während der Erstellung - Amazon Elastic Compute Cloud

Erteilen der Berechtigung zum Markieren von Ressourcen während der Erstellung

Mit einigen Amazon EC2-API-Aktionen zur Ressourcenerstellung können Sie Tags (Markierungen) beim Erstellen der Ressource angeben. Sie können Resource-Tags (Markierungen) verwenden, um eine attributbasierte Steuerung (ABAC) zu implementieren. Weitere Informationen erhalten Sie unter Markieren Ihrer -Ressourcen mit Tags (Markierungen) und Steuerung des Zugriffs auf EC2-Ressourcen mithilfe von Ressourcen-Tags (Markierungen).

Damit Benutzer diese Möglichkeit erhalten, benötigen sie die Berechtigungen zum Verwenden der Aktion, die die Ressource wie ec2:RunInstances oder ec2:CreateVolume erstellt. Wenn Tags (Markierungen) in der Aktion angegeben werden, mit der die Ressource erstellt wird, führt Amazon eine zusätzliche Autorisierung für die ec2:CreateTags-Aktion aus, um die Berechtigungen der Benutzer zum Erstellen von Tags (Markierungen) zu überprüfen. Daher benötigen die Benutzer außerdem die expliziten Berechtigungen zum Verwenden der ec2:CreateTags-Aktion.

Verwenden Sie in der IAM-Richtliniendefinition für die ec2:CreateTags-Aktion das Condition-Element mit dem ec2:CreateAction-Bedingungsschlüssel, um der Aktion, die die Ressource erstellt, Markierungsberechtigungen zu erteilen.

Die folgende Beispiel zeigt eine Richtlinie, die es Benutzern erlaubt, Instances zu starten und Instances und Volumes während des Starts beliebige Tags (Markierungen) hinzuzufügen. Die Markierung von bestehenden Ressourcen durch die Benutzer ist nicht zulässig. (Sie können die ec2:CreateTags-Aktion nicht direkt aufrufen.)

{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

In ähnlicher Weise erlaubt die folgende Richtline Benutzern, Volumes zu erstellen und ihnen dabei beliebige Tags (Markierungen) hinzuzufügen. Die Markierung von bestehenden Ressourcen durch die Benutzer ist nicht zulässig. (Sie können die ec2:CreateTags-Aktion nicht direkt aufrufen.)

{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }

Die ec2:CreateTags-Aktion wird nur ausgewertet, wenn die Tags (Markierungen) während der Aktion zur Ressourcenerstellung angewendet werden. Folglich benötigt ein Benutzer, der über die Berechtigungen zum Erstellen einer Ressource verfügt (vorausgesetzt, es bestehen keine Markierungsbedingungen), keine Berechtigungen zur Verwendung der ec2:CreateTags-Aktion, wenn keine Tags (Markierungen) in der Anforderung angegeben werden. Wenn der Benutzer allerdings versucht, eine Ressource mit Tags (Markierungen) zu erstellen, schlägt die Anforderung fehl, wenn der Benutzer nicht über die Berechtigungen für die ec2:CreateTags-Aktion verfügt.

Die ec2:CreateTags-Aktion wird auch ausgewertet, wenn Tags (Markierungen) in einer Startvorlage bereitgestellt werden. Eine Beispielrichtlinie finden Sie unter Tags (Markierungen) in einer Startvorlage.

Kontrollieren des Zugriffs auf bestimmte Tags (Markierungen)

Sie können zusätzliche Bedingungen im Condition-Element Ihrer IAM-Richtlinien verwenden, um die Tags (Markierungen)-Schlüssel und -Werte zu steuern, die auf Ressourcen angewendet werden können.

Die folgenden Bedingungsschlüssel können mit den Beispielen im vorangegangenen Abschnitt verwendet werden:

  • aws:RequestTag: Gibt an, dass eine Anforderung einen bestimmten Tags (Markierungen)-Schlüssel oder Tags (Markierungen)-Schlüssel und -Wert enthalten muss. In der Anforderung können auch andere Tags (Markierungen) angegeben werden.

    • Zusammen mit dem StringEquals-Bedingungsoperator können Sie eine bestimmte Tags (Markierungen)-Schlüssel- und -Wert-Kombination erzwingen, z. B. den Tags (Markierungen) cost-center=cc123:

      "StringEquals": { "aws:RequestTag/cost-center": "cc123" }
    • In Kombination mit dem StringLike-Bedingungsoperator erzwingen Sie einen bestimmten Tags (Markierungen)-Schlüssel in der Anforderung, beispielsweise den Tags (Markierungen)-Schlüssel purpose:

      "StringLike": { "aws:RequestTag/purpose": "*" }
  • aws:TagKeys: Erzwingt die Tags (Markierungen)-Schlüssel, die in der Anforderung verwendet werden.

    • Verwenden Sie diesen Bedingungsschlüssel mit dem ForAllValues-Modifikator, um bestimmte Tags (Markierungen)-Schlüssel zu erzwingen, die in der Anforderung bereitgestellt werden (wenn in der Anforderung Tags (Markierungen) angegeben werden, sind nur bestimmte Tags (Markierungen) erlaubt und keine anderen Tags (Markierungen) gestattet). Im folgenden Beispiel sind die Tags (Markierungen)-Schlüssel environment oder cost-center erlaubt:

      "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] }
    • Zusammen mit dem ForAnyValue-Modifikator wird erzwungen, dass die Anforderung mindestens einen der angegebenen Tags (Markierungen)-Schlüssel umfassen muss. Zum Beispiel muss mindestens einer der Tags (Markierungen)-Schlüssel environment und webserver in der Anforderung enthalten sein:

      "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }

Diese Bedingungsschlüssel können auf Aktionen zur Ressourcenerstellung, die Tags (Markierungen) unterstützen, sowie ec2:CreateTags- und ec2:DeleteTags-Aktionen angewendet werden. Informationen darüber, ob eine Amazon-EC2-API-Aktion das Markieren unterstützt, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon EC2.

Wenn Sie erzwingen möchten, dass die Benutzer beim Erstellen einer Ressource Tags (Markierungen) angeben, müssen Sie den aws:RequestTag-Bedingungsschlüssel oder den aws:TagKeys-Bedingungsschlüssel mit dem ForAnyValue-Modifikator für die Aktion zur Erstellung von Ressourcen verwenden. Wenn ein Benutzer für diese Aktion zur Ressourcenerstellung keine Tags (Markierungen) angibt, wird die ec2:CreateTags-Aktion nicht ausgewertet.

Bei Bedingungen gilt, dass die Groß- und Kleinschreibung für den Bedingungsschlüssel nicht berücksichtigt und für den Bedingungswert beachtet wird. Verwenden Sie aus diesem Grund den aws:TagKeys-Bedingungsschlüssel und geben Sie den Tag (Markierung)-Schlüssel als Wert dieser Bedingung an, wenn Sie die Berücksichtigung der Groß- und Kleinschreibung für einen Tag (Markierung)-Schlüssel erzwingen möchten.

Beispiele für IAM-Richtlinien finden Sie unter Beispielrichtlinien für das Arbeiten mit der AWS CLI oder einem AWS SDK. Weitere Informationen zu Bedingungen mit mehreren Werten erhalten Sie unter Erstellen einer Bedingung zum Testen von mehreren Schlüsselwerten im IAM-Benutzerhandbuch.