OSCAL Pocket Guide — NIST SP 800-53 や CSF などのガイドラインをスマホアプリに搭載する取り組み
NIST SP 800-53 Rev 5 の本文は500ページ近くあります。OSCAL Foundation や FedRAMP のような大きな話の横で、その500ページを実際に毎日めくらされている現場の人たちは何に困っていて、どう改善しようとしているのか。2026年3月18日に開催された NIST OSCAL Monthly Workshop(第41回)1 2 で、その視点から作られた個人開発のモバイルアプリ「OSCAL Pocket Guide」が紹介されました。発表者の Tevin Harris さんは、所属は明かせないものの連邦政府の現役職員で、自身が運営する euCann LLC の代表でもあるという立場の人です。
このアプリが面白いのは、機能の派手さよりも「OSCAL を何だと位置づけているか」のほうにあります。Tevin さんは OSCAL を、文書を公開するためのフォーマットではなく、アプリのランタイム上で直接動くデータベースとして扱っていました。今回はその設計判断と、結果として何ができあがったかを追ってみます。
3行サマリー
- OSCAL カタログをアプリ起動時にそのままパースしてランタイム DB として使う、Flutter 製のオフラインファーストなモバイルアプリ
- 800-53 Rev 5、CSF 2.0、800-171 Rev 3、SSDF (800-218)、800-60、AI RMF の6つを同じ UI で行き来でき、SSP ビルダーまで載っている
- 800-60 の OSCAL 表現を独自に作って提案中。OSCAL を「使う側」に届けることで普及を加速させる、というアプローチが透けて見える
なぜモバイルアプリだったのか
Tevin さんが冒頭で挙げていたのは、現場のごく素朴な不満でした。1,193 もの統制を扱うのに、媒体は PDF と Excel しかない。「800-53 だと AC-2 を検索しても本文中に100箇所くらいヒットして、どれが自分の探しているものか分からない」というのが彼の原体験で、これがアプリを作り始めたきっかけだったと話しています。
ベースライン(FedRAMP でいう LOW / MODERATE / HIGH のような統制セット)の選択も、手元では結局スプレッドシートと文書を見比べての手作業になります。SSP(システムセキュリティ計画)は Word で、しかも個人ごとに別バージョンが回り、フレームワーク同士のマッピングは別の文書を横置きしながら追うことになる。これらが「オフラインでもモバイルでもエアギャップ環境でも使えない」状態のまま放置されていることが、Tevin さんが繰り返し指摘していた現状でした。エアギャップ環境というのは、外部ネットワークから物理的に切り離した運用環境のことで、SCIF(Sensitive Compartmented Information Facility、機密区画施設)のような場所ではそもそも普通のクラウドサービスが使えません。
その上で彼が出した問いがシンプルでした。「OSCAL カタログを、現場が日常的に使うツールを動かすデータベースとして据えたらどうなるか」。今回のアプリは、その問いに対する一つの答えとして組み上げられています。
OSCAL をランタイム DB として使う
OSCAL JSON は普段、文書として配布される側に置かれがちです。NIST が catalog を JSON として公開し、ベンダーがそれをツールに取り込み、変換し、別のデータモデルに落として処理する。という流れが一般的になっています。
OSCAL Pocket Guide が他と違うのは、その変換層を持たない点です。NIST 公式の OSCAL JSON ファイル(800-53 Rev 5、CSF 2.0、800-171 Rev 3、SSDF、AI RMF などを合わせて約17MB分)をアプリのバンドルに同梱し、起動時に Dart の型付きモデルへパースして、そのまま画面遷移や検索の元データとして使う作りになっています。バンドルされた OSCAL JSON は加工していないので、アプリは「変換器」ではなく「OSCAL コンシューマ兼プロデューサ」だ、と Tevin さんは整理していました。
スライドの中でも特に強調されていたのは、Profile ベースのベースライン絞り込みでした。OSCAL の profile は include-controls で対象統制 ID の集合を持つので、アプリ側はその集合と control list を突き合わせるだけで、LOW / MODERATE / HIGH / PRIVACY の切り替えが成立します。
もう一つ細かいけれど嬉しい工夫として、OSCAL の文中に出てくる {{ insert: param, ac-02_odp.01 }} のような ODP(Organization-Defined Parameter、組織が定義するパラメータ)プレースホルダの扱いがありました。生の OSCAL を読むと、本文中にこの中括弧記法が散らばってしまい、初学者には何が書いてあるのか分かりません。アプリ側ではこれを起動時に抽出して、NIST 推奨値があれば自動でインラインに差し込み、ユーザーが上書きすれば組織値で表示する、という処理を裏で済ませてくれています。「読むときにこの中括弧を見せたくなかった」というのは小さな配慮に見えますが、OSCAL を現場に持ち込むときの心理的な障壁の一つを取り除いている部分です。
6つのフレームワークをひとつの UI に集約する
アプリには6つのフレームワークが入っています。SP 800-53 Rev 5 と CSF 2.0、800-171 Rev 3、SSDF (SP 800-218、Secure Software Development Framework、安全なソフトウェア開発フレームワーク)、SP 800-60 Vol II、そして AI RMF Playbook です。
CSF 2.0 ↔ 800-53、CSF 2.0 ↔ 800-171 の相互マッピングもアプリの中に組み込まれていて、CSF のサブカテゴリから対応する 800-53 統制に画面遷移できます。「CSF 評価の途中で『この成果を満たす MODERATE の 800-53 統制はどれか』を引く」という、現場でよくある動き方をそのまま画面に落としています。逆方向のマッピング、つまり 800-53 から CSF を引く向きはロードマップに入っているとのことなので、現時点では片方向です。
SP 800-60 をどうするか — OSCAL に「乗っていない」フレームワーク
6つのフレームワークの中で、SP 800-60 だけ少し性質が違います。これは連邦情報システムの情報種別(payment transactions、tax collection など171種類)と、それぞれの機密性・完全性・可用性に対する NIST 推奨インパクトレベルを定義した文書で、FIPS 199(連邦情報処理規格199、機密性・完全性・可用性の3軸でシステムを High / Moderate / Low に分類する規格)に基づく分類を実務的に支える役割を持ちます。
問題は、SP 800-60 が NIST 公式の OSCAL コンテンツとしてはまだ公開されていないことでした。catalog や profile のような既存モデルにそのままは載りません。Tevin さんはこれを自前で OSCAL 化し、アプリに同梱したうえで、OSCAL コミュニティに対して Reference Taxonomy という新しいモデル案(OSCAL Discussion #2194)を提案している、と説明していました。情報種別のような「統制でも統制カタログでもないが、繰り返し参照される分類体系」を標準化する形で OSCAL に組み込むための提案で、SP 800-60 がモデルケースになる構図です。
SSP ビルダー — 10 ステップのウィザードと OSCAL エクスポート
アプリの中で最も野心的なのが、SSP ビルダーの機能です。発表時点ではベータで、Tevin さんも「まだ作り込みの最中」と前置きしていましたが、すでに具体的な機能が出来上がっています。
10 ステップのウィザードで、システム情報の入力から始まり、情報種別の選択(800-60 の出番)、機密性・完全性・可用性の判定、認可境界(authorization boundary、システムが連邦に対して責任を負う範囲)の定義、役割の割り当てが続きます。役割のところで挙げられていた略語は、システムオーナー、AO(Authorizing Official、認可責任者)、ISO(Information System Owner、情報システム責任者)、ISSO(Information System Security Officer、情報システムセキュリティ責任者)、ISSE(Information Systems Security Engineer、情報システムセキュリティ技術者)あたりで、機関ごとに独自の役割がある場合はそれも追加できる作りでした。
実装の記述では、Tevin さんが「Implementation Engine」と呼ぶ機能が組み込まれていました。各統制ごとに、空欄を埋めるテンプレート形式の例文を3パターンずつ用意してあり、組織名・ツール名・レビュー頻度といったパラメータを差し込むだけで実装ステートメントが組み上がる、という仕組みです。デモでは「ポリシー文書名」「レビュー頻度」のフィールドにユーザー入力を入れていく流れが映され、保存した値は他の統制でも再利用できると説明されていました。SSP の文章が手作業の英文記述で揺らぐのを、テンプレートと再利用可能なパラメータで矯正していこう、という発想です。
最後のステップでは、今までの入力が OSCAL SSP の JSON として出力されます。XML と YAML での出力も選べて、出力先はファイルダウンロードでもメール送信でも構わない構成でした。「OSCAL に対応した GRC ツール(Governance, Risk, and Compliance ツール、統合的なコンプライアンス管理ソフト)にそのまま取り込める」という連携を意識した出口設計で、最終的にどこかのプラットフォームに渡される前提が見えます。
800-53A の評価オブジェクティブを LLM 解釈付きで持ち歩く
SSP の中身を作ったら、次は評価です。アプリには SP 800-53A Rev 5.1.1(800-53 統制をどう評価するかを定義した手引き)の評価オブジェクティブが、1,193 統制ぶん組み込まれていました。E/I/T、つまり Examine(文書・記録の確認)、Interview(関係者への聞き取り)、Test(実機テスト)の方法タグも付いており、評価員が「この統制は何で評価すべきか」を瞬時に引けるようになっています。
ここで一手加わっているのが、評価ガイダンスの LLM 解釈です。Tevin さんは NIST 文書の表現を LLM に解釈させ、各オブジェクティブごとに「現場で何を見ればよいか」「どういう証拠が考えられるか」をあらかじめ生成し、アプリのバイナリに同梱しています。発表中、彼は ChatGPT に統制内容を聞いたら誤情報を返された経験を踏まえて、「だから自分のアプリの中では LLM をオフラインで、検証済みのガイダンスとして閉じ込めて持ち歩けるようにした」と話していました。SCIF のような外部接続不可の環境でも、AI 補助の解釈が手元で動くことになります。
NISTBot と呼ばれる対話型のチャット機能と、TIMA という6,425件の NIST 文書をインデックス化した RAG(Retrieval-Augmented Generation、検索拡張生成)のバックエンドも、コードベースには組み込み済みでまもなく稼働、という説明でした。TIMA は元々 Tevin さんが自宅で動かしているエージェントシステムの名前で、Threat Intelligence Management Agent と Telegram Integration Management Agent の両方を兼ねる人格を持つ、という横道の話も挟まれていて、個人開発らしい遊びの部分が感じられました。
普及戦略としての「OSCAL を見せない」
このアプリには、OSCAL コミュニティの議論として面白い視点が一つあります。それは、ユーザーが OSCAL を使っていることを意識しなくていい、という普及戦略です。
Tevin さんはこれをはっきり言葉にしていました。「OSCAL Pocket Guide のユーザーは全員、知らないうちに OSCAL を利用している。これは OSCAL の普及を加速する」。前章で触れたとおり、アプリの中で見える表現は OSCAL の生の JSON ではなく、解決済みの統制本文と人間向けのガイダンスです。一方で、ユーザーが SSP ビルダーで出力するのは正真正銘の OSCAL SSP JSON で、これは別のツールに渡せます。入口と出口だけが OSCAL に揃っていて、中で何が起きているかはユーザーから見えない、という設計です。
OSCAL を仕様として理解できる専門家を増やすのではなく、「OSCAL を経由した結果しか触らない人」を増やす方向に振った設計、と言い換えてもよいかもしれません。これは OSCAL Foundation が FedRAMP 向けに進めている標準化作業や、NIST 自身の仕様策定とは別の力学で OSCAL を広げる動きで、コミュニティにとって参考になる実例だと思いました。
アーキテクチャと現時点の制約
開発に使われているのは Flutter 3.35 / Dart 3.7 で、iOS、Android、Web に加えて macOS、Windows、Linux のデスクトップ版も視野に入っています。発表時点で公開されているのは iOS App Store と Google Play 経由で、ストア表記はまだ「NIST Pocket Guide」のまま(OSCAL Pocket Guide への改名アップデートを審査中とのこと)です。
ローカル保存には SQLite に SQLCipher 暗号化を重ねていて、SSP の機微情報が端末に残る前提のため暗号化を最初から組み込んだ、と説明されていました。クラウド側は Supabase(オープンソースの BaaS、認証や DB を含むバックエンドサービス)でユーザー認証と端末間同期を担うつもりですが、こちらは「コードは入っているが、まだ有効化していない」状態でした。
OSCAL のバージョン対応にも独特の苦労があり、800-53 Rev 5 は OSCAL 1.1.2、800-171 Rev 3 は OSCAL 1.2.0、SSDF は 1.0.4 と、ファイルごとに OSCAL 自体のバージョンが揃っていません。特に 800-171 の 1.2.0 はメタデータの構造が他と違うため、アプリ側で OSCAL バージョンを実行時に検出して切り替えるロジックを書く必要があったそうです。NIST 公式のリリーススケジュールが揃っていない部分が、こうしたツール側のコストとして跳ね返ってきている格好で、ここは今後 OSCAL 仕様自体の運用課題として考えるヒントになりそうです。
機能としては、SSP の OSCAL「インポート」がまだ無く、出力しかできない点が現時点での大きな制約でした。発表中の質疑で参加者から「現場で持ち歩くなら、既存の SSP を端末で開けるべきでは」という指摘があり、Tevin さんもその場で「次のアップデートで入れる」と応じていました。
米国の文脈から見えるもの
このアプリ単体は個人プロジェクトですが、米国のコンプライアンス周りで動いている大きな流れの中に置いてみると、いくつかの位置づけが見えてきます。
一つは、FedRAMP や 20x が機械可読パッケージへ向かっている時期に、その「機械可読化」の恩恵を現場のアセッサや SSP 作成者が肌で感じられる入口がほとんど無い、という状況に対する個人レベルの回答であることです。OSCAL は仕様としてどんどん整っていきますが、現場の人が PDF と Excel から脱出できるかどうかは別問題で、それを埋める道具として動いている例として価値があります。
もう一つは、AI と OSCAL を組み合わせる試みが、巨大ベンダーや政府主導ではなく、個人開発の規模からも動き始めていることです。1,193 統制に LLM 解釈を付けてアプリに同梱する、という発想は、AI を生成器ではなく注釈レイヤとして OSCAL に重ねる方向で、CMMC(Cybersecurity Maturity Model Certification、米国防総省のサプライチェーン向けサイバーセキュリティ認証)や FISMA(Federal Information Security Modernization Act、連邦情報セキュリティ近代化法)系の評価現場でも展開しうるパターンです。
日本から見たとき
日本のセキュリティ実務から眺めると、FedRAMP や 800-53 に直接触る現場はまだ限定的ですが、似た構造の話はあちこちにあります。
たとえば政府情報システムの統一基準や、各業界のセキュリティ基準(金融、医療、重要インフラ)は、依然として PDF と Excel を主要な配布媒体にしています。OSCAL のような機械可読モデルを持っていなくても、「カタログ的なデータを変換せずにアプリのランタイム DB として置く」という発想自体は応用が効きます。仕様のフォーマットさえ決まれば、変換層を挟まずに UI が組めるという証明として、今回のアプリは参考になります。
オフライン環境や閉域網で動かしたい現場は、日本にも少なくありません。クラウド前提のコンプライアンス SaaS が広がる一方で、「持ち出せる端末上で完結する」道具への需要は残っています。約17MB の OSCAL JSON をバンドルしてオフラインで全機能を動かす、という構成は、日本側の制度文書を機械可読化したときの将来像としても参考になります。
OSCAL Pocket Guide はまだ v1.5.x で、SSP ビルダーや RAG チャットはベータか実装中です。完成度はこれからですが、OSCAL を「使う側」の入口を一つ増やした、という点では読みどころのある発表でした。
参考文献
-
NIST OSCAL Monthly Workshop #41, euCann 回トランスクリプト(英語)。https://csrc.nist.gov/csrc/media/Projects/open-security-controls-assessment-language/images-media/2026/oscal-monthly-workshop-41-euCann/CAPTIONS_03.18.2026_EuCann.txt ↩
-
NIST OSCAL Monthly Workshop #41, euCann 回スライド PDF「OSCAL Pocket Guide: Putting NIST Compliance in Your Pocket」。CSRC Presentations ページ(https://csrc.nist.gov/Presentations/2026/oscal-pocket-guide-putting-nist-compliance-in-your)からもアクセスできる。https://csrc.nist.gov/csrc/media/Projects/open-security-controls-assessment-language/images-media/2026/oscal-monthly-workshop-41-euCann/03.18.2026_OSCAL_Pocket_Guide_EuCANN.pdf ↩
この記事は、生成AIを用いて執筆し、著者が確認・編集したうえで公開しています。
