junwoojeong100/aca-sandbox-labs

GitHub: junwoojeong100/aca-sandbox-labs

提供基于 Azure Container Apps Dynamic Sessions 和 ACA Sandboxes 的动手实验,帮助开发者在隔离环境中安全执行 AI 生成的 Python 和 Office 任务。

Stars: 0 | Forks: 0

# 基于 Azure Container Apps 的 AI Workspace Sandbox 实践 本 repository 展示了 AI Workspace 如何在 Azure Container Apps 的隔离环境中执行不受信任的 Python 及 Office 任务,检查生成的 artifact,并在独立的 Connector 修改业务系统之前要求明确批准。Dynamic Sessions 和 ACA Sandboxes 以相互独立的路径进行文档记录和运营,请根据 workload 选择其中之一,并遵循相应的架构和实践。 ## 服务选择 | 标准 | Dynamic Sessions | ACA Sandboxes (Preview) | | --- | --- | --- | | 适用 workload | 短暂的临时代码或文档任务 | 保持状态的 Agent workspace 和开发环境 | | Lifecycle | Pool 分配 session 并处理过期 | Application 管理 Sandbox 的创建、suspend、resume、snapshot 和删除 | | 启动及 resume | Prewarmed 分配。整体请求 latency 需单独测量 | Prewarmed 创建及 memory resume。Image boot 和 staging 也需测量 | | 状态及 storage | 临时 session 文件 | Memory/disk suspend、snapshot、Blob 及 Data Disk volume | | Network | Egress on/off、Custom Pool 的 VNet | Domain、CIDR、VNet 及 ingress policy | | Compute 选择 | Managed Interpreter 或 Custom Container Pool | 每个 Sandbox 的 XS~XL tier | | 成本结构 | Interpreter session-hour 或专用 Custom Pool capacity | 运行中的 vCPU/GiB-second,suspend 时停止计算 compute,保留的 storage 继续计费 | | 运维负担 | 低。Pool 管理分配和过期 | 高。Application 管理 ID、lifecycle、state 和 orphan 清理 | 性能和价格因 region、image、quota 及时间点而异。在生产环境引入前,请测量 end-to-end 的 p95 并确认当前的 Azure meter。 ## 快速开始:Dynamic Sessions 在 repository 根目录下执行。 ``` export RESOURCE_GROUP="${RESOURCE_GROUP:-rg-ai-workspace-dynamic-sessions-lab}" bash scripts/common/check-prereqs.sh bash scripts/common/validate-repo.sh bash scripts/dynamic-sessions/python-lab.sh ``` 仅在需要 Office 工具或 Agent orchestration 时添加。 ``` bash scripts/dynamic-sessions/office-lab.sh bash scripts/dynamic-sessions/agent-lab.sh ``` 请继续查看 [Dynamic Sessions 实践 index](labs/dynamic-sessions/01_Python_Code_Interpreter_Lab.md) 和 [参考架构](docs/dynamic-sessions/architecture.md)。 ## 快速开始:ACA Sandboxes 在 repository 根目录下执行。 ``` export RESOURCE_GROUP="${RESOURCE_GROUP:-rg-ai-workspace-aca-sandboxes-lab}" bash scripts/common/check-prereqs.sh bash scripts/common/validate-repo.sh bash scripts/aca-sandboxes/quickstart.sh python export ACA_PYTHON="${ACA_PYTHON:-.work/aca-sandboxes/venv/bin/python}" ``` 根据所需的 image,使用 `office` 或 `all` 代替 `python`。 请继续查看 [ACA Sandboxes 实践 index](labs/aca-sandboxes/03_ACA_Sandboxes_Lab.md) 和 [参考架构](docs/aca-sandboxes/architecture.md)。 ## Repository 结构 | 路径 | 内容 | | --- | --- | | [`docs/dynamic-sessions/`](docs/dynamic-sessions/) | Dynamic Sessions 架构及过往验证记录 | | [`docs/aca-sandboxes/`](docs/aca-sandboxes/) | ACA Sandboxes 架构及过往验证记录 | | [`labs/dynamic-sessions/`](labs/dynamic-sessions/) | Python Code Interpreter 及 Office Custom Container 实践 | | [`labs/aca-sandboxes/`](labs/aca-sandboxes/) | Python、Office、lifecycle、state 及 network 实践 | | `dynamic_sessions/` | Dynamic Sessions application 模块及 Office image | | `aca_sandboxes/` | ACA Sandboxes 模块及 Python/Office image | | `scripts/common/` | 公共前置条件及 repository 验证命令 | | `scripts/dynamic-sessions/` | Dynamic Sessions 自动化与清理 | | `scripts/aca-sandboxes/` | ACA Sandboxes 自动化与清理 | | `tests/` | Policy、artifact、approval 及 Gateway offline 测试 | 过往验证依据保存在 [Dynamic Sessions 验证记录](docs/dynamic-sessions/validation.md) 和 [ACA Sandboxes 验证记录](docs/aca-sandboxes/validation.md) 中。 ## 通用安全原则 - 在执行 Model 生成的任务前,优先执行 deterministic policy。 - 切勿将 Token、endpoint、session 或 Sandbox ID 以及生产环境 credential 包含在 prompt、浏览器、artifact 及用户可见的 log 中。 - 默认拒绝 Outbound 访问,仅允许范围和过期时间明确的例外。 - Source scanning 仅作为 isolation、resource limit 及 credential 分离的辅助手段使用。 - 对输入进行 quarantine,并验证其实际格式、大小、archive、malware 及 tenant ownership。 - 对输出进行 staging,验证格式和 SHA-256,生成安全的 preview 或 Diff 后,需明确批准。 - 最小权限的 Connector 在提权前需再次验证 artifact hash。 - 限制 Concurrency、执行时间、retry、storage、lifecycle 及成本。 - 无论成功、失败、取消还是 process restart,都必须执行清理。 ## 清理 在删除前确认目标资源。 - Dynamic Sessions: `RESOURCE_GROUP=rg-ai-workspace-dynamic-sessions-lab CONFIRM_DELETE=yes bash scripts/dynamic-sessions/cleanup.sh` — [Python 清理](labs/dynamic-sessions/01A_Python_Code_Interpreter_Admin_Lab.md#17-정리), [Office 清理](labs/dynamic-sessions/02A_Office_Custom_Container_Admin_Lab.md#17-정리) - ACA Sandboxes: `export ACA_PYTHON="${ACA_PYTHON:-.work/aca-sandboxes/venv/bin/python}"`, 然后执行 `RESOURCE_GROUP=rg-ai-workspace-aca-sandboxes-lab CONFIRM_DELETE=yes $ACA_PYTHON scripts/aca-sandboxes/cleanup.py` — [Sandbox 清理](labs/aca-sandboxes/03A_ACA_Sandboxes_Admin_Lab.md#19-정리), [Office 清理](labs/aca-sandboxes/03C_ACA_Sandboxes_Office_Admin_Lab.md#14-정리)
标签:AI工作负载, Azure, 动手实验, 安全隔离, 容器应用, 应用安全, 沙箱环境, 请求拦截, 逆向工具