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 04935adc11
commit 76d8204317

View File

@@ -0,0 +1,116 @@
# Az - Container Instances
{{#include ../../../banners/hacktricks-training.md}}
## Informações Básicas
**Azure Container Instances (ACI)** é um serviço de contêiner sem servidor que permite executar contêineres individuais rapidamente sem gerenciar qualquer infraestrutura subjacente. **Azure Container Apps (ACA)** estende isso oferecendo um ambiente totalmente gerenciado para executar microsserviços e aplicativos da web com recursos como escalonamento automático baseado em eventos, integração Dapr embutida e suporte para cenários de orquestração complexos. **Container App Jobs** são um recurso especializado dentro do ACA projetado para executar tarefas de curta duração, em lote ou agendadas que são executadas por um período finito e, em seguida, saem.
Diferenças:
- ACI é ideal para cargas de trabalho de contêiner **simples** e autônomas, onde uma orquestração mínima é necessária.
- ACA é mais adequado para construir microsserviços escaláveis e interconectados com recursos avançados como escalonamento automático e descoberta de serviços.
- Container App Jobs se concentram em **tarefas únicas ou agendadas**, proporcionando uma maneira simplificada de executar trabalhos em segundo plano ou em lote dentro do ambiente ACA.
### Configurações
Opções especiais para **ACI**:
- Em relação à rede, é possível selecionar uma dessas 3 opções:
- **Público** (padrão)
- **Privado** (acessível apenas a partir da VNet)
- **Nenhum** (sem acesso à rede)
Opções especiais para **ACA**:
- É possível **restringir o tráfego** para o contêiner ao ambiente do aplicativo de contêiner ou deixá-lo público.
- É possível usar um **provedor de identidade externo** (Microsoft, Facebook, Google e Twitter) para autenticação.
- É possível **armazenar segredos do App** (em texto claro no aplicativo ou como links para um cofre atribuindo um MI com acesso a ele).
- É possível ter **revisões e réplicas do aplicativo**.
- É possível implantar a partir de um **código-fonte ou artefato específico** em vez de usar um contêiner. Para o código-fonte, deve-se conceder acesso ao GitHub. Para artefatos, é possível fazer o upload após criar o aplicativo.
Opções especiais para **jobs**:
- O tipo de gatilho pode ser **manual, agendado ou baseado em eventos** (como uma mensagem chegando em uma fila).
Opções comuns:
- Para criar um contêiner, é possível usar uma imagem pública, uma imagem de contêiner de um Azure Container Registry ou um repositório externo, que pode **exigir a configuração de uma senha** para acessá-lo.
- Isso significa que a configuração do contêiner pode conter informações sensíveis.
- Também é possível configurar configurações comuns do docker, como:
- **Variáveis de ambiente** (verifique informações sensíveis)
- **Volumes** (mesmo de Azure Files)
- **Portas** a expor
- **Limites de CPU e memória**
- **Política de reinício**
- **Executar como privilegiado**
- Sobrescrever a **linha de comando do contêiner para executar e argumentos** (pode ser modificado em contêineres existentes também)
- ...
## Enumeração
> [!WARNING]
> Ao enumerar, você pode revelar configurações sensíveis, como **variáveis de ambiente**, **detalhes da rede** ou **identidades gerenciadas**.
```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>
```
## Escalação de Privilégios & Pós-Exploração
{{#ref}}
../az-privilege-escalation/az-container-instances-apps-jobs-privesc.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}