mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-01 15:35:51 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -4,26 +4,26 @@
|
||||
|
||||
## API Gateway
|
||||
|
||||
### Grundlegende Informationen
|
||||
### Grundinformationen
|
||||
|
||||
AWS API Gateway ist ein umfassender Dienst, der von Amazon Web Services (AWS) angeboten wird und für Entwickler konzipiert ist, um **APIs in großem Maßstab zu erstellen, zu veröffentlichen und zu überwachen**. Es fungiert als Einstiegspunkt zu einer Anwendung und ermöglicht es Entwicklern, einen Rahmen von Regeln und Verfahren festzulegen. Dieser Rahmen regelt den Zugriff externer Benutzer auf bestimmte Daten oder Funktionen innerhalb der Anwendung.
|
||||
AWS API Gateway ist ein umfassender Dienst, der von Amazon Web Services (AWS) angeboten wird und Entwicklern hilft, **APIs in großem Maßstab zu erstellen, zu veröffentlichen und zu überwachen**. Es fungiert als Einstiegspunkt zu einer Anwendung und ermöglicht es Entwicklern, einen Rahmen von Regeln und Verfahren festzulegen. Dieser Rahmen regelt den Zugriff externer Benutzer auf bestimmte Daten oder Funktionen innerhalb der Anwendung.
|
||||
|
||||
API Gateway ermöglicht es Ihnen, **zu definieren, wie Anfragen an Ihre APIs behandelt werden sollen**, und es kann benutzerdefinierte API-Endpunkte mit spezifischen Methoden (z. B. GET, POST, PUT, DELETE) und Ressourcen erstellen. Es kann auch Client-SDKs (Software Development Kits) generieren, um es Entwicklern zu erleichtern, Ihre APIs aus ihren Anwendungen heraus aufzurufen.
|
||||
API Gateway ermöglicht es Ihnen, **wie Anfragen an Ihre APIs behandelt werden sollen**, und es kann benutzerdefinierte API-Endpunkte mit spezifischen Methoden (z. B. GET, POST, PUT, DELETE) und Ressourcen erstellen. Es kann auch Client-SDKs (Software Development Kits) generieren, um es Entwicklern zu erleichtern, Ihre APIs aus ihren Anwendungen heraus aufzurufen.
|
||||
|
||||
### API Gateway-Typen
|
||||
### API Gateway Typen
|
||||
|
||||
- **HTTP API**: Erstellen Sie latenzarme und kostengünstige REST-APIs mit integrierten Funktionen wie OIDC und OAuth2 sowie nativer CORS-Unterstützung. Funktioniert mit: Lambda, HTTP-Backends.
|
||||
- **HTTP API**: Erstellen Sie latenzarme und kosteneffiziente REST-APIs mit integrierten Funktionen wie OIDC und OAuth2 sowie nativer CORS-Unterstützung. Funktioniert mit: Lambda, HTTP-Backends.
|
||||
- **WebSocket API**: Erstellen Sie eine WebSocket-API mit persistenten Verbindungen für Echtzeitanwendungen wie Chat-Anwendungen oder Dashboards. Funktioniert mit: Lambda, HTTP, AWS-Diensten.
|
||||
- **REST API**: Entwickeln Sie eine REST-API, bei der Sie die vollständige Kontrolle über die Anfrage und die Antwort sowie über die API-Verwaltungsmöglichkeiten haben. Funktioniert mit: Lambda, HTTP, AWS-Diensten.
|
||||
- **REST API**: Entwickeln Sie eine REST-API, bei der Sie die vollständige Kontrolle über die Anfrage und die Antwort sowie über die API-Management-Funktionen haben. Funktioniert mit: Lambda, HTTP, AWS-Diensten.
|
||||
- **REST API Privat**: Erstellen Sie eine REST-API, die nur von innerhalb eines VPC zugänglich ist.
|
||||
|
||||
### Hauptkomponenten des API Gateway
|
||||
|
||||
1. **Ressourcen**: In API Gateway sind Ressourcen die Komponenten, die **die Struktur Ihrer API bilden**. Sie repräsentieren **die verschiedenen Pfade oder Endpunkte** Ihrer API und entsprechen den verschiedenen Aktionen, die Ihre API unterstützt. Eine Ressource ist jede Methode (z. B. GET, POST, PUT, DELETE) **innerhalb jedes Pfades** (/, oder /users, oder /user/{id}).
|
||||
2. **Stufen**: Stufen in API Gateway repräsentieren **verschiedene Versionen oder Umgebungen** Ihrer API, wie Entwicklung, Staging oder Produktion. Sie können Stufen verwenden, um **mehrere Versionen Ihrer API gleichzeitig zu verwalten und bereitzustellen**, sodass Sie neue Funktionen oder Fehlerbehebungen testen können, ohne die Produktionsumgebung zu beeinträchtigen. Stufen unterstützen auch **Stufenvariablen**, die Schlüssel-Wert-Paare sind, die verwendet werden können, um das Verhalten Ihrer API basierend auf der aktuellen Stufe zu konfigurieren. Zum Beispiel könnten Sie Stufenvariablen verwenden, um API-Anfragen je nach Stufe an verschiedene Lambda-Funktionen oder andere Backend-Dienste weiterzuleiten.
|
||||
- Die Stufe wird am Anfang der URL des API Gateway-Endpunkts angezeigt.
|
||||
- Die Stufe wird zu Beginn der URL des API Gateway-Endpunkts angezeigt.
|
||||
3. **Autorisierer**: Autorisierer in API Gateway sind verantwortlich für **die Kontrolle des Zugriffs auf Ihre API**, indem sie die Identität des Anrufers überprüfen, bevor sie die Anfrage zulassen. Sie können **AWS Lambda-Funktionen** als benutzerdefinierte Autorisierer verwenden, was es Ihnen ermöglicht, Ihre eigene Authentifizierungs- und Autorisierungslogik zu implementieren. Wenn eine Anfrage eingeht, übergibt API Gateway das Autorisierungstoken der Anfrage an den Lambda-Autorisierer, der das Token verarbeitet und eine IAM-Richtlinie zurückgibt, die bestimmt, welche Aktionen der Anrufer ausführen darf. API Gateway unterstützt auch **eingebaute Autorisierer**, wie **AWS Identity and Access Management (IAM)** und **Amazon Cognito**.
|
||||
4. **Ressourcenrichtlinie**: Eine Ressourcenrichtlinie in API Gateway ist ein JSON-Dokument, das **die Berechtigungen für den Zugriff auf Ihre API definiert**. Sie ähnelt einer IAM-Richtlinie, ist jedoch speziell auf API Gateway zugeschnitten. Sie können eine Ressourcenrichtlinie verwenden, um zu steuern, wer auf Ihre API zugreifen kann, welche Methoden sie aufrufen können und von welchen IP-Adressen oder VPCs sie sich verbinden können. **Ressourcenrichtlinien können in Kombination mit Autorisierern verwendet werden**, um eine feingranulare Zugriffskontrolle für Ihre API bereitzustellen.
|
||||
4. **Ressourcenrichtlinie**: Eine Ressourcenrichtlinie in API Gateway ist ein JSON-Dokument, das **die Berechtigungen für den Zugriff auf Ihre API definiert**. Sie ist ähnlich wie eine IAM-Richtlinie, aber speziell für API Gateway zugeschnitten. Sie können eine Ressourcenrichtlinie verwenden, um zu steuern, wer auf Ihre API zugreifen kann, welche Methoden sie aufrufen können und von welchen IP-Adressen oder VPCs sie sich verbinden können. **Ressourcenrichtlinien können in Kombination mit Autorisierern verwendet werden**, um eine feingranulare Zugriffskontrolle für Ihre API bereitzustellen.
|
||||
- Um die Wirkung zu erzielen, muss die API **nach der Änderung der Ressourcenrichtlinie erneut bereitgestellt werden**.
|
||||
|
||||
### Protokollierung
|
||||
@@ -33,7 +33,7 @@ Standardmäßig sind **CloudWatch Logs** **deaktiviert**, **Zugriffsprotokollier
|
||||
### Enumeration
|
||||
|
||||
> [!TIP]
|
||||
> Beachten Sie, dass in beiden AWS-APIs zur Auflistung von Ressourcen (**`apigateway`** und **`apigatewayv2`**) die einzige Berechtigung, die Sie benötigen, und die einzige lesbare Berechtigung, die gewährt werden kann, **`apigateway:GET`** ist. Damit können Sie **alles auflisten.**
|
||||
> Beachten Sie, dass in beiden AWS-APIs zur Auflistung von Ressourcen (**`apigateway`** und **`apigatewayv2`**) die einzige Berechtigung, die Sie benötigen, und die einzige lesbare Berechtigung, die gewährt werden kann, **`apigateway:GET`** ist; damit können Sie **alles auflisten.**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="apigateway" }}
|
||||
@@ -145,17 +145,17 @@ Eine einfache Möglichkeit, das von der Anwendung erwartete Token zu generieren,
|
||||
```bash
|
||||
$ curl -X <method> https://<api-id>.execute-api.<region>.amazonaws.com/<stage>/<resource> --user <AWS_ACCESS_KEY>:<AWS_SECRET_KEY> --aws-sigv4 "aws:amz:<region>:execute-api"
|
||||
```
|
||||
Eine andere Möglichkeit besteht darin, den **`Authorization`**-Typ **`AWS Signature`** in **Postman** zu verwenden.
|
||||
Eine andere Möglichkeit ist die Verwendung des **`Authorization`** Typs **`AWS Signature`** in **Postman**.
|
||||
|
||||
<figure><img src="../../../images/image (168).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Setzen Sie den accessKey und den SecretKey des Kontos, das Sie verwenden möchten, und Sie können sich gegen den API-Endpunkt authentifizieren.
|
||||
|
||||
Beide Methoden generieren einen **Authorization**-**header** wie:
|
||||
Beide Methoden generieren einen **Authorization** **header** wie:
|
||||
```
|
||||
AWS4-HMAC-SHA256 Credential=AKIAYY7XU6ECUDOTWB7W/20220726/us-east-1/execute-api/aws4_request, SignedHeaders=host;x-amz-date, Signature=9f35579fa85c0d089c5a939e3d711362e92641e8c14cc571df8c71b4bc62a5c2
|
||||
```
|
||||
Beachten Sie, dass in anderen Fällen der **Authorizer** möglicherweise **schlecht codiert** wurde und das Senden von **irgendetwas** im **Authorization-Header** **erlaubt, den versteckten Inhalt zu sehen**.
|
||||
Beachten Sie, dass in anderen Fällen der **Authorizer** möglicherweise **schlecht codiert** wurde und das Senden von **irgendetwas** im **Authorization header** **es ermöglicht, den versteckten Inhalt zu sehen**.
|
||||
|
||||
### Request Signing Using Python
|
||||
```python
|
||||
@@ -184,14 +184,14 @@ response = requests.get(url, auth=awsauth)
|
||||
print(response.text)
|
||||
|
||||
```
|
||||
### Custom Lambda Authorizer
|
||||
### Benutzerdefinierter Lambda-Authorizer
|
||||
|
||||
Es ist möglich, eine Lambda zu verwenden, die basierend auf einem gegebenen Token eine **IAM-Richtlinie zurückgibt**, die angibt, ob der Benutzer **berechtigt ist, den API-Endpunkt aufzurufen**.\
|
||||
Es ist möglich, eine Lambda-Funktion zu verwenden, die basierend auf einem gegebenen Token eine **IAM-Richtlinie zurückgibt**, die angibt, ob der Benutzer **berechtigt ist, den API-Endpunkt aufzurufen**.\
|
||||
Sie können jede Ressourcenmethode festlegen, die den Authorizer verwenden wird.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Lambda Authorizer Code Example</summary>
|
||||
<summary>Beispielcode für den Lambda-Authorizer</summary>
|
||||
```python
|
||||
import json
|
||||
|
||||
@@ -236,7 +236,7 @@ return policy
|
||||
```
|
||||
</details>
|
||||
|
||||
Rufen Sie es mit etwas wie auf:
|
||||
Rufen Sie es mit etwas wie Folgendem auf:
|
||||
|
||||
<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"><strong>curl "https://jhhqafgh6f.execute-api.eu-west-1.amazonaws.com/prod/custom_auth" -H 'Authorization: your-secret-token'
|
||||
</strong></code></pre>
|
||||
@@ -256,7 +256,7 @@ Es ist möglich, API-Endpunkte festzulegen, die **einen gültigen API-Schlüssel
|
||||
|
||||
Es ist möglich, API-Schlüssel im API Gateway-Portal zu generieren und sogar festzulegen, wie oft sie verwendet werden können (in Bezug auf Anfragen pro Sekunde und in Bezug auf Anfragen pro Monat).
|
||||
|
||||
Um einen API-Schlüssel funktionsfähig zu machen, müssen Sie ihn zu einem **Nutzungsplan** hinzufügen, dieser Nutzungsplan muss zur **API-Stufe** hinzugefügt werden und die zugehörige API-Stufe muss eine konfigurierte **Methoden-Drosselung** für den **Endpunkt** haben, der den API-Schlüssel benötigt:
|
||||
Um einen API-Schlüssel funktionsfähig zu machen, müssen Sie ihn zu einem **Nutzungsplan** hinzufügen, dieser Nutzungsplan muss dem **API-Stadium** hinzugefügt werden und das zugehörige API-Stadium muss eine konfigurierte **Methoden-Drosselung** für den **Endpunkt** haben, der den API-Schlüssel benötigt:
|
||||
|
||||
<figure><img src="../../../images/image (198).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user