Claude Codeの権限設定で「やらかし」を防ぐ – AWSエンジニア向け設定例

はじめに

Claude Codeの進化が止まらず、ついていけません。
ターミナルからAIを活用できる強力なツールですが、その分「意図しない操作」のリスクもあります。

本記事では、Claude Codeの権限設定ファイル(settings.json)を使って、読み取りは許可しつつ変更操作は拒否する設定例を紹介します。
※あくまで一例です。

権限設定の仕組み

Claude Codeでは ~/.claude/settings.jsonpermissions を定義することで、ツールの実行可否を制御できます。

  • allow : 確認なしで自動実行を許可する操作
  • deny : 実行を拒否する操作

ワイルドカード(*)によるパターンマッチが使えるため、柔軟にルールを定義できます。

設定例の全体像

今回の設定は、以下の方針で作成しています。

方針 内容
AWSは「見るだけ」 describe / list / get は許可、create / delete / update などは拒否
Gitは「ローカル作業まで」 commit まで許可、push は拒否
外部通信を遮断 curl / wget を拒否
破壊的操作を防止 rm -rf / sudo / git reset –hard などを拒否

設定ファイル

{
  "permissions": {
    "allow": [
      "mcp__aws-knowledge__aws___search_documentation",
      "mcp__aws-knowledge__aws___read_documentation",
      "mcp__aws-knowledge__aws___get_regional_availability",
      "mcp__aws-knowledge__aws___list_regions",
      "mcp__aws-knowledge__aws___recommend",
      "Bash(git status)",
      "Bash(git log *)",
      "Bash(git diff *)",
      "Bash(git show *)",
      "Bash(git branch *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(git checkout *)",
      "Bash(git fetch *)",
      "Bash(git pull)",
      "Bash(git merge *)",
      "Bash(git stash *)",

      "Bash(aws * get*)",
      "Bash(aws * describe*)",
      "Bash(aws * list*)",
      "Bash(aws sts *)",

      "Bash(* --help)",
      "Bash(* --version)",
      "Bash(which *)",
      "Bash(pwd)",
      "Bash(ls *)",
      "Bash(wc *)",
      "Bash(echo *)",
      "Bash(mkdir *)",
      "Bash(cat *)",
      "Bash(head *)",
      "Bash(tail *)",
      "Bash(jq *)",

      "Read(~/.claude/**)"
    ],
    "deny": [
      "Bash(git push *)",
      "Bash(git push --force *)",
      "Bash(git reset --hard *)",
      "Bash(git clean -f *)",

      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(curl *)",
      "Bash(wget *)",

      "Bash(aws * create*)",
      "Bash(aws * delete*)",
      "Bash(aws * modify*)",
      "Bash(aws * put*)",
      "Bash(aws * update*)",
      "Bash(aws * run*)",
      "Bash(aws * start*)",
      "Bash(aws * stop*)",
      "Bash(aws * terminate*)",
      "Bash(aws s3 rm *)",
      "Bash(aws s3 cp *)",
      "Bash(aws s3 mv *)",
      "Bash(aws s3 sync *)",

      "Read(C:/*)",
      "Read(D:/*)"
    ]
  }
}

各カテゴリの解説

MCP Server – AWSドキュメント検索

// 許可:AWS Knowledge Base MCPツール
"mcp__aws-knowledge__aws___search_documentation",
"mcp__aws-knowledge__aws___read_documentation",
"mcp__aws-knowledge__aws___get_regional_availability",
"mcp__aws-knowledge__aws___list_regions",
"mcp__aws-knowledge__aws___recommend"

Claude CodeはMCP(Model Context Protocol)Serverと連携できます。AWS Knowledge BaseのMCPツールを許可することで、会話中にAWSの公式ドキュメントを検索・参照できるようになります。調査作業が格段に効率化されます。

AWS CLI – 読み取りのみ許可

// 許可:情報取得系のコマンド
"Bash(aws * get*)",
"Bash(aws * describe*)",
"Bash(aws * list*)",
"Bash(aws sts *)"

describe-instanceslist-buckets といった参照系コマンドは自由に使えます。sts も許可しているので、現在のセッション情報の確認も可能です。

一方で、リソースの作成・削除・変更に関わるコマンドはすべて拒否しています。

// 拒否:変更系のコマンド
"Bash(aws * create*)",
"Bash(aws * delete*)",
"Bash(aws * modify*)",
"Bash(aws * put*)",
"Bash(aws * update*)",
"Bash(aws * run*)",
"Bash(aws * start*)",
"Bash(aws * stop*)",
"Bash(aws * terminate*)",
"Bash(aws s3 rm *)",
"Bash(aws s3 cp *)",
"Bash(aws s3 mv *)",
"Bash(aws s3 sync *)"

S3についてはサブコマンド体系が異なるため、rm / cp / mv / sync を個別に拒否しています。これにより、Claude Codeを使ってAWS環境の調査やトラブルシュートを安全に行えます。

Git – ローカル操作のみ

status、log、diff、add、commit、checkout、fetch、pull、merge、stash といった日常的なGit操作は許可しています。一方で、push は拒否しているため、リモートリポジトリへの反映は自分の目で確認してから手動で行う運用です。

// 拒否:リモートへの反映・破壊的操作
"Bash(git push *)",
"Bash(git push --force *)",
"Bash(git reset --hard *)",
"Bash(git clean -f *)"

reset --hardclean -f といった取り消しの効かない操作も拒否しています。

ユーティリティコマンド

// 許可:日常的なシェルコマンド
"Bash(* --help)",
"Bash(* --version)",
"Bash(which *)",
"Bash(pwd)",
"Bash(ls *)",
"Bash(wc *)",
"Bash(echo *)",
"Bash(mkdir *)",
"Bash(cat *)",
"Bash(head *)",
"Bash(tail *)",
"Bash(jq *)"

ファイルの閲覧やJSONの加工など、調査・分析に使う基本コマンドを許可しています。jq を許可しておくと、AWS CLIの出力を整形・フィルタする際に便利です。

外部通信・破壊的操作の遮断

// 拒否
"Bash(curl *)",
"Bash(wget *)",
"Bash(rm -rf *)",
"Bash(sudo *)"

意図しない外部通信やファイル削除を防ぎます。これらが必要な場合は、ターミナルから自分で実行すれば済む話です。

ファイル読み取りの制御

// 許可:Claude Code設定ファイル
"Read(~/.claude/**)"

// 拒否:ドライブ直下からの読み取り
"Read(C:/*)",
"Read(D:/*)"

Claude Codeの設定ファイルは参照を許可しつつ、ドライブ直下からの広範なファイル読み取りは拒否しています。作業ディレクトリ外の機密ファイルを意図せず読み取られることを防ぐ設定です。

設定のポイント

  1. allowとdenyの優先順位:deny が allow より優先されます。広めにallowしつつ、危険な操作をピンポイントでdenyするのが実用的です。
  2. ワイルドカードの活用aws * describe* のようにサブコマンドをまとめてマッチできます。
  3. MCP Serverとの併用:MCP Serverの各ツールも allow に追加すれば、確認プロンプトなしでシームレスに利用できます。
  4. Readツールの制御:Bashコマンドだけでなく、Claude Code内蔵の Read ツールも許可・拒否の対象にできます。

まとめ

Claude Codeの進化は本当に早く、日々ついていくのに必死です。
まだまだ穴だらけの設定の可能性が大ですが、少しずつブラシュアップし、効率性とセキュリティを兼ね備えた最強のClaude Code設定を作り上げていきたいです。

Last modified: 2026-03-08

Author