外部の脆弱性診断の報告書を受け取るたびに、指摘事項を重大度・対象システム・担当で整理した是正計画の下書きと、経営層向けの要約を作る
外部の診断会社から届いた脆弱性診断の報告書を読み込み、指摘を1件ずつ同じ形の一覧にそろえます。そのうえで、対象システム・担当・期限を並べた是正計画の下書きと、経営層に出す1枚の要約を作ります。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- 連携・自動化
- Power Automate
- 対象業界
- EC/IT・SaaS/小売/金融
- 対象部門
- 情報システム
- 対象業務
- 書類作成/要約
- 主な課題
- 属人化している/書類作成に時間がかかる/期限・対応漏れが起きる
- AIで行う処理
- 要約
- 主な効果
- 判断支援/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 診断会社から報告書のPDFと指摘一覧のファイルを受け取り、共有のファイル置き場に保存する
- セキュリティ担当が報告書を通して読み、総評と指摘の一覧を確かめる
- 指摘ごとの詳細を読み、対象のURLやホスト、重大度、推奨される対策を社内の管理表へ転記する
- 資産台帳を開き、対象のURLやホストからシステムと担当チームを特定する
- 重大度と、そのシステムが外部に公開されているか、個人情報を扱うかを見て、是正の期限を決める
- 前回の診断の管理表を開き、同じ指摘が残っていないかを目で探す
- 担当チームごとに是正を依頼する文面を書き、チケットを起票する
- 月末に、経営層向けの報告資料を作る。件数を数え直し、重要な指摘を文章で説明する
- 人報告書のPDFと指摘一覧のファイルを、受領用のフォルダに保存し、診断の対象と診断会社を受付票に書く
- 自動保存をきっかけに処理が動き、PDFを文字と表に読み取って、指摘ごとに区切る
- 自動指摘ごとに、見出し・対象・重大度・再現の要点・推奨される対策を同じ形のJSONにそろえる
- 自動対象のURLやホストを資産台帳と照合し、システムと担当チームを付ける
- 自動社内の基準の表から、重大度と公開範囲・扱うデータで優先度と期限の案を付ける
- 自動前回までの指摘の記録と照らし、「前回から残っている」「対応済みのはずが再び出た」を印にする
- 自動是正計画の下書き(担当チーム別の一覧と依頼文)と、経営層向けの要約の下書きを作る
- 人セキュリティ担当が、指摘の一覧を報告書の原本と照合し、担当と期限を確かめて直す
- 人是正計画を確定し、チケットを起票する。経営層向けの要約を直して上長の確認に回す
各工程の詳しい説明を読む
- 診断会社から報告書のPDFと指摘一覧のファイルを受け取り、共有のファイル置き場に保存する
- セキュリティ担当が報告書を通して読み、総評と指摘の一覧を確かめる
- 指摘ごとの詳細を読み、対象のURLやホスト、重大度、推奨される対策を社内の管理表へ転記する
- 資産台帳を開き、対象のURLやホストからシステムと担当チームを特定する
- 重大度と、そのシステムが外部に公開されているか、個人情報を扱うかを見て、是正の期限を決める
- 前回の診断の管理表を開き、同じ指摘が残っていないかを目で探す
- 担当チームごとに是正を依頼する文面を書き、チケットを起票する
- 月末に、経営層向けの報告資料を作る。件数を数え直し、重要な指摘を文章で説明する
(a)転記だけで半日が消える。 3番目の作業は、報告書の詳細ページを1件ずつ読み、URL・重大度・対策を写す作業です。指摘が30件ある報告書なら、読むことより写すことに時間を使っています。 写し間違えたURLは、4番目で担当の特定を誤らせます。
(b)期限の決め方が人による。 5番目は、社内の基準があっても、どの担当が見るかで期限が変わります。「重大度は中だが管理画面なので急ぐ」「重大度は高だが社内からしか届かないので様子を見る」という判断が、記録に残らないまま管理表の期限の欄にだけ残ります。 後から期限の理由を聞かれても答えられません。
(c)前回からの残りを見落とす。 6番目は、前回の管理表と今回の報告書を並べて目で探す作業です。指摘の名前は診断会社によって書き方が違い、同じ指摘でも見出しが変わります。前回「対応済み」とした指摘が今回も出ていれば、是正が効いていなかったということで、経営層にいちばん伝えるべきことです。 それが見落とされます。
(d)経営層への説明が毎回作り直し。 8番目は、月に届いた報告書をまとめ直す作業です。資料の件数と管理表の件数が合わないことがあり、質問に答えるたびに数え直しています。
- 【人】 報告書のPDFと指摘一覧のファイルを、受領用のフォルダに保存し、診断の対象と診断会社を受付票に書く
- 【自動】 保存をきっかけに処理が動き、PDFを文字と表に読み取って、指摘ごとに区切る
- 【自動】 指摘ごとに、見出し・対象・重大度・再現の要点・推奨される対策を同じ形のJSONにそろえる
- 【自動】 対象のURLやホストを資産台帳と照合し、システムと担当チームを付ける
- 【自動】 社内の基準の表から、重大度と公開範囲・扱うデータで優先度と期限の案を付ける
- 【自動】 前回までの指摘の記録と照らし、「前回から残っている」「対応済みのはずが再び出た」を印にする
- 【自動】 是正計画の下書き(担当チーム別の一覧と依頼文)と、経営層向けの要約の下書きを作る
- 【人】 セキュリティ担当が、指摘の一覧を報告書の原本と照合し、担当と期限を確かめて直す
- 【人】 是正計画を確定し、チケットを起票する。経営層向けの要約を直して上長の確認に回す
8番目が、この設計の分かれ目です。 AIがそろえた一覧は、報告書の原本と件数・重大度が一致しているかを必ず人が見ます。一覧から指摘が1件抜けていれば、その指摘は誰にも依頼されないまま次の診断まで残ります。
5番目を機械の規則で決めているのも、意図してのことです。 期限は社内の基準と資産台帳から決まるもので、AIの文章の書きぶりで変わってはいけません。規則で決めた期限なら、後から「なぜこの期限か」と聞かれたときに、基準の表のどの行に当たったかで答えられます。
02今回想定するシステム構成
報告書(PDF)+ 指摘一覧(表計算ファイル) │ 受領用のフォルダへ保存(受付票:対象システム・診断会社・診断の種類) ▼【トリガー】Blob Storage への保存 Azure Functions ── 形式・ページ数の確認、診断会社の書式の判定 ▼ Azure AI Document Intelligence(レイアウト モデル。Markdown 出力) │ 見出し・段落・表を返す ▼ Azure Functions ── 指摘ごとに区切る ▼ Azure OpenAI(Microsoft Foundry。構造化出力) │ 指摘ごとに:見出し/対象/重大度(原文のまま)/CVSS の表記/再現の要点/推奨される対策 ▼ Azure Functions ── 資産台帳との照合、基準の表による優先度と期限、前回との照合、件数の集計 ▼ Azure OpenAI ── 是正の依頼文と、経営層向けの要約の下書き(集計した数字を渡す) ▼ 【人】セキュリティ担当が原本と照合して確定 → チケットの起票、上長の確認
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude API、Gemini API |
| 連携 | Azure Functions(区切り、資産台帳との照合、期限の計算、集計) | Power Automate |
| 読み取り | Azure AI Document Intelligence(レイアウト モデル) | 報告書のPDFからの文字の取り出し |
| 保管 | Azure Blob Storage(報告書の原本、読み取り結果、確定した一覧) | 社内のファイルサーバー |
チケット管理と資産台帳は、新しく足すものではありません。 資産台帳は読むだけで、チケットは人が確定してから起票します。この構成からチケットを自動で起票しないのは、指摘の取りこぼしや重複を人が確かめる前に、担当チームへ依頼が飛ぶのを避けるためです。
報告書の読み取りには、Document Intelligence のレイアウト モデルを使います。 Microsoft Learn では、レイアウト モデルはテキスト、テーブル、選択マーク、ドキュメント構造を抽出し、title や sectionHeading といった段落の役割を返すとされています。outputContentFormat=markdown を指定すると、抽出したテキストを Markdown 形式で出力でき、セクションとサブセクションを取り出しやすくなります。報告書の「指摘ごとの詳細」は見出しで区切られているので、見出しの単位で指摘を切り出せます。 入力はPDF・画像・Office 形式で、PDFは最大2,000ページ、ファイルサイズは有料(S0)レベルで500MBです。
生成AIは、Azure OpenAI の構造化出力で呼びます。 Microsoft Learn では、構造化出力を使うとモデルは指定した JSON スキーマの定義に従うとされ、有効な JSON は保証するがスキーマへの厳密な準拠はできなかった以前の JSON モードとは対照的だと説明されています。Chat Completions API では response_format、Responses API では text.format にスキーマを書きます。指摘の一覧を毎回同じ列で受け取らないと、資産台帳との照合も件数の集計もできません。
報告書は、攻撃の手順が書かれた機密の文書です。 データの扱いは第13章で扱いますが、プロンプトと出力は他のお客様に利用されず、OpenAI に提供されず、モデルやサービスの改善に使われないとされています。
03どうやって実装するのか
処理の起点を決める
受領用のフォルダ(Blob Storage のコンテナー)に報告書が保存されたことを起点にします。 報告書は診断会社からメールや受け渡し用のサイトで届くので、受け取った担当者が受領用のフォルダへ移します。移すときに、受付票(対象システム、診断会社、診断の種類、診断の期間)を同じ場所に置きます。
受付票を求めるのは、報告書の表紙だけでは対象が決まらないことがあるためです。同じ社名のサービスが複数あり、表紙には「○○サービス」としか書かれていないことがあります。受付票と表紙が食い違えば、処理を止めて担当者に戻します。
月末にまとめて処理しません。 報告書は届いた日に読み込み、是正の依頼をその週のうちに出します。重大度の高い指摘は、月末を待つあいだにも攻撃を受けうるからです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 報告書 | PDF。総評、指摘の一覧、指摘ごとの詳細、付録 | 受領用のフォルダ |
| 指摘一覧のファイル | 診断会社が添える表計算ファイル(ある場合) | 受領用のフォルダ |
| 受付票 | 対象システム、診断会社、診断の種類、診断の期間 | 担当者が入力 |
| 資産台帳 | システム名、URL・ホスト、担当チーム、公開範囲、扱うデータの区分 | 資産台帳 |
| 社内の基準の表 | 重大度×公開範囲×扱うデータごとの優先度と是正の期限 | 情報システム部が定める表 |
| 過去の指摘の記録 | これまでの診断の指摘と、その是正の状況 | 確定した一覧の保存先 |
質を決めるのは、資産台帳と社内の基準の表です。 資産台帳にURLが登録されていないシステムは担当が付かず、基準の表が無ければ期限が付きません。どちらもAIの外側にあるもので、無ければこの構成は是正計画を作れません。
指摘一覧のファイルがあれば、件数の照合に使います。 報告書の本文から取り出した指摘の数と、一覧ファイルの行数が合っているかを見ます。合わなければ、本文の区切りか一覧ファイルのどちらかに漏れがあります。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 見出し・段落 | レイアウト モデルの Markdown 出力 | 指摘ごとに区切る |
| 表 | レイアウト モデルの表の抽出 | 指摘の一覧表、影響を受けるURLの表 |
| 段落の役割 | title、sectionHeading、pageHeader、pageFooter | 見出しの判定と、ヘッダー・フッターの除去 |
| 資産台帳 | 台帳の読み取り | URL・ホストからシステムと担当チームを引く |
| 基準の表 | 表の読み取り | 優先度と期限の計算 |
| 過去の指摘 | 確定した一覧の保存先 | 前回からの残りと、再び出た指摘の判定 |
資産台帳の照合は、URLとホスト名で行います。 報告書の対象は「https://〜/admin/」のようにパスまで書かれることが多いので、台帳にはホスト名とパスの先頭を登録しておき、長いほうから順に当てます。 名前で照合すると、似た名前のシステムに当たります。
前回との照合は、対象と指摘の種類の組で行います。 見出しの文言は診断会社ごとに違うので、AIに「指摘の種類」を社内の分類表から選ばせ、「同じシステム・同じパス・同じ種類」なら同じ指摘とみなします。 判定が割れるものは「要確認」として人に回します。
AIへ渡す前に整形する
- 形式の確認 … PDFであることを確かめます。パスワードでロックされたPDFは、提出前にロックを解除する必要があります
- ページ数とサイズの確認 … PDFは最大2,000ページ、有料(S0)レベルで500MBが上限です。報告書がこれを超えることはまずありませんが、付録の画面の写しが多いものはサイズを見ます
- ヘッダーとフッターの除去 … 段落の役割が
pageHeaderとpageFooterのものを外します。「社外秘」「Page 12」が指摘の本文に混ざると、区切りを誤ります - 指摘ごとの区切り … 診断会社ごとの見出しの書式(「指摘ID」「No.」など)を設定ファイルに持ち、見出しの単位で切り出します
- 攻撃の文字列の扱い … 再現の手順にある攻撃の文字列(入力した値や送った要求)は、AIに渡す前に置き換え、原本の位置だけを残します
- 件数の照合 … 切り出した指摘の数を、指摘一覧の表の行数と比べます
5番目を軽く見ないでください。 再現の手順には、実際に攻撃が通った文字列がそのまま書かれています。要約にも依頼文にもその文字列は要りません。経営層向けの要約に攻撃の文字列が載ると、その資料自体が攻撃の手引きになります。
AIに処理させる
させるのは、2回に分けて3つです。 1回目は指摘ごとに項目をそろえること、2回目は是正の依頼文と経営層向けの要約を書くことです。
| 見るもの | させること | 判断できないときの扱い |
|---|---|---|
| 指摘の見出しと本文 | 見出し、対象のURL・ホスト、指摘の種類(社内の分類表から1つ)を取り出す | 分類表に無ければ other |
| 重大度 | 報告書に書かれた段階と、CVSS の表記(あれば)を原文のまま写す | 書かれていなければ空 |
| 再現の要点 | 何をすると何が起きるかを2文で要約する(攻撃の文字列は書かない) | 読み取れなければ「原本を参照」 |
| 推奨される対策 | 報告書の推奨を箇条書きで写す | 書かれていなければ空 |
| 依頼文(2回目) | 担当チームごとに、指摘の要点と期限の案を並べた依頼文 | ― |
| 要約(2回目) | 集計した数字を前提に、全体の傾向と経営層に伝えることを書く | ― |
重大度を「原文のまま」と書いているのが、この表でいちばん大事なところです。 診断会社によって「緊急・高・中・低・情報」の5段階だったり、「High・Medium・Low・Info」の4段階だったりします。AIに社内の段階へ読み替えさせると、読み替えの誤りと付け直しの区別がつきません。 読み替えは、診断会社ごとの対応表でプログラムが行います。
CVSS の表記も、そのまま写させます。 CVSS v4.0 の仕様書では、点数を示すときに、どの評価の指標を使ったかを CVSS-B(基本)、CVSS-BT(基本と脅威)、CVSS-BE(基本と環境)、CVSS-BTE で書き分けるとされています。同じ「7.5」でも、基本の指標だけの点数と環境の指標を入れた点数では意味が違います。 報告書がどちらで書いているかを残さないと、比べてはいけない数字を並べることになります。
| させないこと | 理由 |
|---|---|
| 重大度の付け直し | 診断会社の評価と社内の判断を混ぜない |
| 期限と優先度の決定 | 基準の表と資産台帳で決める。後から理由を説明できる形にする |
| 件数の集計 | プログラムで数える。要約の数字と一覧を一致させる |
| 対策の考案 | 報告書の推奨を写すだけ。設計の判断は担当チームが行う |
| 攻撃の文字列の再現 | 要約と依頼文に載せない |
| 「受け入れてよい」という判断 | リスクを受け入れるかは経営層が決める |
3行目がいちばん起きやすい失敗です。 要約を書かせるときに件数を渡さないと、AIは本文から数えて書きます。数え間違えた件数が、そのまま経営層の資料に載ります。
指示内容を固定する
あなたは情報システム部で、外部の脆弱性診断の報告書を整理する立場です。
渡す本文は、報告書から指摘を1件分だけ切り出したものです。
本文に書かれていることだけを使い、推測で埋めないでください。
【取り出す項目】
1. 指摘の見出し(報告書の文言のまま)
2. 対象のURL・ホスト(複数あればすべて)
3. 指摘の種類(下の分類表から1つ。当てはまらなければ other)
4. 重大度(報告書に書かれた段階を、文言を変えずにそのまま)
5. CVSS の表記(点数、ベクター、CVSS-B などの区分。書かれている分だけ)
6. 再現の要点(何をすると何が起きるか。2文以内)
7. 推奨される対策(報告書の推奨を、文言を変えずに箇条書き)
【厳守事項】
- 重大度を読み替えたり、付け直したりしないでください。
「高」と書かれていれば「高」、「High」と書かれていれば「High」です。
- 本文に重大度が書かれていなければ、空にしてください。
本文の内容から重大度を推し量って書かないでください。
- CVSS の点数だけがあってベクターや区分が無い場合は、点数だけを入れ、
区分は空にしてください。
- 再現の要点に、攻撃に使った文字列・要求・認証情報を書かないでください。
【置換済み】と書かれた箇所を復元しないでください。
- 推奨される対策を、自分の考えで補ったり言い換えたりしないでください。
- 是正の期限、優先度、リスクを受け入れてよいかは書かないでください。
- 本文が指摘ではない(総評、付録、目次など)と判断した場合は、
is_finding を false にして、ほかの項目は空にしてください。
- evidence には、重大度と対象の根拠にした文をそのまま写してください。
【指摘の種類の分類表】{finding_types}
【診断会社】{vendor}
【本文】{finding_text}
「重大度を推し量って書かない」を明記しないと、空欄を埋めます。 総評の章に重大度がまとめて書かれていて、詳細のページには書かれていない報告書があります。何も言わなければ、本文の深刻そうな書きぶりから「高」と書きます。書かれていないことを示すのは空欄で、埋まった値ではありません。
2回目の指示では、集計した件数の表をそのまま渡し、「この表の数字以外の数を書かない」と指示します。 要約は「今月は○件の診断を受け、社内の優先度が最も高い指摘が○件、前回から残っている指摘が○件」という骨組みをプログラムが作り、AIにはその後ろの説明の文章だけを書かせます。
出力形式を固定する
1回目は次の形のJSONで受け取ります。
{
"report_id": "",
"finding_no": "",
"is_finding": true,
"title": "",
"targets": [""],
"finding_type": "",
"vendor_severity": "",
"cvss": { "score": "", "vector": "", "nomenclature": "" },
"repro_summary": "",
"recommendations": [""],
"evidence": ""
}
これにプログラムが次の項目を足して、確定前の一覧の1行にします。
| 項目 | 決め方 |
|---|---|
system / owner_team | 資産台帳とのURL・ホストの照合 |
normalized_severity | 診断会社ごとの対応表で社内の段階に読み替え |
priority / due_date | 基準の表(重大度×公開範囲×扱うデータ) |
history | new / carried_over / reappeared / needs_check |
1つ目の理由は、診断会社の記述と社内の判断を別の列に置けることです。 vendor_severity は報告書のまま、normalized_severity と priority は社内の規則で決まります。経営層に「診断会社は中と言っているが、社内では最優先にした」と説明できるのは、列が分かれているからです。
2つ目は、照合と集計ができることです。 targets が配列で返るので資産台帳と照合でき、finding_type が分類表の値なので前回と照合できます。件数は確定した一覧から数えるので、要約の数字と一覧が一致します。
構造化出力のスキーマでは、すべての項目を必須にし、additionalProperties を false にします。項目を省略させず、空のときは空の文字列で返させるので、「書かれていなかった」と「取り出し忘れた」を同じ形で扱えます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受領用のフォルダ | Blob Storage への保存で Azure Functions を起動 | 報告書と受付票を受け取る |
| Azure AI Document Intelligence | API呼び出し | 見出し・段落・表を Markdown で返す |
| Azure OpenAI | API呼び出し(構造化出力) | 指摘ごとの項目と、依頼文・要約の下書き |
| 資産台帳 | 読み取り | システム・担当チーム・公開範囲・扱うデータ |
| 確認画面 | 一覧の表示と修正 | 人が原本と照合して確定する |
| チケット管理 | 確定後に人が起票 | 担当チームへの是正の依頼 |
資産台帳には書き込みません。 照合できなかったURLがあっても、台帳に追加するのは台帳の管理者です。報告書に出てきたURLが台帳に無いということは、管理されていない公開の入口があるということで、それ自体を要約に載せます。
人が確認する
- 件数の照合 … 確認画面に、報告書の指摘一覧の件数と、取り出した指摘の件数を並べます。合わなければ、原本の目次から抜けた指摘を探します
- 重大度の照合 …
vendor_severityを、報告書の指摘一覧の表と1件ずつ見比べます - 担当チームの確認 … 資産台帳で照合できなかった指摘に、担当チームを手で付けます
- 期限の確認 … 基準の表で付いた期限を見て、変える場合は理由を書きます
- 前回との照合の確認 …
needs_checkの指摘を、前回の記録と見比べて決めます - 要約の確認 … 数字の骨組みはそのままに、説明の文章を直します。上長の確認に回します
1番目と2番目を省かないでください。 この2つは、原本と一覧が一致しているかの確認です。AIが1件取りこぼしても、件数が合っていれば気づけません。件数で気づき、重大度で中身を確かめます。
4番目で期限を変えたときの理由は、必ず残します。 「社内からしか届かないので延ばす」は、リスクを受け入れる判断です。その判断が誰のものかを残しておかないと、次の診断で同じ指摘が出たときに説明できません。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードでロックされたPDF | 提出前にロックを解除する必要がある。診断会社に解除した版をもらう |
| 指摘の区切りが見つからない | 診断会社の書式が変わった。設定ファイルの見出しの書式を直して再実行 |
| 取り出した件数と指摘一覧が合わない | 処理は止めず、確認画面の先頭に印を出す |
| 重大度が空の指摘 | 総評の章の一覧表から人が補う |
| 資産台帳にURLが無い | 担当は空のまま人へ。管理されていない公開の入口として要約に載せる |
| 1つの指摘に複数のシステムがまたがる | 担当チームを複数付け、依頼文を分ける |
| 前回と同じかどうか割れる | needs_check にして人が決める |
| 受付票と表紙の対象が食い違う | 処理を止めて担当者に戻す |
| Azure OpenAI が応答しない・スキーマに合わない | 指摘単位で再実行。3回失敗した指摘は原本を見て人が入力 |
上から3行目が、いちばん大事な行です。 件数が合わないまま一覧を確定すると、取りこぼした指摘は誰にも依頼されません。 止めずに印を出すのは、残りの指摘の是正の依頼を遅らせないためです。
記録を残す
- 報告書の原本と受付票、受け取った日時
- レイアウト モデルの読み取り結果と、指摘ごとに区切った本文(攻撃の文字列は置き換えた後のもの)
- AIが返したJSONと、プログラムが足した項目(担当、期限、前回との照合)
- 人が直した箇所と理由(担当チーム、期限、前回との照合の判定)
- 確定した是正計画と、経営層向けの要約の確定版
- 指摘ごとの是正の状況(チケットの番号、完了日、再診断の結果)
4つ目の「人が直した理由」が、いちばん後から効きます。 期限を延ばした理由、担当を変えた理由が残っていれば、次の診断で同じ指摘が出たときに、それが受け入れたリスクなのか、是正の失敗なのかを区別できます。
最後の行は、前回との照合の材料になります。 是正が完了した指摘が次の診断で再び出たら reappeared とし、要約の最初に載せます。
04実装レベルの3段階
最小構成は、確かめるための段階です。 貼り付けの手間が転記の手間に置き換わるだけです。 半自動化で、①の転記の大半がなくなります。 ただし、担当の特定、期限、前回との照合、要約は手作業で残ります。本格構成で、②〜④も確認の作業に変わり、この段階が本記事の想定です。 差が大きいのは、資産台帳との照合と前回との照合が、件数に比例して効いてくるからです。 段階を飛ばさないでください。 半自動化の一覧を2〜3か月ためると、資産台帳に登録されていないURLと、診断会社ごとの見出しの書式が先に分かります。台帳を直してから照合を足すほうが、担当の付かない指摘が減ります。
05工数削減シミュレーション
導入後 6件 × 90分 ÷ 60 = 9 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 自社のWebサービスや業務システムを数十本持ち、外部の診断会社にWebアプリケーション診断やプラットフォーム診断を発注している会社。報告書がシステムごと・リリースごとに毎月届き、情報システム部門の数名が指摘を読み込んで是正の担当と期限を決め、経営層への報告資料を手で作っている場合。システムごとの担当者と公開範囲をまとめた資産台帳があり、Microsoft Azure の利用について社内の取り決めができる場合。
- 診断が年に1〜2回で、報告書を読む作業が負担になっていない場合。システムの担当者や公開範囲の台帳が無く、指摘を誰に回すかを決める材料が無い場合。診断会社との契約で、報告書を外部のクラウドサービスで処理することが認められていない場合。なお、指摘の重大度の評価、是正するかどうか、リスクを受け入れるかどうかの判断は情報システム部門と経営層が行うもので、この構成では代替できません。
07最小構成で試す方法
- 直近3か月に受け取った報告書から2件を選ぶ(うち1件は、指摘が20件以上あるもの)
- その2件について、当時作った管理表と経営層向けの資料を手元に置く
- 報告書のPDFから、攻撃の文字列を黒塗りした写しを作る
- 社内で利用が認められている生成AIの画面に、指摘の詳細を数件ずつ貼り付ける
- 「この指摘の見出し、対象、重大度(文言のまま)、再現の要点、推奨される対策を表にしてください。重大度を付け直さないでください。書かれていない項目は空にしてください」と指示する
- 出てきた表を、当時の管理表と1件ずつ見比べる
件数と重大度を最初に見てください。 内容の要約が上手かどうかより先に、指摘が全部出てきたか、重大度が原文のままかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の管理表と件数・重大度が一致した | 読み取りと区切りの自動化に進む |
| 重大度を言い換えた・付け直した | 指示の書き方で直る。構成は有効 |
| 区切りがずれて、2件が1件にまとまった | 区切りはプログラムで行う。 AIに区切らせない |
3行目は、画面に貼り付けて試すと必ず起きます。 何件かまとめて貼ると、AIは似た指摘を1件にまとめます。本番の構成で指摘を1件ずつ渡すのは、このためです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 指摘が1件抜ける | 件数を指摘一覧の表と照合する。 合わないときは確認画面の先頭に印 |
| 重大度が付け直される | 原文のまま写させ、読み替えは対応表でプログラムが行う |
| 詳細ページに重大度が無く、AIが埋める | 空にさせ、総評の一覧表から人が補う |
| CVSS の点数を比べてはいけないものと比べる | CVSS-B などの区分を残し、区分の違う点数を並べない |
| ヘッダー・フッターが本文に混ざる | 段落の役割で pageHeader・pageFooter を外す |
| 要約の件数が一覧と合わない | 件数はプログラムで数え、AIに数えさせない |
| 攻撃の文字列が要約に載る | AIに渡す前に置き換える。要約には復元させない |
| 資産台帳にURLが無く担当が付かない | 照合できないこと自体を要約に載せ、台帳の整備を依頼する |
| 前回との照合が見出しの違いで外れる | 指摘の種類を分類表から選ばせ、対象と種類の組で照合する |
| 期限を延ばした理由が残らない | 確認画面で、期限を変えたら理由の入力を必須にする |
| チケットが自動で起票され、重複が出る | 起票は人が確定してから行う |
上の2行が、この構成の失敗のほとんどです。 どちらも「一覧が原本と一致しているか」の問題で、一覧の見た目が整っているほど、人は原本を開かなくなります。 件数の照合を確認画面の最初に置くのは、そのためです。
下から2行目も、早いうちに効いてきます。 期限の延長は、それ自体がリスクを受け入れる判断です。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 自社システムの脆弱性の内容、攻撃が通った手順と文字列、対象のURL・ホスト・内部の構成、場合によっては診断で取得されたテスト用のアカウントの情報です。外部に漏れれば、そのまま攻撃に使える情報です。
- AIに渡すのは、置き換えた後の本文だけにする … 再現の手順にある攻撃の文字列、認証情報、内部のIPアドレスは、前処理で置き換えます。要約にも依頼文にも要らない情報は、最初から渡しません
- 処理する場所を確かめる … Microsoft Learn では、プロンプトと応答は、グローバルまたは DataZone のデプロイの種類を使わない限り、お客様が指定した地域内で処理されるとされています。デプロイの種類は、社内の規程に合わせて選びます
- 不正使用の監視の扱いを決める … 不正使用の可能性が検出されると、プロンプトと出力のサンプルがレビュー用に選ばれ、必要に応じて人間のレビュー担当者による追加のレビューが行われることがあるとされています。管理対象のお客様は、不正使用の監視の変更を申請できるとされています。攻撃の手順を扱う業務なので、申請するかを先に決めます
- 診断会社との契約を確かめる … 報告書を外部のクラウドサービスで処理してよいかは、診断会社との秘密保持の取り決めによります。始める前に、契約の担当と確認します
- 要約の配り先を絞る … 経営層向けの要約は、指摘の対象と傾向が分かる資料です。配る範囲を決め、メールの添付で広く回さない
- この構成は、リスクの判断を代替しない … 指摘を直すか、受け入れるか、いつまでに直すかは、情報システム部門と経営層が決めることです。この構成が出すのは、報告書の内容をそろえた一覧と下書きだけです
誤りが起きた場合のリスクは、指摘を取りこぼして誰にも依頼しないことと、重大度を誤って伝えることの2つです。 前者は件数の照合で、後者は重大度を原文のまま写すことで防ぎます。どちらも、AIに判断させない範囲を先に決めておくことで守ります。
10まず何から始めるか
1週目:資産台帳にURLとホスト名をそろえる
外部に公開しているシステムについて、資産台帳にURL・ホスト名・担当チーム・公開範囲・扱うデータの区分がそろっているかを見ます。40本すべてを一度に埋める必要はありません。 次の3か月に診断の予定があるシステムから埋めます。
2週目:2件の報告書で試す
直近の報告書2件を、攻撃の文字列を黒塗りしてAIの画面に貼り、指摘を表にさせます。当時の管理表と件数・重大度が一致するかを最優先で見ます。
3週目:社内の基準の表を決める
重大度・公開範囲・扱うデータの組み合わせごとに、優先度と是正の期限を表にします。 これが決まらないうちに自動化すると、期限の欄に誰の判断か分からない日付が入ります。あわせて、診断会社ごとの重大度の対応表を作ります。
4週目:受領用のフォルダから一覧までをつなぐ
受領用のフォルダへの保存を起点に、読み取り、区切り、構造化出力で一覧にするところまで作ります。この時点では期限も要約も出さず、一覧と原本の照合だけを続けます。
2か月目: 資産台帳との照合と基準の表による期限を足し、是正の依頼文の下書きを出します。3か月目以降: 前回との照合と経営層向けの要約を足し、1件300分が何分になったかを実測します。件数の照合で印が出る報告書がなくなり、前回から残っている指摘が要約の最初に載るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
構造化出力で、モデルが指定した JSON スキーマの定義に従うこと。有効な JSON は保証するがスキーマへの厳密な準拠はできなかった以前の JSON モードとの違い。Chat Completions API では response_format、Responses API では text.format にスキーマを書くこと。すべてのフィールドを必須にすること。additionalProperties: false を設定すること | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-08 |
| プロンプトと出力が他のお客様に利用されず、OpenAI に提供されず、モデルやサービスの改善に使われないこと。グローバル・DataZone 以外ではお客様が指定した地域内で処理されること。不正使用の可能性が検出されるとサンプルがレビュー用に選ばれ、必要に応じて人間のレビュー担当者が追加のレビューを行うこと。管理対象のお客様は不正使用の監視の変更を申請できること | Microsoft Learn: Azure が販売する Foundry モデルのデータ、プライバシー、セキュリティ | 2026-10-08 |
レイアウト モデルがテキスト、テーブル、選択マーク、ドキュメント構造を抽出し、title・sectionHeading・pageHeader・pageFooter などの段落の役割を返すこと。outputContentFormat=markdown で Markdown 形式に出力できること。入力がPDF・画像・Office 形式であること。PDFが最大2,000ページ、ファイルサイズが有料(S0)レベルで500MBであること。パスワードでロックされたPDFは提出前に解除が必要なこと | Microsoft Learn: ドキュメント レイアウト分析 | 2026-10-08 |
| CVSS v4.0 で、点数を示すときに使った指標に応じて CVSS-B/CVSS-BT/CVSS-BE/CVSS-BTE と書き分けること。重大度の段階(None 0.0、Low 0.1〜3.9、Medium 4.0〜6.9、High 7.0〜8.9、Critical 9.0〜10.0)。ベクターが「CVSS:4.0/」で始まること | FIRST: CVSS v4.0 Specification Document | 2026-10-08 |
指摘を是正するか、リスクとして受け入れるか、いつまでに直すかは、情報システム部門と経営層が自社の基準に沿って決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0886)についてのご相談はこちらから。
