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
- 자격 증명을 커밋하지 않음
``.gitignore``에 민감한 구성 파일을 추가합니다.
echo "~/.snowflake/connections.toml" >> ~/.gitignore
환경 변수를 사용하여 자격 증명과 토큰을 보유하고
${VARIABLE_NAME}구문을 사용하여 구성 파일에 통합합니다.
역할 및 액세스¶
- 환경별로 적절한 역할 사용
예를 들어 프로덕션에서는 읽기 전용 역할을 사용하고 개발에서는 더 광범위한 역할을 사용합니다.
[dev] role = "DEVELOPER" [prod_readonly] role = "ANALYST"
일상적인 작업의 경우 ``ACCOUNTADMIN``을 사용하지 마세요. 최소 권한을 부여합니다.
대화 기록¶
대화는 ~/.snowflake/cortex/conversations/``에 저장됩니다. 민감한 작업의 세션 저장을 비활성화하기 위해 Cortex Code를 시작하는 경우 ``cortex --private``을 사용합니다. 또는 ``/clear 명령을 사용하여 Cortex Code CLI를 종료하기 전에 현재 세션을 지웁니다.
모드 700을 사용하여 해당 사용자만 대화 기록에 액세스하도록 제한합니다.
chmod 700 ~/.snowflake/cortex/conversations
MCP 보안¶
- 신뢰할 수 있는 MCP 서버만 설치
서버를 추가하기 전에 MCP 서버의 소스 및 무결성을 확인합니다. 다음 명령을 사용하여 서버 목록을 가져오고 신뢰할 수 없는 서버를 제거합니다.
cortex mcp list cortex mcp remove <server>
- MCP 자격 증명을 하드코딩하지 않음
환경 변수를 사용합니다. 먼저, 셸에서 설정합니다.
export GITHUB_TOKEN="your_token"
그런 다음 이를 MCP 구성에서 참조합니다.
{ "mcpServers": { "github": { "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" } } } }
프로덕션 안전¶
- 계획 모드 활성화
/plan명령을 사용하여 실행 전에 의도한 작업을 검토합니다./plan Drop and recreate the ANALYTICS schema
개인 액세스 토큰이 도용된 경우¶
Snowsight에서 PAT를 즉시 취소하세요! 그런 다음 새 토큰을 생성하여 대신 사용합니다. 구성 파일에 토큰을 사용하지 마세요 대신 환경 변수를 사용합니다.
쿼리 기록을 검토하여 의심스러운 활동을 식별합니다.
SHOW QUERIES IN ACCOUNT
관리형 설정(엔터프라이즈 정책)¶
일부 조직에서는 관리자가 Cortex Code CLI에 대한 정책을 적용하는 관리형 설정을 배포합니다. 관리형 설정은 사용자 수준 구성(권한 프롬프트 및 우회 동작 포함)을 제한하거나 재정의할 수 있습니다.
자세한 내용은 관리형 설정(조직 정책) 섹션을 참조하십시오.
권한¶
Cortex Code에는 세 가지 작동 모드가 있습니다.
모드 |
표시기 |
슬래시 명령 |
설명 |
|---|---|---|---|
작업 확인 |
파란색 ⏵⏵ |
기본 모드 |
잠재적으로 위험한 작업 전에 권한을 요청합니다. |
계획 |
주황색 ⏸ |
|
작업을 수행하기 전에 계획을 제시합니다. |
우회 |
빨간색 >> |
|
모든 도구 호출이 승인됩니다. |
Cortex Code CLI에서 ``Shift-Tab``을 눌러 해당 모든 간에 순환합니다.
경고
우회 모드에서는 모든 확인 메시지가 비활성화됩니다. 신뢰할 수 있는 환경에서만 사용하세요.
권한 유형¶
Cortex Code 도구 호출에 적용되는 권한 수준은 다음과 같습니다.
타입 |
설명 |
|---|---|
EXECUTE_COMMAND |
bash/셸 명령 실행 |
FILE_READ |
파일 내용 읽기 |
FILE_WRITE |
파일 생성 및 수정 |
FILE_EDIT |
기존 파일 편집 |
WEB_ACCESS |
웹 검색 및 가져오기 작업 |
신뢰 모델¶
Cortex Code는 다음 테이블과 같이 위험별로 명령과 작업을 분류합니다.
레벨 |
예 |
동작 |
|---|---|---|
SAFE |
|
자동 승인됨 |
LOW |
새 파일 생성(예: |
일반적으로 자동 승인됨 |
MEDIUM |
파일 편집(예: |
확인 모드에서 메시지 표시 |
HIGH |
|
항상 메시지 표시 |
CRITICAL |
|
추가 확인 |
셸 및 SQL 명령은 잠재적 영향에 따라 분류됩니다.
셸 명령¶
명령에서 일반적인 위험 요소가 분석됩니다.
- 위험한 명령
rm,sudo,curl,wget,sshsystemctl,chmod,chowngit 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"
}
]
}
]
}
}
이 후크는 다음과 같은 JSON 응답을 반환하여 bash 명령을 자동 승인할 수 있습니다.
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "Approved by policy"
}
}
권한 프롬프트 및 캐싱¶
Cortex Code에서 작업을 진행하기 위해 사용자의 권한이 필요한 경우 요청에 대한 세부 정보를 묻는 메시지가 표시됩니다. 요청을 승인하거나 거부하도록 선택할 수 있습니다. 향후 유사한 요청을 위해 선택 사항을 기억하도록 선택할 수도 있습니다.
“항상 허용(이 세션)”은 Cortex Code CLI를 종료할 때까지 기억합니다.
“항상 허용(지속)”은 을 무기한으로 기억합니다.
이러한 응답은 캐시되고 프로젝트 디렉터리, 도구 유형 또는 명령 패턴으로 적절하게 범위가 지정됩니다.
영구 권한은 ``~/.snowflake/cortex/permissions.json``에 저장됩니다. 다음은 캐시 예제입니다.
{
"/path/to/project": {
"Bash": {
"npm test": "allow",
"make build": "allow"
},
"Write": {
"*": "allow"
}
}
}
모든 영구 권한을 재설정하려면 이 파일을 삭제합니다. 특정 프로젝트에 대한 권한을 재설정하려면 해당 항목을 삭제합니다.
세션 캐시를 재설정하려면 새 세션을 시작하거나 Cortex Code CLI를 종료하고 다시 시작하는 /new 명령을 사용합니다.
구성¶
아래에 설명된 환경 변수를 설정하여 권한 동작을 제어합니다.
변수 |
설명 |
|---|---|
|
세션 권한 캐시의 기본 시간 제한(초)을 설정합니다. |
|
``1``로 설정된 경우, 우회 모드에서도 SQL 쓰기 작업에 대해 항상 메시지가 표시됩니다. |
보안 체크리스트¶
PATs를 최대 90일 만료로 사용
파일 권한을 600/700으로 설정
자격 증명을 git에 커밋하지 않음
최소 권한 역할 사용
일상적인 작업에 ACCOUNTADMIN을 사용하지 않음
프로덕션을 위한 계획 모드와 신뢰할 수 있는 환경을 위한 예약 우회 모드 활성화
신뢰할 수 있는 MCP 서버만 설치
환경 변수에 자격 증명 저장
후크를 통해 사용자 지정 보안 검사를 자동화하여 정책 적용
주기적으로 권한 감사