17. Cloud Environments 심층
chatgpt.com/codex·Slack·Linear·iOS task의 실행 환경인 Codex Cloud의 컨테이너 라이프사이클, setup vs maintenance script, secret 격리, 인터넷 액세스 정책 4종(off / common-dependencies / read-only / unrestricted), prompt injection·exfiltration 위협 모델까지 한 페이지로 정리합니다.
Codex Cloud는 chatgpt.com/codex와 Slack·Linear·iOS task의 실행 환경입니다. 컨테이너에서 작업이 돌고, secret · 12시간 캐시 · 인터넷 액세스 정책 · prompt-injection 위협 모델을 모두 환경 설정으로 제어합니다 — 잘못 설정하면 비용 폭발 또는 보안 사고로 직결됩니다.
이 페이지에서 배우는 것
- Codex Cloud의 컨테이너 라이프사이클 — 생성 · 캐시 · 무효화
- Setup script + Maintenance script의 역할 분담
- Secrets vs 환경변수 — 무엇이 에이전트 단계까지 살아남는가
- 인터넷 액세스 정책 4가지 (off / common-dependencies / unrestricted / read-only)
- HTTP/HTTPS 프록시 설정과 사내 방화벽
- Prompt injection · secret exfiltration 위협 모델
Codex Cloud 작업 흐름
chatgpt.com/codex·Slack @Codex·Linear assign·IDE "Run on Cloud"·자동화 스케줄로 Cloud task를 시작universal 베이스 이미지에 setup script 적용codex apply로 로컬에 적용 가능컨테이너 캐시 & 무효화 (12시간 규칙)
동일 환경의 컨테이너는 최대 12시간 재사용되어 setup 시간을 절약합니다. 만료 또는 invalidation이 일어나면 새 컨테이너가 빌드됩니다. 무엇이 캐시를 무효화하는지가 중요합니다.
- 유지 — 같은 setup script, 같은 base image, 같은 secret 변경 없을 때
- 무효화 — setup script 내용 변경, base image 업데이트, 환경 설정 변경, 12시간 만료
- Maintenance script — 캐시는 유지하되 매번 가볍게 갱신하고 싶은 작업(예:
git pull, lockfile 동기화)에 사용
Setup Script + Maintenance Script
두 스크립트의 차이를 이해해야 비용·시간을 최적화할 수 있습니다.
| 비교 | Setup Script | Maintenance Script |
|---|---|---|
| 실행 시점 | 컨테이너 새로 빌드될 때 (1회) | 매 task 시작 시 (캐시 컨테이너에서도) |
| 인터넷 | 허용 (의존성 설치 가능) | 허용 |
| Secret | 접근 가능 | 접근 가능 |
| 적합한 작업 | 패키지 설치 · 빌드 · DB 시드 | 최신 코드 pull · lockfile 동기화 · 빠른 헬스 체크 |
| 실패 시 | 컨테이너 빌드 실패 → 작업 차단 | 경고와 함께 작업 진행 (기본) |
Secrets vs 환경 변수 (격리 모델)
Cloud 환경의 가장 자주 발생하는 보안 사고는 secret이 에이전트 단계로 새는 것입니다. 격리 규칙을 명확히 이해하세요.
echo "$DB_PASSWORD" > /workspace/.env 같이 secret을 파일에 복사하면 그 파일은 에이전트 단계에서도 그대로 읽힙니다. 의도한 격리가 깨지므로 절대 하지 마세요.
인터넷 액세스 정책 4가지
에이전트 단계에서 외부 네트워크 호출을 어디까지 허용할지 정책으로 정합니다. 기본은 off(완전 차단)이며, 작업 종류에 맞게 조정합니다.
HTTP/HTTPS 프록시
# 사내 방화벽 환경에서 사설 프록시를 강제하려면 setup script에서
export HTTP_PROXY="http://proxy.corp:3128"
export HTTPS_PROXY="http://proxy.corp:3128"
export NO_PROXY="localhost,127.0.0.1,internal.corp"
# 또는 환경 변수로 설정하면 setup/agent 모두에 적용
Prompt Injection · Exfiltration 위협 모델
Cloud 환경의 두 가지 핵심 위협:
완화책 — ① Internet access를 작업 종류에 맞는 최소 권한으로 ② Secret은 절대 일반 env로 옮기지 않기 ③ auto_review를 켜서 외부 트래픽을 AI 리뷰어가 1차 검증(7. Settings 참조) ④ enterprise managed-configuration로 조직 단위 강제(18. Enterprise).
Triage 라우팅 — Cloud 작업의 결과 도착지
Cloud task 결과는 기본적으로 Codex 앱의 Triage에 도착합니다(6. Automations의 Triage 섹션). 슬랙/Linear에서 시작한 task는 동시에 해당 채널/이슈에도 회신됩니다.
실전 팁
- 처음에는 Internet = off + setup script에서 모든 의존성을 미리 설치하는 패턴이 가장 안전하고 빠릅니다(캐시 적중률 높음).
- 외부 API 호출이 꼭 필요하면 read-only 또는 common-dependencies로 좁히세요 — unrestricted는 최후의 수단.
- Setup script는 10분 이내로 끝나도록 최적화 — 캐시 무효화 시 매번 다시 돌기 때문에 길면 사용자 체감 응답이 떨어집니다.
- Maintenance script는 실패해도 작업이 진행되므로, 단순 헬스 체크나 git pull 같은 가벼운 작업에만.
- 모바일에서 Slack 멘션으로 task를 보내는 패턴은 Cloud의 가장 강력한 사용 사례 — Cloud 환경을 잘 셋업해 두면 출퇴근길 ROI가 큽니다.
한계점
⚠️ 알아둘 점
- Cloud 컨테이너는 12시간 캐시 후 자동 재빌드 — 첫 호출은 항상 느릴 수 있음
- 장시간 작업 시 컨테이너 만료 가능성 → setup이 너무 길면 끊김 발생
- 외부 시스템(GitHub, Slack, Linear)에 대한 변경은 해당 통합의 권한 범위 안에서만 가능
- Workspace 단위 사용량 제한(19. Pricing)에 빠르게 도달할 수 있음 — 자동화 다수 운영 시 모니터링 필수
공식 출처
- Codex Cloud overview
developers.openai.com/codex/cloud - Cloud environments
developers.openai.com/codex/cloud/environments - Cloud — internet access policies
developers.openai.com/codex/cloud/internet-access