情報システム部が Google Workspace の監査ログを n8n で毎日取り込み、権限の付与・大量の書き出し・時間外のログインを申請と照らして判定し、担当に知らせる
Google Workspace の管理・ログイン・ドライブの監査ログを n8n で毎朝取り込み、権限の付与・ファイルの大量のダウンロード・時間外のログインを候補として拾います。AIが候補を変更の申請と勤務の予定に照らして判定し、確認が要るものだけを担当者に知らせます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- IT・SaaS/人材/広告/金融
- 対象部門
- 情報システム
- 対象業務
- 内容確認・チェック/分類・仕分け
- 主な課題
- 人手が足りない/判断に時間がかかる/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 判断支援/対応スピード向上/工数削減
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当者が朝、管理コンソールのログの画面で、前日の管理者の操作・ログイン・ドライブのダウンロードを絞り込む
- 気になる操作を表に書き写す
- 権限の付与は、変更の申請の台帳で該当する申請を探す
- 大量のダウンロードや時間外のログインは、カレンダーで本人の予定と、締めや障害の対応があったかを確かめる
- 申請や予定で説明がつかないものは、本人や上長にチャットで尋ねる
- 結果を表に記録する
- 自動毎朝7時に n8n が動き、前日分の管理者の操作・ログイン・ドライブの監査ログを Reports API で取る
- 自動Code ノードが規則で候補を拾い、人ごとに同じ日の候補をまとめる
- 自動候補の人について、変更の申請の台帳と勤務の予定を取る
- 自動Claude が、候補と申請・予定を照らして `expected`(申請どおり)/`confirm`(本人への確認が要る)/`urgent`(すぐ調べる)を判定し、理由と根拠の申請番号を書く
- 自動`confirm` と `urgent` を Slack で担当者に知らせ、`expected` は一覧にまとめて送る
- 人担当者が `urgent` から開き、ログの原文を見て調べる。`confirm` は本人への確認の文面を直して送る
- 自動判定と担当者の結論を Data Table に残す
各工程の詳しい説明を読む
- 担当者が朝、管理コンソールのログの画面で、前日の管理者の操作・ログイン・ドライブのダウンロードを絞り込む
- 気になる操作を表に書き写す
- 権限の付与は、変更の申請の台帳で該当する申請を探す
- 大量のダウンロードや時間外のログインは、カレンダーで本人の予定と、締めや障害の対応があったかを確かめる
- 申請や予定で説明がつかないものは、本人や上長にチャットで尋ねる
- 結果を表に記録する
(a)毎日は続かない。 問い合わせや端末の対応が立て込むと、ログの確認から先に落ちます。3日分をまとめて見る週は、1日分の判断の質が落ちます。
(b)申請と照らすのが手作業。 申請の台帳には「〇〇さんに一時的にユーザー管理の権限」「来週の移行作業のため」と書かれていますが、どの操作がどの申請に当たるかを人が読んで結び付けています。
(c)同じ人の操作がつながらない。 ログの画面は、管理者の操作・ログイン・ドライブで画面が分かれています。3つを並べて見ないと、同じ人の同じ日の重なりに気づけません。
(d)尋ね方が人によって違う。 本人への確認の文面が担当者ごとに違い、疑っているように受け取られて関係がこじれたことがあります。
- 【自動】 毎朝7時に n8n が動き、前日分の管理者の操作・ログイン・ドライブの監査ログを Reports API で取る
- 【自動】 Code ノードが規則で候補を拾い、人ごとに同じ日の候補をまとめる
- 【自動】 候補の人について、変更の申請の台帳と勤務の予定を取る
- 【自動】 Claude が、候補と申請・予定を照らして
expected(申請どおり)/confirm(本人への確認が要る)/urgent(すぐ調べる)を判定し、理由と根拠の申請番号を書く - 【自動】
confirmとurgentを Slack で担当者に知らせ、expectedは一覧にまとめて送る - 【人】 担当者が
urgentから開き、ログの原文を見て調べる。confirmは本人への確認の文面を直して送る - 【自動】 判定と担当者の結論を Data Table に残す
2番目と4番目を分けているのが、この構成の要です。 何を候補にするかは規則で決め、AIに監査ログ全件を渡しません。 全件を渡して「怪しいものを探して」と頼むと、AIの判断で候補が増えたり減ったりし、何を見て何を見なかったかを後から説明できなくなります。
6番目で、アカウントを止めるのは人です。 urgent でも自動で止めません。判定が誤っていたとき、締めの作業中の経理のアカウントを止めることになります。
02今回想定するシステム構成
【トリガー】Schedule Trigger(毎朝 7:00、タイムゾーン Asia/Tokyo) ▼ n8n ├─ HTTP Request(Reports API)── admin:ASSIGN_ROLE、ADD_PRIVILEGE ほか ├─ HTTP Request(Reports API)── login:login_success、suspicious_login ほか ├─ HTTP Request(Reports API)── drive:download、公開範囲の変更 ├─ Code ── 規則で候補を拾い、人 × 日でまとめる ├─ Data Table「baseline」── 人ごとの過去30日のダウンロード数の中央値 ├─ 申請の台帳・カレンダーの読み込み ── 候補の人の申請と予定 ▼ Basic LLM Chain + Anthropic Chat Model + Structured Output Parser │ expected / confirm / urgent の判定と理由 ▼ Slack ── urgent と confirm を担当者へ(expected は一覧) ▼ Data Table「review_log」── 判定と担当者の結論 ▼ 【人】担当者が調べ、本人に確かめる
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n(Schedule Trigger、HTTP Request、Code、Data Table、Basic LLM Chain、Slack) | Make、Power Automate、Zapier |
| 生成AI | Claude(n8n の Anthropic Chat Model から) | ChatGPT(OpenAI)、Gemini |
| 連携 | Google Workspace Admin SDK の Reports API | Microsoft Graph の監査ログ(Microsoft 365 の場合) |
| 通知 | Slack(n8n の Slack ノード) | Google Chat、メール |
新しく入れるのは n8n と Claude の API です。 最初の準備は、候補を拾う規則と、変更の申請の台帳の項目をそろえることです。 申請に「対象の人」「権限やデータの種類」「期間」の欄があれば、AIの判定がぶれにくくなります。
監査ログは Reports API の activities.list で取ります。 userKey に all、applicationName に admin・login・drive を入れ、startTime・endTime で前日を指定します。必要なスコープは admin.reports.audit.readonly で、読み取りだけです。 Google の公式ページでは、ドライブのアクティビティのレポートは Business と Enterprise の顧客だけが使えるとされています。
03どうやって実装するのか
処理の起点を決める
毎朝7時の定時実行です。 Google の管理ヘルプでは、管理者の操作・ドライブ・ログインのログはほぼリアルタイム(数分)で反映されるとされています。前日分を朝に取れば、取りこぼしはまず出ません。 ただし、ユーザーアカウントのイベントは数十分、トークンのイベントは数時間かかるとされるので、この2つを足すときは取る範囲を前々日まで広げます。
n8n の Schedule Trigger は、ワークフローのタイムゾーンが無ければインスタンスのタイムゾーンを使い、自分で立てた n8n の既定は America/New York です。 ワークフローの設定で Asia/Tokyo にしないと、「前日」の範囲が半日ずれます。Schedule Trigger はワークフローを公開(publish)して初めて動きます。
urgent を待てない操作(特権管理者の付与など)は、毎朝ではなく15分ごとの別のワークフローで拾います。判定の仕組みは同じで、取る範囲だけが違います。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 管理者の操作 | ASSIGN_ROLE・UNASSIGN_ROLE・ADD_PRIVILEGE など、ロールの名前、対象の人、操作した人、時刻 | Reports API(admin) |
| ログイン | login_success・login_failure・suspicious_login・email_forwarding_out_of_domain、IP アドレス、時刻 | Reports API(login) |
| ドライブ | download の件数、公開範囲の変更(visibility が public_on_the_web・shared_externally など) | Reports API(drive) |
| 人ごとの平常値 | 過去30日のダウンロード数の中央値、普段ログインする IP アドレスの一覧 | Data Table(毎日更新) |
| 変更の申請 | 申請番号、対象の人、権限・データの種類、目的、期間 | 申請の台帳 |
| 勤務の予定 | 締め・障害の対応・移行作業・休暇・出張 | 共有カレンダー |
質を決めるのは、下の3つです。 平常値が無ければ「300件のダウンロード」が多いのか普段どおりかが分かりません。申請と予定が無ければ、AIは判定の根拠を持てず、すべてが confirm になります。
データの取得方法を決める
n8n の Google の資格情報は、サービスアカウントにして「Impersonate a User」で管理者になりすまします。 これにはドメイン全体の委任を特権管理者が有効にする必要があり、反映には5分から24時間かかるとされています。HTTP Request ノードで使うので「Set up for use in HTTP Request node」を有効にし、スコープに https://www.googleapis.com/auth/admin.reports.audit.readonly を入れます。
| 取るもの | 指定 | 気をつけること |
|---|---|---|
| 管理者の操作 | applicationName=admin | eventName で絞らず全件を取り、Code で拾う |
| ログイン | applicationName=login | ipAddress は物理的な場所を表すとは限らない(VPN・プロキシ) |
| ドライブ | applicationName=drive、eventName=download と公開範囲の変更 | 件数が多い。maxResults(既定1000)と nextPageToken で全ページを取る |
ページ送りを忘れると、多い日ほど候補が消えます。 1ページの既定は1000件で、残りは nextPageToken で取ります。ダウンロードがいちばん多い月末の日に、1000件で切れて肝心の大量のダウンロードが落ちます。
filters で絞るときは、パラメータの名前の誤りに気をつけます。 filters はイベントのパラメータを ==・<> などで比べる書き方ですが、公式ページによると、API は無効なパラメータを無視し、残りの有効なパラメータで結果を返します。 名前を1文字誤ると、エラーにならずに絞り込みだけが外れます。また、同じパラメータを2回書くと最後の値だけが使われます。この構成では filters を使わず全件を取り、Code ノードで絞ります。 取る件数は増えますが、何で絞ったかがワークフローの中に残ります。
ドメイン全体の委任には注意があります。 n8n の公式ページも、Google がドメイン全体の委任を避けるよう勧めていること、どのユーザーにもなりすませる危険があることを書いています。委任するスコープは監査ログの読み取りの1つだけにします。
AIへ渡す前に整形する
- 人ごとにまとめる … 3つのログを
actor.email(操作した人)でまとめ、同じ日の候補を1つの束にする - 規則で候補を拾う … 次の表の規則に当たったものだけを残す
- 平常値を付ける … ダウンロード数に、その人の過去30日の中央値を並べる
- 申請と予定を引く … 候補の人の、前後7日の申請と予定だけを取る
- 文書の名前を伏せる …
doc_titleは判定に要らないので外し、件数と文書の種類だけを渡す - 重なりの印を付ける … 同じ人に2種類以上の候補があれば
multi_signal: true
| 規則 | 拾う条件 |
|---|---|
| 権限の付与 | ASSIGN_ROLE・ADD_PRIVILEGE のすべて |
| 大量のダウンロード | 1日の download が100件以上、かつ本人の中央値の5倍以上 |
| 外部への公開 | visibility が public_on_the_web・shared_externally に変わったもの |
| 時間外のログイン | 22時〜6時・休日の login_success で、普段の IP アドレスの一覧に無いもの |
| 転送の設定 | email_forwarding_out_of_domain のすべて |
| Google の検知 | suspicious_login のすべて |
大量のダウンロードを「件数」と「本人の中央値の何倍か」の両方で拾うのは、人によって普段の量が違うからです。 経理や営業企画は月末に数百件を書き出すのが普段どおりで、件数だけで拾うと毎月同じ人が並びます。逆に倍率だけだと、普段1件の人が5件書き出しただけで候補になります。両方に当たったものだけを残すと、候補の数が落ち着きます。 閾値は最初の1か月の候補の数を見て直します。
5番目の「名前を伏せる」は、判定に要らないものを渡さないためです。 文書の名前には顧客名や人事の情報が入ります。件数と種類で判定でき、名前が要るのは担当者が調べる段です。
AIに処理させる
させるのは、候補の束1つずつについて、申請と予定に照らして3段階のどれかに判定し、理由と根拠を書くことです。
| 判定 | どういうとき | 担当者の動き |
|---|---|---|
expected | 申請の対象の人・種類・期間に当てはまる、または締め・障害の対応の予定と重なる | 一覧で流し見る |
confirm | 申請・予定で説明がつかない | 本人に確かめる |
urgent | multi_signal で、権限の付与と大量のダウンロードか外部への公開が重なり、申請が無い。または suspicious_login の後に権限・書き出しがある | すぐ調べる |
urgent の条件は、AIに考えさせず指示に書き切ります。 「重大そうなら urgent」と書くと、判定が日によって揺れます。AIの役目は、条件に当たるかどうかを、申請と予定の文面から読むことです。
| させないこと | 理由 |
|---|---|
| 候補を増やす・減らす | 拾う規則はプログラムの側。何を見たかを説明できるようにする |
| 申請に書かれていない事情の推測 | 「たぶん月末の作業」は根拠にならない |
| 不正だと書く | 判定は確認の要否。不正かどうかは調べた人が決める |
| アカウントの停止・権限の取り消し | 人が行う |
| 社員の勤務の態度の評価 | この構成の目的の外 |
指示内容を固定する
あなたは情報システム部で、Google Workspace の監査ログから拾った操作について、
確認が要るかを判定する立場です。下の【候補】【申請】【予定】だけを見て判定してください。
【判定の選び方】
- expected … 候補の操作が、申請の「対象の人」「権限・データの種類」「期間」のすべてに当てはまる。
または、予定にある締め・障害の対応・移行作業の時間帯と重なる。
- urgent ..... 次のどちらかに当たる。
1. multi_signal が true で、権限の付与と、大量のダウンロードまたは外部への公開が
同じ日にあり、どれにも当てはまる申請が無い。
2. suspicious_login の後に、権限の付与・大量のダウンロード・外部への公開がある。
- confirm .... 上のどちらでもない。
【厳守事項】
- 申請や予定に書かれていないことを根拠にしないでください。
「月末なので書き出しは自然」「管理者なのでありうる」などの推測で expected にしないでください。
- 申請があっても、対象の人・種類・期間のどれかが合わなければ expected にしないでください。
合わなかった項目を mismatch に書いてください。
- 根拠にした申請番号と予定の名前を、そのまま写してください。
- 「不正」「漏えい」「違反」という言葉を使わないでください。判定するのは確認が要るかだけです。
- confirm のときは、本人に尋ねる文面を2文で書いてください。
何の操作について、何を教えてほしいかだけを書き、疑っていると受け取られる言葉を使わないでください。
- 迷ったときは confirm を選んでください。
【候補】{signals}
【申請】{requests}
【予定】{schedules}
「推測で expected にしない」を具体例付きで書くのが要点です。 何も言わないと、AIは「月末の締めの時期のため、書き出しは業務上自然と考えられる」と書いて expected にします。それらしい理由ほど、担当者は読み飛ばします。
「迷ったら confirm」も同じ理由です。 expected に倒れると担当者の目から外れ、urgent に倒れると通知が増えて読まれなくなります。真ん中に寄せて、人が読む範囲に残します。
出力形式を固定する
{
"date": "2026-10-28",
"actor": "[email protected]",
"signals": ["role_assigned", "bulk_download"],
"multi_signal": true,
"verdict": "expected | confirm | urgent",
"matched_request": "REQ-1234",
"matched_schedule": "",
"mismatch": ["期間"],
"reason": "",
"confirm_message": ""
}
1つ目の理由は、signals と verdict を分けて持てることです。 何を拾ったかは規則の側が埋め、AIは verdict と理由だけを書きます。規則を変えても、判定の指示は直さずに済みます。
2つ目は、matched_request と mismatch で、担当者が申請を開かずに済むことです。 「REQ-1234 に当たるが期間が合わない」と分かれば、確認は申請者に1行尋ねるだけです。
3つ目は、reason の後ろで Slack の文面を組み立てられることです。 通知は「誰が・何を・判定・根拠」の4行に決めておき、長い理由は Data Table に残して、通知には載せません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Google Workspace | HTTP Request(サービスアカウント、読み取りのスコープだけ) | Reports API の activities.list |
| 申請の台帳 | 読み取り | 候補の人の申請 |
| 共有カレンダー | 読み取り | 締め・障害の対応・休暇の予定 |
| Claude | Anthropic Chat Model | 判定と理由 |
| Slack | Send Message | urgent と confirm の通知、expected の一覧 |
| Data Table | Insert・Upsert | 平常値、判定と結論 |
Google Workspace には書き込みません。 権限を外す、アカウントを止める、共有を解除する操作は、担当者が管理コンソールで行います。この構成のサービスアカウントに、その権限を持たせません。
人が確認する
urgentを朝いちばんに開く … ログの原文(管理コンソール)で、操作の時刻・IP アドレス・対象の文書を確かめるconfirmは、文面を直して本人に送る … 送る前に、自分の知っている事情で説明がつかないかを考えるexpectedは一覧で流し見る … 根拠の申請番号が付いているかだけを見る- 結論を残す … 「申請どおりだった」「申請の漏れだった」「調査に回した」のどれかと、判定を覆したか
urgent を開いて説明がつかなければ、その場で情報システム部の責任者に上げます。 権限を外すか、セッションを切るかは、責任者が原文を見て決めます。本人に先に尋ねるかどうかも、責任者が決めます。 urgent の束では、本人に尋ねることで証跡が消されるおそれがあるためです。
3番目で根拠の無い expected があれば、それは指示の不具合です。 申請番号も予定も空のまま expected が出ていたら、その日のうちに指示を直します。
目標は、200件をならして1件6分です。 expected は数十秒、confirm は数分、urgent は30分以上かかることもあります。
例外に対処する
| 起きること | 対応 |
|---|---|
| Reports API が権限のエラーを返す | ドメイン全体の委任の反映待ちか、スコープの不足。その日の判定は出さず、担当者に知らせる |
| ページ送りの途中で失敗する | その日の分を最初から取り直す。途中までで判定しない |
| ドライブのログが空 | エディションか設定の問題。0件を「何も無かった」と扱わない |
| 申請の台帳が読めない | 判定をすべて confirm にし、台帳が読めなかったことを通知に書く |
| 候補が急に増える | 規則の閾値か平常値の更新の不具合を先に疑う。AIに回す前に件数で止める |
| 取れた件数が平常より極端に少ない | 取得の失敗を疑う。「何も無かった」と通知せず、件数を添えて担当者に知らせる |
| 削除された人の操作 | userKey に削除済みの人は指定できない。all で取り、actor で見る |
| 業務委託の協力者のアカウント | 申請の台帳に契約の期間が無ければ confirm |
| 退職した人のアカウントの操作 | 判定を待たず urgent |
| Claude の応答が返らない | 候補の一覧だけを先に送り、判定は後から足す |
1行目と4行目で、判定を「出さない」か「すべて confirm」にするのは、黙って expected を出さないためです。 材料が欠けた日の判定がいちばん危うく、欠けたことを通知に書けば、担当者が自分で見ます。
記録を残す
- 取った監査ログの範囲(
startTime・endTime)と、アプリごとの件数・ページ数 - 拾った候補と、当たった規則
- AIに渡した申請・予定と、判定・理由・根拠
- 担当者の結論と、判定を覆した記録
- 本人に送った確認の文面と、返事
- 規則の閾値を変えた日と変えた内容
1行目の件数を残すのは、取りこぼしに気づくためです。 ある日のドライブの件数が平常の1割なら、操作が少なかったのではなく、取れていない可能性が高いと分かります。
Google の管理ヘルプでは、監査ログの多くは6か月保持とされています。 調べ直しに要る期間がそれより長いなら、取ったログの原文を自社の保管先にも残します。
04実装レベルの3段階
半自動化で①の4分は無くなり、人ごとにまとまるので重なりにも気づけます。 ②と③の申請と予定の照合は残ります。本格構成で②と③が判定の確認に変わり、1件6分になります。この段階が本記事の想定です。
05工数削減シミュレーション
導入後 200件 × 6分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 従業員が数百名で Google Workspace の Business または Enterprise を使い、情報システム部の少人数が監査ログの確認を兼務している企業。管理者の権限の付与やファイルの大量のダウンロードを管理コンソールで見てはいるが、変更の申請や勤務の予定との突き合わせを1件ずつ手で行っていて、確認が毎日続かない場合。
- SIEM やセキュリティ運用の外部サービスで、監査ログの監視と判定がすでに回っている場合。Google Workspace の Drive の監査ログが使えないエディションの場合。不正の疑いがある社員のアカウントを自動で止めたい場合や、社員の勤務の態度を評価する目的で使いたい場合は、この構成では扱いません。
07最小構成で試す方法
- 先月のうち、確認に手間取った10日を選ぶ
- その10日について、管理コンソールで管理者の操作・ログイン・ダウンロードを書き出し、第7章の規則で候補を拾う
- 候補の人の申請と予定を表にまとめる
- 手元の Claude の画面に表を貼り、第7章の指示で判定させる
- 判定を、当時の担当者の結論と突き合わせる
規則で拾うところまでは手でやってください。 試したいのは、申請と予定の文面から判定できるかです。
| 出てきた内容 | 判定 |
|---|---|
| 当時の結論と同じ判定が多い | n8n の組み立てに進む |
| 申請に無い事情を推して expected にした | 指示の書き方で直る。構成は有効 |
| ほとんどが confirm になる | 申請の台帳の書き方が先。 対象の人・種類・期間の欄をそろえる |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 前日の範囲が半日ずれる | ワークフローのタイムゾーンを Asia/Tokyo にする |
| 多い日に候補が消える | nextPageToken で全ページを取る |
| 委任の設定がすぐ効かない | 反映に最大24時間。初日に判定を出さない |
| ドライブのログが取れない | Business・Enterprise 以外では使えない。先にエディションを確かめる |
| IP アドレスで場所を決めつける | VPN・プロキシの IP のことがある。普段の一覧との比較だけに使う |
| AIが推測で expected にする | 推測の例を挙げて禁じ、根拠の申請番号を必須にする |
| 通知が多すぎて読まれない | expected は一覧にまとめ、通知は urgent と confirm だけ |
| 平常値が無い新しい人 | 入社から30日は中央値を部署の値で代える |
| 確認の文面が疑っているように読める | 指示で言葉を禁じ、送る前に人が直す |
上の4行は、取る段の問題です。 どれも判定より前で起き、取れていないのに「何も無かった」と見えるのが共通点です。第7章「保存・ログ」の件数の記録は、このためにあります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 社員と協力者のメールアドレス、ログインの時刻と IP アドレス、権限の付与の記録、ファイルの操作の件数と種類、変更の申請と予定です。
- 目的を社内規程で決め、社員に知らせる … 監査ログを確かめる目的(情報の保護、権限の管理)を情報セキュリティの規程に書き、社員に周知してから始めます
- 勤務の評価に使わない … 時間外のログインは普段と違う場所からのものを確かめるために拾います。勤務時間の管理や評価には使わないと決めておきます
- AIに渡す範囲を絞る … 文書の名前を外し、候補の人の前後7日の申請と予定だけを渡します
- サービスアカウントの権限を絞る … ドメイン全体の委任は読み取りのスコープ1つだけにし、鍵は n8n の資格情報に置きます
- 止める判断は人が行う … アカウントの停止や権限の取り消しは、担当者が原文を見て決めます
- 判定を人の評価に結び付けない …
confirmが多い人を一覧にして上長に回すような使い方をしません
誤りが起きた場合のリスクは、見るべき重なりを expected で流すことと、社員を疑っているように受け取られることの2つです。 前者は根拠の必須化と件数の記録で、後者は文面の禁止語と人の手直しで守ります。
10まず何から始めるか
1週目:規則と申請の欄を決める
第7章の規則を自社に合わせ、ダウンロードの件数の閾値と時間外の時間帯を決めます。変更の申請の台帳に「対象の人・種類・期間」の欄があるかを確かめ、無ければ足します。情報セキュリティの規程に、監査ログを確かめる目的を書きます。
2週目:10日分で試す
確認に手間取った10日を選び、手で拾った候補と申請・予定を Claude の画面に貼って判定させます。当時の結論と突き合わせ、推測で expected にしていないかを最優先で見ます。
3週目:n8n でログを取って一覧にする
サービスアカウントと委任を設定し、毎朝7時に3つのログを取り、規則で候補を拾って人ごとの一覧を Slack に送ります。この時点では判定は入れません。
4週目:判定を足す
申請と予定を引いて Claude に判定させ、判定を一覧に並べるだけにして、担当者が1週間、自分の結論と見比べます。
2か月目: urgent と confirm の通知と、本人への確認の文面を足します。判定を覆した件数を毎週数えます。3か月目以降: 平常値と閾値を見直し、15分ごとの特権管理者の付与のワークフローを足します。判定を覆す件数が落ち着き、毎朝の確認が飛ばなくなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
activities.list の userKey(all)・applicationName・eventName・startTime・endTime・maxResults(既定1000)・nextPageToken。filters で無効なパラメータは無視されること。削除済みの人は userKey に指定できないこと。スコープ admin.reports.audit.readonly。ドライブのレポートは Business と Enterprise の顧客だけが使えること。ipAddress は物理的な場所を表すとは限らないこと | Google: Reports API activities.list | 2026-10-29 |
管理者の操作のイベント ASSIGN_ROLE・UNASSIGN_ROLE・ADD_PRIVILEGE・REMOVE_PRIVILEGE など | Google: Delegated Admin Settings のイベント | 2026-10-29 |
ログインのイベント login_success・login_failure・suspicious_login・email_forwarding_out_of_domain など | Google: Login のイベント | 2026-10-29 |
ドライブのイベント download、公開範囲 visibility の値(public_on_the_web・shared_externally など) | Google: Drive のイベント | 2026-10-29 |
| 管理者・ドライブ・ログインのログがほぼリアルタイム(数分)で、ユーザーアカウントのイベントは数十分、トークンは数時間。監査ログの多くが6か月保持 | Google Workspace 管理者ヘルプ: Data retention and lag times | 2026-10-29 |
| サービスアカウントの「Impersonate a User」、ドメイン全体の委任の設定と反映に5分〜24時間、Google が委任を避けるよう勧めていること、HTTP Request 用のスコープ | n8n Docs: Google Service Account の資格情報 | 2026-10-29 |
Schedule Trigger のタイムゾーン(自分で立てた n8n の既定は America/New York)と、公開して初めて動くこと | n8n Docs: Schedule Trigger | 2026-10-29 |
| Basic LLM Chain の「Require Specific Output Format」 | n8n Docs: Basic LLM Chain | 2026-10-29 |
Structured Output Parser の JSON Schema($ref 非対応) | n8n Docs: Structured Output Parser | 2026-10-29 |
| Anthropic Chat Model の出力の長さ・温度・Prompt Caching | n8n Docs: Anthropic Chat Model | 2026-10-29 |
| Data Table の行の Insert・Upsert・Get | n8n Docs: Data Table | 2026-10-29 |
| Slack ノードの Send Message と Send and Wait for Response | n8n Docs: Slack | 2026-10-29 |
監査ログを確かめる目的と範囲は、自社の情報セキュリティの規程で決め、社員に知らせてください。 本記事は Google と n8n の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2287)についてのご相談はこちらから。
