So beeinflussen API Gateway-Ressourcenrichtlinien den Autorisierungs-Workflow - 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.

So beeinflussen API Gateway-Ressourcenrichtlinien den Autorisierungs-Workflow

Wenn API Gateway die an die API angefügte Ressourcenrichtlinie ausgewertet wird, wird das Ergebnis vom Authentifizierungstyp beeinflusst, den Sie für die API definiert haben, wie in den Ablaufdiagrammen in den folgenden Abschnitten dargestellt.

Nur API Gateway-Ressourcenrichtlinie

In diesem Workflow wird eine API Gateway-Ressourcenrichtlinie an die API angehängt. Es wird jedoch kein Authentifizierungstyp für die API definiert. Die Bewertung der Richtlinie beinhaltet das Suchen nach einer expliziten Erlaubnis basierend auf den eingehenden Kriterien des Aufrufers. Eine implizite Verweigerung oder eine explizite Verweigerung führt dazu, dass der Aufrufer abgelehnt wird.

Im Folgenden finden Sie ein Beispiel für eine solche Ressourcenrichtlinie.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:region:account-id:api-id/", "Condition": { "IpAddress": { "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

Lambda-Genehmiger und Ressourcenrichtlinie

In diesem Workflow wird zusätzlich zu einer Ressourcenrichtlinie ein Lambda-Genehmiger für die API konfiguriert. Die Ressourcenrichtlinie wird in zwei Phasen ausgewertet. Bevor der Lambda-Genehmiger aufgerufen wird, evaluiert API Gateway zunächst die Richtlinie und prüft auf eine explizite Verweigerung. Wenn dies der Fall ist, wird dem Aufrufer der Zugriff sofort verweigert. Andernfalls wird der Lambda-Genehmiger aufgerufen, und es wird ein Richtliniendokument zurückgegeben, das in Verbindung mit der Ressourcenrichtlinie ausgewertet wird. Das Ergebnis wird anhand von Tabelle A ermittelt.

Die folgende Beispielressourcenrichtlinie ermöglicht Aufrufe nur vom VPC-Endpunkt, dessen VPC-Endpunkt-ID lautetvpce-1a2b3c4d. Während der "Pre-Auth"-Evaluierung können nur die Aufrufe von dem im Beispiel angegebenen VPC-Endpunkt vorwärts gehen und den Lambda-Genehmiger auswerten. Alle verbleibenden Aufrufe werden blockiert.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/" ], "Condition" : { "StringNotEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }

IAM-Authentifizierung und Ressourcenrichtlinie

In diesem Workflow wird die IAM-Authentifizierung für die API zusätzlich zu einer Ressourcenrichtlinie konfiguriert. Nach dem Authentifizieren des Benutzers mit dem IAM-Service wertet die API die dem Benutzer zugeordneten Richtlinien und die Ressourcenrichtlinie aus. Das Ergebnis hängt davon ab, ob sich der Aufrufer in derselben AWS-Konto oder einer anderen Gruppe AWS-Konto als der API-Besitzer befindet.

Wenn der Aufrufer und der API-Besitzer aus separaten Konten stammen, erlauben sowohl die IAM-Richtlinien als auch die Ressourcenrichtlinie dem Aufrufer explizit, fortzufahren. Weitere Informationen finden Sie in Tabelle B.

Wenn sich der Aufrufer und der API-Besitzer allerdings im selben AWS-Konto befinden, müssen die Benutzerrichtlinien oder die Ressourcenrichtlinie dem Aufrufer ausdrücklich erlauben, fortzufahren. Weitere Informationen finden Sie in Tabelle A.

Im Folgenden finden Sie ein Beispiel für eine kontoübergreifende Ressourcenrichtlinie. Unter der Annahme, dass die IAM-Richtlinie einen Zulassungseffekt enthält, erlaubt diese Ressourcenrichtlinie Aufrufe nur von der VPC, deren VPC-ID vpc-2f09a348 ist. Weitere Informationen finden Sie in Tabelle B.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:region:account-id:api-id/" ], "Condition" : { "StringEquals": { "aws:SourceVpc": "vpc-2f09a348" } } } ] }

Amazon Cognito-Authentifizierung und Ressourcenrichtlinie

In diesem Workflow wird zusätzlich zu einer Ressourcenrichtlinie ein Amazon Cognito-Benutzerpool für die API konfiguriert. API Gateway versucht zunächst, den Aufrufer über Amazon Cognito zu authentifizieren. Dies wird in der Regel über ein JWT-Token durchgeführt, das vom Aufrufer bereitgestellt wird. Wenn die Authentifizierung erfolgreich ist, wird die Ressourcenrichtlinie unabhängig ausgewertet und eine explizite Genehmigung erforderlich. Eine Zugriffsverweigerung oder weder "Allow" (Zugriffserlaubnis) oder "Deny" (Zugriffsverweigerung) führt zu einer Zugriffsverweigerung. Es folgt ein Beispiel für eine Ressourcenrichtlinie, die zusammen mit Amazon Cognito-Benutzerpools verwendet werden könnte.

Es folgt ein Beispiel für eine Ressourcenrichtlinie, die Aufrufe nur von angegebenen Quell-IPs zulässt, wobei davon ausgegangen wird, dass das Authentifizierungstoken von Amazon Cognito eine Erlaubnis enthält. Weitere Informationen finden Sie in Tabelle B.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:region:account-id:api-id/", "Condition": { "IpAddress": { "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

Ergebnistabellen für die Richtlinienauswertung

In Tabelle A ist das Verhalten aufgeführt, das entsteht, wenn der Zugriff auf eine API-Gateway-API durch eine IAM-Richtlinie oder einen Lambda-Authorizer und eine API-Gateway-Ressourcenrichtlinie gesteuert wird, die sich beide in derselben befinden. AWS-Konto

Tabelle A: Konto A ruft eine API auf, die Konto A gehört
IAM-Richtlinie (oder Lambda-Autorisierer) API Gateway-Ressourcenrichtlinie Resultierendes Verhalten
Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf
Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Weder Zulassen noch Verweigern Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf
Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Deny Explizite Zugriffsverweigerung
Weder Zulassen noch Verweigern Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf
Weder Zulassen noch Verweigern Weder Zulassen noch Verweigern Implizite Zugriffsverweigerung
Weder Zulassen noch Verweigern Deny Explizite Zugriffsverweigerung
Deny Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Explizite Zugriffsverweigerung
Deny Weder Zulassen noch Verweigern Explizite Zugriffsverweigerung
Deny Deny Explizite Zugriffsverweigerung

In Tabelle B ist das Verhalten aufgeführt, das entsteht, wenn der Zugriff auf eine API-Gateway-API durch eine IAM-Richtlinie gesteuert wird oder ein Amazon Cognito Cognito-Benutzerpool-Autorisierer und eine API Gateway Gateway-Ressourcenrichtlinie, die sich unterscheiden, gesteuert wird. AWS-Konten Wenn einer der beiden Parameter nicht zulässt (weder zulassen noch verweigern), wird der kontoübergreifende Zugriff verweigert. Dies liegt daran, dass der kontoübergreifende Zugriff erfordert, dass sowohl die Ressourcenrichtlinie als auch die IAM-Richtlinie oder der Autorisierer für Amazon Cognito Cognito-Benutzerpools explizit Zugriff gewähren.

Tabelle B: Konto B ruft eine API auf, die Konto A gehört
IAM-Richtlinie (oder Autorisierer für Amazon Cognito Cognito-Benutzerpools) API Gateway-Ressourcenrichtlinie Resultierendes Verhalten
Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf
Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Weder Zulassen noch Verweigern Implizite Zugriffsverweigerung
Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Deny Explizite Zugriffsverweigerung
Weder Zulassen noch Verweigern Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Implizite Zugriffsverweigerung
Weder Zulassen noch Verweigern Weder Zulassen noch Verweigern Implizite Zugriffsverweigerung
Weder Zulassen noch Verweigern Deny Explizite Zugriffsverweigerung
Deny Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf Explizite Zugriffsverweigerung
Deny Weder Zulassen noch Verweigern Explizite Zugriffsverweigerung
Deny Deny Explizite Zugriffsverweigerung