この記事は誰向けか
- 社内で Claude Code / Cursor / Codex / ChatGPT などの AI コーディング支援を 本気で業務利用したい エンジニア
- 「リスクが…」で却下され続けて、情シスに見せられる具体的な技術対策が欲しい チームリーダー
- 情シス側で AI ツールの技術統制を最短で組みたい 担当者
前回記事では、なんでも操作できちゃうAIエージェントを制御するAIGISを紹介しました。
https://qiita.com/sharu389no/items/ede7d1c0be4a14024857
今回は、AIGISを入れた後どういった設定をあなたの環境に合わせて作っていくかの実践編です!
0. 実践にあたって前提課題 — 情シスの困りごと
エンジニア「Claude Code 導入したいです」
情シス 「AI が社内コードを勝手に外部に送ったりしない?」
エンジニア「…たぶん大丈夫です」
情シス 「たぶんじゃダメです。却下。」
情シスが理不尽なわけではなく、彼らが必要としているのは次の 4 点です。
- 可視化 — AI エージェントが何をしているか観測できる
- 制御 — 危険操作を技術的にブロックできる
- 監査 — いつ誰が何をしたかが残る
- 規制対応の証拠 — AI 事業者ガイドライン v1.2 / AI 推進法(2025-09 施行)に対応していることが言える
「AI の操作を全部丸裸にして、制御して、記録する」基盤が 1 つあれば、4 点同時に満たせます。
1. Aigis をインストールする(30 秒)
PyPI 上のパッケージ名は pyaigis(CLI は aigis)です。
pip install pyaigis
aigis init --agent claude-code
これだけで、Claude Code のプロジェクト直下に以下が自動配置されます。
-
aigis-policy.yaml— 既定セキュリティルール(即適用) -
.claude/hooks/aigis-guard.py— Claude Code の pre-tool-use フック。全ツール呼び出しを横取りする -
.aigis/logs/— JSON Lines のローカル操作ログ
.claude/hooks/ は Claude Code 公式のフック機構なので、特別なラッパは挟みません。Claude Code 側の挙動を変えずに監視層だけ足せます。
2. インターセプトの実際 — Bash の rm -rf / を例に
フック導入後の動きはこうです。
Claude Code 「Bash で rm -rf / を実行します」
↓ (pre-tool-use フック)
Aigis Guard 「policy: dangerous_commands に該当 → deny」
↓
Claude Code 「ブロックされました。別のアプローチを検討します」
ローカルログに残るのは次のような JSON Lines です。
{
"timestamp": "2026-05-15T15:30:00Z",
"user_id": "tanaka",
"agent_type": "claude_code",
"action": "shell:exec",
"target": "rm -rf /",
"risk_score": 90,
"risk_level": "CRITICAL",
"policy_decision": "deny",
"policy_rule_id": "dangerous_commands",
"reasons": ["Recursive root deletion"]
}
決定が「deny / review / allow」のどれに落ちたか、なぜ落ちたかが構造化されています。Excel に貼っても grep してもよし。
3. 既定でブロックされる代表例
aigis init --agent claude-code 直後の aigis-policy.yaml で発動するルールの抜粋:
| 操作 | 既定判定 | 検出されている攻撃面 |
|---|---|---|
rm -rf * |
block | 再帰削除 |
.env への書き込み |
block | シークレット保護 |
.ssh/ へのアクセス |
block | SSH 鍵保護 |
git push --force |
block | 履歴破壊防止 |
curl ... | bash |
block | リモートコード実行 |
sudo |
review | 特権昇格は人間承認 |
git push |
review | push は人間承認 |
| サブエージェント生成 | review | エージェント委任は人間承認 |
| ハードコード API key の生成 | block | dev_hardcode_secret |
| マルウェアコード生成 | block | dev_malware_gen |
全部 aigis-policy.yaml 上で読める正規表現/DSL ルールなので、ブラックボックスは無いです。
カスタムを足したいときは YAML を直接書きます。
rules:
- id: protect_production
action: "shell:exec"
target: "*production*"
decision: deny
reason: "本番環境への操作は禁止"
- id: protect_customer_data
action: "file:read"
target: "*customer*"
decision: review
reason: "顧客データへのアクセスはレビュー必要"
この辺の編集どうするとかは、Claude codeに聞いてね♡ 「AIGISのポリシーを変更したい」
4. 情シスに見せる 3 コマンド
導入後、社内承認用に見せる成果物は次の 3 つで足ります。
# (a) ガバナンス状態のスナップショット
aigis status
# (b) 操作ログ(アラートのみ)
aigis logs --alerts
# (c) コンプライアンスレポート(30 日)
aigis report --days 30
aigis status の出力例:
Aigis - Governance Status
==================================================
Policy: developer_tools.yaml (v1.0.21)
Rules: {N} (deny={D}, review={R})
Activity (last 7 days):
Total events: 342
Blocked: 8
Review queued: 3
Compliance (JP): 39/39 requirements mapped
OpenSSF Scorecard: passing
※ ルール件数 N は適用ポリシー(
developer_tools.yaml/internal_tools.yaml/finance.yamlなど 9 雛形から選択可)と自社カスタム追加分に依存します。
aigis monitor --owasp で OWASP LLM Top 10 のスコアカードも出ます。
OWASP LLM Top 10 Scorecard
LLM01 Prompt Injection ACTIVE 118 detections
LLM02 Insecure Output Handling ACTIVE 36 detections
LLM05 Supply-Chain ACTIVE 17 detections
LLM06 Sensitive Info Disclosure ACTIVE 45 detections
LLM07 Insecure Plugin Design ACTIVE 12 detections
...
「実測値を持って情シスに行ける」のが本記事の主張です。「対策しています」ではなく「直近 7 日で 8 件ブロックしました」と数字で答えられる。
5. 日本の AI 規制対応の「証拠」を出す
Aigis は 44 のコンプライアンス雛形 / 国別合計 39 件の日本規制要件マッピング を同梱しています。日本側の内訳は次のとおりです(aigis/compliance.py の実装値)。
| 規制 | 要件マッピング数 |
|---|---|
| AI 事業者ガイドライン v1.2(2026-03 改訂) | 25 |
| 総務省 AI セキュリティ技術ガイドライン | 6 |
| AI 推進法(2025-09 施行) | 3 |
| 個人情報保護法 / マイナンバー法 | 3 |
| 不正競争防止法 | 1 |
| 著作権法 | 1 |
| 合計 | 39 |
aigis report --days 30
# → Compliance: 39/39 JP requirements covered
ここで重要なのは「100% カバーしている」ことではなく、雛形が読める YAML として手元にあって、足りないものを自社で書き足せる ことです。情シスから「うちは独自規程 XX があるんだけど」と言われても、policy_templates/ を出発点にカスタム雛形を 1 ファイル足すだけで対応できます。
カスタムひな形の作り方は、この記事が公表でしたら作ってみます!
6. もう一段下の防御 — AI 特有の攻撃に効くのは別の層
ここまで紹介したのは「コマンド実行レベル」の制御です。Aigis の本体はもう一段下、プロンプト / 出力 / メモリ / MCP ツール定義 の層にあります。代表的な攻撃面は次の通り:
-
プロンプトインジェクション —
Ignore all previous instructions...系の指示乗っ取り - MCP rug-pull / shadowing — 一度承認した MCP ツールが、後から定義を変えて悪意ある動作に化ける
- メモリポイズニング — 長期メモリにシステムの声を模した偽記憶を植え込み、後続セッションで誘導する
- LLM-as-Judge 攻撃 — 評価器を騙して合格判定を強制する(AdvJudge-Zero / Palo Alto Unit 42, 2026)
Aigis はこれらを 2025–2026 年の論文 7 本(Mirror / StruQ / MI9 / MemoryGraft / MSB / DataFilter / AdvJudge-Zero) に基づく検出器でカバーしています。詳細は GitHub の README にマッピング表があります。
1,002 件のテストが全通過、検出率 98.9%、誤検知率 0% を CI で常時測定 しています。OpenSSF Scorecard / OpenSSF Best Practices にも登録済み。
この辺は細かいので、情シスへの説得感の1つくらいで認識していただければいいと思います!
まとめ — 最短経路
| やること | コマンド |
|---|---|
| インストール | pip install pyaigis |
| 初期化 | aigis init --agent claude-code |
| 状態確認 | aigis status |
| アラートログ | aigis logs --alerts |
| 規制レポート | aigis report --days 30 |
| 体験ゲーム | Gandalf Challenge |
「AI ツールを業務に入れたい、けど却下が続く」状況は、技術対策の 可視化・制御・監査・規制対応 の 4 点を 1 つの基盤で揃えれば突破できます。商用ツールに数百万かける前に、まず 30 秒で動かせる OSS で「うちの現場で何件何がブロックされるか」の実測値を手に入れてください。
- GitHub: killertcell428/aigis — ⭐ 押していただけると次の検出器追加が早まります
- GitHub の Watch → Custom → Releases only で、新しい攻撃クラス対応リリースだけ Slack/メールに届きます
- PyPI: pyaigis
- Gandalf Challenge(プロンプトインジェクションを実体験できるゲーム)
質問・誤り指摘は GitHub Issues か、この記事のコメントで歓迎します。