So beeinflussen API Gateway-Ressourcenrichtlinien den Autorisierungs-Workflow - Amazon API Gateway

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 basierend auf der folgenden Tabelle A (am Ende dieses Themas) bestimmt.

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 im selben AWS-Konto oder einem anderen 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. (Siehe Tabelle B am Ende dieses Themas.) 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. (Siehe nachfolgende 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. (Siehe Tabelle B am Ende dieses Themas.)

{ "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. (Siehe Tabelle A am Ende dieses Themas.)

{ "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

Tabelle A listet das jeweilige Verhalten auf, wenn der Zugriff auf eine API-Gateway-API durch eine IAM-Richtlinie (oder einen Genehmiger für Lambda- oder Amazon Cognito-Benutzerpools) und eine API-Gateway-Ressourcenrichtlinie gesteuert wird, die sich beide im selben AWS-Konto befinden.

Tabelle A: Konto A ruft eine API auf, die Konto A gehört
IAM-Richtlinie (oder ein Lambda- oder Amazon Cognito-Benutzerpool-Genehmiger) 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

Tabelle B listet das jeweilige Verhalten auf, wenn der Zugriff auf eine API-Gateway-API durch eine IAM-Richtlinie (oder einen Lambda- oder Amazon Cognito-Benutzerpool-Genehmiger) und eine API-Gateway-Ressourcenrichtlinie gesteuert wird, die sich in verschiedenen AWS-Konten befinden. Wenn einer der beiden Parameter nicht zulässt (weder zulassen noch verweigern), wird der kontoübergreifende Zugriff verweigert. Der kontoübergreifende Zugriff erfordert, dass sowohl die Ressourcenrichtlinie als auch die IAM-Richtlinie (oder ein Lambda- oder Amazon Cognito-Benutzerpool-Genehmiger) den Zugriff ausdrücklich gewähren.

Tabelle B: Konto B ruft eine API auf, die Konto A gehört
IAM-Richtlinie (oder ein Lambda- oder Amazon Cognito-Benutzerpool-Genehmiger) 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