diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a88fb97..edd7c48 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -30,7 +30,7 @@ jobs:
- name: Validate Marp presentation
run: |
- mkdir -p site/ko site/en
+ mkdir -p site/ko site/en site/ubucon
npx --yes @marp-team/marp-cli@4 \
ai-agent-sandboxing-ko.md \
--html \
@@ -41,6 +41,11 @@ jobs:
--html \
--allow-local-files \
-o site/en/index.html
+ npx --yes @marp-team/marp-cli@4 \
+ ai-agent-sandboxing-ubucon.md \
+ --html \
+ --allow-local-files \
+ -o site/ubucon/index.html
cp index.html site/index.html
cp -R assets site/assets
diff --git a/ai-agent-sandboxing-ubucon.md b/ai-agent-sandboxing-ubucon.md
new file mode 100644
index 0000000..7114f3b
--- /dev/null
+++ b/ai-agent-sandboxing-ubucon.md
@@ -0,0 +1,1617 @@
+---
+marp: true
+theme: default
+size: 16:9
+# paginate: true
+# footer: AI 에이전트 샌드박싱
+---
+
+
+
+
+
+
+# 우분투에서
AI 에이전트 샌드박싱하기
+
+Docker 샌드박스와 Azure Container Apps 샌드박스로 피해 범위 통제하기
+
+
그렇다면 에이전트가 실수하거나 공격받았을 때, 어디까지 영향을 미치게 해야 할까요?
+ + + +--- + + + + +소스·설정·홈 디렉터리 삭제 또는 덮어쓰기
토큰과 클라우드 키의 노출 또는 오용
허용되지 않은 목적지로 코드와 데이터 전송
악성 패키지와 설치 스크립트 실행
Docker 소켓과 로컬 프로세스 접근
파일 수정, 셸 실행, 패키지 설치와 네트워크 접근이 필요합니다
호스트와 분리된 microVM 안에서 필요한 작업을 수행합니다
별도 커널과 프로세스 경계
공유 범위와 쓰기 권한
목적지 기반 송신 정책
원문을 숨긴 프록시 주입
생성·중지·폐기의 자동화
Direct 모드에서는 샌드박스라고 하더라도 호스트에 저장되어 있는 프로젝트가 영향을 받습니다.
+ + + +--- + + + + +modernize 에이전트가 진단·계획·실행을 오케스트레이션합니다/plugin marketplace add microsoft/github-copilot-modernization
+/plugin install github-copilot-modernization@github-copilot-modernization
+
+
+
+---
+
+
+## 데모 #1: Docker 샌드박스에서 .NET 앱 현대화하기
+copilot → /agent → github-copilot-modernization:modernize현대화 평가 결과
검토 가능한 실행 계획
작업별 변경 이력
개발자 장비의 상태와 가용성에 의존
요청마다 생성·중지·폐기하는 자동화 인터페이스 필요
다수 사용자와 에이전트의 격리 운영
Microsoft.App/SandboxGroups · Azure Container Apps Sandboxes
+ + + +--- + +사전 준비 풀을 활용한 sub-second 프로비저닝
Zero-to-Scale · 0에서 수천 개의 동시 샌드박스로 확장
유휴 시 상태를 보존하고 빠르게 재개
Entra ID, RBAC, Azure 리소스 경계
수신·송신 정책과 가상 네트워크 통합
준비된 도구 체인을 루트 파일시스템으로 사용
aca sandboxgroup create \
+ --name ghcp-sandbox-demo \
+ --location koreacentral \
+ --set-config
+ aca sandbox create \
+ --disk copilot \
+ --credential <copilot-credential-id> \
+ --label name=ghcp-demo
+ $ aca sandbox shell -l name=ghcp-demo
+
+workspaces$ git clone https://github.com/devkimchi/battle-school-lunch.git
+workspaces$ cd battle-school-lunch
+workspaces$ copilot
+
+aca sandbox stop \
+ -l name=ghcp-demo
+ aca sandbox resume \
+ -l name=ghcp-demo
+ design-update.md 파일이 유지되는지 확인합니다| 기준 | Docker 샌드박스 | ACA 샌드박스 |
|---|---|---|
| 주요 사용자 | 개별 개발자 | 팀·서비스·멀티테넌트 |
| 실행 위치 | 로컬 PC | Azure 관리형 인프라 |
| 생성 방식 | 대화형 CLI | Portal · CLI · SDK · Bicep · Skills |
| 상태 수명주기 | 로컬 지속 | snapshot · suspend · resume |
| 대규모 동시성 | 장비 용량 한도 | 수천 개로 확장 |
허용 목적지로 정보가 유출되거나 부여된 권한이 오용될 수 있습니다
악성 패키지, 플러그인, 이미지와 설치 스크립트가 실행될 수 있습니다
코드, 빌드 스크립트와 CI 설정은 외부 실행 전에 검토해야 합니다
MCP 서버, Skills와 외부 API는 별도의 신뢰 경계입니다
공유 워크스페이스 변경이 호스트에 즉시 반영됩니다
로컬 stdio MCP와 공유 Skills는 microVM 밖의 호스트 자원에 연결됩니다
역할 범위나 사용자별 샌드박스 매핑 오류로 권한이 노출될 수 있습니다
Snapshot과 Volume에 코드, 로그와 민감한 데이터가 남을 수 있습니다
에이전트에게 필요한 권한은 주되, 경계는 외부에서 강제합니다.
개발자 PC의 대화형 실행에는 Docker 샌드박스, 원격 자동화·다중 실행에는 ACA 샌드박스를 선택합니다.
샌드박스는 피해 범위를 작고, 관찰 가능하며, 폐기 가능하게 만듭니다.