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

This commit is contained in:
Translator
2025-02-25 22:31:03 +00:00
parent 14d6ebb419
commit 7228ef2c34

View File

@@ -0,0 +1,116 @@
# Az - Container Instances
{{#include ../../../banners/hacktricks-training.md}}
## Información Básica
**Azure Container Instances (ACI)** es un servicio de contenedores sin servidor que te permite ejecutar contenedores individuales rápidamente sin gestionar ninguna infraestructura subyacente. **Azure Container Apps (ACA)** amplía esto al ofrecer un entorno completamente gestionado para ejecutar microservicios y aplicaciones web con características como escalado automático basado en eventos, integración Dapr incorporada y soporte para escenarios de orquestación complejos. **Container App Jobs** son una característica especializada dentro de ACA diseñada para ejecutar tareas de corta duración, por lotes o programadas que se ejecutan por un período finito y luego finalizan.
Diferencias:
- ACI es ideal para **cargas de trabajo de contenedores simples** y autónomas donde se necesita una orquestación mínima.
- ACA es más adecuada para construir microservicios escalables e interconectados con características avanzadas como escalado automático y descubrimiento de servicios.
- Container App Jobs se centran en **tareas únicas o programadas**, proporcionando una forma simplificada de ejecutar trabajos en segundo plano o por lotes dentro del entorno ACA.
### Configuraciones
Opciones especiales para **ACI**:
- En cuanto a la red, es posible seleccionar una de estas 3 opciones:
- **Pública** (predeterminado)
- **Privada** (solo accesible desde la VNet)
- **Ninguna** (sin acceso a la red)
Opciones especiales para **ACA**:
- Es posible **restringir el tráfico** al contenedor al entorno de la aplicación de contenedor o dejarlo público.
- Es posible usar un **proveedor de identidad externo** (Microsoft, Facebook, Google y Twitter) para la autenticación.
- Es posible **almacenar secretos de la aplicación** (en texto claro la aplicación o como enlaces a un vault asignando un MI con acceso sobre él).
- Es posible tener **revisiones y réplicas de la aplicación**.
- Es posible desplegar desde un **código fuente o artefacto específico** en lugar de usar un contenedor. Para el código fuente, se debe dar acceso a GitHub. Para artefactos, es posible subirlo después de crear la aplicación.
Opciones especiales para **jobs**:
- El tipo de activador puede ser **manual, programado o basado en eventos** (como la llegada de un mensaje en una cola).
Opciones comunes:
- Para crear un contenedor, es posible usar una imagen pública, una imagen de contenedor de un Azure Container Registry o un repositorio externo, lo que podría **requerir configurar una contraseña** para acceder a él.
- Esto significa que la configuración del contenedor podría contener información sensible.
- También es posible configurar configuraciones comunes de docker como:
- **Variables de entorno** (verificar información sensible)
- **Volúmenes** (incluso de Azure Files)
- **Puertos** a exponer
- **Límites de CPU y memoria**
- **Política de reinicio**
- **Ejecutar como privilegiado**
- Sobrescribir la **línea de comandos del contenedor para ejecutar y argumentos** (también se puede modificar en contenedores existentes)
- ...
## Enumeración
> [!WARNING]
> Al enumerar, podrías revelar configuraciones sensibles como **variables de entorno**, **detalles de red** o **identidades gestionadas**.
```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>
```
## Escalación de Privilegios y Post Explotación
{{#ref}}
../az-privilege-escalation/az-container-instances-apps-jobs-privesc.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}