Cortex Code CLI のセキュリティのベストプラクティス

Cortex Code CLI の基本的なセキュリティプラクティスには、安全な認証方法の使用、構成ファイルの保護、ロールとアクセスの適切な管理、会話履歴の安全な処理、 MCP サーバーの整合性の確保、および次の運用安全プロトコルが含まれます。

重要

管理環境では、組織はポリシー(例えば、ツールアクセスの制限、許可されたアカウントの制限、バイパス機能の無効)を強制するシステムレベルの管理設定ファイルをデプロイする場合があります。詳細については、 管理設定(組織ポリシー) をご参照ください。

認証情報

可能な場合は、ブラウザーベースの認証を使用します。

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 CodeCLIのポリシーを適用する管理設定をデプロイしています。管理設定は、ユーザーレベルの構成を制約または上書きできます(権限プロンプトとバイパス動作を含む)。

詳細については、 管理設定(組織ポリシー) をご参照ください。

権限

Cortex Codeには、以下の3つの操作モードがあります。

モード

インジケーター

スラッシュコマンド

説明

アクションを確認

青 ⏵⏵

デフォルトモード

潜在的に危険なアクションの前に許可を求めます。

Plan

オレンジ ⏸

/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

lscatechogrep

自動承認される

LOW

新規ファイルの作成(例: touch file.txt

通常は自動承認される

MEDIUM

ファイルの編集(例: nano file.txt )、中程度のbash

確認モードのプロンプト

HIGH

rmcurlwgetsudo

常にプロンプト

CRITICAL

rm -rf、破壊的操作

追加の確認

シェルおよび SQL コマンドは、潜在的な影響に基づいて分類されます。

シェルコマンド

コマンドは、一般的なリスク要因について分析されます。

リスクのあるコマンド
  • rmsudocurlwgetssh

  • systemctlchmodchown

  • git push --forcegit 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が操作を続行する許可を必要とする場合、リクエストに関する詳細を示すプロンプトが表示されます。リクエストを承認するか拒否するかを選択できます。また、今後の類似のリクエストのために、選択したものを記憶させることもできます。

  • 「Always allow (this session)」は、Cortex Code CLI を終了するまで記憶されます。

  • 「Always allow (persist)」は、無期限に記憶します。

これらの応答はキャッシュされ、必要に応じて、プロジェクトディレクトリ、ツールタイプ、またはコマンドパターンにスコープされます。

永続的な許可は ~/.snowflake/cortex/permissions.json に保存されます。以下は、キャッシュの例です。

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

このファイルを削除して、すべての永続的な許可をリセットします。特定のプロジェクトの許可をリセットするには、対応するエントリを削除します。

セッションキャッシュをリセットするには、 /new コマンドを使用します。これにより新しいセッションが開始されます。もしくはCortex Code CLI を終了して再起動します。

設定

以下の環境変数を設定して、許可の動作を制御します。

変数

説明

CORTEX_PERMISSION_CACHE_TTL_SECONDS

セッションの許可キャッシュのデフォルトのタイムアウトを設定します(秒単位)。

COCO_DANGEROUS_MODE_REQUIRE_SQL_WRITE_PERMISSION=true

1 に設定されている場合、常に SQL 書き込み操作のプロンプトが表示されます(バイパスモードでも)

セキュリティチェックリスト

  • 最大90日の有効期限を持つ PATs を使用する

  • ファイル権限を600/700に設定する

  • Gitに認証情報をコミットしない

  • 最小権限のロールを使用する

  • ルーティン作業に ACCOUNTADMIN を使用しない

  • 実稼働環境の計画モードを有効にし、信頼できる環境にはバイパスモードを予約する

  • 信頼できる MCP サーバーのみをインストールする

  • 環境変数に認証情報を格納する

  • カスタムセキュリティチェックを自動化することで、フックを使用してポリシーを適用する

  • 定期的に許可を監査する