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

This commit is contained in:
Translator
2025-02-25 22:31:00 +00:00
parent 3cdb8f6aab
commit 627e356b01
@@ -0,0 +1,116 @@
# Az - Container Instances
{{#include ../../../banners/hacktricks-training.md}}
## Podstawowe informacje
**Azure Container Instances (ACI)** to bezserwerowa usługa kontenerowa, która pozwala na szybkie uruchamianie pojedynczych kontenerów bez zarządzania jakąkolwiek infrastrukturą. **Azure Container Apps (ACA)** rozszerza to, oferując w pełni zarządzane środowisko do uruchamiania mikroserwisów i aplikacji internetowych z funkcjami takimi jak automatyczne skalowanie oparte na zdarzeniach, wbudowana integracja Dapr oraz wsparcie dla złożonych scenariuszy orkiestracji. **Container App Jobs** to specjalizowana funkcja w ACA zaprojektowana do uruchamiania krótkotrwałych, wsadowych lub zaplanowanych zadań, które wykonują się przez określony czas, a następnie kończą.
Różnice:
- ACI jest idealne dla **prosty**, samodzielnych obciążeń kontenerowych, gdzie potrzebna jest minimalna orkiestracja.
- ACA najlepiej nadaje się do budowania skalowalnych, połączonych mikroserwisów z zaawansowanymi funkcjami, takimi jak automatyczne skalowanie i odkrywanie usług.
- Container App Jobs koncentrują się na **jednorazowych lub zaplanowanych zadaniach**, zapewniając uproszczony sposób uruchamiania zadań w tle lub wsadowych w środowisku ACA.
### Konfiguracje
Specjalne opcje dla **ACI**:
- W odniesieniu do sieci możliwe jest wybranie jednej z tych 3 opcji:
- **Publiczny** (domyślny)
- **Prywatny** (dostępny tylko z VNet)
- **Brak** (brak dostępu do sieci)
Specjalne opcje dla **ACA**:
- Możliwe jest **ograniczenie ruchu** do kontenera do środowiska aplikacji kontenerowej lub pozostawienie go publicznym.
- Możliwe jest użycie **zewnętrznego dostawcy tożsamości** (Microsoft, Facebook, Google i Twitter) do uwierzytelniania.
- Możliwe jest **przechowywanie sekretów aplikacji** (w postaci jawnej lub jako linki do skarbca przypisując MI z dostępem do niego).
- Możliwe jest posiadanie **rewizji i replik aplikacji**.
- Możliwe jest wdrożenie z konkretnego **kodu źródłowego lub artefaktu** zamiast używania kontenera. W przypadku kodu źródłowego należy zapewnić dostęp do GitHub. W przypadku artefaktów możliwe jest ich przesłanie po utworzeniu aplikacji.
Specjalne opcje dla **zadań**:
- Typ wyzwalacza może być **ręczny, zaplanowany lub oparty na zdarzeniach** (np. przybycie wiadomości do kolejki).
Wspólne opcje:
- Aby utworzyć kontener, można użyć publicznego obrazu, obrazu kontenera z Azure Container Registry lub zewnętrznego repozytorium, co może **wymagać skonfigurowania hasła** do uzyskania dostępu.
- Oznacza to, że konfiguracja kontenera może zawierać wrażliwe informacje.
- Możliwe jest również skonfigurowanie wspólnych ustawień dockera, takich jak:
- **Zmienne środowiskowe** (sprawdź pod kątem wrażliwych informacji)
- **Wolumeny** (nawet z Azure Files)
- **Porty** do wystawienia
- **Limity CPU i pamięci**
- **Polityka ponownego uruchamiania**
- **Uruchom jako uprzywilejowany**
- Nadpisz **wiersz poleceń kontenera do uruchomienia i argumenty** (można modyfikować również w istniejących kontenerach)
- ...
## Enumeracja
> [!WARNING]
> Podczas enumeracji możesz ujawnić wrażliwe konfiguracje, takie jak **zmienne środowiskowe**, **szczegóły sieci** lub **zarządzane tożsamości**.
```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>
```
## Eskalacja Uprawnień i Po Eksploatacji
{{#ref}}
../az-privilege-escalation/az-container-instances-apps-jobs-privesc.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}