Cortex Code CLI의 보안 모범 사례

보안 인증 방법 사용, 구성 파일 보호, 적절한 역할 및 액세스 관리, 대화 기록의 안전한 처리, MCP 서버 무결성 보장, 프로덕션 안전 프로토콜 준수를 포함한 Cortex Code CLI의 필수 보안 사례입니다.

중요

관리형 환경에서 조직은 정책(예: 도구 액세스 제한, 허용 계정 제한 또는 우회 기능 비활성화)을 적용하는 시스템 수준의 관리형 설정 파일을 배포할 수 있습니다. 자세한 내용은 관리형 설정(조직 정책) 섹션을 참조하십시오.

자격 증명

가능하면 브라우저 기반 인증을 사용합니다.

Cortex Code CLI의 기본 인증 방법은 브라우저 기반 인증입니다. connections.toml 파일에서 ``authenticator = “externalbrowser”``를 사용하여 이 옵션을 수동으로 설정합니다.

특정 역할에 대한 액세스 범위 지정을 시도할 때 프로그래밍 방식 액세스 토큰(PATs)을 사용합니다.

Snowsight에서 전용 PATs를 생성합니다(인증을 위해 프로그래밍 방식의 액세스 토큰 사용 참조). 만료 날짜를 90일 이하로 설정하고 설명이 포함된 이름을 사용하며 정기적으로 순환합니다.

구성 파일 보호

구성 파일에는 모드 ``600``을 사용하고 디렉터리에는 모드 ``700``을 사용하여 해당 사용자만 접근할 수 있도록 제한합니다.

chmod 600 ~/.snowflake/connections.toml
chmod 700 ~/.snowflake/cortex
Copy
자격 증명을 커밋하지 않음

``.gitignore``에 민감한 구성 파일을 추가합니다.

echo "~/.snowflake/connections.toml" >> ~/.gitignore
Copy

환경 변수를 사용하여 자격 증명과 토큰을 보유하고 ${VARIABLE_NAME} 구문을 사용하여 구성 파일에 통합합니다.

역할 및 액세스

환경별로 적절한 역할 사용

예를 들어 프로덕션에서는 읽기 전용 역할을 사용하고 개발에서는 더 광범위한 역할을 사용합니다.

[dev]
role = "DEVELOPER"

[prod_readonly]
role = "ANALYST"
Copy

일상적인 작업의 경우 ``ACCOUNTADMIN``을 사용하지 마세요. 최소 권한을 부여합니다.

대화 기록

대화는 ~/.snowflake/cortex/conversations/``에 저장됩니다. 민감한 작업의 세션 저장을 비활성화하기 위해 Cortex Code를 시작하는 경우 ``cortex --private``을 사용합니다. 또는 ``/clear 명령을 사용하여 Cortex Code CLI를 종료하기 전에 현재 세션을 지웁니다.

모드 700을 사용하여 해당 사용자만 대화 기록에 액세스하도록 제한합니다.

chmod 700 ~/.snowflake/cortex/conversations
Copy

MCP 보안

신뢰할 수 있는 MCP 서버만 설치

서버를 추가하기 전에 MCP 서버의 소스 및 무결성을 확인합니다. 다음 명령을 사용하여 서버 목록을 가져오고 신뢰할 수 없는 서버를 제거합니다.

cortex mcp list
cortex mcp remove <server>
Copy
MCP 자격 증명을 하드코딩하지 않음

환경 변수를 사용합니다. 먼저, 셸에서 설정합니다.

export GITHUB_TOKEN="your_token"
Copy

그런 다음 이를 MCP 구성에서 참조합니다.

{
   "mcpServers": {
      "github": {
         "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
      }
   }
}
Copy

프로덕션 안전

계획 모드 활성화

/plan 명령을 사용하여 실행 전에 의도한 작업을 검토합니다.

/plan
Drop and recreate the ANALYTICS schema
Copy

개인 액세스 토큰이 도용된 경우

Snowsight에서 PAT를 즉시 취소하세요! 그런 다음 새 토큰을 생성하여 대신 사용합니다. 구성 파일에 토큰을 사용하지 마세요 대신 환경 변수를 사용합니다.

쿼리 기록을 검토하여 의심스러운 활동을 식별합니다.

SHOW QUERIES IN ACCOUNT
Copy

관리형 설정(엔터프라이즈 정책)

일부 조직에서는 관리자가 Cortex Code CLI에 대한 정책을 적용하는 관리형 설정을 배포합니다. 관리형 설정은 사용자 수준 구성(권한 프롬프트 및 우회 동작 포함)을 제한하거나 재정의할 수 있습니다.

자세한 내용은 관리형 설정(조직 정책) 섹션을 참조하십시오.

권한

Cortex Code에는 세 가지 작동 모드가 있습니다.

모드

표시기

슬래시 명령

설명

작업 확인

파란색 ⏵⏵

기본 모드

잠재적으로 위험한 작업 전에 권한을 요청합니다.

계획

주황색 ⏸

/plan, /plan-off

작업을 수행하기 전에 계획을 제시합니다.

우회

빨간색 >>

/bypass, /bypass-off

모든 도구 호출이 승인됩니다.

Cortex Code CLI에서 ``Shift-Tab``을 눌러 해당 모든 간에 순환합니다.

경고

우회 모드에서는 모든 확인 메시지가 비활성화됩니다. 신뢰할 수 있는 환경에서만 사용하세요.

권한 유형

Cortex Code 도구 호출에 적용되는 권한 수준은 다음과 같습니다.

타입

설명

EXECUTE_COMMAND

bash/셸 명령 실행

FILE_READ

파일 내용 읽기

FILE_WRITE

파일 생성 및 수정

FILE_EDIT

기존 파일 편집

WEB_ACCESS

웹 검색 및 가져오기 작업

신뢰 모델

Cortex Code는 다음 테이블과 같이 위험별로 명령과 작업을 분류합니다.

레벨

동작

SAFE

ls, cat, echo, grep

자동 승인됨

LOW

새 파일 생성(예: touch file.txt)

일반적으로 자동 승인됨

MEDIUM

파일 편집(예: nano file.txt), 보통 bash

확인 모드에서 메시지 표시

HIGH

rm, curl, wget, sudo

항상 메시지 표시

CRITICAL

rm -rf, 파괴적인 작업

추가 확인

셸 및 SQL 명령은 잠재적 영향에 따라 분류됩니다.

셸 명령

명령에서 일반적인 위험 요소가 분석됩니다.

위험한 명령
  • rm, sudo, curl, wget, ssh

  • systemctl, chmod, chown

  • git push --force, git reset --hard

위험한 플래그
  • -rf, --force, --recursive

  • --no-preserve-root

위험한 패턴
  • 파이프에서 셸로: curl | bash

  • 다운로드 및 실행

  • 숨겨진 파일 액세스(. 접두사)

  • 시스템 경로 액세스(/etc, /var, /usr)

SQL 쿼리

SQL은 작업 유형별로 분류됩니다.

카테고리

작업

동작

READ_ONLY

SELECT, SHOW, DESCRIBE

자동 승인됨

WRITE

INSERT, UPDATE, DELETE, CREATE

프롬프트

USE_ROLE

USE ROLE, USE WAREHOUSE

프롬프트

샌드박스 권한

샌드박싱이 활성화된 경우:

샌드박스 모드

권한 동작

컨테이너 + 자동

샌드박스 처리된 명령이 자동 승인됨

컨테이너 + 일반

모든 명령 프롬프트

OS + 자동

샌드박스 처리된 명령이 자동 승인됨

OS + 일반

모든 명령 프롬프트

후크 통합

후크를 사용하여 권한 정책을 사용자 지정할 수 있습니다. 다음은 자동 승인 bash 명령을 승인하는 사전 실행 후크의 예제입니다.

{
   "hooks": {
      "PreToolUse": [
         {
         "matcher": "Bash",
         "hooks": [
            {
               "type": "command",
               "command": "bash .claude/hooks/auto-approve.sh"
            }
         ]
         }
      ]
   }
}
Copy

이 후크는 다음과 같은 JSON 응답을 반환하여 bash 명령을 자동 승인할 수 있습니다.

{
   "hookSpecificOutput": {
      "hookEventName": "PreToolUse",
      "permissionDecision": "allow",
      "permissionDecisionReason": "Approved by policy"
   }
}
Copy

권한 프롬프트 및 캐싱

Cortex Code에서 작업을 진행하기 위해 사용자의 권한이 필요한 경우 요청에 대한 세부 정보를 묻는 메시지가 표시됩니다. 요청을 승인하거나 거부하도록 선택할 수 있습니다. 향후 유사한 요청을 위해 선택 사항을 기억하도록 선택할 수도 있습니다.

  • “항상 허용(이 세션)”은 Cortex Code CLI를 종료할 때까지 기억합니다.

  • “항상 허용(지속)”은 을 무기한으로 기억합니다.

이러한 응답은 캐시되고 프로젝트 디렉터리, 도구 유형 또는 명령 패턴으로 적절하게 범위가 지정됩니다.

영구 권한은 ``~/.snowflake/cortex/permissions.json``에 저장됩니다. 다음은 캐시 예제입니다.

{
   "/path/to/project": {
      "Bash": {
         "npm test": "allow",
         "make build": "allow"
      },
      "Write": {
         "*": "allow"
      }
   }
}
Copy

모든 영구 권한을 재설정하려면 이 파일을 삭제합니다. 특정 프로젝트에 대한 권한을 재설정하려면 해당 항목을 삭제합니다.

세션 캐시를 재설정하려면 새 세션을 시작하거나 Cortex Code CLI를 종료하고 다시 시작하는 /new 명령을 사용합니다.

구성

아래에 설명된 환경 변수를 설정하여 권한 동작을 제어합니다.

변수

설명

CORTEX_PERMISSION_CACHE_TTL_SECONDS

세션 권한 캐시의 기본 시간 제한(초)을 설정합니다.

COCO_DANGEROUS_MODE_REQUIRE_SQL_WRITE_PERMISSION=true

``1``로 설정된 경우, 우회 모드에서도 SQL 쓰기 작업에 대해 항상 메시지가 표시됩니다.

보안 체크리스트

  • PATs를 최대 90일 만료로 사용

  • 파일 권한을 600/700으로 설정

  • 자격 증명을 git에 커밋하지 않음

  • 최소 권한 역할 사용

  • 일상적인 작업에 ACCOUNTADMIN을 사용하지 않음

  • 프로덕션을 위한 계획 모드와 신뢰할 수 있는 환경을 위한 예약 우회 모드 활성화

  • 신뢰할 수 있는 MCP 서버만 설치

  • 환경 변수에 자격 증명 저장

  • 후크를 통해 사용자 지정 보안 검사를 자동화하여 정책 적용

  • 주기적으로 권한 감사