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

This commit is contained in:
Translator
2025-02-25 22:30:57 +00:00
parent 0562e3852e
commit 137a137dad

View File

@@ -0,0 +1,116 @@
# Az - Container Instances
{{#include ../../../banners/hacktricks-training.md}}
## 基本信息
**Azure Container Instances (ACI)** 是一种无服务器容器服务,允许您快速运行单个容器,而无需管理任何底层基础设施。 **Azure Container Apps (ACA)** 通过提供一个完全托管的环境来扩展这一点,以运行微服务和 Web 应用,具有事件驱动的自动扩展、内置 Dapr 集成和对复杂编排场景的支持等功能。 **Container App Jobs** 是 ACA 中的一个专门功能,旨在运行短暂的、批处理的或计划的任务,这些任务在有限的时间内执行,然后退出。
区别:
- ACI 适合 **简单**、独立的容器工作负载,所需的编排最少。
- ACA 最适合构建可扩展的、互联的微服务,具有自动扩展和服务发现等高级功能。
- Container App Jobs 专注于 **一次性或计划任务**,提供了一种简化的方式在 ACA 环境中运行后台或批处理作业。
### 配置
**ACI** 的特殊选项:
- 关于网络,可以选择以下 3 个选项之一:
- **公共**(默认)
- **私有**(仅可从 VNet 访问)
- **无**(无网络访问)
**ACA** 的特殊选项:
- 可以 **限制流量** 到容器应用环境或保持其公开。
- 可以使用 **外部身份提供者**Microsoft、Facebook、Google 和 Twitter进行身份验证。
- 可以 **存储应用机密**(以明文形式存储应用或作为指向保管库的链接,分配具有访问权限的 MI
- 可以拥有 **应用的修订和副本**
- 可以从特定的 **源代码或工件** 部署,而不是使用容器。对于源代码,必须提供对 GitHub 的访问权限。对于工件,可以在创建应用后上传。
**作业** 的特殊选项:
- 触发类型可以是 **手动、计划或基于事件**(例如,消息到达队列时)。
常见选项:
- 为了创建容器,可以使用公共镜像、来自 Azure 容器注册表的容器镜像或外部存储库,这可能 **需要配置密码** 以访问它。
- 这意味着容器的配置可能包含敏感信息。
- 还可以配置常见的 Docker 设置,例如:
- **环境变量**(检查敏感信息)
- **卷**(甚至来自 Azure Files
- **要暴露的端口**
- **CPU 和内存限制**
- **重启策略**
- **以特权身份运行**
- 覆盖容器的 **命令行和参数**(也可以在现有容器中修改)
- ...
## 枚举
> [!WARNING]
> 在枚举时,您可能会泄露敏感配置,例如 **环境变量**、**网络详细信息** 或 **托管身份**。
```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>
```
## 权限提升与后期利用
{{#ref}}
../az-privilege-escalation/az-container-instances-apps-jobs-privesc.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}