Beispiele für identitätsbasierte Richtlinien von Amazon API Gateway - APIAmazon-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 Richtlinien von Amazon API Gateway

Standardmäßig sind IAM Benutzer und Rollen nicht berechtigt, API Gateway-Ressourcen zu erstellen oder zu ändern. Sie können auch keine Aufgaben mit dem AWS Management Console AWS CLI, oder ausführen AWS SDKs. Ein IAM Administrator muss IAM Richtlinien erstellen, die Benutzern und Rollen die Berechtigung gewähren, bestimmte API Operationen mit den angegebenen Ressourcen auszuführen, die sie benötigen. Der Administrator muss diese Richtlinien dann den IAM Benutzern oder Gruppen zuordnen, für die diese Berechtigungen erforderlich sind.

Informationen zum Erstellen von IAM Richtlinien finden Sie im IAMBenutzerhandbuch unter „Richtlinien erstellen“ auf der JSON Registerkarte. Informationen zu den spezifischen Aktionen, Ressourcen und Bedingungen für API Gateway finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für Amazon API Gateway Management und Aktionen, Ressourcen und Bedingungsschlüssel für Amazon API Gateway Management V2.

Bewährte Methoden für Richtlinien

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

  • Beginnen Sie mit AWS verwalteten Richtlinien und wechseln Sie zu Berechtigungen mit den geringsten Rechten — Verwenden Sie die AWS verwalteten Richtlinien, die Berechtigungen für viele gängige Anwendungsfälle gewähren, um Ihren Benutzern und Workloads zunächst 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 AWS im IAMBenutzerhandbuch unter AWS Verwaltete Richtlinien oder Verwaltete Richtlinien für Jobfunktionen.

  • Berechtigungen mit den geringsten Rechten anwenden — Wenn Sie Berechtigungen mit IAM Richtlinien festlegen, gewähren Sie nur die Berechtigungen, die für die Ausfü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 IAM zum Anwenden von Berechtigungen finden Sie IAMim Benutzerhandbuch unter Richtlinien und Berechtigungen. IAM

  • Verwenden Sie Bedingungen in IAM Richtlinien, um den Zugriff weiter einzuschränken — Sie können Ihren Richtlinien eine Bedingung hinzufügen, um den Zugriff auf Aktionen und Ressourcen einzuschränken. Sie können beispielsweise eine Richtlinienbedingung schreiben, um anzugeben, dass alle Anfragen mit gesendet werden müssenSSL. Sie können auch Bedingungen verwenden, um Zugriff auf Serviceaktionen zu gewähren, wenn diese über einen bestimmten Zweck verwendet werden AWS-Service, z. AWS CloudFormation B. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter IAMJSONRichtlinienelemente: Bedingung.

  • Verwenden Sie IAM Access Analyzer, um Ihre IAM Richtlinien zu validieren, um sichere und funktionale Berechtigungen zu gewährleisten. IAM Access Analyzer validiert neue und bestehende Richtlinien, sodass die Richtlinien der IAM Richtliniensprache (JSON) und den IAM bewährten Methoden entsprechen. IAMAccess Analyzer bietet mehr als 100 Richtlinienprüfungen und umsetzbare Empfehlungen, um Sie bei der Erstellung sicherer und funktionaler Richtlinien zu unterstützen. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter Überprüfen von Richtlinien mit IAM Access Analyzer.

  • Multi-Faktor-Authentifizierung erforderlich (MFA) — Wenn Sie ein Szenario haben, in dem IAM Benutzer oder ein Root-Benutzer erforderlich sind AWS-Konto, aktivieren Sie die Option MFA für zusätzliche Sicherheit. Wenn Sie festlegen möchten, MFA wann API Operationen aufgerufen werden, fügen Sie MFA Bedingungen zu Ihren Richtlinien hinzu. Weitere Informationen finden Sie unter Sicherer API Zugriff mit MFA im IAMBenutzerhandbuch.

Weitere Informationen zu bewährten Methoden finden Sie unter Bewährte Sicherheitsmethoden IAM im IAM Benutzerhandbuch. IAM

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

Dieses Beispiel zeigt, wie Sie eine Richtlinie erstellen könnten, die es IAM Benutzern ermöglicht, die internen und verwalteten Richtlinien einzusehen, die mit ihrer Benutzeridentität verknüpft sind. Diese Richtlinie umfasst Berechtigungen zum Ausführen dieser Aktion auf der Konsole oder programmgesteuert mithilfe von oder. AWS CLI AWS API

{ "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 einer HTTP oder WebSocket API mit der Kennung a123456789 in der AWS Region us-east-1 abzurufen. Die Ressource arn:aws:apigateway:us-east-1::/apis/a123456789/* umfasst alle Unterressourcen API wie Autorisierer und Bereitstellungen.

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

Nur für Autorisierer erstellen REQUEST JWT

Diese Beispielrichtlinie ermöglicht es einem Benutzer, nur APIs mit REQUEST oder mit JWT Autorisierern zu erstellen, auch durch Import. In Resource diesem Abschnitt der Richtlinie müssen Ressourcen maximal 10 Zeichen lang sein. Davon ausgenommen sind Unterressourcen von. arn:aws:apigateway:us-east-1::/apis/?????????? API In diesem Beispiel wird ForAllValues in dem Condition Abschnitt verwendet, da Benutzer mehrere Autorisierer gleichzeitig erstellen können, indem sie einen importieren. API

{ "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 zu erstellen, zu aktualisieren oder zu importierenAPI, mit der entsprechenden Anforderung. DisableExecuteApiEndpoint true Wenn dies DisableExecuteApiEndpoint der true Fall ist, können Clients den execute-api Standardendpunkt nicht verwenden, um einen API aufzurufen.

Wir verwenden die BoolIfExists Bedingung, um einen Aktualisierungsaufruf zu bearbeitenAPI, bei dem der DisableExecuteApiEndpoint Bedingungsschlüssel nicht ausgefüllt ist. Wenn ein Benutzer versucht, eine zu erstellen oder zu importierenAPI, wird der DisableExecuteApiEndpoint Bedingungsschlüssel immer aufgefüllt.

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

{ "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 Daten zu erstellen oder zu aktualisieren REST APIs

In dieser Beispielrichtlinie werden Bedingungsschlüssel verwendet, um zu verlangen, dass ein Benutzer nur etwas erstellt PRIVATEAPIs, und um zu verhindern, dass Aktualisierungen API von einem anderen Typ PRIVATE zu einem anderen Typ geändert REGIONAL werden, wie z.

Wir haben ForAllValues früher verlangt, dass jedes EndpointType Hinzufügen zu einem API istPRIVATE. Wir verwenden einen Ressourcenzustandsschlüssel, um jedes Update API so lange wie möglich zuzulassenPRIVATE. ForAllValuesgilt nur, wenn ein Bedingungsschlüssel vorhanden ist.

Wir verwenden den non-greedy matcher (?) für einen expliziten Abgleich, um API IDs zu verhindern, dass API Ressourcen wie Autorisierer zugelassen werden.

{ "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/*" ] } ] }

Erfordert, dass Routen autorisiert sind API

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.

{ "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. Über einen VPC Link können Sie Ressourcen innerhalb eines Amazon VPC für Kunden außerhalb des verfügbar machenVPC.

{ "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/*" ] } ] }