Translated ['src/pentesting-cloud/azure-security/az-services/az-containe

This commit is contained in:
Translator
2025-02-25 22:31:02 +00:00
parent 2187a3e6d7
commit 47a1a2df69

View File

@@ -0,0 +1,116 @@
# Az - Container Instances
{{#include ../../../banners/hacktricks-training.md}}
## Grundinformationen
**Azure Container Instances (ACI)** ist ein serverloser Container-Dienst, der es Ihnen ermöglicht, einzelne Container schnell auszuführen, ohne die zugrunde liegende Infrastruktur verwalten zu müssen. **Azure Container Apps (ACA)** erweitert dies, indem es eine vollständig verwaltete Umgebung für das Ausführen von Mikrodiensten und Webanwendungen mit Funktionen wie ereignisgesteuertem Autoscaling, integrierter Dapr-Integration und Unterstützung für komplexe Orchestrierungsszenarien bietet. **Container App Jobs** sind eine spezialisierte Funktion innerhalb von ACA, die für das Ausführen von kurzlebigen, Batch- oder geplanten Aufgaben konzipiert ist, die für einen bestimmten Zeitraum ausgeführt werden und dann beendet werden.
Unterschiede:
- ACI ist ideal für **einfache**, eigenständige Container-Workloads, bei denen minimale Orchestrierung erforderlich ist.
- ACA eignet sich am besten für den Aufbau skalierbarer, miteinander verbundener Mikrodienste mit erweiterten Funktionen wie Autoscaling und Dienstentdeckung.
- Container App Jobs konzentrieren sich auf **einmalige oder geplante Aufgaben** und bieten eine vereinfachte Möglichkeit, Hintergrund- oder Batch-Jobs innerhalb der ACA-Umgebung auszuführen.
### Konfigurationen
Besondere Optionen für **ACI**:
- In Bezug auf das Netzwerk ist es möglich, eine dieser 3 Optionen auszuwählen:
- **Öffentlich** (Standard)
- **Privat** (nur vom VNet aus zugänglich)
- **Keine** (kein Netzwerkzugang)
Besondere Optionen für **ACA**:
- Es ist möglich, den **Verkehr** zum Container auf die Container-App-Umgebung zu beschränken oder ihn öffentlich zu lassen.
- Es ist möglich, einen **externen Identitätsanbieter** (Microsoft, Facebook, Google und Twitter) für die Authentifizierung zu verwenden.
- Es ist möglich, **App-Geheimnisse** (im Klartext oder als Links zu einem Tresor, dem ein MI mit Zugriff zugewiesen ist) zu speichern.
- Es ist möglich, **Revisionen und Replikate der App** zu haben.
- Es ist möglich, aus einem bestimmten **Quellcode oder Artefakt** zu deployen, anstatt einen Container zu verwenden. Für den Quellcode muss der Zugriff auf GitHub gewährt werden. Für Artefakte ist es möglich, diese nach der Erstellung der App hochzuladen.
Besondere Optionen für **Jobs**:
- Der Auslösertyp kann **manuell, geplant oder ereignisbasiert** sein (wie das Eintreffen einer Nachricht in einer Warteschlange).
Gemeinsame Optionen:
- Um einen Container zu erstellen, ist es möglich, ein öffentliches Image, ein Container-Image aus einem Azure Container Registry oder ein externes Repository zu verwenden, was möglicherweise **eine Passwortkonfiguration** zum Zugriff erfordert.
- Das bedeutet, dass die Konfiguration des Containers sensible Informationen enthalten könnte.
- Es ist auch möglich, gängige Docker-Einstellungen zu konfigurieren, wie:
- **Umgebungsvariablen** (auf sensible Informationen überprüfen)
- **Volumes** (auch von Azure Files)
- **Ports** zum Freigeben
- **CPU- und Speicherkapazitätsgrenzen**
- **Neustartpolitik**
- **Als privilegiert ausführen**
- Befehlszeilen für Container **überschreiben und Argumente** (kann auch in bestehenden Containern geändert werden)
- ...
## Aufzählung
> [!WARNING]
> Bei der Aufzählung könnten Sie sensible Konfigurationen wie **Umgebungsvariablen**, **Netzwerkdetails** oder **verwaltete Identitäten** offenbaren.
```bash
# ACI
## List all container instances in the subscription
az container list
## Show detailed information about a specific container instance
az container show --name <container-name> --resource-group <res-group>
## Fetch logs from a container
az container logs --name <container-name> --resource-group <res-group>
## Execute a command in a running container and get the output
az container exec --name <container-name> --resource-group <res-group> --exec-command "/bin/sh" # Get a shell
## Get yaml configuration of the container group
az container export --name <container-name> --resource-group <res-group> --file </path/local/file.yml>
# ACA
## List all container apps in the subscription
az containerapp list
## Show detailed information about a specific container app
az containerapp show --name <app-name> --resource-group <res-group>
## List app environments
az containerapp env list --resource-group <res-group>
## Fetch logs from a container app
az containerapp logs show --name <app-name> --resource-group <res-group>
## Get configured secrets
az containerapp secret list --name <app-name> --resource-group <res-group>
### Get value
az containerapp secret show --name <app-name> --resource-group <res-group> --secret-name <secret-name>
## Get authentication options
az containerapp auth show --name <app-name> --resource-group <res-group>
## Get a shell
az containerapp exec --name <app-name> --resource-group <res-group> --command "sh"
## Get debugging shell
az containerapp debug --name <app-name> --resource-group <res-group>
# Jobs
## List all container apps jobs in a resource group
az containerapp job list --resource-group <res-group>
## Show detailed information about a specific container app job
az containerapp job show --name <job-name> --resource-group <res-group>
## Fetch logs from a container app job
az containerapp job logs show --name <job-name> --resource-group <res-group>
## Fetch executions from a container app job
az containerapp job execution list --name <job-name> --resource-group <res-group>
az containerapp job execution show --name <job-name> --resource-group <res-group> --job-execution-name <job-execution>
## Start a job execution (for manual jobs)
az containerapp job start --name <job-name> --resource-group <res-group>
```
## Privilegienerhöhung & Nachausnutzung
{{#ref}}
../az-privilege-escalation/az-container-instances-apps-jobs-privesc.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}