Security

Security (보안)

이 페이지는 CoCo Desktop의 보안 개요예요. 제품이 강제하는 신뢰 경계, 일상적인 사용을 위한 권장 기준, 그리고 에이전트에게 더 넓은 권한을 부여하기 전에 알아야 할 한계를 설명해요.

출처: Security

본문

기능별 컨트롤은 다음을 참고해요.

  • Permission modes
  • Managed settings
  • Plugins
  • Skills
  • MCP support
  • Hooks
  • Subagents
  • Agentic Browser
  • Scheduled tasks
  • Onboarding and authentication

신뢰 모델

CoCo Desktop은 여러 구별되는 신뢰 경계를 강제해요. 각각은 자체 승인 흐름과 자체 범위를 가지며, 함께 에이전트와 어떤 확장이 내 대신 무엇을 할 수 있는지 결정해요.

경계 게이트하는 것 위치
Workspace 에이전트가 이 폴더에서 전혀 실행되는지. 워크스페이스를 신뢰할 때까지 채팅 위젯은 Trust Workspace 게이트로 대체되고, 에이전트의 훅, MCP 서버, 하위 에이전트, 프로젝트 스킬, 프롬프트 파일, AGENTS.md 지침, 파일 접근이 비활성화돼요. Agent Manager에 워크스페이스를 추가하면 자동으로 신뢰돼요. Workspace Trust 대화상자.
Permission mode 에이전트가 도구, 편집, SQL을 실행하기 전에 멈춰 물을지. Default Approvals 또는 Bypass Approvals. 채팅 입력에서 전환. Permission modes 참고.
Plugins, skills, MCP servers 주어진 소스(GitHub 저장소, Snowflake 스테이지, 로컬 폴더, MCP URL)가 등록되고 활성인지. 소스를 추가할 때 일회성 동의. 소스는 암호화 서명되지 않아요. MCP 서버는 구성이 바뀌면 다시 프롬프트하지만, 스킬, 훅, 로컬 플러그인은 그러지 않아요.
Network domains 에이전트가 주어진 URL이나 호스트에 도달할 수 있는지. URL별 승인.
Snowflake credentials 인증 자료가 어디에 저장되고 어떤 프로세스가 읽을 수 있는지. OS 네이티브 자격 증명 저장소.

경고

에이전트는 사용자가 공급한 콘텐츠를 지침으로 취급하고 그에 따라 행동해요. 신뢰된 워크스페이스의 파일, 프롬프트, 가져온 URL, MCP 서버·플러그인·하위 에이전트의 출력까지요. 내가 제공하는 입력에서 프롬프트 주입을 방어하는 것은 내 책임이에요. 에이전트가 읽기 전에 신뢰할 수 없는 소스를 검증하고, 익숙하지 않은 콘텐츠로 작업할 때는 Plan Mode나 Default Approvals를 선호해요. 프롬프트 주입 보호에 대한 자세한 내용은 Cortex AI Guardrails를 참고해요.

권장 보안 기준

일상적인 사용에 다음 기본값을 적용해요.

  • Default Approvals를 사용해요. 에이전트는 각 도구 호출 전에 프롬프트해요. Bypass Approvals는 모든 도구 호출을 자동 승인하며, 격리된 환경을 위해 아껴 둬요.
  • 익숙하지 않은 프롬프트에는 Plan Mode를 사용해요. Plan Mode는 읽기 전용이고, 부수 효과가 생기기 전에 접근 방식을 확인할 수 있게 해요. Agent mode and Plan mode 참고.
  • 수락 전에 파일 편집을 검토해요. 저장소의 민감한 파일(package.json, .env, 시크릿, 빌드 스크립트)에 대한 자동 승인 glob 목록을 조여요.
  • 도구 승인을 세션으로 범위를 정해요. 확실하지 않을 때는 "Always allow"보다 "Allow once"나 "Allow for session"을 골라요.
  • 신뢰하기 전에 플러그인, 스킬, MCP 서버를 검증해요. 매니페스트, 번들된 스킬, 등록된 MCP 서버와 훅을 읽어요. 가능하면 소스를 특정 커밋이나 스테이지 경로로 고정해요.
  • 자동 업데이트를 즉시 적용해요. 이것이 왜 중요한지와 오래된 설치본이 어떻게 처리되는지는 Auto-update를 참고해요.
  • 불필요한 확장을 설치하지 마요. 확장은 타사 개발자가 만들고, CoCo Desktop과 같은 권한으로 실행되는 코드를 담아요.

파일 권한

connections.toml 파일이 있으면 그것과 에이전트의 데이터 디렉터리를 내 사용자로만 제한하고 .gitignore에 추가해요.

[ -f ~/.snowflake/connections.toml ] && chmod 600 ~/.snowflake/connections.toml
chmod 700 ~/.snowflake/cortex
chmod 700 ~/.snowflake/cortex/conversations
echo "~/.snowflake/connections.toml" >> ~/.gitignore

자격 증명

평문 자격 증명 저장을 피하려면 기본 인증 방법으로 authenticator = "oauth_authorization_code"를 권장해요. 지원되는 방법은 Onboarding and authentication을 참고해요.

MCP 서버의 경우:

  • 지원되는 곳에서는 OAuth를 사용해요. 토큰은 OS 네이티브 비밀 저장소에 들어가고 자동으로 새로고침되며, mcp.json은 그것을 보지 못해요.
  • 정적 API 키에는 password: true와 함께 ${input:...}를 사용해요. 데스크톱은 첫 실행 시 프롬프트하고 값을 워크스페이스 상태에 암호화해 저장하지 mcp.json에 저장하지 않아요.
{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["-y", "my-mcp-server"],
      "env": { "API_KEY": "${input:api-key}" }
    }
  },
  "inputs": [
    { "id": "api-key", "type": "promptString", "password": true }
  ]
}
  • mcp.json의 Authorization 헤더는 디스크에 평문으로 저장돼요.

역할과 최소 권한

CoCo Desktop은 활성 연결이 지정하는 역할로 SQL을 실행해요. connections.toml의 role 필드는 선택 사항이며, 빼면 세션은 내 Snowflake 사용자의 기본 역할을 사용해요.

CoCo Desktop은 보조 역할을 자체적으로 제한하지 않아요.

대화 기록

CoCo Desktop은 대화를 ~/.snowflake/cortex/conversations/ 아래에 저장해요. 여기에는 에이전트가 본 파일 내용, 도구 출력, SQL이 포함돼요.

워크스페이스 제한 모드

참고

워크스페이스 제한 모드는 미리 보기 상태예요.

신뢰할 수 없는 코드베이스에서 작업할 때 제한 모드를 사용해요. 워크스페이스가 신뢰되지 않으면 CoCo Desktop은 다음처럼 동작해요.

  • Editor view는 지속된 신뢰 폴더 목록을 사용해요. 신뢰되지 않은 폴더는 제한 모드로 실행돼요. 채팅이 차단되고, 워크스페이스 범위 훅, MCP 서버, 하위 에이전트, 프로젝트 스킬, 프롬프트 파일이 비활성화돼요. 일반 편집과 통합 터미널은 여전히 동작해요. 상태 바는 "Trusted" 또는 "Restricted Mode"를 표시해요.
  • Agent view는 Agent Manager 프로젝트 목록을 사용해요. 폴더를 추가하면 "Trust this folder?" 확인을 프롬프트하고, 확인하면 폴더가 신뢰된 Agent view 프로젝트로 추가돼요.
  • Editor view와 Agent view의 신뢰는 연결되지만 비대칭이에요:
    • Editor view에서 프로젝트를 신뢰해도 Agent view에 자동으로 추가되지 않아요. Agent view에서 별도로 추가해야 해요.
    • Agent view에서 프로젝트를 추가하고 신뢰하면 Editor view에서도 자동으로 신뢰 표시돼요.
    • Editor view에서 프로젝트를 신뢰 해제하면 Agent view에서도 제거돼요.

에이전트 코드 실행

CoCo Desktop은 에이전트 IDE예요. 내 승인으로 에이전트는 셸 명령을 실행하고, 파일을 편집하고, 내 머신과 Snowflake 계정에서 SQL을 실행할 수 있어요. 이 기능은 제품의 본질적 속성이지 결함이 아니며, 내가 소유한 컨트롤 아래에 있어요.

  • 도구 승인이 기본 켜져 있어요. 에이전트는 결과가 중요한 도구 호출 전에 프롬프트해요. Bypass Approvals는 신뢰된 워크플로를 위한 명시적이고 정보에 입각한 옵트인이지 기본 상태가 아니에요. Permission modes 참고.
  • 에이전트 터미널 샌드박스는 의도적으로 최고 위험 표면인 Bash로만 범위가 정해져 있어요. Bypass Approvals가 꺼져 있으면 파일 편집과 SQL 실행은 같은 승인 메커니즘을 거쳐요. 더 많은 도구 표면으로의 샌드박스 확장은 적극 추적 중이에요.

프롬프트 주입 방어

에이전트는 읽는 콘텐츠를 잠재적 지침으로 취급해요. 신뢰된 워크스페이스의 파일, 프롬프트, 가져온 URL, MCP 서버·플러그인·하위 에이전트의 출력까지요. CoCo Desktop은 프롬프트 주입에 대해 깊이 방어해요.

  • 서버 측 I/O Guardrails가 MCP 응답을 포함한 도구 출력을 벡터 유사성으로 알려진 주입 패턴에 대해 스캔해요.
  • Cortex AI Guardrails가 플랫폼 계층에서 중앙에 적용되어 도구 호출의 간접 주입과 서명 매칭을 넘어선 새롭거나 제로데이 패턴을 잡아요.
  • 사용자 승인 게이트는 Bypass Approvals가 꺼져 있는 한, 성공적인 주입도 결과가 중요한 동작이 실행되기 전에 인간 확인을 요구하게 해요.
  • 쓰기 범위 보호가 민감한 경로와 워크스페이스 밖 위치에 대한 쓰기를 게이트해 지속형 주입 결과를 차단해요.
  • 워크스페이스 열기 시 자동 실행 없음. MCP 서버, 스킬, 훅은 옵트인하지 않는 한 워크스페이스를 열 때 실행되지 않아, 악성 저장소 공격 경로를 닫아요.

참고

알려진 한계, 적극 추적 중: 웹 가져오기 콘텐츠는 격리된 창이 아니라 메인 맥락 창으로 들어가고, 새 주입 패턴의 커버리지는 완전하지 않아요.

확장

CoCo Desktop은 확장 저장소로 Open VSX를 탑재하지만, 설치할 수 있는 카탈로그는 Snowflake가 큐레이션하고 검증해요. 전체 Open VSX 마켓플레이스를 노출하는 대신, CoCo Desktop은 Snowflake 보안 팀이 검토하고 스캔한 신뢰할 수 있는 게시자와 확장의 허용 목록으로 설치를 제한해요. 알려진 경쟁 또는 고위험 확장은 명시적으로 차단돼요. 결과적으로:

  • 허용 목록에 있는 확장만 Extensions 패널에 나타나요. 그래서 Open VSX의 모든 확장이 사용 가능한 것은 아니에요.
  • 카탈로그에 새 확장 추가는 보안 검토가 필요해요. 찾는 확장이 아직 없을 수 있어요. 필요하면 Snowflake 담당자를 통해 요청해요.

이 큐레이션은 공급망 표면을 전체 Open VSX 마켓플레이스가 아니라 알려지고 검토된 집합으로 제한해요. 허용 목록 확장도 앱과 같은 권한으로 실행되며, 허용 목록 확장의 새 버전은 자동 업데이트돼요.

사이드로딩

게시자 허용 목록은 Extensions 패널뿐 아니라 모든 설치에 적용돼요. VSIX 파일을 직접 설치하는 것도 같은 허용 목록으로 게이트되므로, 게시자가 승인 목록에 없는 확장은 어떻게 설치하든 차단되거나 비활성화돼요. 사용자는 어떤 저장소에서도 임의 확장을 탐색하거나 설치할 수 없어, 공급망을 경계 있고 알려진 상태로 유지해요.

자동 업데이트

CoCo Desktop은 업데이트를 확인하고, 다운로드하고, 설치를 프롬프트해요. 자동 업데이트 메커니즘은 적용 전에 업데이트의 서명을 검증해요. 크게 오래된 설치본은 업데이트가 필요해요.

빌드와 릴리스 보안

빌드와 릴리스 파이프라인의 엔터프라이즈 검토를 위해:

  • 바이너리 서명. macOS 빌드는 Apple이 공증하고, Windows 빌드는 DigiCert로 서명돼요. 자동 업데이트 메커니즘은 업데이트 적용 전에 서명을 검증해요.
  • 의존성 스캔(SCA). Snyk가 코드베이스에 구성되어 있고 Snowflake의 재구성 SLO에 맞춰 오픈소스 취약점을 추적해요.
  • 정적 분석(SAST). Snowflake의 지속 모니터링 정책에 따라 SAST 스캔이 모든 풀 리퀘스트에서 실행돼요. 발견 사항은 소유 팀으로 라우팅되고 병합 전에 재구성되어야 해요.
  • 취약점 관리. 팀은 Electron과 VS Code 업스트림 버전을 엄격한 업그레이드 SLA로 추적하고, 정상 릴리스 주기 밖에서도 치명적인 취약점을 패치해요.

표류 감지

워크스페이스가 신뢰되면 대부분의 구성 소스는 파일이 바뀔 때 조용히 다시 로드돼요. 여기에는 스킬, 훅, 그리고 어떤 경우에는 MCP 서버 구성이 포함돼요.

샌드박스

참고

에이전트 터미널 샌드박스는 실험적이며 변경될 수 있어요.

에이전트 터미널 샌드박스는 에이전트가 실행하는 모든 터미널 명령을 격리된 샌드박스 프로세스 안에 감싸요. 신뢰된 워크스페이스에서도 에이전트가 실행할 셸 명령을 제한하고 싶을 때 권장되는 추가 보호 계층이에요.

샌드박스 켜기

  1. Settings(기어 아이콘 또는 Cmd/Ctrl+,)를 열어요.
  2. chat.agent.sandbox를 검색해요.
  3. chat.agent.sandbox.enabled를 "on"으로 설정해요.

또는 settings.json에 직접 추가해요.

{
  "chat.agent.sandbox.enabled": "on"
}

샌드박스가 활성화되면 에이전트가 시작한 터미널 명령이 실행자 계층에서 감싸져요. 통합 터미널에서 내가 수동으로 실행하는 명령은 영향을 받지 않아요.

한계

  • 샌드박스는 에이전트가 Bash 도구로 실행하는 터미널 명령에만 적용돼요. 파일 편집, SQL 실행, MCP 도구 호출은 제한하지 않아요.
  • 샌드박스 동작은 OS 수준 샌드박스 기능에 의존하며 macOS, Windows, Linux에서 다를 수 있어요.
  • 셸 부수 효과에 의존하는 일부 에이전트 워크플로(예: 현재 셸 세션에 영향을 주는 패키지 설치)는 샌드박스 안에서 다르게 동작할 수 있어요.

CoCo Desktop은 VS Code 네이티브 에이전트 샌드박스와 에이전트 도구 프레임워크가 업스트림에서 안정화되면 채택할 거예요. 자세한 내용은 VS Code agent tools와 VS Code Copilot security를 참고해요.

감사 로깅과 관찰성

관리자는 Snowflake AI Observability로 CoCo Desktop 사용을 모니터링할 수 있어요. 상호작용 이벤트는 SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS 이벤트 테이블에 기록돼요. 이벤트 콘텐츠 접근은 Snowflake의 관찰성 접근 제어로 관리돼요. 콘텐츠는 기본적으로 마스킹되고, 보려면 지정된 역할에 대한 명시적 승인이 필요해요.

무엇이 포착되고, 쿼리되고, 접근이 설정되는지는 Observability와 Snowflake AI Observability reference를 참고해요.

엔터프라이즈 정책

관리자는 managed-settings 파일로 CoCo Desktop을 중앙에서 구성해 권한 허용 목록·차단 목록을 강제하고, 기본 권한 모드를 설정하고, 대화 기록을 비활성화하고, 조직 관리 배너를 표시할 수 있어요. 파일 위치, 지원 키, 권한 패턴 구문, 예시는 Managed settings를 참고해요.

관리 환경 배포

내 IT나 보안 팀이 승인 전에 CoCo Desktop을 검토해야 한다면, 다음 포인트가 보통 그들이 묻는 것을 다룹니다.

  • WSL 요구 없음. Windows에서 앱은 셸 명령에 기본적으로 PowerShell을 사용하고 Windows Subsystem for Linux가 필요하지 않아요. FAQ 참고.
  • 자격 증명 저장. 인증 토큰은 OS 네이티브 비밀 저장소(Keychain, DPAPI, 또는 libsecret)에 저장되고, 절대 평문 구성에 저장되지 않아요. 자격 증명 참고.
  • 네트워크 접근. 앱은 Snowflake Node.js 드라이버로 Snowflake 계정에 연결하며, 이는 프록시와 TLS를 다른 Snowflake 클라이언트와 같은 방식으로 처리해요. 확장, 플러그인, MCP 서버는 자체 나가는 요청을 할 수 있고, URL별 승인과 managed-settings 허용 목록으로 제한할 수 있어요.
  • 큐레이션된 확장. 확장 저장소는 신뢰할 수 있는 게시자 허용 목록으로 제한되고, 알려진 경쟁 AI 확장은 명시적으로 차단돼요. 확장 참고.
  • 중앙 제어. managed settings로 기본 권한 모드를 설정하고, 도구를 제한하고, 기록을 비활성화하고, 기기 전체에서 위험한 옵션 UI를 잠글 수 있어요.

더 알아보기