Tags zur Steuerung des Zugriffs auf API Gateway-REST-API-Ressourcen verwenden - Amazon API Gateway

Tags zur Steuerung des Zugriffs auf API Gateway-REST-API-Ressourcen verwenden

Bedingungen in AWS Identity and Access Management-Richtlinien sind Teil der Syntax, die Sie verwenden, um Berechtigungen für API-Gateway-Ressourcen festzulegen. Einzelheiten zur Angabe von IAM-Richtlinien finden Sie unter Zugriffskontrolle für eine API mit IAM-Berechtigungen. In API Gateway können Ressourcen Tags haben. Einige Aktionen können ebenfalls Tags enthalten. Wenn Sie eine IAM-Richtlinie erstellen, können Sie Tag-Bedingungsschlüssel verwenden, um Folgendes zu kontrollieren:

  • Welche Benutzer auf der Grundlage von Tags, die die Ressource bereits besitzt, Aktionen mit einer API Gateway-Ressource ausführen können.

  • Welche Tags in der Anforderung einer Aktion übergeben werden können.

  • Ob bestimmte Tag-Schlüssel in einer Anforderung verwendet werden können.

Die Verwendung von Tags für die attributbasierte Zugriffskontrolle kann eine feinere Kontrolle als die Kontrolle auf API-Ebene sowie eine dynamischere Kontrolle als die ressourcenbasierte Zugriffskontrolle ermöglichen. IAM-Richtlinien können erstellt werden, die eine Operation basierend auf Tags in der Anforderung (Anforderungs-Tags) oder Tags in der Ressource, mit der gearbeitet wird (Ressourcen-Tags), zulassen oder ablehnen. Im Allgemeinen sind Ressourcen-Tags für Ressourcen vorgesehen, die bereits vorhanden ist. Anforderungs-Tags sind dafür da, wenn Sie neue Ressourcen erstellen.

Die vollständige Syntax und Semantik der Tag-Bedingungsschlüssel finden Sie unter Steuern des Zugriffs mit Tags im IAM-Benutzerhandbuch.

Die folgenden Beispiele zeigen, wie Tag-Bedingungen in Richtlinien für API Gateway-Benutzer angegeben werden können.

Einschränken von Aktionen basierend auf Ressourcen-Tags

Die folgende Beispielrichtlinie erteilt Benutzern die Berechtigung zum Ausführen aller Aktionen für alle Ressourcen, sofern diese Ressourcen nicht über das Tag „Environment“ mit dem Wert „prod“ verfügen.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Environment": "prod" } } } ] }

Zulassen von Aktionen basierend auf Ressourcen-Tags

Die folgende Beispielrichtlinie erlaubt es Benutzern, alle Aktionen für API Gateway-Ressourcen auszuführen, sofern die Ressourcen über das Tag „Environment“ mit dem Wert „Development“ verfügen. Die Deny-Anweisung verhindert, dass der Benutzer den Wert des Environment-Tags ändert.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConditionallyAllow", "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:*::*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Environment": "Development" } } }, { "Sid": "AllowTagging", "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:*::/tags/*" ] }, { "Sid": "DenyChangingTag", "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:*::/tags/*" ], "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "Environment" } } } ] }

Tagging-Operationen verweigern

Die folgende Beispielrichtlinie erlaubt es Benutzern, alle API Gateway-Aktionen auszuführen, mit Ausnahme des Änderns von Tags.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": "arn:aws:apigateway:*::/tags*" } ] }

Tagging-Operationen erlauben

Die folgende Beispielrichtlinie erlaubt es Benutzern, alle API Gateway-Ressourcen abzurufen und die Tags für diese Ressourcen zu ändern. Um die Tags für eine Ressource abzurufen, muss der Benutzer über GET-Berechtigungen für diese Ressource verfügen. Um die Tags für eine Ressource zu aktualisieren, muss der Benutzer über PATCH-Berechtigungen für diese Ressource verfügen.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:GET", "apigateway:PUT", "apigateway:POST", "apigateway:DELETE" ], "Resource": [ "arn:aws:apigateway:*::/tags/*" ] }, { "Effect": "Allow", "Action": [ "apigateway:GET", "apigateway:PATCH" ], "Resource": [ "arn:aws:apigateway:*::*" ] } ] }