金融機関の情報システム部が業務システムの権限申請を、Azure OpenAI で職務と権限の対応表に照らし、過大な権限と職務分掌の衝突の疑いを承認の前に拾う
行員から届く業務システムの権限申請を、職務と権限の対応表と職務分掌の禁止の組み合わせに照らし、標準を超える権限と衝突の疑いを承認の前に挙げます。差分ごとに申請理由で説明がつくかを Azure OpenAI で判定し、確認の文案を添えます。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- 連携・自動化
- Power Automate
- 対象業界
- IT・SaaS/保険/金融
- 対象部門
- 情報システム
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 判断支援/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 申請者が申請ワークフローで、対象の業務システム、権限の段階、申請理由、期間を入力し、所属長の承認を得る
- 情報システム部の担当者が申請を開き、人事システムで申請者の所属・役職・兼務を確かめる
- 職務と権限の対応表を開き、申請者の職務の標準に、申請された権限があるかを見る
- 申請者が既に持っている権限の一覧を各業務システムから引き、禁止の組み合わせの一覧と見比べる
- 標準を超えるもの、組み合わせに当たるものがあれば、申請理由を読んで説明がつくかを考える
- 説明がつかなければ、申請者か所属長に問い合わせる。つけば、例外として承認の記録に理由を書く
- 承認されたものを、業務システムの管理画面で付与する
- 人申請者が申請ワークフローで申請し、所属長が承認する(いまと同じ)
- 自動30分ごとに、所属長の承認を終えた申請を取り出す
- 自動人事システムから所属・役職・兼務を、各業務システムの一覧から既に持つ権限を引く
- 自動プログラムが、職務の標準との差分と、禁止の組み合わせに当たる候補を出す
- 自動差分も候補も無い申請は「標準どおり」として、担当者の一覧に流す
- 自動差分か候補がある申請だけ、Azure OpenAI が申請理由を読み、項目ごとに説明がつくかを判定する
- 自動説明がつかない項目について、申請者への確認の文案を作る
- 人担当者が「標準どおり」を流し見て承認し、差分・候補のある申請を1件ずつ確かめる
- 人確認が要るものは文案を直して問い合わせ、例外として認めるものは理由と期間を記録する
- 人承認されたものを、業務システムの管理画面で付与する(いまと同じ)
各工程の詳しい説明を読む
- 申請者が申請ワークフローで、対象の業務システム、権限の段階、申請理由、期間を入力し、所属長の承認を得る
- 情報システム部の担当者が申請を開き、人事システムで申請者の所属・役職・兼務を確かめる
- 職務と権限の対応表を開き、申請者の職務の標準に、申請された権限があるかを見る
- 申請者が既に持っている権限の一覧を各業務システムから引き、禁止の組み合わせの一覧と見比べる
- 標準を超えるもの、組み合わせに当たるものがあれば、申請理由を読んで説明がつくかを考える
- 説明がつかなければ、申請者か所属長に問い合わせる。つけば、例外として承認の記録に理由を書く
- 承認されたものを、業務システムの管理画面で付与する
(a)4番目が重い。 既に持っている権限は業務システムごとに一覧が分かれ、1人分を集めるだけで数分かかります。 禁止の組み合わせは80行あり、どの行に当たりうるかを毎回目で探しています。
(b)兼務と応援の判断が担当者ごとに違う。 「融資課との兼務の発令による」と書かれた申請で、兼務先の標準の権限まで認めるのか、兼務の発令が実際に出ているのかを確かめるのか。担当者によって確かめる深さが違い、 同じ申請が担当者によって通ったり問い合わせになったりします。
(c)期間の書かれていない例外が残る。 「検証のため一時的に」と書かれていても期間が無ければ、付けた権限はそのまま残ります。 次の棚卸しまで誰も気づきません。
(d)衝突に承認の後で気づく。 申請の時点では標準の範囲に見えても、既に持っていた別の業務システムの権限と合わせると禁止の組み合わせに当たる、ということがあります。4番目を急いだ月ほど、棚卸しで見つかります。
- 【人】 申請者が申請ワークフローで申請し、所属長が承認する(いまと同じ)
- 【自動】 30分ごとに、所属長の承認を終えた申請を取り出す
- 【自動】 人事システムから所属・役職・兼務を、各業務システムの一覧から既に持つ権限を引く
- 【自動】 プログラムが、職務の標準との差分と、禁止の組み合わせに当たる候補を出す
- 【自動】 差分も候補も無い申請は「標準どおり」として、担当者の一覧に流す
- 【自動】 差分か候補がある申請だけ、Azure OpenAI が申請理由を読み、項目ごとに説明がつくかを判定する
- 【自動】 説明がつかない項目について、申請者への確認の文案を作る
- 【人】 担当者が「標準どおり」を流し見て承認し、差分・候補のある申請を1件ずつ確かめる
- 【人】 確認が要るものは文案を直して問い合わせ、例外として認めるものは理由と期間を記録する
- 【人】 承認されたものを、業務システムの管理画面で付与する(いまと同じ)
4番目と6番目を分けているのが、この設計の中心です。 差分と衝突の候補は、表の照合だけで決まるのでプログラムが出します。 AIが判定するのは、出てきた差分と候補に対して、申請理由が説明になっているかだけです。AIが差分を見落としても、差分そのものは規則の側で必ず出ています。
8番目で、担当者の時間を差分と候補のある申請に集めます。 標準どおりの申請は件数と申請者を一覧で見て承認し、判断の時間を例外の申請に使います。
02今回想定するシステム構成
申請ワークフロー(所属長の承認済みの申請) │ ▼【トリガー】30分ごと(Azure Functions のタイマー) Azure Functions ── 申請の取り出し ├──▶ 人事システム:所属・役職・兼務の発令 ├──▶ 各業務システムの権限の一覧:既に持つ権限 ▼ Azure Functions ── 規則による照合 │ ① 職務の標準との差分 ② 禁止の組み合わせに当たる候補 │ ③ 兼務先の標準 ④ 期間の有無 ▼ 差分・候補あり ──▶ Azure OpenAI(構造化出力) │ 項目ごとに、申請理由が説明しているかを判定し、確認の文案を作る ▼ 審査の一覧(標準どおり/要確認/衝突の疑い) ▼ 【担当者が確かめて承認・問い合わせ】 ▼ 業務システムの管理画面で付与(いまと同じ)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude API、Gemini API |
| 連携 | Azure Functions(申請の取り出し、人事と権限の一覧の取得、規則の照合、一覧の書き出し) | Power Automate |
| 保管 | Azure Blob Storage(入力、判定、承認の記録) | 申請ワークフローの添付の領域 |
| 決まり | 職務と権限の対応表、禁止の組み合わせの一覧(表計算) | - |
業務システムの権限は、この構成からは付けません。 付与はいまと同じく担当者が管理画面で行います。審査の結果から自動で付与する経路を作ると、 判定の誤りがそのまま権限になります。
Azure OpenAI を選ぶ理由は、構造化出力で決まった形の JSON を受けられることです。 公式の説明では、構造化出力は推論の呼び出しで指定した JSON スキーマに従うもので、Chat Completions API と Responses API の両方で使えるとされています。項目ごとの判定を決まった値で受けられるので、 後段のプログラムが「説明がつかない」項目を数え、一覧の並び順を決められます。
もう一つは、データの扱いです。 公式のページでは、プロンプトと応答は他の顧客や OpenAI に提供されず、基盤モデルの学習に使われないとされています。行員の所属と権限の一覧は、攻撃者にとって価値の高い情報です。 Azure の契約と権限の管理の中で扱い、処理の場所を選べることを重く見ます。
03どうやって実装するのか
処理の起点を決める
30分ごとに、所属長の承認を終えた申請を取り出します。 Azure Functions のタイマー トリガーで、NCRONTAB 式を使って平日の業務時間に動かします。例えば 0 */30 8-19 * * 1-5 です。既定のタイム ゾーンは協定世界時(UTC)なので、日本の時刻で動かすには WEBSITE_TIME_ZONE のアプリ設定が要ります。ただし、Linux の従量課金プランと Flex 従量課金プランでは、この設定が現在サポートされていないとされています。その場合は UTC に直した時刻で式を書きます。
申請の1件ごとに動かす形にはしません。 申請ワークフローによっては、承認の完了を外へ知らせる仕組みが無いことがあります。取り出しの間隔を30分にすれば、 どの申請ワークフローでも、書き出しか照会の仕組みがあれば組めます。
タイマー トリガーは、関数が失敗した後に再試行しないとされています。失敗した回は次の時刻まで呼ばれません。取り出し済みかどうかを申請番号で記録し、 前の回で処理できなかった申請は次の回に必ず拾うようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 申請 | 申請番号、申請者、対象の業務システム、権限の段階、申請理由、期間、所属長の承認日時 | 申請ワークフロー |
| 人事の情報 | 所属、役職、職務の区分、兼務の発令とその期間、応援の発令 | 人事システム |
| 既に持つ権限 | 業務システムごとの権限の段階と付与日 | 各業務システムの権限の一覧 |
| 職務と権限の対応表 | 職務ごとの標準の権限 | 表計算のファイル |
| 禁止の組み合わせ | 同じ人が持ってはいけない権限の組み合わせと、その理由 | 規程の別表(表計算に写したもの) |
| 過去の例外 | 例外として認めた申請と、その理由・期間 | 承認の記録 |
質を決めるのは、人事の兼務の発令です。 「兼務の発令による」と書かれた申請で、人事システムに兼務が無ければ、それは申請理由と事実が合わないということです。 AIがこの食い違いを指摘できるのは、兼務の情報を一緒に渡したときだけです。
禁止の組み合わせには、理由の列を必ず持たせます。 「為替の入力と為替の検証」なら「同じ取引を一人で入力して確かめられてしまう」。理由があると、AIは申請理由がその懸念に答えているかを判定できます。 理由の無い組み合わせは、当たったかどうかしか言えません。
データの取得方法を決める
| 取るもの | どこから | 取り方 |
|---|---|---|
| 承認済みの申請 | 申請ワークフロー | 書き出しの機能か照会の API で、前回以降に所属長の承認を終えたものを取る |
| 所属・兼務 | 人事システム | 毎朝の連携ファイル(社員番号で引く) |
| 既に持つ権限 | 各業務システム | 毎晩の権限の一覧の書き出し(社員番号で引く) |
| 対応表と禁止の組み合わせ | 表計算のファイル | 変更のたびに情報システム部が置き換える |
既に持つ権限は、前の晩の時点のものです。 当日に付けた権限は入っていません。同じ日に同じ人から2件の申請が来ていれば、両方を合わせて照合します。 1件目を付けたあとに2件目が来て、合わせると禁止の組み合わせに当たる、という見落としを防ぐためです。
申請ワークフローの書き出しや API の有無は、製品によって違います。 無い場合は、担当者が毎朝と昼に承認済みの一覧を書き出して所定の場所に置き、その保存を起点にする形でも組めます。
AIへ渡す前に整形する
- 社員番号で突き合わせる … 申請、人事、権限の一覧を社員番号でつなぎます。見つからない申請者は「人事の情報なし」で担当者へ回します
- 職務を決める … 人事の職務の区分から、対応表のどの職務に当たるかを引きます。兼務があれば、兼務先の職務も並べます
- 標準との差分を出す … 申請された権限が、本務と兼務先の職務の標準にあるかを見ます。無いものが差分です
- 禁止の組み合わせを当てる … 申請された権限と既に持つ権限、同じ日の他の申請を合わせ、禁止の組み合わせの各行に当たるかを見ます
- 期間を読む … 期間の欄が空か、兼務・応援の発令の期間を超えていないかを見ます
- 差分も候補も無いものは AI に渡さない … 標準どおりとして一覧に流します
- 渡す情報を絞る … 氏名は渡さず、社員番号の代わりに申請番号だけで扱います
3番目と4番目が、この構成の照合のすべてです。 どちらも表を引くだけで決まり、プログラムの結果には誤りの余地がほとんどありません。 AIに渡すのは、ここで出た差分と候補の一覧と、それを説明しうる材料だけです。
6番目で、AIの呼び出しは申請のおよそ2〜3割に絞られる想定です。 大半の申請は標準どおりで、AIの出番があるのは例外の申請だけです。
AIに処理させる
させるのは、差分と衝突の候補の1つずつについて、申請理由と人事の情報がそれを説明しているかを判定し、説明がつかなければ確認の文案を作ることだけです。
| 判定 | 意味 | 例 |
|---|---|---|
explained | 申請理由が、その権限の必要を具体的に説明し、人事の情報と食い違わない | 「為替の入力の応援(11/1〜11/30、応援の発令あり)」 |
explained_no_period | 説明はつくが、期間が書かれていないか、発令の期間を超える | 「検証のため一時的に」とあり期間が空 |
not_explained | 申請理由が、その権限に触れていないか、一般的な文しかない | 「業務上必要なため」 |
contradicted | 申請理由が人事の情報と食い違う | 「兼務の発令による」とあるが人事に兼務が無い |
conflict_unaddressed | 禁止の組み合わせに当たり、申請理由がその懸念に答えていない | 入力と検証の両方を持つことへの手当てが書かれていない |
判定は5つの値のどれかで返させます。 自由文の所感にすると、担当者が読んで判断し直すことになり、照合を機械に寄せた意味が薄れます。
| させないこと | 理由 |
|---|---|
| 差分や衝突の候補を自分で探す | 規則の側で出している。AIに探させると、表の読み違いが入る |
| 権限を付けるか、例外を認めるかの結論 | 承認者が決めること |
| 申請理由に書かれていない事情を補う | 「繁忙期なので必要だろう」と推し量らない |
| 禁止の組み合わせの理由を変える | 規程の別表にあるとおりに扱う |
| 申請者の人物を評価する | 判定の対象は申請の書きぶりで、人ではない |
3行目が、いちばん起きやすい失敗です。 「業務上必要なため」とだけ書かれた申請に、AIは職務からもっともらしい理由を想像して explained を付けがちです。書かれていない理由で説明がついたことにしないと、例外の審査がそのまま素通りになります。
指示内容を固定する
あなたは金融機関の情報システム部で、業務システムの権限申請を審査する担当を
補助する立場です。入力の【差分と候補】の1件ずつについて、
【申請理由】と【人事の情報】がそれを説明しているかを判定してください。
【判定の値】
- explained ............ 申請理由が、その権限が要る業務を具体的に書いており、
人事の情報と食い違わない
- explained_no_period .. 説明はつくが、期間が空、または発令の期間を超える
- not_explained ........ 申請理由がその権限に触れていない、
または「業務上必要」のような一般的な文だけ
- contradicted ......... 申請理由が人事の情報と食い違う
- conflict_unaddressed . 禁止の組み合わせに当たり、申請理由が
【禁止の組み合わせの理由】の懸念に答えていない
迷ったときに explained を選ばないでください。
【厳守事項】
- 判定するのは【差分と候補】に挙がった項目だけです。
新しい差分や衝突を自分で探さないでください。
- 申請理由に書かれていない事情を補わないでください。
職務や季節から「必要だろう」と推し量って explained にしないでください。
- 「兼務」「応援」と書かれていれば、【人事の情報】に該当する発令と期間が
あるかを必ず確かめてください。無ければ contradicted です。
- 禁止の組み合わせについては、申請理由が【禁止の組み合わせの理由】に
書かれた懸念(例:同じ取引を一人で入力して確かめられる)に、
どう手当てするかを書いているかで判定してください。
権限が要ることだけが書かれていても、懸念に答えていなければ
conflict_unaddressed です。
- evidence には、判定の根拠にした申請理由の文をそのまま写してください。
根拠が無ければ空にしてください。
- 権限を付けるべきか、例外を認めるべきかは書かないでください。
- 判定が explained 以外の項目について、申請者に確かめる質問を
question に1文で書いてください。答えが「はい/いいえ」か、
期間・発令番号で返せる質問にしてください。
【申請】{request}
【人事の情報】{hr}
【差分と候補】{findings}
【禁止の組み合わせの理由】{sod_reasons}
「迷ったときに explained を選ばない」を冒頭近くに置いています。 審査の補助で困るのは、説明のつかない申請を通してしまうことです。迷った項目は人の前に出る側へ倒します。
禁止の組み合わせについて、「権限が要ることだけでは足りない」と書いているのも同じ理由です。 「入力と検証の両方が必要」と書かれていれば、AIは説明があると読みがちです。職務分掌の懸念は、必要かどうかではなく、一人で完結してしまうことへの手当てがあるかです。
出力形式を固定する
{
"request_id": "",
"items": [
{
"finding_id": "",
"finding_type": "excess | sod_conflict",
"verdict": "explained | explained_no_period | not_explained | contradicted | conflict_unaddressed",
"evidence": "",
"question": ""
}
],
"summary_for_reviewer": ""
}
finding_id は、プログラムが前処理で付けた番号です。 AIが返した判定を、プログラムが出した差分と候補に1対1でつなぎ直します。返ってこなかった finding_id があれば、 その申請は判定の欠けとして担当者へ回します。
構造化出力では、すべてのフィールドを必須にし、オブジェクトには additionalProperties: false を設定するとされています。スキーマのプロパティは最大100個、入れ子は最大5段です。数値の最小・最大などのキーワードはサポートされていないため、件数の点検はプログラムの側で行います。
JSON にする理由の1つ目は、一覧の並び順を決められることです。 contradicted と conflict_unaddressed を含む申請を先頭に、not_explained を次に、explained だけの申請を後ろに並べます。
2つ目は、項目ごとに記録が残ることです。 例外を認めた申請について、どの差分にどの理由で認めたかを、棚卸しのときに申請番号から引けます。
| 一覧の区分 | 条件 |
|---|---|
| 標準どおり | 差分も候補も無い |
| 確認済みの例外 | すべての項目が explained |
| 期間の確認 | explained_no_period を含み、それより重い判定が無い |
| 要確認 | not_explained を含む |
| 衝突の疑い | contradicted または conflict_unaddressed を含む |
区分はプログラムが判定の値から機械的に決めます。 AIに区分そのものを選ばせないのは、区分の決め方を後から変えても、AIの判定をやり直さずに済むようにするためです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 申請ワークフロー | 書き出しか照会の API(読み取りのみ) | 承認済みの申請を取る |
| 人事システム | 毎朝の連携ファイル | 所属・役職・兼務の発令 |
| 各業務システム | 毎晩の権限の一覧の書き出し | 既に持つ権限 |
| Azure OpenAI | API呼び出し | 項目ごとの判定と確認の文案 |
| 審査の一覧 | 社内の共有の一覧(区分ごとに並べる) | 担当者が見る画面 |
| 承認の記録 | 申請ワークフローの承認の欄 | 担当者が判断と理由を書く |
申請ワークフローへは書き込みません。 承認と差し戻しは、いまと同じく担当者が申請ワークフローの画面で行います。審査の一覧は、担当者が判断するための材料の置き場です。
業務システムの権限の一覧は、読み取りだけです。 管理者の権限でつなぐ必要はなく、毎晩の書き出しのファイルを読むだけで足ります。 この構成の連携の側に、権限を変えられる資格情報を持たせないでください。
人が確認する
承認は全件、担当者が行います。 区分によって見る深さを変えます。
- 「衝突の疑い」を最初に見る … 申請理由と人事の情報を読み、
questionの文案を直して申請者か所属長に問い合わせます - 「要確認」を見る … 一般的な理由しか無い申請です。多くは申請者に一言聞けば解決します
- 「期間の確認」を見る … 期間を書いてもらうか、兼務・応援の発令の期間に合わせて承認します
- 「確認済みの例外」を見る …
evidenceを読み、例外として認めるなら理由と期間を承認の記録に書きます - 「標準どおり」を流し見る … 件数と申請者を見て承認します
4番目を飛ばさないでください。 AIが explained と判定しても、例外を認めるのは担当者です。 認めた理由と期間は、後の棚卸しで「なぜこの人がこの権限を持っているか」に答える唯一の記録になります。
判定を覆したら、その項目と理由を記録します。 覆した判定が多い職務や業務システムがあれば、対応表の標準そのものが実態と合っていないことを疑います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 申請者が人事システムに無い | 「人事の情報なし」で担当者へ。外部委託先の要員なら委託先の管理の手続に回す |
| 職務の区分が対応表に無い | 「職務不明」で担当者へ。対応表に職務を足すかを情報システム部で決める |
| 権限の一覧の書き出しが届いていない | その日の照合を止め、「既に持つ権限が古い」と一覧に表示する |
| AIの判定が一部の項目で返らない | 判定の欠けとして「要確認」に入れる |
| AIが応答しない | 差分と候補だけを一覧に出す。照合の結果は AI が無くても出ている |
| 同じ人から同じ日に複数の申請 | 合わせて照合し、どちらの申請にも同じ候補を表示する |
| 申請理由が空 | AIに渡さず、差分があれば「要確認」にする |
| 特権の権限(管理者の段階)の申請 | 差分の有無にかかわらず「要確認」以上に置き、二人目の担当者が確かめる |
5行目が、この設計の強みです。 差分と衝突の候補は規則の側で出しているので、AIが止まっても、何を見るべきかは一覧に出ます。 判定の文が無くなるだけです。
最後の行は、規則で決めておきます。 ガイドラインでは特権アカウントの利用を厳格に制限し、操作のダブルチェックなどで管理することが挙げられています。特権の申請を AI の判定で軽く扱わないためです。
記録を残す
- 入力 … 申請、人事の情報、既に持つ権限、照合に使った対応表と禁止の組み合わせの版
- 照合の結果 … プログラムが出した差分と候補の一覧(
finding_id付き) - AIの出力 … 項目ごとの判定、根拠の文、確認の文案
- 人の判断 … 承認・問い合わせ・差し戻しと、その理由。例外を認めた場合の期間
- 判定を覆した記録 … どの項目を、どの判定からどちらへ変えたか
- 例外の期間の満了 … 期間付きで認めた権限の一覧と満了日
対応表の版を残すのは、表が後から変わるためです。 職務の標準を見直すと過去の差分の意味が変わり、当時の表が残っていないと、なぜ例外扱いだったかを説明できません。
最後の行は、棚卸しへの引き継ぎです。 期間付きで認めた権限が満了日を過ぎても残っていれば、それが次の棚卸しで最初に見るべきものです。
04実装レベルの3段階
最小構成では、照合の手間が減りません。 差分を手で出す作業が残るので、判定が使えるかを確かめるための段階です。 半自動化で、1件6分が4分程度になります。 差分と候補が表計算で出るので、②の見比べが消えます。本格構成で2分になり、この段階が本記事の想定です。 差が大きいのは、既に持つ権限を業務システムごとに集める作業と、申請理由を読んで文案を書く作業が、まだ手で残っているからです。 段階を飛ばさないでください。 半自動化の表計算を1か月使うと、対応表に無い職務や、実態と合わない標準が先に見つかります。 そこを直してから本格構成に進むほうが、「要確認」が増えすぎずに済みます。
05工数削減シミュレーション
導入後 900件 × 2分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 行員が数千名いる地方銀行・信用金庫・保険会社などで、勘定系の周辺の業務システム・融資の稟議・顧客情報の照会などの権限を、申請と承認の手続で付けている場合。職務(役割)ごとに標準の権限を決めた対応表と、同じ人が持ってはいけない権限の組み合わせを文書で持っている場合。申請が毎月数百件あり、情報システム部の担当者が1件ずつ対応表と見比べている場合。Azure を使っている場合。
- 権限の付与を ID 管理の製品の役割(ロール)で完全に自動化しており、個別の申請がほとんど無い場合。職務と権限の対応表が無く、何が標準かを担当者の経験で決めている場合(先に対応表を作る必要がある)。申請が月に数十件で、目視で足りる場合。なお、権限を付けるかの最終的な判断と、職務分掌の例外を認めるかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の申請から30件を選ぶ(うち10件は、担当者が問い合わせたか例外として認めたものを入れる)
- その30件について、担当者が手で見つけた差分と衝突を一覧にする
- 申請理由と、人事の兼務の有無、差分と衝突の一覧を、社員番号と氏名を消して手元のAIサービスに1件ずつ貼り付ける
- 「次の差分の1つずつについて、申請理由が説明しているかを、explained/not_explained/contradicted のどれかで判定してください。申請理由に書かれていない事情を補わないでください」と指示する
- 出てきた判定を、当時の担当者の判断と突き合わせる
30件は必ずやってください。 照合のプログラムを作る前に、「申請理由の書きぶりで判定できるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
当時問い合わせた申請が not_explained 以下になった | 照合のプログラムとAPIの連携に進む |
一般的な理由に explained が付いた | 指示の書き方で直る。構成は有効 |
| 担当者の判断と合わず、理由も分からない | 判断の基準が文書になっていない。 先に基準を決める |
3行目が出たときは、担当者ごとの判断の違いが見えたということです。 AIの問題ではなく、何を説明として認めるかの基準を、情報システム部で揃える段階にいます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
一般的な理由に explained が付く | 書かれていない事情を補わないことを指示に明記し、迷ったら explained にしない |
| AIに差分を探させて見落とす | 差分と候補は規則で出し、AIには判定だけをさせる |
| 兼務の発令の有無を確かめずに認める | 人事の兼務の情報を必ず渡し、無ければ contradicted |
| 同じ日の2件目で衝突を見落とす | 同じ人の同じ日の申請を合わせて照合する |
| 権限の名前が業務システムごとに違う | 対応表の側で、システムごとの権限の名前を一つの呼び名にそろえる |
| 対応表の標準が実態と合わない | 判定を覆した記録を職務ごとに数え、標準を見直す |
| 期間付きの例外が残り続ける | 満了日の一覧を作り、棚卸しへ引き継ぐ |
| 特権の申請が軽く扱われる | 差分の有無にかかわらず「要確認」以上に置き、二人目が確かめる |
| 判定の結果から自動で付与する | 付与の経路を作らない。 担当者が管理画面で行う |
| 区分をAIに選ばせる | 区分はプログラムが判定の値から決める |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIに「見つける」と「認める」を任せたときに起きます。 見つけるのは規則、認めるのは人、AIは書きぶりを判定するだけ、という分担を崩さないでください。
下から2行目は、最初から作らないでください。 審査の結果がそろってくると、「標準どおり」の申請は自動で付与したくなります。それは ID 管理の製品の役割で行うべき仕組みで、 この構成の延長に置くと、判定の誤りがそのまま権限になります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 行員の所属・役職・兼務、業務システムごとの権限の一覧、申請理由です。誰がどのシステムで何をできるかがまとまった情報で、攻撃の足がかりになりうる情報です。
- 権限を変えられる資格情報を持たせない … 連携は書き出しのファイルの読み取りだけにします。照合の仕組みが乗っ取られても、権限が付かない作りにします
- AIに渡す情報を絞る … 氏名と社員番号は渡さず、申請番号で扱います。渡すのは差分と候補に関わる権限と、申請理由と、兼務の有無だけです
- 処理の場所を確かめる … 公式のページでは、プロンプトと応答は顧客が指定した地域で処理されるが、Global と DataZone のデプロイではそれぞれの範囲で処理されうるとされています。社内の規程に合わせてデプロイの種類を選んでください
- 不正利用の監視の扱いを確かめる … 公式のページでは、不正利用の兆候が検知されるとプロンプトと応答の一部が確認の対象になり、自動の確認に加えて必要に応じて人が確認するとされています。監視の扱いの変更は申請できるとされているので、規程に照らして検討してください
- 会話の履歴を残す機能を使うかを決める … Responses API はメッセージの履歴を保存するとされています。この構成は1回ごとの判定で足りるので、履歴を残す必要はありません
- ガイドラインとの対応を整理する … 金融庁のガイドラインは、アクセス権限を必要最小限に制限し、職務の分離を考慮すること、アカウントの定期的な棚卸しを行うこと、正当な業務上の要請があり承認された個人に対してのみ権限を付与することを挙げています。この構成は付与の前の審査を補助するもので、方針と規程を定めて見直すことは情報システム部の仕事として残ります
誤りが起きた場合のリスクは、職務分掌の衝突を見落として権限を付けることと、正当な申請を止めて業務を遅らせることの2つです。 前者は差分と候補を規則で必ず出すことで、後者は「確認済みの例外」を担当者が速く通せる一覧にすることで防ぎます。
10まず何から始めるか
1週目:禁止の組み合わせに理由の列を足す
規程の別表の禁止の組み合わせを表計算に写し、各行に「何が一人で完結してしまうのか」を1文で書きます。 あわせて、職務と権限の対応表で、業務システムごとの権限の名前を一つの呼び名にそろえます。
2週目:30件で試す
先月の申請から30件を選び、手で出した差分と申請理由をAIの画面に貼って判定させます。当時の担当者の判断と突き合わせ、一般的な理由に explained が付いていないかを最優先で見ます。
3週目:表計算で照合する
人事の連携ファイルと業務システムの権限の一覧を社員番号でつなぎ、職務の標準との差分と禁止の組み合わせを関数で出します。 この時点ではAIを呼ばず、照合の結果だけを担当者が使います。
4週目:判定の基準を決める
どのような申請理由なら例外として認めるかを、情報システム部の5名で揃えます。 兼務・応援・検証・プロジェクトの4つについて、書いてあるべきことを決めます。
2か月目: Azure Functions で取り出しと照合を自動にし、Azure OpenAI の判定と区分ごとの一覧を足します。3か月目以降: 1件6分が何分になったかを実測し、判定を覆した記録を職務ごとに数えます。対応表の標準を一度見直し、「要確認」の割合が落ち着いた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 認証及びアクセス権の付与に係る方針及び規程等を策定し、定期的に見直すこと。アクセス権限を必要最小限に制限し、職務の分離を考慮すること。アカウントのライフサイクルの管理と定期的な棚卸し・操作履歴のレビュー。特権アカウントの利用を厳格に制限し、多要素認証・操作のダブルチェック・時間制限などで管理すること。正当な業務上の要請があり、承認され、教育・研修を受け、管理されている個人に対してのみ権限を付与すること。アクセスしたユーザを特定し処理内容をログに記録すること(2.3.1 認証・アクセス管理) | 金融庁: 金融分野におけるサイバーセキュリティに関するガイドライン(令和6年10月4日) | 2026-10-15 |
構造化出力が指定した JSON スキーマに従い、Chat Completions API と Responses API の両方で使えること。すべてのフィールドを必須にし、additionalProperties: false を設定すること。最大100個のプロパティと最大5段の入れ子。数値の最小・最大などのキーワードがサポートされていないこと。持ち込みデータのシナリオでは使えないこと | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-15 |
| プロンプトと応答が他の顧客や OpenAI に提供されず、基盤モデルの学習に使われないこと。顧客が指定した地域で処理され、Global と DataZone のデプロイではそれぞれの範囲で処理されうること。Responses API がメッセージの履歴を保存すること。不正利用の監視で、兆候が検知されるとプロンプトと応答の一部が確認の対象になり、必要に応じて人が確認すること。監視の扱いの変更を申請できること | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-10-15 |
タイマー トリガーが NCRONTAB 式でスケジュールを定めること。既定のタイム ゾーンが UTC で、WEBSITE_TIME_ZONE で変えられること。Linux の従量課金・Flex 従量課金プランではこの設定が現在サポートされていないこと。関数が失敗した後に再試行しないこと | Microsoft Learn: Azure Functions のタイマー トリガー | 2026-10-15 |
権限を付けるかの判断と、職務分掌の例外を認めるかの判断は、情報システム部と各部の責任者が行ってください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。ガイドラインは改正されることがあるため、最新の版を金融庁のページで確かめてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1615)についてのご相談はこちらから。
