Media > AI活用ユースケース > 情報システム > 情報システム部が Google Workspace の監査ログを n8n で毎日取り込み、権限の付与・大量の書き出し・時間外のログインを申請と照らして判定し、担当に知らせる

情報システム部が Google Workspace の監査ログを n8n で毎日取り込み、権限の付与・大量の書き出し・時間外のログインを申請と照らして判定し、担当に知らせる

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

Google Workspace の管理・ログイン・ドライブの監査ログを n8n で毎朝取り込み、権限の付与・ファイルの大量のダウンロード・時間外のログインを候補として拾います。AIが候補を変更の申請と勤務の予定に照らして判定し、確認が要るものだけを担当者に知らせます。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Make/n8n/Power Automate/Zapier
対象業界
IT・SaaS/人材/広告/金融
対象部門
情報システム
対象業務
内容確認・チェック/分類・仕分け
主な課題
人手が足りない/判断に時間がかかる/確認ミスが多い
AIで行う処理
判定
主な効果
判断支援/対応スピード向上/工数削減
導入難易度
★★★★☆
実装レベル
本格構成
費用感
ノーコード連携(中)
人間の確認
条件付き
現在工数
50h/月
AI導入後
20h/月
想定削減
60%
年間削減
360h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 担当者が朝、管理コンソールのログの画面で、前日の管理者の操作・ログイン・ドライブのダウンロードを絞り込む
  2. 気になる操作を表に書き写す
  3. 権限の付与は、変更の申請の台帳で該当する申請を探す
  4. 大量のダウンロードや時間外のログインは、カレンダーで本人の予定と、締めや障害の対応があったかを確かめる
  5. 申請や予定で説明がつかないものは、本人や上長にチャットで尋ねる
  6. 結果を表に記録する
導入後(After)
  1. 自動毎朝7時に n8n が動き、前日分の管理者の操作・ログイン・ドライブの監査ログを Reports API で取る
  2. 自動Code ノードが規則で候補を拾い、人ごとに同じ日の候補をまとめる
  3. 自動候補の人について、変更の申請の台帳と勤務の予定を取る
  4. 自動Claude が、候補と申請・予定を照らして `expected`(申請どおり)/`confirm`(本人への確認が要る)/`urgent`(すぐ調べる)を判定し、理由と根拠の申請番号を書く
  5. 自動`confirm` と `urgent` を Slack で担当者に知らせ、`expected` は一覧にまとめて送る
  6. 人担当者が `urgent` から開き、ログの原文を見て調べる。`confirm` は本人への確認の文面を直して送る
  7. 自動判定と担当者の結論を Data Table に残す
各工程の詳しい説明を読む
  1. 担当者が朝、管理コンソールのログの画面で、前日の管理者の操作・ログイン・ドライブのダウンロードを絞り込む
  2. 気になる操作を表に書き写す
  3. 権限の付与は、変更の申請の台帳で該当する申請を探す
  4. 大量のダウンロードや時間外のログインは、カレンダーで本人の予定と、締めや障害の対応があったかを確かめる
  5. 申請や予定で説明がつかないものは、本人や上長にチャットで尋ねる
  6. 結果を表に記録する

(a)毎日は続かない。 問い合わせや端末の対応が立て込むと、ログの確認から先に落ちます。3日分をまとめて見る週は、1日分の判断の質が落ちます。

(b)申請と照らすのが手作業。 申請の台帳には「〇〇さんに一時的にユーザー管理の権限」「来週の移行作業のため」と書かれていますが、どの操作がどの申請に当たるかを人が読んで結び付けています。

(c)同じ人の操作がつながらない。 ログの画面は、管理者の操作・ログイン・ドライブで画面が分かれています。3つを並べて見ないと、同じ人の同じ日の重なりに気づけません。

(d)尋ね方が人によって違う。 本人への確認の文面が担当者ごとに違い、疑っているように受け取られて関係がこじれたことがあります。

  1. 【自動】 毎朝7時に n8n が動き、前日分の管理者の操作・ログイン・ドライブの監査ログを Reports API で取る
  2. 【自動】 Code ノードが規則で候補を拾い、人ごとに同じ日の候補をまとめる
  3. 【自動】 候補の人について、変更の申請の台帳と勤務の予定を取る
  4. 【自動】 Claude が、候補と申請・予定を照らして expected(申請どおり)/confirm(本人への確認が要る)/urgent(すぐ調べる)を判定し、理由と根拠の申請番号を書く
  5. 【自動】 confirm と urgent を Slack で担当者に知らせ、expected は一覧にまとめて送る
  6. 【人】 担当者が urgent から開き、ログの原文を見て調べる。confirm は本人への確認の文面を直して送る
  7. 【自動】 判定と担当者の結論を 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
生成AIClaude(n8n の Anthropic Chat Model から)ChatGPT(OpenAI)、Gemini
連携Google Workspace Admin SDK の Reports APIMicrosoft 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どうやって実装するのか

Step1

処理の起点を決める

毎朝7時の定時実行です。 Google の管理ヘルプでは、管理者の操作・ドライブ・ログインのログはほぼリアルタイム(数分)で反映されるとされています。前日分を朝に取れば、取りこぼしはまず出ません。 ただし、ユーザーアカウントのイベントは数十分、トークンのイベントは数時間かかるとされるので、この2つを足すときは取る範囲を前々日まで広げます。

n8n の Schedule Trigger は、ワークフローのタイムゾーンが無ければインスタンスのタイムゾーンを使い、自分で立てた n8n の既定は America/New York です。 ワークフローの設定で Asia/Tokyo にしないと、「前日」の範囲が半日ずれます。Schedule Trigger はワークフローを公開(publish)して初めて動きます。

urgent を待てない操作(特権管理者の付与など)は、毎朝ではなく15分ごとの別のワークフローで拾います。判定の仕組みは同じで、取る範囲だけが違います。

Step2

入力データを集める

データ中身取得元
管理者の操作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 になります。

Step3

データの取得方法を決める

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=admineventName で絞らず全件を取り、Code で拾う
ログインapplicationName=loginipAddress は物理的な場所を表すとは限らない(VPN・プロキシ)
ドライブapplicationName=drive、eventName=download と公開範囲の変更件数が多い。maxResults(既定1000)と nextPageToken で全ページを取る

ページ送りを忘れると、多い日ほど候補が消えます。 1ページの既定は1000件で、残りは nextPageToken で取ります。ダウンロードがいちばん多い月末の日に、1000件で切れて肝心の大量のダウンロードが落ちます。

filters で絞るときは、パラメータの名前の誤りに気をつけます。 filters はイベントのパラメータを ==・<> などで比べる書き方ですが、公式ページによると、API は無効なパラメータを無視し、残りの有効なパラメータで結果を返します。 名前を1文字誤ると、エラーにならずに絞り込みだけが外れます。また、同じパラメータを2回書くと最後の値だけが使われます。この構成では filters を使わず全件を取り、Code ノードで絞ります。 取る件数は増えますが、何で絞ったかがワークフローの中に残ります。

ドメイン全体の委任には注意があります。 n8n の公式ページも、Google がドメイン全体の委任を避けるよう勧めていること、どのユーザーにもなりすませる危険があることを書いています。委任するスコープは監査ログの読み取りの1つだけにします。

Step4

AIへ渡す前に整形する

  1. 人ごとにまとめる … 3つのログを actor.email(操作した人)でまとめ、同じ日の候補を1つの束にする
  2. 規則で候補を拾う … 次の表の規則に当たったものだけを残す
  3. 平常値を付ける … ダウンロード数に、その人の過去30日の中央値を並べる
  4. 申請と予定を引く … 候補の人の、前後7日の申請と予定だけを取る
  5. 文書の名前を伏せる … doc_title は判定に要らないので外し、件数と文書の種類だけを渡す
  6. 重なりの印を付ける … 同じ人に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番目の「名前を伏せる」は、判定に要らないものを渡さないためです。 文書の名前には顧客名や人事の情報が入ります。件数と種類で判定でき、名前が要るのは担当者が調べる段です。

Step5

AIに処理させる

させるのは、候補の束1つずつについて、申請と予定に照らして3段階のどれかに判定し、理由と根拠を書くことです。

判定どういうとき担当者の動き
expected申請の対象の人・種類・期間に当てはまる、または締め・障害の対応の予定と重なる一覧で流し見る
confirm申請・予定で説明がつかない本人に確かめる
urgentmulti_signal で、権限の付与と大量のダウンロードか外部への公開が重なり、申請が無い。または suspicious_login の後に権限・書き出しがあるすぐ調べる

urgent の条件は、AIに考えさせず指示に書き切ります。 「重大そうなら urgent」と書くと、判定が日によって揺れます。AIの役目は、条件に当たるかどうかを、申請と予定の文面から読むことです。

させないこと理由
候補を増やす・減らす拾う規則はプログラムの側。何を見たかを説明できるようにする
申請に書かれていない事情の推測「たぶん月末の作業」は根拠にならない
不正だと書く判定は確認の要否。不正かどうかは調べた人が決める
アカウントの停止・権限の取り消し人が行う
社員の勤務の態度の評価この構成の目的の外
Step6

指示内容を固定する

あなたは情報システム部で、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 に倒れると通知が増えて読まれなくなります。真ん中に寄せて、人が読む範囲に残します。

Step7

出力形式を固定する

{
  "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 に残して、通知には載せません。

Step8

システムへ連携する

つなぎ先方式内容
Google WorkspaceHTTP Request(サービスアカウント、読み取りのスコープだけ)Reports API の activities.list
申請の台帳読み取り候補の人の申請
共有カレンダー読み取り締め・障害の対応・休暇の予定
ClaudeAnthropic Chat Model判定と理由
SlackSend Messageurgent と confirm の通知、expected の一覧
Data TableInsert・Upsert平常値、判定と結論

Google Workspace には書き込みません。 権限を外す、アカウントを止める、共有を解除する操作は、担当者が管理コンソールで行います。この構成のサービスアカウントに、その権限を持たせません。

Step9

人が確認する

  1. urgent を朝いちばんに開く … ログの原文(管理コンソール)で、操作の時刻・IP アドレス・対象の文書を確かめる
  2. confirm は、文面を直して本人に送る … 送る前に、自分の知っている事情で説明がつかないかを考える
  3. expected は一覧で流し見る … 根拠の申請番号が付いているかだけを見る
  4. 結論を残す … 「申請どおりだった」「申請の漏れだった」「調査に回した」のどれかと、判定を覆したか

urgent を開いて説明がつかなければ、その場で情報システム部の責任者に上げます。 権限を外すか、セッションを切るかは、責任者が原文を見て決めます。本人に先に尋ねるかどうかも、責任者が決めます。 urgent の束では、本人に尋ねることで証跡が消されるおそれがあるためです。

3番目で根拠の無い expected があれば、それは指示の不具合です。 申請番号も予定も空のまま expected が出ていたら、その日のうちに指示を直します。

目標は、200件をならして1件6分です。 expected は数十秒、confirm は数分、urgent は30分以上かかることもあります。

Step10

例外に対処する

起きること対応
Reports API が権限のエラーを返すドメイン全体の委任の反映待ちか、スコープの不足。その日の判定は出さず、担当者に知らせる
ページ送りの途中で失敗するその日の分を最初から取り直す。途中までで判定しない
ドライブのログが空エディションか設定の問題。0件を「何も無かった」と扱わない
申請の台帳が読めない判定をすべて confirm にし、台帳が読めなかったことを通知に書く
候補が急に増える規則の閾値か平常値の更新の不具合を先に疑う。AIに回す前に件数で止める
取れた件数が平常より極端に少ない取得の失敗を疑う。「何も無かった」と通知せず、件数を添えて担当者に知らせる
削除された人の操作userKey に削除済みの人は指定できない。all で取り、actor で見る
業務委託の協力者のアカウント申請の台帳に契約の期間が無ければ confirm
退職した人のアカウントの操作判定を待たず urgent
Claude の応答が返らない候補の一覧だけを先に送り、判定は後から足す

1行目と4行目で、判定を「出さない」か「すべて confirm」にするのは、黙って expected を出さないためです。 材料が欠けた日の判定がいちばん危うく、欠けたことを通知に書けば、担当者が自分で見ます。

Step11

記録を残す

  • 取った監査ログの範囲(startTime・endTime)と、アプリごとの件数・ページ数
  • 拾った候補と、当たった規則
  • AIに渡した申請・予定と、判定・理由・根拠
  • 担当者の結論と、判定を覆した記録
  • 本人に送った確認の文面と、返事
  • 規則の閾値を変えた日と変えた内容

1行目の件数を残すのは、取りこぼしに気づくためです。 ある日のドライブの件数が平常の1割なら、操作が少なかったのではなく、取れていない可能性が高いと分かります。

Google の管理ヘルプでは、監査ログの多くは6か月保持とされています。 調べ直しに要る期間がそれより長いなら、取ったログの原文を自社の保管先にも残します。

04実装レベルの3段階

最小構成:候補を手で拾い、申請と予定を貼って AIの画面で判定させる / 申請との照合と判定
半自動化:上記+n8n で毎朝ログを取り、規則で候補を拾って人ごとの一覧にする / ログの取得、候補の抽出、人ごとのまとめ
本格構成:上記+申請と予定を引いて Claude が判定し、Slack で知らせ、結論を残す / 判定と通知、記録

半自動化で①の4分は無くなり、人ごとにまとまるので重なりにも気づけます。 ②と③の申請と予定の照合は残ります。本格構成で②と③が判定の確認に変わり、1件6分になります。この段階が本記事の想定です。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
2 名
月間件数
200 件
1件あたり現在時間
15 分
1件あたり導入後時間
6 分
現在  200件 × 15分 ÷ 60 = 50 時間/月
導入後 200件 × 6分 ÷ 60 = 20 時間/月
月間削減時間
30h
削減率
60%
年間削減時間
360h
年間金額換算(時間単価4,500円)
162万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 従業員が数百名で Google Workspace の Business または Enterprise を使い、情報システム部の少人数が監査ログの確認を兼務している企業。管理者の権限の付与やファイルの大量のダウンロードを管理コンソールで見てはいるが、変更の申請や勤務の予定との突き合わせを1件ずつ手で行っていて、確認が毎日続かない場合。
向いていない
  1. SIEM やセキュリティ運用の外部サービスで、監査ログの監視と判定がすでに回っている場合。Google Workspace の Drive の監査ログが使えないエディションの場合。不正の疑いがある社員のアカウントを自動で止めたい場合や、社員の勤務の態度を評価する目的で使いたい場合は、この構成では扱いません。

07最小構成で試す方法

  1. 先月のうち、確認に手間取った10日を選ぶ
  2. その10日について、管理コンソールで管理者の操作・ログイン・ダウンロードを書き出し、第7章の規則で候補を拾う
  3. 候補の人の申請と予定を表にまとめる
  4. 手元の Claude の画面に表を貼り、第7章の指示で判定させる
  5. 判定を、当時の担当者の結論と突き合わせる

規則で拾うところまでは手でやってください。 試したいのは、申請と予定の文面から判定できるかです。

出てきた内容判定
当時の結論と同じ判定が多いn8n の組み立てに進む
申請に無い事情を推して expected にした指示の書き方で直る。構成は有効
ほとんどが confirm になる申請の台帳の書き方が先。 対象の人・種類・期間の欄をそろえる

08実装時につまずきやすいポイント

問題対策
前日の範囲が半日ずれるワークフローのタイムゾーンを Asia/Tokyo にする
多い日に候補が消えるnextPageToken で全ページを取る
委任の設定がすぐ効かない反映に最大24時間。初日に判定を出さない
ドライブのログが取れないBusiness・Enterprise 以外では使えない。先にエディションを確かめる
IP アドレスで場所を決めつけるVPN・プロキシの IP のことがある。普段の一覧との比較だけに使う
AIが推測で expected にする推測の例を挙げて禁じ、根拠の申請番号を必須にする
通知が多すぎて読まれないexpected は一覧にまとめ、通知は urgent と confirm だけ
平常値が無い新しい人入社から30日は中央値を部署の値で代える
確認の文面が疑っているように読める指示で言葉を禁じ、送る前に人が直す

上の4行は、取る段の問題です。 どれも判定より前で起き、取れていないのに「何も無かった」と見えるのが共通点です。第7章「保存・ログ」の件数の記録は、このためにあります。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 社員と協力者のメールアドレス、ログインの時刻と IP アドレス、権限の付与の記録、ファイルの操作の件数と種類、変更の申請と予定です。

  1. 目的を社内規程で決め、社員に知らせる … 監査ログを確かめる目的(情報の保護、権限の管理)を情報セキュリティの規程に書き、社員に周知してから始めます
  2. 勤務の評価に使わない … 時間外のログインは普段と違う場所からのものを確かめるために拾います。勤務時間の管理や評価には使わないと決めておきます
  3. AIに渡す範囲を絞る … 文書の名前を外し、候補の人の前後7日の申請と予定だけを渡します
  4. サービスアカウントの権限を絞る … ドメイン全体の委任は読み取りのスコープ1つだけにし、鍵は n8n の資格情報に置きます
  5. 止める判断は人が行う … アカウントの停止や権限の取り消しは、担当者が原文を見て決めます
  6. 判定を人の評価に結び付けない … 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技術仕様の確認日・参考情報

技術仕様確認日:2026-10-29/最終更新:2026-10-29
確認した内容情報源確認日
activities.list の userKey(all)・applicationName・eventName・startTime・endTime・maxResults(既定1000)・nextPageToken。filters で無効なパラメータは無視されること。削除済みの人は userKey に指定できないこと。スコープ admin.reports.audit.readonly。ドライブのレポートは Business と Enterprise の顧客だけが使えること。ipAddress は物理的な場所を表すとは限らないことGoogle: Reports API activities.list2026-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 times2026-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 Trigger2026-10-29
Basic LLM Chain の「Require Specific Output Format」n8n Docs: Basic LLM Chain2026-10-29
Structured Output Parser の JSON Schema($ref 非対応)n8n Docs: Structured Output Parser2026-10-29
Anthropic Chat Model の出力の長さ・温度・Prompt Cachingn8n Docs: Anthropic Chat Model2026-10-29
Data Table の行の Insert・Upsert・Getn8n Docs: Data Table2026-10-29
Slack ノードの Send Message と Send and Wait for Responsen8n Docs: Slack2026-10-29

監査ログを確かめる目的と範囲は、自社の情報セキュリティの規程で決め、社員に知らせてください。 本記事は Google と n8n の公式ページで確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-2287)についてのご相談はこちらから。

AI活用について相談する
目次