コンプライアンスフレームワークに対してコードやインフラストラクチャをチェックしたことがある人なら、100ページのPDFを読んでコードベースと照らし合わせ、判断を下す作業を思い浮かべるでしょう。遅くて、一貫性がなく、自動化できません。

そこで私はそれを本気で修正するパイプラインを構築しました。

問題点

CMMC Level 1 と NIST SP 800-171 Rev 2 は、小規模な国防関連企業や政府関連企業が対応しなければならない最も一般的なコンプライアンスフレームワークの2つです。どちらも規制文書としてのみ存在し、公式の機械可読バージョンはありません。

つまり、すべてのコンプライアンスチェックは手動です。インフラストラクチャをレビューするAIコーディングアシスタントは、これらの要件に関する組み込みの認識を持っていません。すべてのCI/CDパイプラインは、コンプライアンスチェックを完全にスキップするか、誰かが確認することを覚えておくことに依存する必要があります。

** 私が構築したもの**

Pythonパイプライン:

  1. NISTの公式CPRTエクスポート(SP 800-171用)と48 CFR § 52.204-21の逐語テキスト(CMMC Level 1用)から実際の規制ソースデータを取得
  2. 構造化されたSQLiteスキーマに正規化
  3. すべてのコントロールに対してJSONルールを生成し、機械で実行可能な指示を添付

実際のルールは次のようになります:

\json
{
"rule_id": "nist_sp_800-171_rev_2_3.1.1",
"framework": "NIST SP 800-171 Rev 2",
"control_id": "3.1.1",
"title": "ACCESS CONTROL — 3.1.1",
"requirement": "Limit system access to authorized users, processes acting on behalf of authorized users, and devices.",
"agent_guidance": "When generating or reviewing code/infrastructure, ensure compliance with NIST SP 800-171 Rev 2 control 3.1.1. Flag any implementation that does not satisfy: Limit system access to authorized users, processes acting on behalf of authorized users, and devices.",
"generated_at": "2026-07-15T16:42:56.026218+00:00"
}
\
\

興味深いのはagent_guidanceフィールドです。これはAIコーディングエージェントのシステムプロンプトに直接挿入できるように、コンプライアンスのガードレールとして特別に書かれています。

実際に使用する3つの方法

1. AIコーディングエージェントのシステムプロンプト

\`python
import json

with open("nist_800-171_rules.json") as f:
rules = json.load(f)

guardrails = "\n".join(r["agent_guidance"] for r in rules)
system_prompt = f"Apply these compliance rules when writing or reviewing code:\n{guardrails}"
`\

2. CI/CDコンプライアンスゲート — パイプラインステップとしてルールを反復処理し、関連するシステムに触れるPRで適用可能なコントロールに対処していないものをフラグ付けし、例外を追跡するための安定した参照としてrule_idを使用します。

3. GRCプラットフォームへのインポート — ほとんどのGRCツールには独自のフレームワークマッピングがあり、control_idはクリーンな結合キーを提供します。

パイプライン構築で学んだこと

最も難しかったのはルール生成ではなく、ソースデータでした。NISTのCPRT用REST APIは直接的な自動アクセスに対して403を返すため、最初にカタログから手動でエクスポートする必要があります。また、JSONスキーマはバージョン間で本当に一貫性がなく、CVSS v3がbaseSeveritycvssData内にネストしている一方、CVSS v2はそれを兄弟フィールドとして配置しているため、数週間にわたって重大度データがサイレントで「UNKNOWN」にデフォルト設定されるバグがありました。典型的な「実際にチェックするまでデータは問題ないように見えた」バグです。

今後の展開

両方のフレームワークで125のルールが完成しました — サンプルではなく完全なカバレッジです。パイプラインを自分で構築する代わりに完成したデータセットを希望する人のために、完全な出力(両方のJSONファイル)をワンタイムライセンスとしてパッケージ化しました:[link]。しかし、私にとってより興味深いのはこのパターン自体です — 静的な規制文書を、人間がチェックすることを覚えておかなければならない文書ではなく、AIエージェントが実際に推論できるものに変換することです。

SOC 2、ISO 27001、HIPAAなどの他のフレームワークについてコンプライアンス・アズ・コードに取り組んだ方が他にいるかどうか、コメントで解析アプローチについて意見交換できればと思います。