presidio-hardened-ikigov-assess について
presidio-hardened-ikigov-assessは、IKI-GovガバナンスフレームワークでAIユースケースを評価するコマンドラインツール兼MCPサーバーです。チェックリストを採点し、ライフサイクルのゲートを確認して、ISO/IEC 42001やEU AI Actへの適合範囲をマッピングし、評価履歴も追跡できます。
主な機能
- 01IKI-Govチェックリストの採点
- 02リスク別G0–G5ゲート確認
- 03ISO/IEC 42001とEU AI Actのギャップ分析
- 04証拠に基づく評価と署名検証
- 05SQLiteによる評価履歴とポートフォリオ推移
- 06機械可読なJSON出力
活用シーン
- 01AIユースケースのガバナンス準備状況を評価する
- 02ライフサイクルゲートの開放・ブロックを確認する
- 03ISO/IEC 42001やEU AI Actの適用ギャップを調べる
- 04保存した評価の成熟度変化を追跡する
MCP 対応
証拠が必要な評価向けに、MCPツール`iga_assess_with_evidence`を提供します。コマンドラインツールでも同じガバナンス評価の流れを利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
7掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| lang | string | いいえ |
詳細
presidio-hardened-ikigov-assess
🇬🇧 英語 · 🇩🇪 ドイツ語
IKI-Gov 評価ツール — IKI-Gov-Referenzmodell(統合 KI ガバナンス参照モデル)を、構造化されたガバナンスフレームワークに照らして AI のユースケースを評価する実用的な CLI ツールとして運用します。
IKI-Gov フレームワークは、中心となるライフサイクル (Kontext → Konzeption → Entwicklung → Freigabe → Betrieb → Anpassung → Außerbetriebnahme) を6つのドメインで囲み、6つの品質ゲート(G0–G5)を用いて6つの評価次元(M1–M6)にわたり測定します。
参考文献:Stantchev, V. IKI-Gov-Referenzmodell — 統合 KI ガバナンス参照モデル。
書籍
このツールは、Vladimir Stantchev による Springer のモノグラフで紹介された IKI-Gov 参照モデルを実装しています。書籍は2つの版で刊行されます。
- AI and IT Governance(英語)— Springer、ベルリン;ISBN 978-3-662-74001-9;2027年1月11日刊行予定
- KI und IT-Governance(ドイツ語)— Springer、ベルリン;ISBN 978-3-662-74093-4;2026年12月28日刊行予定
本書は、従来の IT ガバナンス(COBIT、ITIL、ISO/IEC 38500)を起点に、倫理、法律、リスク、データにまたがる AI ガバナンスへと進み、そこから IKI-Gov を構成します。すなわち、ライフサイクル、6つのドメイン、6つの測定次元(M1–M6)、6つの品質ゲート(G0–G5)です。ここで評価する25項目のチェックリストは、本書のフレームワーク章と、ワークショップ/承認ゲートの付録から採用されています。ISO/IEC 42001 および EU AI Act との対応付けは、本書の方向付けを示す表に基づいています。
本書では、このモデルを、考察に基づく総合的な枠組みであり、方向付けのための実践的なヒューリスティックとして提示しています。法律上の助言でも、適合性評価でもありません。このツールも同じ立場を取ります(euaiact-gap および iso-gap コマンドの免責事項をご覧ください)。2つの版は現在 Springer(ベルリン)で予約受付中です。Springer のカタログページと DOI は、公開され次第ここに追加します。
インストール
pip install presidio-hardened-ikigov-assess
# With dependency CVE checking
pip install "presidio-hardened-ikigov-assess[audit]"
# With Ed25519 public-key evidence verification
pip install "presidio-hardened-ikigov-assess[crypto]"
クイックスタート
# Parameter-driven assessment
iga assess --use-case "fraud-scoring" --risk-class high --lang en \
--affirm S1,S2,S3,D1,D2,T1,T4,O1,I1
# Interactive wizard (step-by-step)
iga assess --interactive --lang de --risk-class high --use-case "kredit-scoring"
# Gate readiness check
iga gate --gate G2 --risk-class high \
--affirm S1,S2,S3,D1,D2,T1,T4,O1,I1 --lang en
# CI pipeline gate assertion (exit 0 OPEN / 2 PARTIAL / 3 BLOCKED)
iga gate --gate G1 --risk-class high --affirm S1,S2,D1,D2 --assert-gate G1
# Strict mode: skipped gate-critical items count as blocking
iga gate --gate G2 --risk-class high --affirm S1,S2 --skip D3 --strict --assert-gate G2
# Machine-readable JSON (scriptable, no progress bars)
iga assess --affirm S1,S2,S3 --quiet
iga gate --gate G0 --affirm S1,S2 --skip S3 --quiet
# Export report to Markdown (stdout)
iga report --use-case "fraud-scoring" --risk-class high \
--affirm S1,S2,S3,D1,D2,T1 --format markdown
# Export report to JSON
iga report --use-case "fraud-scoring" --affirm S1,S2 --format json
# Write the report to a file (Markdown or JSON)
iga report --use-case "fraud-scoring" --affirm S1,S2,T4 --output audit/fraud-scoring.md
iga report --use-case "fraud-scoring" --affirm S1,S2 -f json -o fraud-scoring.json
# ISO/IEC 42001 clause-level coverage gap analysis
iga iso-gap --use-case "fraud-scoring" --risk-class high --affirm S1,S2,S3,I1,I2
iga iso-gap --affirm S2,S3,I1,I2 --quiet # machine-readable JSON
# EU AI Act high-risk obligations (Art. 9–18, 72) — high-risk systems only
iga euaiact-gap --use-case "fraud-scoring" --affirm S1,S2,S3,S4,S5,D1,D5
iga euaiact-gap --affirm S1,S2 --quiet
# Persist assessments and view the portfolio (SQLite at ~/.iga/assessments.db)
iga assess --use-case "fraud-scoring" --risk-class high --affirm S1,S2,S3 --save
iga list # table of saved assessments
iga portfolio # aggregated M1–M6 + blocked gates
iga trend --use-case "fraud-scoring" # delta vs the previous saved run
iga delete --use-case "fraud-scoring" # hard-delete
# List saved assessments (persistence in v0.6.0)
iga list
出力例
書籍の実例(付録 B、校正刷り修正版)を、100桁の端末で表示した場合:
iga assess --use-case fraud-scoring --risk-class medium --lang en \
--affirm S1,S2,S3,S4,S5,D1,D2,D4,D5,T1,T2,T3,T4,O1,O2,O3,I1 --skip D3
IKI-Gov Assessment — fraud-scoring [risk: MEDIUM]
Measurement Dimensions
M1 Strategie & Ownership ██████████ 100.0 %
M2 Data Quality & Lineage ██████████ 100.0 %
M3 Validation & Fairness ██████████ 100.0 %
M4 Security & Robustness █████░░░░░ 50.0 %
M5 Compliance Evidence ██░░░░░░░░ 20.0 %
M6 Operations, Drift & Incidents ██████░░░░ 60.0 %
────────────────────────────────────────────────────────────────────────────────────────────────────
Overall maturity ███████░░░ 71.7 %
Evidence: 0 verified, 0 evidence-backed of 17 affirmed items; 0 asserted and not counted.
Gate Readiness
G0 OPEN
G1 OPEN
G2 PARTIAL — skipped: D3
G3 BLOCKED — blocking: T5 (A security review of the model…)
G4 BLOCKED — blocking: O4 (An incident response and change…), O5 (An audit log — capturing
model…), I2 (Roles and responsibilities for AI…)
G5 BLOCKED — blocking: O5 (An audit log — capturing model…), I2 (Roles and responsibilities for
AI…), I3 (An AI risk register per ISO/IEC 42001…), I4 (The AI system lifecycle is documented…), I5
(An internal audit of AI governance…)
同じ回答でも、--risk-class high を指定すると、G2 は BLOCKED — blocking (skips not permitted): D3 になります。tests/test_book_example.py でこの出力を固定しています。詳しくは docs/book-compatibility.md をご覧ください。
チェックリスト
IKI-Gov フレームワークの5つの付録セクションに基づく25項目:
| Prefix | Section | M-Dimension |
|---|---|---|
| S1–S5 | 戦略とビジネスケース | M1 戦略とオーナーシップ |
| D1–D5 | データ、法務と倫理 | M2 データ品質とリネージ |
| T1–T3 | モデル、安全性と技術 | M3 検証と公平性 |
| T4–T5 | モデル、安全性と技術 | M4 安全性と堅牢性 |
| O1–O5 | 運用、モニタリングと監督 | M6 運用、ドリフトとインシデント |
| I1–I5 | ISO/IEC 42001 との照合 | M5 コンプライアンスの証拠 |
スコアリング
score_m(dim) = sum(weight_i for affirmed items in dim)
/ sum(weight_i for non-skipped items in dim) × 100
overall = arithmetic mean(M1, M2, M3, M4, M5, M6)
リスククラスの乗数:low = 1.0 · medium = 1.5 · high = 2.0。
スキップされた項目は、分子と分母の両方から除外されます(保守的な扱い)。
ゲート
| Gate | ライフサイクルの移行 |
|---|---|
| G0 | コンテキスト → 構想 |
| G1 | 構想 → 開発 |
| G2 | 開発 → 承認 |
| G3 | 承認 → 運用 |
| G4 | 運用 → 調整 |
| G5 | 調整 → 運用終了 |
ステータス: OPEN(すべて肯定) · PARTIAL(一部スキップされ、否定はなし) · BLOCKED(否定が1件以上)
リスククラスを考慮したしきい値(v0.3.0)
スキップをどのように扱うかは、適用中のリスククラスによって異なります:
| リスククラス | ゲートの重要項目のスキップ |
|---|---|
low | 許容 — スキップはあるものの否定がないゲートは OPEN |
medium | 条件付きで許容 — 肯定されるまではゲートは PARTIAL |
high | 許可されない — スキップによりゲートは BLOCK されます(デフォルトで厳格) |
--strict は、どのリスククラスでも high リスクの動作を強制します。スキップによってゲートがブロックされる場合、
理由が明確になるよう、blocking_skips として別途報告されます。
CI 終了コード
--assert-gate Gn はステータスごとに異なるコードで終了するため、出力を解析せずにパイプラインを
分岐できます:
| 終了コード | 意味 |
|---|---|
0 | ゲート OPEN |
2 | ゲート PARTIAL |
3 | ゲート BLOCKED |
1 | 一般エラー(入力が無効、ゲートが不一致) |
assess と gate で --quiet(-q)を指定すると、機械可読な JSON のみが出力されます。
規制コンテンツパック(v0.16.0)
ISO/IEC 42001 と EU AI Act のマッピングは、汎用カバレッジエンジンを基盤とするバージョン管理されたコンテンツパックです。これにより、新しいフレームワークをデータとして追加できます:
iga content-list # built-in + external packs (versions, hashes)
iga framework-gap --framework iso42001 --affirm S1,S2,D1
iga framework-gap --framework euaiact --risk-class high --affirm S1,S2,D5 --quiet
iga framework-gap --framework nist-ai-rmf --affirm S1,S2,S3 # NIST AI RMF (Govern/Map/Measure/Manage)
パックは、各対象(条項/条文)を、それを裏付けるチェックリスト項目またはゲートにマッピングします。
JSON パックを IGA_CONTENT_PATH(または ~/.iga/content/)に配置すると、フレームワークを追加または上書きできます。同じ framework_id を持つ外部パックは、組み込みのパックを上書きします。従来の iso-gap/euaiact-gap コマンドに変更はありません。
ISO/IEC 42001 のカバレッジ
iga iso-gap は、評価を ISO/IEC 42001 の条項レベルのカバレッジにマッピングします。各条項グループ(条項4~10および附属書Aの管理策)は、カバー済み(マッピングされたチェックリスト項目がすべて肯定)、一部カバー、またはギャップとして報告され、完全にカバーされていない条項ごとに未対応項目が一覧表示されます:
ISO/IEC 42001 Coverage Gap Analysis — fraud-scoring [risk: HIGH]
4 Context of the organization PARTIAL (1/2) — Outstanding items: S4
5 Leadership COVERED (4/4)
8 Operation GAP (0/13) — Outstanding items: D1, D2, …
A Annex A (Controls) GAP (0/12) — Outstanding items: …
スキップされた項目と否定された項目は、未肯定(カバレッジの加点なし)として扱われます。
項目から条項への対応表は、IKI-Gov の対応表(tab:framework-iso42001-matrix)に基づき、checklist.ISO_CLAUSES_BY_ITEM に集約されています。機械可読な JSON を出力するには --quiet を使用してください。
EU AI Act(高リスクシステム)
iga euaiact-gap は、ゲートの準備状況を、高リスクシステムに関する EU AI Act の義務(第9~18条、および市販後モニタリングに関する第72条)にマッピングします。各条文は、その証拠を生成するゲートの準備状況に基づいて OPEN/PARTIAL/BLOCKED として報告されます:
EU AI Act High-Risk Compliance Gap — fraud-scoring [risk: HIGH]
Art. 9 Risk management system G0, G1, G2, G4 PARTIAL — G2 BLOCKED, G4 BLOCKED
Art. 10 Data and data governance G1 OPEN
Art. 11 Technical documentation G2, G3 BLOCKED — G2/G3 BLOCKED
ゲートから条文への対応関係は、IKI-Gov の書籍(tab:framework-euaiact-gates、2026年10月の校正刷りでの修正を反映:G4 は第9条を第72条とともに引用し、G5 は第18条と第17条を引用)から逐語的に転記され、euaiact.EU_AI_ACT_ARTICLE_GATES に記載されています。
このコマンドは高リスクシステム専用です(低/中リスクでは警告とともに終了します)。--quiet を指定すると JSON が出力されます。
このツールは法的助言や適合性評価を提供するものではありません。
永続化とポートフォリオ
iga assess --save は評価結果をローカルの SQLite データベース
~/.iga/assessments.db に保存します(IGA_DB_PATH 環境変数で変更できます)。ポートフォリオ
コマンドは、保存済みのユースケースを横断して動作します。
| コマンド | 目的 |
|---|---|
iga list | 保存済みの評価結果すべての一覧表(ユースケース、リスク、総合評価、タイムスタンプ) |
iga portfolio | ユースケースごとの最新の評価結果に基づく M1~M6 と総合成熟度の平均、および各ゲートが BLOCKED のユースケース数 |
iga trend --use-case X | 保存済みの2回の実行間(最新と前回、または --from/--to で指定した期間)のディメンションごとの差分(▲/▼/=)、総合成熟度の変化、ゲートの遷移 |
iga delete --use-case X | ユースケースの保存済み評価結果をすべて完全に削除 |
list と portfolio は JSON 出力用の --quiet をサポートしています。保存されるのは指定した情報のみです
(ユースケース名、リスククラス、言語、回答/スコア/ゲート)。データベースファイルは
アクセス権限 0600 で、~/.iga ディレクトリは 0700 で作成されます。delete は
完全削除であり、論理削除のログは保持されません。
外部証拠
肯定内容は、同等の presidio-hardened-*
コントロール(最初の生成元:presidio-hardened-ai)が出力する署名付き証拠で裏付けることができ、項目を自己申告から証拠で裏付け済みに引き上げられます。また、ローカルのトラストストアに照らして暗号学的に検証済みにすることもできます。
検証はフェイルクローズ方式です。署名の欠落、不正な形式、または不一致は、検証済みとして扱われません。
# Affirm items from an evidence document, verifying signatures against a trust store
iga assess --use-case "fraud-scoring" --risk-class high \
--evidence evidence.json --trust trust.json
# Fail-closed: ONLY items whose reference verifies against --trust count.
# Bare --affirm / wizard answers are recorded as "asserted" and do not count.
iga assess --use-case "fraud-scoring" --risk-class high \
--affirm S1,S2 --evidence evidence.json --trust trust.json --require-evidence
# Verify a document on its own (exit 0 only if every reference verifies)
iga verify-evidence --evidence evidence.json --trust trust.json
--require-evidence は証拠のみを対象とします(v0.26.0)
--require-evidence は、回答を受け付けるすべてのコマンドで利用できます。対象は assess、
gate、report、export、certify、framework-gap、iso-gap、euaiact-gap、
classify assess、および iga_assess_with_evidence MCP ツールです。このフラグを指定した場合、--evidence 内の参照が --trust に対して検証された項目のみが、肯定済みとして扱われます。
そのような参照を伴わない --affirm(またはウィザード)だけの回答は申告済みとして扱われます。記録され、stderr に項目名が表示され、すべての出力で asserted (not counted) として表示されますが、スコアやゲートには反映されません。--evidence または --trust がない場合、信頼ストアが空の場合、署名者が不明な場合、キーが誤っている場合、または署名が改ざんされている場合は、何も検証されず、何もカウントされません。スキップされた項目は、引き続きスキップされたままです。
v0.26.0 より前は、このフラグは
--evidenceの入力だけをフィルタリングしていました。--affirmのみの回答は引き続きカウントされ、--evidenceがなければフラグはまったく読み取られませんでした。そのため、全25項目に対して--require-evidence --trust '{}'を指定すると、すべてのゲートが OPEN のまま、100 % と報告されていました。SECURITY.mdとCHANGELOG.md(0.26.0、Security)を参照してください。
すべての出力で、どのフラグによる回答かにかかわらず、各項目にマークが付くようになりました。項目ごとの provenance(self | evidence | evidence-verified)は、肯定済みの行と申告済みの行の両方に必ず表示されます。JSON には answers.asserted と evidence_coverage(require_evidence、asserted_not_counted)が含まれます。ゲートとギャップの JSON には evidence ブロックが含まれ、Markdown レポートには Evidence 列とスコアの下のサマリー行が追加されます。また、署名付きエクスポートマニフェストには、署名対象バイト列の中に同じ evidence ブロックが含まれるため、パックを見れば、その数値の根拠が分かります。
証拠ドキュメントは、生成元が提供する EvidenceRef JSON です。
{
"schema": "presidio-hardened/evidence-ref@1",
"use_case": "fraud-scoring",
"evidence": [
{
"item_id": "D1",
"source": "presidio-hardened-ai",
"source_version": "0.2.0",
"ledger_ref": "pai-ledger:seq/0",
"content_hash": "abc123def456",
"signer": "presidio-hardened-ai",
"signature": "2e7af6d2…",
"claimed_at": "2026-06-08T00:00:00+00:00"
}
]
}
信頼ストアは、各署名者をそのキーに対応付けます。エントリーには、単独の HMAC シークレット(後方互換性あり)またはアルゴリズムとキー素材を宣言するオブジェクトを指定できます。
{
"presidio-hardened-ai": "shared-hmac-secret",
"peer-control": { "alg": "ed25519", "public_key": "<64-hex-char public key>" }
}
キーのローテーションでは、public_key(HMAC の場合は key)にリストを指定できます。リスト内のいずれかのキーと一致すれば署名が検証されるため、重複期間中は新しいキーと古いキーを並行して使用できます。キーを信頼ストアから削除すると、そのキーは失効します。
{
"peer-control": { "alg": "ed25519", "public_key": ["<new public key>", "<retiring key>"] }
}
Ed25519(RFC 8032)の公開鍵検証を使うと、検証者は公開鍵のみを保持すればよく(生成元と共有シークレットを持つ必要はありません)。また、[crypto] エクストラが必要です。署名対象は正規化された {content_hash, signer} メッセージです。署名者のキーはローカルの信頼ストアのみから解決され、ネットワークは使用されません。証拠参照に含まれるのはハッシュと不透明な台帳 URI であり、PII は含まれません。このメッセージには項目名が含まれないため、1つの署名付き参照を複数の項目に対して提示しても、いずれの項目も検証されません。証拠の各ピースが裏付けるのは、必ず1つの項目です。
この仕組みとスイート全体との関係: ikigov-assess は、ピアである
presidio-hardened-*の制御から証拠を取り込む、ガバナンスの基盤です。リポジトリ横断の概要(ファミリーの連携方法とエンドツーエンドのデモ)については、 presidio-hardened-* Suite Architecture (presidio-hardened-ai内)を参照してください。
ゲート証明書(v0.23.0)
ゲート証明書(presidio-hardened/gate-certificate@1)は、証明書そのものを証明とします。現在、ゲートの判定(OPEN/PARTIAL/BLOCKED)は、iga が算出したため信頼されています。証明書ではこの関係を逆転させます。証明書は簡潔な署名付きアーティファクトであり、第三者は ikigov-assess を実行せず、評価データベースも使わずに、信頼ストアを使ってローカルで検証できます。判定をサービスが返したために信頼する集中型のポリシー判定ポイント(Cedar/Zanzibar クラス)とは対照的です。これは計算論的法学プログラム(Stantchev、arXiv 2026)を製品として実現したもので、ローカル検証、信頼経路にエンジンを介さない設計、フェイルクローズを特徴とします。
証明書には、判定の根拠も含まれます。十分な確認セット(すべてのゲート項目について、項目ごとの affirmed/skipped/denied)、埋め込まれたエビデンス参照(ある場合、そのままの内容)、および判定述語の入力値(ゲートの項目 ID、リスククラス、有効な strict フラグ、述語のコンテンツハッシュ)です。これにより、検証者は証明書だけから判定を再計算し、申告された判定と照合できます。
# Emit a signed gate certificate after evaluating a gate
iga certify --gate G2 --use-case "fraud-scoring" --risk-class high \
--affirm S1,S2,D1,D2,D3,D4,D5,T1,T2,T3 \
--evidence evidence.json --trust trust.json \
--issuer "presidio-assessor" --sign-alg ed25519 \
--sign-key-file issuer.key --output cert.json
# Verify locally against a trust store — no DB, no engine, fail-closed
iga verify-certificate --certificate cert.json --trust trust.json
iga certify に --evidence を指定する場合は --trust が必須です。また、エビデンス参照はすべて、埋め込む前に検証に成功する必要があります。参照の検証に失敗すると、発行は中止されます。その後の検証では、互いに異なる失敗理由を持つ次の5つのチェックを個別に実行します。未知のスキーマ → unknown-schema、発行者の署名(分離署名。証明書の正規化バイト列から signature フィールドを除いたものに対する署名) → bad-signature/unknown-issuer、述語の識別情報 → predicate-content-mismatch、埋め込まれたすべてのエビデンス参照を検証者の信頼ストアに照らして再検証 → evidence-ref-failure、埋め込まれた述語の入力値から判定を再計算し、申告された判定と照合 → decision-mismatch。読み取るのは証明書と信頼ストアのみです。
正規化と署名には、エビデンス参照とワークショップマニフェストで使われる共通の規約を採用しています。正規化 JSON は json.dumps(sort_keys=True, separators=(",", ":"), ensure_ascii=False) を UTF-8 でエンコードしたもので、SHA-256 でハッシュ化します。発行者の署名には HMAC-SHA256 または Ed25519(RFC 8032)を使用し、エビデンス参照と同じ形式の信頼ストアから解決します。
申告の範囲(過大な主張をしないこと): ゲート証明書が証明するのは、宣言された述語と埋め込まれた確認セット/エビデンスのもとで、ゲートの判定を再計算した結果が申告された値と一致することです。基盤となる統制が有効であることや、エビデンスに記載された現実世界の主張が真実であることは証明しません。
系譜、有効性、根拠付け、ティア(v0.26.0)
署名対象のコンテンツ内に配置される、追加可能な任意フィールドが4つあります。そのため、v0.26.0より前の証明書も変更なく検証できます。
parents(--parent <hex>、複数指定可) — ADR-0002の来歴を示す親です。この判断の根拠となる証拠のコンテンツハッシュで、通常はeai-classification@1文書とワークショップのマニフェストが該当します。署名対象のため、発行後に系譜を書き換えることはできません。構造上、循環は発生せず、空の場合は省略されます。親の解決は検証者ではなく、利用者が行います。not_after(--valid-days N) — 有効期限です。この形式で意図的に設けられた失効方法は、有効期限のみです。失効リストも、アキュムレーターも、調整機構もありません。有効期限を過ぎると検証はフェイルクローズし(expired)、verify-certificate --at <UTC>を使うと指定時点の状態を検証できるため、チェックを再現できます。有効期限の指定がなければ、期限切れにはなりません。grounding— 肯定された項目のうち、最も弱い来歴を示します。肯定されたゲート項目に、埋め込みのevidence-refがないものが1つでもあればself、それ以外はevidence-verifiedです。名前が示された署名者による自己証明は、証明されたティアではありません。担保のない主張です。検証者はこれを再計算し(grounding-mismatch)、--min-grounding evidence-verifiedは自己証明された項目が1つでもあればフェイルクローズします(grounding-below-minimum)。- 保証ティア — 証拠文書で
evidence-ref@2(presidio-evidence ADR-0003)を使えるようになりました。refで宣言されたassurance_tier(attested|optimistic|zk、デフォルトはattested)は、@2の場合にのみ有効となり、証明書にそのまま引き継がれます。これはあくまで宣言です。検証者はrefの署名を再検証しますが、不正の証明やzk証明は検証しません。また、宣言されたティアのうち最も弱いものを報告するため、--min-evidence-tierで下限を要求できます(evidence-tier-below-minimum)。埋め込みのrefがない証明書も、この下限を満たさないものとして扱われます(no-evidence-for-tier-floor)。証明書自体のassurance_tierはattestedのみで、それ以外は認められません。他のティアを宣言する証明書は拒否されます(unsupported-assurance-tier)。これにより、将来のzkゲート証明書が、この検証者で検証可能な証明書と誤認されるのを防ぎます。
証明書の識別情報(v0.29.0)
certificate_content_hash(cert)は、証明書の識別情報を返します。発行者が署名する正規化済みバイト列(signatureを除いた文書)のSHA-256で、16進数の小文字表記です。ファミリー証拠コントラクトに従い、下流のペイロードがそのゲート判断を識別するためにparentsへ格納するハッシュです。署名ブロックは対象外のため、再署名しても変わりません。署名対象のコンテンツに変更があれば、ハッシュも変わります。framework_content_hashは、その下にあるすべての証明書に共通するゲートルールを識別するものであり、親ではありません。この識別情報は有効性について何も示しません。まず証明書を検証してください。
from presidio_ikigov_assess.certificate import certificate_content_hash, verify_certificate
result = verify_certificate(cert, trust)
if result.ok:
parent = certificate_content_hash(cert)
MCP サーバー
評価エンジンはModel Context Protocolサーバーとしても利用できるため、MCP対応のLLMエージェントやクライアントは、IKI-Govの評価をツールとして実行できます。
# Install with the MCP extra (requires Python 3.10+ and the mcp 2.x SDK)
pip install "presidio-hardened-ikigov-assess[mcp]"
# Run the server over stdio
iga-mcp
MCP Registryにはio.github.presidio-v/presidio-hardened-ikigov-assessとして登録されています。レジストリクライアントはuvx --from "presidio-hardened-ikigov-assess[mcp]" presidio-hardened-ikigov-assessで起動します。このコマンドはiga-mcpと同じサーバーを実行します。
MCPクライアント(Claude Desktopなど)に登録するには、クライアントの設定に次の項目を追加します。
{
"mcpServers": {
"iki-gov-assess": {
"command": "iga-mcp"
}
}
}
ツール
| ツール | 目的 |
|---|---|
iga_framework_info | モデルを説明します。ライフサイクルの各段階、次元 M1–M6、ゲート G0–G5、セクション、リスククラス(de/en) |
iga_list_checklist | ID、テキスト、次元、ゲート、セクションを含む25件すべてのチェックリスト項目を返します |
iga_assess | 確認済み/スキップした項目 ID からユースケースを評価します → M1–M6 のスコア、総合成熟度、ゲート準備状況 |
iga_assess_with_evidence | 署名済みの EvidenceRef ドキュメントからユースケースを評価し、トラストストアに照らして署名を検証します(HMAC または Ed25519) |
iga_check_gate | ブロック中/スキップした項目を含め、単一のゲート G0–G5 の準備状況を評価します |
iga_iso_gap | 確認済み項目を ISO/IEC 42001 の条項カバレッジに対応付けます(カバー済み/一部/ギャップ) |
iga_euaiact_gap | EU AI Act の高リスク義務 Art. 9–18, 72 に対応付けます(OPEN / PARTIAL / BLOCKED) |
すべてのツールは CLI と同じ入力検証と出力サニタイズを使用し、iga report --format json と同じ構造の JSON スキーマを返します。また、セッションごとの不正使用ガードに従い、上限を超えた場合はサーバーを終了せず、ツールエラーを返します。
エビデンスパックのエクスポート(v0.15.0)
評価の署名済み監査対応バンドルをエクスポートし、後で検証します。
# Write report.md + report.json + manifest.json (sha256 of each artifact + framework hash).
# Seal the manifest with an HMAC key read from a file (kept off argv / shell history).
iga export --use-case fraud-scoring --risk-class high --affirm S1,S2,D1 \
--bundle audit/fraud-scoring/ --sign-key-file ~/.iga/seal.key
# Re-hash artifacts against the manifest (and check the optional HMAC seal).
iga verify-bundle --bundle audit/fraud-scoring/ --sign-key-file ~/.iga/seal.key
manifest.json はすべての成果物のコンテンツハッシュを記録し、評価の作成に使用したチェックリストと ISO/EU AI Act マッピングを固定する framework_content_hash を記録するため、後から変更があれば verify-bundle で検出されます。.zip を出力するには --zip を使用します。(PDF のレンダリングと公開鍵によるマニフェスト署名は後日対応予定です。ハッシュマニフェストと任意の HMAC シールが整合性の基準となります。)
シールキーは、まず --sign-key-file <path>(推奨)、次に --sign-key <key>(インライン。シェル履歴とプロセス一覧に表示されるため避けてください)、最後に $IGA_SIGN_KEY 環境変数から取得されます。export と verify-bundle では同じ取得元を使用してください。
Classificator Bridge(eai-classification/v1)
v0.20.0 — Enterprise AI Classification Framework と IKI-Gov 評価エンジンをつなぐ、生成元に依存しない相互運用レイヤーです。
このブリッジは、eai-classification/v1 スキーマに準拠するあらゆる生成元のドキュメントを受け入れます。研究用の eai-classificator ツール、パートナーのアンケートツール、または手作業で作成した JSON が対象です。このスキーマは、特定のツールの出力形式ではなく、モデル(6×6 マトリクス:タイプ T1–T6 × 自律性レベル L1–L6)を基準にしています。
分類ドキュメントの例
{
"schema": "eai-classification/v1",
"producer": {"tool": "eai-classificator", "version": "1.0.0"},
"use_cases": [
{
"id": "fraud-scoring",
"type": "T1",
"level": "L4",
"name": {"de": "Betrugserkennung", "en": "Fraud Scoring"},
"confidence": 0.92,
"tags": ["finance", "high-risk"]
},
{
"id": "customer-chat",
"type": "T4",
"level": "L3",
"ecosystem": true
}
]
}
L6/エコシステム体制: レベル L6 は、順序尺度に属さないエコシステム/マルチシステム調整オーバーレイです。複数システムの調整体制に参加することを示すには、L1–L5 のユースケースに "ecosystem": true を設定します。パーサーは実効セルレベルを L6 に正規化し、記録用に base_level を保持します。
level=L6 と ecosystem=false の組み合わせは矛盾として拒否されます。
分類ドキュメントを取り込む
# Human table: use case, cell, risk presumption, strict, obligations, note
iga classify ingest --file classification.json --lang de
# Machine JSON: includes pack content_hash and producer echo
iga classify ingest --file classification.json --quiet
分類ドキュメントからプロファイル評価を実行する
# Resolve the selected use case's profile, then run the full assess pipeline
iga classify assess \
--file classification.json \
--select fraud-scoring \
--affirm S1,S2,D1,D2,T1 \
--lang de \
--quiet \
--save
# The profile's risk_class and strict flag are pre-set from the classification
# pack. --strict may further tighten; profile strict=true cannot be loosened.
classify assess コマンドは、既存のパイプライン全体(compute_scores、evaluate_all_gates、render_json、store.save_assessment、log_security_event)を再利用し、セル ID とプロファイルパックの content_hash を含む iga-classify-assess セキュリティイベントをログに記録します。
分類プロファイルパックのオーバーライド
組み込みパック(eai-classification-default、DRAFT セマンティクス)は自動的に読み込まれます。オーバーライドするには、"pack_kind": "classification-profile" を含む JSON ファイルを IGA_CONTENT_PATH(デフォルトは ~/.iga/content/)に配置します。このファイルは36個すべてのセルを網羅する必要があります。同じ framework_id を持つパックが組み込みパックをオーバーライドします。
{
"pack_kind": "classification-profile",
"framework_id": "eai-classification-default",
"version": "my-org-1.0",
"profiles": {
"T1.L1": {"risk_presumption": "low", "strict": false,
"obligations": ["iso42001", "euaiact"],
"notes": {"en": "Minimal oversight required."}},
"T1.L2": { "..." : "..." }
}
}
ContentPacks(規制フレームワークのギャップマッピング)と ProfilePacks は同じディレクトリに共存し、ローダーは pack_kind によって識別します。
外部プロデューサー向け JSON Schema
schemas/eai-classification.v1.schema.json(リポジトリのルート)には、パートナープロデューサーが公開前の検証に使用できる JSON Schema draft/2020-12 定義が用意されています。classification.py の Python パーサーが正式な情報源です。jsonschema はプロジェクトの依存関係として宣言されていません。
ワークショップモード(T-B3/T-B4)
iga workshop run は、ライブの顧客ワークショップ用ツールです。プロジェクターに接続したノートパソコンで実行し、分類ドキュメントを指定すると、各ユースケースを大きく高コントラストのリッチ出力で表示すると同時に、ユースケースごとの成果物(「Übergabeunterlage」)をディスクに書き込みます。プロジェクター表示と成果物の生成を含む一連の処理は、ユースケースあたり2分未満を目標としています。v0.22.0 以降に推奨される保管モデルは顧客アンカー型です。顧客が自身のハードウェアで生成した鍵を使ってマニフェストに署名し、presidio は評価者として別個の証明ドキュメントに追記署名します。
オフライン対応
ワークショップモードは、エアギャップのある顧客サイト向けに設計されています。起動時の CVE/依存関係チェックを明示的に回避します(pip-audit にはネットワークアクセスが必要です。エアギャップのあるサイトではハングしたり、タイムアウトしたり、ノイズの多い「結論が出ない」という警告を出したりします)。workshop サブコマンドが検出されると依存関係チェックの回避は自動で行われるため、--no-dep-check フラグは不要です。セキュリティ態勢は、セッション前に創業者のマシンで pip-audit を実行して維持します。
例
# Generate leave-behind artifacts for all use cases in a classification document,
# in German (default), writing to ./workshop-out/<date>/.
iga workshop run \
--file classification.json \
--lang de
# Generate for selected use cases only.
iga workshop run \
--file medical.json \
--select infusion-pump-dosing \
--select surgical-robotics \
--out /tmp/workshop-2026/
# Pre-populate answers (assessor filled a form earlier).
iga workshop run \
--file classification.json \
--answers answers.json
# Quiet: write artifacts only, no projector output.
iga workshop run --file classification.json --quiet
answers.json の形式は次のとおりです。
{
"fraud-scoring": {
"affirm": ["S1", "S2", "S3", "D1", "D2"],
"skip": ["I4", "I5"]
}
}
ユースケースごとの成果物レイアウト
workshop-out/<date>/<use_case_id>/
report.de.md Markdown leave-behind (localised)
report.json Full assessment JSON + classification provenance block
sign.py Standalone customer owner signer
SIGNING.md Bilingual signing-ceremony runbook
assessor.pub Presidio assessor public key, when supplied/derived
manifest.json Content-hashed manifest (presidio-hardened/workshop-leavebehind@1)
manifest.sig Ed25519 detached signature (UNSIGNED marker if no key provided)
attestation.json Optional presidio assessor attestation envelope
attestation.content.json
manifest.json には、ツールのバージョン、セル ID、リスククラス、言語、プロファイルパックのコンテンツハッシュ、各成果物の SHA-256、および成果物が署名済みかどうかが記録されます。
顧客所有者による署名と presidio の証明
顧客の所有者鍵ペアは、顧客のハードウェア上で生成してください。秘密鍵はモード 0600 で作成されます。顧客との契約の信頼ストアに登録するため、公開鍵のみを presidio に渡してください。
iga workshop keygen --out customer-key.hex --signer "ACME GmbH"
iga workshop run が成果物を書き込んだ後、顧客は所有者としてマニフェストに署名します。
iga workshop sign \
--dir workshop-out/2026-07-04/infusion-pump-dosing/ \
--key customer-key.hex \
--signer "ACME GmbH"
その後、Presidio は顧客が署名したマニフェストに評価者として追記署名します。この証明は、マニフェストのハッシュに紐付けられた独立した workshop-attestation@1 証拠ドキュメントです。
iga workshop attest \
--dir workshop-out/2026-07-04/infusion-pump-dosing/ \
--engagement hc-workshop-2026-001 \
--sign-key ~/.iga/workshop-assessor.key \
--signer presidio-hardened-ikigov-assess
成果物を検証する(顧客側)
顧客は所有者の署名と、必要な場合は presidio 評価者の証明を検証します。
# Verify the artifact in the infusion-pump-dosing/ directory.
iga workshop verify \
--dir workshop-out/2026-07-04/infusion-pump-dosing/ \
--pubkey <customer-public-key>
# Require a valid presidio attestation bound to the manifest.
iga workshop verify \
--dir workshop-out/2026-07-04/infusion-pump-dosing/ \
--pubkey <customer-public-key> \
--require-attestation \
--attestation-pubkey <presidio-assessor-public-key>
# Machine-readable JSON result.
iga workshop verify \
--dir workshop-out/2026-07-04/infusion-pump-dosing/ \
--pubkey <customer-public-key> \
--quiet
すべての成果物のハッシュと署名が検証できた場合は終了コード 0、それ以外の場合は終了コード 1 で終了します(フェイルクローズ)。署名のない成果物も検証に失敗します。ハッシュが一致するだけでは、ファイルを誰が作成したかを証明できないためです。ハッシュの整合性のみを受け入れるには、--allow-unsigned を渡してください。JSON の結果で authenticated: true となるのは、署名が検証された場合のみです。
名前付き委任チェーン(v0.23.0)
顧客署名 → マニフェストハッシュ → presidio の証明という系譜は、明示的な委任チェーンとして公開されます。これは、名前付きリンクを順序付けて並べたリストで、各リンクには role、signer、署名対象の signs、および参照するハッシュ reference が記載されます。--show-chain はリンクごとにチェーンをたどり、それぞれ異なる失敗理由(owner-sig-invalid、owner-key-mismatch、assessor-missing-key、および attests-manifest-mismatch などすべての証明に関する理由)を示します。--require-chain を指定すると、所有者のリンクが存在しない場合にもフェイルクローズします。これは追加的かつ派生的な機能です。既存の所有者ブロック、manifest.sig、および証明から検証時にチェーンを構築するため、v0.23.0 より前に生成されたマニフェスト(チェーンを含まないもの)も、変更なく検証できます。
iga workshop verify \
--dir workshop-out/2026-07-04/infusion-pump-dosing/ \
--pubkey <customer-public-key> \
--attestation-pubkey <presidio-assessor-public-key> \
--show-chain --quiet
セキュリティ
セキュリティポリシーの全文については、SECURITY.md をご覧ください。
ツールに組み込まれているセキュリティ制御:
- すべての CLI パラメーターに対する入力検証(型、範囲、許可リスト)
- レポート出力内のユーザー提供文字列をすべて HTML エスケープ
~/.iga/security.logへの構造化されたセキュリティイベントログ(コンテンツは記録せず、構造に関するメタデータのみを記録)- 起動時に
pip-auditで CVE をチェック(--no-dep-checkで無効化できます。iga --versionはチェックをスキップするため、オフラインでもインストール済みのバージョンを確認できます) - セッションのレート制限(デフォルト:評価 100 件。
IGA_MAX_ASSESSMENTSで変更できます)
プロジェクトのサプライチェーン:OpenSSF Best Practices silver および OpenSSF Scorecard(現在のスコアは上部のバッジをご覧ください)。main への変更には、2 人目のレビュアーによる承認が必要です。リリースタグには署名が付与され、各リリースは来歴証明書と CycloneDX SBOM を添えて、OIDC Trusted Publishing 経由で PyPI に公開されます。パーサーは Atheris でファジングされています。
ロードマップ
| バージョン | テーマ | ステータス |
|---|---|---|
| v0.1.0 | MVP — 対話型およびパラメーター駆動型の評価、M1–M6 のスコアリング、バイリンガル対応 | リリース済み |
| v0.2.0 | MCP サーバー — エージェントから利用可能な評価エンジン(iga-mcp) | リリース済み |
| v0.3.0 | ゲート準備状況の改善、CI 終了コード 0/2/3、--strict フラグ | リリース済み |
| v0.4.0 | 項目ごとの回答を含むファイルへのレポート出力(--output) | リリース済み |
| v0.5.0 | ISO/IEC 42001 の条項レベルのギャップマッピング(iga iso-gap) | リリース済み |
| v0.6.0 | ポートフォリオモード:永続化、list、portfolio、delete | リリース済み |
| v0.7.0 | 成熟度の推移:保存済みの実行結果間の差分(iga trend) | リリース済み |
| v0.8.0 | 高リスクシステム向け EU AI Act ゲート→条文マッピング(iga euaiact-gap) | リリース済み |
| v0.13.0 | 外部エビデンスに基づく確認:iga assess --evidence / verify-evidence および iga_assess_with_evidence(最初の生成元:presidio-hardened-ai) | リリース済み |
| v0.14.0 | 公開鍵(Ed25519)によるエビデンス検証:トラストストアの {alg, public_key} エントリーと verify_ref ディスパッチ([crypto] extra) | リリース済み |
| v0.20.0 | Classificator ブリッジ(eai-classification/v1)、36 セルのプロファイルパック、iga classify | リリース済み |
| v0.21.0 T-B3 | iga workshop — オフラインの顧客ワークショップツール、Ed25519 署名付き持ち帰り成果物、workshop verify | リリース済み |
| v0.21.0 T1.4 | ドイツ語ローカライズの全面的な見直し:すべての実行時出力を t() 経由にし、--lang de で英語のみのセンチネルが残らないように対応 | リリース済み |
| v0.22.0 T-B4 | ワークショップのエビデンス主権:顧客オーナーの署名、単独で動作する署名者、presidio 評価者の証明 | リリース済み |
| v0.23.0 T-B5 | ゲート証明書:署名付き gate-certificate@1、iga certify / iga verify-certificate、発行時および検証時のエビデンス参照検証、名前付きワークショップ委任チェーン | リリース済み |
| v0.24.0 | メンテナンス:カバレッジ誘導型ファジング(fuzz extra、Atheris)、JSON 境界でのフェイルクローズガード、[mcp] extra の問題を解消するため mcp を 2.0 未満に制限 | リリース済み |
| v0.25.0 | iga --version;mcp 2.x SDK(MCPServer)に移植(extra の要件を mcp>=2,<3 に変更);OrgAuthMiddleware が非 HTTP の ASGI スコープを転送せず拒否 | リリース済み |
| v0.26.0 S-1 | セキュリティ: --require-evidence をあらゆる場所でフェイルクローズに変更;単なる確認は asserted として表示され、カウントされない;すべての出力でエビデンスあり/確認済み/未対応を明示 | リリース済み |
| v0.26.0 T-B6 | 証明書の系譜(parents、ADR-0002)、有効期限(not_after)、grounding、検証者の最低要件とともに公開される evidence-ref@2 の保証レベル | リリース済み |
| v0.27.0 | セキュリティ: 2026-09 監査の是正(GHSA-376h-xg26-xf2j):1 つのエビデンス参照で検証できる項目は 1 つのみ;証明書発行者を署名者に紐付け;バンドルパスを制限;組織ごとのリモートレート制限ウィンドウ | リリース済み |
| v0.28.0 | 書籍との整合性(Anhang B):実例をテストで固定、[risk: …] ヘッダーを修正、修正済みのゲート→条文テーブル(Art. 18, 72)に euaiact-gap を準拠;docs/book-compatibility.md | リリース済み |
| v0.29.0 | ゲート証明書の識別子を certificate_content_hash に変更(ADR-0006)。これにより生成元は、許可を与えたゲート判定を parents に指定可能;リモートサーバー用の [mcp] には mcp>=2.2 が必要 | リリース済み |
| v0.29.1 | セキュリティ: トラストエントリーの public_key が HMAC シークレットとして扱われないように修正(GHSA-3c6h-3546-fqmm);新たなアドバイザリーに対応するため certifi、opentelemetry-api、filelock のバージョンを固定 | リリース済み |
バージョンに関する議論の全ログ:PRESIDIO-REQ.md
今後 12 か月の予定
方向性を示すものであり、予定中または進行中の作業であって、確約ではありません。
- 次の予定 — フレームワークのギャップ対応範囲を拡大(ISO/IEC 42001 の改良および委任法令の成立に伴う EU AI Act の更新)し、
assess --evidence/ ゲート証明書のフローに追加のエビデンス生成元を組み込みます。 - 評価中 — OpenSSF Gold 基準に向けた再現可能なビルドとファイルごとの来歴情報。
開発
# Install in editable mode with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint and format
ruff format .
ruff check . --fix
ライセンス
MIT。LICENSEを参照してください。
SDLC
このリポジトリは、PRESIDIO の強化ファミリー SDLC のオープンソースベースラインに位置付けられています (レポート · PDF)。 このベースラインで測定された統制と未解決のギャップについては、 適用性マトリックスの該当行をご覧ください。
ガバナンス、アーキテクチャ、セキュリティ
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。