Beispiele für identitätsbasierte Amazon API Gateway-Richtlinien - Amazon API Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiele für identitätsbasierte Amazon API Gateway-Richtlinien

Standardmäßig verfügen IAM-Benutzer und -Rollen nicht über die Berechtigung zum Erstellen oder Ändern von API Gateway-Ressourcen. Sie können auch keine Aufgaben mit dem AWS-Managementkonsole AWS CLI, oder AWS SDKs ausführen. Ein IAM-Administrator muss IAM-Richtlinien erstellen, die Benutzern und Rollen die Berechtigung zum Ausführen bestimmter API-Operationen für die angegebenen Ressourcen gewähren, die diese benötigen. Der Administrator muss diese Richtlinien anschließend den IAM-Benutzern oder -Gruppen anfügen, die diese Berechtigungen benötigen.

Informationen zum Erstellen von IAM-Richtlinien finden Sie unter Erstellen von Richtlinien im JSON-Reiter im IAM-Benutzerhandbuch. Weitere Informationen zu den Aktionen, Ressourcen und Bedingungen, die für API Gateway spezifisch sind, finden Sie im Abschnitt Aktionen, Ressourcen und Bedingungsschlüssel für Amazon-API-Gateway-Management und Aktionen, Ressourcen und Bedingungsschlüssel für Amazon-API-Gateway-Management V2.

Best Practices für Richtlinien

Identitätsbasierte Richtlinien können festlegen, ob jemand API-Gateway-Ressourcen in Ihrem Konto erstellen, darauf zugreifen oder daraus löschen kann. Dies kann zusätzliche Kosten für Ihr verursachen AWS-Konto. Beachten Sie beim Erstellen oder Bearbeiten identitätsbasierter Richtlinien die folgenden Richtlinien und Empfehlungen:

  • Erste Schritte mit AWS verwalteten Richtlinien und Umstellung auf Berechtigungen mit den geringsten Rechten — Verwenden Sie die AWS verwalteten Richtlinien, die Berechtigungen für viele gängige Anwendungsfälle gewähren, um damit zu beginnen, Ihren Benutzern und Workloads Berechtigungen zu gewähren. Sie sind in Ihrem verfügbar. AWS-Konto Wir empfehlen Ihnen, die Berechtigungen weiter zu reduzieren, indem Sie vom AWS Kunden verwaltete Richtlinien definieren, die speziell auf Ihre Anwendungsfälle zugeschnitten sind. Weitere Informationen finden Sie unter Von AWS verwaltete Richtlinien oder Von AWS verwaltete Richtlinien für Auftragsfunktionen im IAM-Benutzerhandbuch.

  • Anwendung von Berechtigungen mit den geringsten Rechten – Wenn Sie mit IAM-Richtlinien Berechtigungen festlegen, gewähren Sie nur die Berechtigungen, die für die Durchführung einer Aufgabe erforderlich sind. Sie tun dies, indem Sie die Aktionen definieren, die für bestimmte Ressourcen unter bestimmten Bedingungen durchgeführt werden können, auch bekannt als die geringsten Berechtigungen. Weitere Informationen zur Verwendung von IAM zum Anwenden von Berechtigungen finden Sie unter Richtlinien und Berechtigungen in IAM im IAM-Benutzerhandbuch.

  • Verwenden von Bedingungen in IAM-Richtlinien zur weiteren Einschränkung des Zugriffs – Sie können Ihren Richtlinien eine Bedingung hinzufügen, um den Zugriff auf Aktionen und Ressourcen zu beschränken. Sie können beispielsweise eine Richtlinienbedingung schreiben, um festzulegen, dass alle Anforderungen mithilfe von SSL gesendet werden müssen. Sie können auch Bedingungen verwenden, um Zugriff auf Serviceaktionen zu gewähren, wenn diese für einen bestimmten Zweck verwendet werden AWS-Service, z. CloudFormation B. Weitere Informationen finden Sie unter IAM-JSON-Richtlinienelemente: Bedingung im IAM-Benutzerhandbuch.

  • Verwenden von IAM Access Analyzer zur Validierung Ihrer IAM-Richtlinien, um sichere und funktionale Berechtigungen zu gewährleisten – IAM Access Analyzer validiert neue und vorhandene Richtlinien, damit die Richtlinien der IAM-Richtliniensprache (JSON) und den bewährten IAM-Methoden entsprechen. IAM Access Analyzer stellt mehr als 100 Richtlinienprüfungen und umsetzbare Empfehlungen zur Verfügung, damit Sie sichere und funktionale Richtlinien erstellen können. Weitere Informationen finden Sie unter Richtlinienvalidierung mit IAM Access Analyzer im IAM-Benutzerhandbuch.

  • Multi-Faktor-Authentifizierung (MFA) erforderlich — Wenn Sie ein Szenario haben, das IAM-Benutzer oder einen Root-Benutzer in Ihrem System erfordert AWS-Konto, aktivieren Sie MFA für zusätzliche Sicherheit. Um MFA beim Aufrufen von API-Vorgängen anzufordern, fügen Sie Ihren Richtlinien MFA-Bedingungen hinzu. Weitere Informationen finden Sie unter Sicherer API-Zugriff mit MFA im IAM-Benutzerhandbuch.

Weitere Informationen zu bewährten Methoden in IAM finden Sie unter Best Practices für die Sicherheit in IAM im IAM-Benutzerhandbuch.

Gewähren der Berechtigung zur Anzeige der eigenen Berechtigungen für Benutzer

In diesem Beispiel wird gezeigt, wie Sie eine Richtlinie erstellen, die IAM-Benutzern die Berechtigung zum Anzeigen der eingebundenen Richtlinien und verwalteten Richtlinien gewährt, die ihrer Benutzeridentität angefügt sind. Diese Richtlinie umfasst Berechtigungen zum Ausführen dieser Aktion auf der Konsole oder programmgesteuert mithilfe der API oder. AWS CLI AWS

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Einfache Leseberechtigungen

Diese Beispielrichtlinie gibt einem Benutzer die Erlaubnis, Informationen über alle Ressourcen eines HTTP- oder WebSocket API-Codes mit der ID a123456789 in der AWS Region us-east-1 abzurufen. Die Ressource arn:aws:apigateway:us-east-1::/apis/a123456789/* umfasst alle Unterressourcen der API, wie Autorisierer und Bereitstellungen.

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

Nur REQUEST- oder JWT-Autorisierer erstellen

Diese Beispielrichtlinie ermöglicht es einem Benutzer, nur APIs mit REQUEST oder mit JWT Autorisierern zu erstellen, auch durch Import. Im Resource-Abschnitt der Richtlinie arn:aws:apigateway:us-east-1::/apis/?????????? ist festgelegt, dass Ressourcen maximal 10 Zeichen haben, was Unterressourcen einer API ausschließt. Dieses Beispiel verwenden ForAllValues im Condition-Abschnitt, da Benutzer mehrere Autorisierer gleichzeitig erstellen können, indem sie eine API importieren.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OnlyAllowSomeAuthorizerTypes", "Effect": "Allow", "Action": [ "apigateway:PUT", "apigateway:POST", "apigateway:PATCH" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis", "arn:aws:apigateway:us-east-1::/apis/??????????", "arn:aws:apigateway:us-east-1::/apis/*/authorizers", "arn:aws:apigateway:us-east-1::/apis/*/authorizers/*" ], "Condition": { "ForAllValues:StringEqualsIfExists": { "apigateway:Request/AuthorizerType": [ "REQUEST", "JWT" ] } } } ] }

Erfordern, dass der execute-api-Standard-Endpunkt deaktiviert ist

Diese Beispielrichtlinie ermöglicht es Benutzern, eine API mit der Anforderung, dass DisableExecuteApiEndpoint true ist, zu erstellen, zu aktualisieren oder zu importieren. Wenn DisableExecuteApiEndpoint true ist, können Clients den execute-api-Standard-Endpunkt nicht zum Aufrufen einer API verwenden.

Wir verwenden die BoolIfExists-Bedingung, um einen Aufruf zur Aktualisierung einer API zu bearbeiten, für die der DisableExecuteApiEndpoint-Bedingungsschlüssel nicht ausgefüllt ist. Wenn ein Benutzer versucht, eine API zu erstellen oder zu importieren, wird der DisableExecuteApiEndpoint-Bedingungsschlüssel immer ausgefüllt.

Da die apis/* Ressource auch Unterressourcen wie Autorisierer oder Methoden erfasst, beschränken wir sie ausdrücklich nur APIs auf eine Anweisung. Deny

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DisableExecuteApiEndpoint", "Effect": "Allow", "Action": [ "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis", "arn:aws:apigateway:us-east-1::/apis/*" ], "Condition": { "BoolIfExists": { "apigateway:Request/DisableExecuteApiEndpoint": true } } }, { "Sid": "ScopeDownToJustApis", "Effect": "Deny", "Action": [ "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis/*/*" ] } ] }

Erlaubt Benutzern, nur private REST-Dateien zu erstellen oder zu aktualisieren APIs

Diese Beispielrichtlinie verwendet Bedingungsschlüssel, um zu verlangen, dass ein Benutzer nur etwas erstellt PRIVATE APIs, und um zu verhindern, dass Updates, die eine API von PRIVATE einem anderen Typ ändern könnten, wie REGIONAL z.

Wir verwenden ForAllValues, um zu verlangen, dass jeder EndpointType, der einer API hinzugefügt wird, PRIVATE ist. Wir verwenden einen Ressourcenbedingungsschlüssel, um jedes Update für eine API zu ermöglichen, solange es PRIVATE ist. ForAllValues gilt nur, wenn ein Bedingungsschlüssel vorhanden ist.

Wir verwenden den Non-Greedy Matcher (?) für einen expliziten Abgleich mit der API, um zu verhindern, dass Ressourcen, die nicht IDs zur API gehören, wie Autorisierer, zugelassen werden.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ScopePutToPrivateApis", "Effect": "Allow", "Action": [ "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis", "arn:aws:apigateway:us-east-1::/restapis/??????????" ], "Condition": { "ForAllValues:StringEquals": { "apigateway:Resource/EndpointType": "PRIVATE" } } }, { "Sid": "ScopeToPrivateApis", "Effect": "Allow", "Action": [ "apigateway:DELETE", "apigateway:PATCH", "apigateway:POST" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis", "arn:aws:apigateway:us-east-1::/restapis/??????????" ], "Condition": { "ForAllValues:StringEquals": { "apigateway:Request/EndpointType": "PRIVATE", "apigateway:Resource/EndpointType": "PRIVATE" } } }, { "Sid": "AllowResourcePolicyUpdates", "Effect": "Allow", "Action": [ "apigateway:UpdateRestApiPolicy" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis/*" ] } ] }

Erfordern, dass API-Routen Autorisierung haben

Diese Richtlinie führt dazu, dass Versuche, eine Route zu erstellen oder zu aktualisieren (einschließlich durch Import), fehlschlagen, wenn die Route keine Autorisierung hat. ForAnyValue wird als „false“ ausgewertet, wenn der Schlüssel nicht vorhanden ist, z. B. wenn eine Route nicht erstellt oder aktualisiert wird. Wir verwenden ForAnyValue, da durch den Import mehrere Routen erstellt werden können.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowUpdatesOnApisAndRoutes", "Effect": "Allow", "Action": [ "apigateway:POST", "apigateway:PATCH", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis", "arn:aws:apigateway:us-east-1::/apis/??????????", "arn:aws:apigateway:us-east-1::/apis/*/routes", "arn:aws:apigateway:us-east-1::/apis/*/routes/*" ] }, { "Sid": "DenyUnauthorizedRoutes", "Effect": "Deny", "Action": [ "apigateway:POST", "apigateway:PATCH", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis", "arn:aws:apigateway:us-east-1::/apis/*" ], "Condition": { "ForAnyValue:StringEqualsIgnoreCase": { "apigateway:Request/RouteAuthorizationType": "NONE" } } } ] }

Diese Richtlinie verhindert, dass ein Benutzer einen VPC-Link erstellt oder aktualisiert. Ein VPC-Link ermöglicht es Ihnen, Ressourcen innerhalb einer Amazon VPC an Clients außerhalb der VPC bereitzustellen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DenyVPCLink", "Effect": "Deny", "Action": [ "apigateway:POST", "apigateway:PUT", "apigateway:PATCH" ], "Resource": [ "arn:aws:apigateway:us-east-1::/vpclinks", "arn:aws:apigateway:us-east-1::/vpclinks/*" ] } ] }

Beispielrichtlinien für die Verwendung von Routing-Regeln

Die folgenden Beispielrichtlinien zeigen, wie Sie mithilfe der RoutingRule Bedingungsschlüssel steuern können, wie Benutzer Traffic von ihren benutzerdefinierten Domainnamen zu ihrem REST weiterleiten können. APIs Sie können diese Beispiele verwenden, um detaillierte Richtlinien zu erstellen, welche Arten von Routing-Regeln Benutzer festlegen dürfen. Weitere Informationen finden Sie unter Routing-Regeln zum Verbinden von API-Stufen mit einem benutzerdefinierten Domainnamen für REST APIs.

Verhindern, dass ein Benutzer die Art und Weise der Weiterleitung von Anfragen durch einen benutzerdefinierten Domainnamen ändert

Diese Richtlinie verhindert, dass ein Benutzer BasePathMapping, ApiMapping oder RoutingRule erstellt oder aktualisiert. All diese Ressourcen können die Art und Weise ändern, an die ein benutzerdefinierter Domainname Anfragen weiterleitet APIs.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "DenyAccessBasePathMappingsApiMappingsRoutingRules", "Effect": "Deny", "Action": "apigateway:*", "Resource": [ "arn:aws:apigateway:us-east-1::/domainnames/example.com/basepathmappings/*", "arn:aws:apigateway:us-east-1::/domainnames/example.com/apimappings/*", "arn:aws:apigateway:us-east-1:111122223333:/domainnames/example.com/routingrules/*" ] } ] }

Benutzern erlauben, eine Routing-Regel für bestimmte Prioritäten zu aktualisieren

Diese Richtlinie erlaubt einem Benutzer nur, eine Routing-Regel auf eine Priorität zwischen 1 001 und 2 000 zu aktualisieren. Sie können diese Regel verwenden, um Ihre Produktionsregeln von Regeln mit niedrigerer Priorität zu trennen und Benutzern zu erlauben, Regeln mit niedrigerer Priorität zu ändern, ohne dass dies Auswirkungen auf die Produktionsregeln hat.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "UpdatingRoutingRulePriorityBetween1001And2000", "Effect": "Allow", "Action": "apigateway:UpdateRoutingRule", "Resource": "arn:aws:apigateway:us-east-1:111122223333:/domainnames/example.com/routingrules/*", "Condition": { "NumericGreaterThanEquals": { "apigateway:Resource/Priority": 1001, "apigateway:Request/Priority": 1001 }, "NumericLessThanEquals": { "apigateway:Resource/Priority": 2000, "apigateway:Request/Priority": 2000 } } } ] }

Benutzern erlauben, eine Routing-Regel oder eine Basispfadzuweisung für einen bestimmten Basispfadwert zu aktualisieren

Diese Richtlinie erlaubt es einem Benutzer nur, eine Basispfadzuweisung für jeden Basispfad zu aktualisieren, der mit orders beginnt, oder eine Routing-Regel zu aktualisieren, die zu einem Basispfad passt, der mit orders beginnt. Aufgrund dieser Richtlinie kann ein Benutzer eine Basispfadzuweisung oder eine Routing-Regel für orders/create oder orders123 aktualisieren, aber nicht für payment/orders.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowUpdateRoutingRuleUnderPathOrders", "Effect": "Allow", "Action": "apigateway:UpdateRoutingRule", "Resource": "arn:aws:apigateway:us-east-1:111122223333:/domainnames/example.com/routingrules/*", "Condition": { "ForAllValues:StringLike": { "apigateway:Request/ConditionBasePaths": ["orders*"], "apigateway:Resource/ConditionBasePaths": ["orders*"] }, "Null":{ "apigateway:Request/ConditionBasePaths":"false", "apigateway:Resource/ConditionBasePaths":"false" } } } ] }

Benutzern erlauben, den Routing-Modus auf bestimmte Werte zu aktualisieren

Diese Richtlinie erlaubt einem Benutzer, nur den Routing-Modus auf API_MAPPING_ONLY oder ROUTING_RULE_THEN_API_MAPPING zu aktualisieren. Weitere Informationen zum Routing-Modus finden Sie unter Festlegen des Routing-Modus für Ihren benutzerdefinierten Domainnamen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowUpdateRoutingModeToAnythingWithApiMapping", "Effect": "Allow", "Action": ["apigateway:PATCH"], "Resource": "arn:aws:apigateway:us-east-1::/domainnames/example.com", "Condition": { "StringLike": { "apigateway:Request/RoutingMode":"*API_MAPPING*" } } } ] }