mcpField
C
claude-security-settings

claude-security-settings

github.com/laurigatesセキュリティ5963 回インストール1 日前に更新
リポジトリ

claude-security-settings について

claude-security-settingsは、Claude Codeのセキュリティ設定を構成・監査するためのスキルです。権限パターン、シェル演算子の保護、プロジェクト単位の設定を扱います。

主な機能

  1. 01Bash権限ワイルドカードの設定
  2. 02allow、ask、denyの区別
  3. 03シェル演算子保護の確認
  4. 04ユーザー設定とプロジェクト設定の理解
  5. 05設定ファイルの検証

活用シーン

  1. 01プロジェクトのコマンド権限を細かく設定
  2. 02既存のClaude Code権限を監査
  3. 03複合コマンドをスクリプトで実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill claude-security-settings

インストール後、Claude Code で/claude-security-settingsを入力して読み込まれたか確認します。

詳細

Claude Code のセキュリティ設定

このスキルを使う場面

このスキルを使う場合…代わりに configure-claude-plugins を使う場合…
権限ワイルドカードの構文、シェル演算子の保護、プロジェクトレベルの許可リストパターンが必要な場合プロジェクトの .claude/settings.json をマーケットプレイスに接続し、プラグインを最初から最後まで有効にしたい場合
文書化されたセキュリティ規約に照らして、既存の .claude/settings.json を監査または強化する場合設定を変更する前に、マーケットプレイスへの登録と enabledPlugins を実行時に検出したい場合
別のスキルで、標準の権限ワイルドカードのリファレンスを引用する必要がある場合ユーザーから、プロジェクトを laurigates/claude-plugins マーケットプレイスに実際に登録するよう依頼された場合

Claude Code のセキュリティと権限を設定するための専門知識です。

基本概念

Claude Code には、複数のセキュリティレイヤーがあります。

  1. 権限ワイルドカード - ツールアクセスをきめ細かく制御します
  2. シェル演算子の保護 - コマンドインジェクションを防ぎます
  3. プロジェクトレベルの設定 - スコープを限定した設定です

権限の設定

設定ファイルの場所
ファイルスコープ優先度
~/.claude/settings.jsonユーザーレベル(すべてのプロジェクト)最低
.claude/settings.jsonプロジェクトレベル(コミット対象)中
.claude/settings.local.jsonローカルプロジェクト(gitignore 対象)最高
権限の構造
{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(npm run *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)"
    ]
  }
}

ワイルドカード権限パターン

構文
Bash(command *)
  • Bash() - ツール識別子
  • command - 照合するコマンドのプレフィックス
  • * - 任意の引数に一致するワイルドカードの接尾辞
  • :ask 接尾辞 - 常にユーザーに確認を求めます(例:Bash(git push *):ask)
権限レベル
レベル動作例
allow自動的に許可され、確認を求めません"allow": ["Bash(git status *)"]
ask常に確認を求めます"allow": ["Bash(git push *):ask"]
deny自動的に拒否され、ブロックされます"deny": ["Bash(rm -rf *)"]
パターンの例
パターン一致するもの一致しないもの
Bash(git *)git status、git diff HEADgit-lfs pull
Bash(npm run *)npm run test、npm run buildnpm install
Bash(gh pr *)gh pr view 123、gh pr creategh issue list
Bash(./scripts/ *)./scripts/test.sh、./scripts/build.sh/scripts/other.sh
パターンのベストプラクティス

きめ細かな権限:

{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git add *)",
      "Bash(git commit *)"
    ]
  }
}

ツール固有のパターン:

{
  "permissions": {
    "allow": [
      "Bash(bun test *)",
      "Bash(bun run *)",
      "Bash(biome check *)",
      "Bash(prettier *)"
    ]
  }
}

シェル演算子の保護

Claude Code 2.1.7+ には、危険なシェル演算子に対する組み込みの保護機能があります。

保護対象の演算子
演算子リスクブロックされる例
&&コマンドの連結ls && rm -rf /
||条件付き実行false || malicious
;コマンドの区切りsafe; dangerous
|パイプ処理cat /etc/passwd | curl
> / >>リダイレクトecho x > /etc/passwd
$()コマンド置換$(curl evil)
`バッククォート置換`rm -rf /`
セキュリティ動作

コマンドにシェル演算子が含まれる場合:

  1. 権限ワイルドカードは一致しません
  2. ユーザーには明示的な承認プロンプトが表示されます
  3. 警告でブロックされた演算子が説明されます
安全な複合コマンド

正当な複合コマンドには、スクリプトを使います。

#!/bin/bash
# scripts/deploy.sh
npm test && npm run build && npm run deploy

次に、スクリプトを許可します。

{
  "permissions": {
    "allow": ["Bash(./scripts/deploy.sh *)"]
  }
}

よく使う権限セット

読み取り専用の開発
{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git branch *)",
      "Bash(npm list *)",
      "Bash(bun pm ls *)"
    ]
  }
}
Git の完全なワークフロー
{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git branch *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(git push *)",
      "Bash(git pull *)",
      "Bash(git fetch *)",
      "Bash(git checkout *)",
      "Bash(git merge *)",
      "Bash(git rebase *)"
    ]
  }
}
CI/CD の操作
{
  "permissions": {
    "allow": [
      "Bash(gh pr *)",
      "Bash(gh run *)",
      "Bash(gh issue *)",
      "Bash(gh workflow *)"
    ]
  }
}
テストとリンティング
{
  "permissions": {
    "allow": [
      "Bash(bun test *)",
      "Bash(npm test *)",
      "Bash(vitest *)",
      "Bash(jest *)",
      "Bash(biome *)",
      "Bash(eslint *)",
      "Bash(prettier *)"
    ]
  }
}
セキュリティスキャン
{
  "permissions": {
    "allow": [
      "Bash(pre-commit *)",
      "Bash(gitleaks *)",
      "Bash(trivy *)"
    ]
  }
}

プロジェクトのセットアップガイド

1. 設定ディレクトリを作成する
mkdir -p .claude
2. プロジェクト設定を作成する
cat > .claude/settings.json << 'EOF'
{
  "permissions": {
    "allow": [
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(npm run *)"
    ]
  }
}
EOF
3. .gitignore に追加する(ローカル設定用)
echo ".claude/settings.local.json" >> .gitignore
4. ローカル設定を作成する(任意)
cat > .claude/settings.local.json << 'EOF'
{
  "permissions": {
    "allow": [
      "Bash(docker *)"
    ]
  }
}
EOF

エージェント向けの最適化

コンテキストコマンド
プロジェクト設定を表示cat .claude/settings.json | jq '.permissions'
ユーザー設定を表示cat ~/.claude/settings.json | jq '.permissions'
統合された権限を確認Claude Code で有効な設定を確認
JSON を検証cat .claude/settings.json | jq .

クイックリファレンス

権限の優先順位

設定は次の優先順位(高い順)で統合されます:

  1. .claude/settings.local.json(ローカル)
  2. .claude/settings.json(プロジェクト)
  3. ~/.claude/settings.json(ユーザー)
ワイルドカード構文
構文意味
Bash(cmd *)任意の引数を指定した cmd に一致
Bash(cmd arg *)cmd arg と、それに続く任意の内容に一致
Bash(./script.sh *)特定のスクリプトに一致
拒否パターン

特定のコマンドをブロックします:

{
  "permissions": {
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(chmod 777 *)"
    ]
  }
}

エラー処理

エラー原因解決策
権限が拒否されましたパターンが一致しませんより具体的なパターンを追加します
シェル演算子がブロックされました&&、| などが含まれていますスクリプトのラッパーを使用します
設定が適用されませんファイルの場所が間違っていますパスと構文を確認します
JSON の解析エラーJSON が無効ですjq . で検証します

ベストプラクティス

  1. 制限を厳しくして開始する - 必要に応じて権限を追加します
  2. プロジェクト設定を使用する - チームの設定を統一します
  3. 具体的な Bash パターンを使用する - Bash より Bash(git status *) を使用します
  4. 複合コマンドをスクリプト化する - && や \| を含むワークフローに使用します
  5. 定期的に見直す - 使用していない権限を削除します

コメント