AUTOMATION NOTE — 057

Google Workspace監査ログとReports APIで社内のAIサービス利用を可視化・管理する

AIサービスの利用が業務現場で急速に広がる中、企業におけるその管理と可視化は情シスにとって重要な課題となっています。特に情報漏洩リスクやコンプライアンスの観点から、社内でどのようなAIサービスが、誰によって、どのように利用されているかを把握するニーズが高まっています。

この記事を読んだほうが良い人

  • 社内で利用されているAIサービスを把握できていない情シス担当者
  • Google Workspaceの標準機能とGoogle Apps Script (GAS) を活用してAI利用状況を可視化したい方
  • 情報漏洩リスクやコンプライアンス違反への対策を検討しているセキュリティ担当者
  • AI利用に関する社内ガイドライン策定のヒントを探している方

情シスがAIサービス利用状況を把握すべき背景

現代のビジネス環境において、生成AIツールは業務効率化の強力な味方です。しかし、その手軽さゆえに、従業員が会社の許可なく自由に外部AIサービスを利用する「シャドーAI」のリスクが高まっています。情シス担当者として、この状況を把握し、適切に管理することは喫緊の課題です。

主な懸念事項は以下の通りです。

  1. 情報漏洩リスク: 従業員が機密情報や個人情報をAIに入力してしまうことで、意図せず外部にデータが流出する可能性があります。多くのAIサービスは入力されたデータを学習に利用する可能性があるため、これは深刻なリスクです。
  2. コンプライアンス違反: 業界規制やプライバシー法(GDPR、CCPA、個人情報保護法など)に違反する形でAIが利用されると、企業は法的責任を問われる可能性があります。
  3. セキュリティリスク: 不正なAIサービスやフィッシングサイトと連携してしまうことで、マルウェア感染やアカウント乗っ取りの被害に遭うリスクも考えられます。
  4. 不正確な情報利用: AIが生成した情報の正確性を確認せずに業務に利用することで、誤った意思決定や顧客への誤情報提供につながる可能性があります。
  5. コスト管理の欠如: 無料プランの利用から始まり、個人で有料プランを契約してしまうケースなど、企業として利用コストを把握・管理できていない状況も発生します。

これらのリスクを軽減するためには、まず「誰が、どのAIサービスを、どのように利用しているのか」を可視化することが不可欠です。しかし、従業員が利用するAIサービスは多岐にわたり、その全てを直接的に追跡することは困難です。特に、Webブラウザを通じてアクセスされる外部の汎用AIサービス(ChatGPT, Claudeなど)の利用状況を、Google Workspaceの監査ログが直接的にWebアクセス履歴として記録することはありません。Google Workspace監査ログは、主にGoogle Workspaceサービス内でのアクティビティや、Googleアカウントと連携したサードパーティアプリの利用状況を対象としています。

このため、情シスは、Google Workspaceの監査ログを活用しつつ、間接的な兆候を捉えるアプローチや、他のセキュリティツールとの組み合わせを検討する必要があります。

Google Workspace監査ログでAIサービス利用を「間接的に」検出するアプローチ

Google Workspaceの監査ログ(Admin SDK Reports APIは、Google Workspaceの監査ログにアクセスするためのAPI)は、ユーザーがGoogle Workspace環境内でどのような活動をしたかを記録します。前述の通り、chatgpt.comclaude.ai のような外部Webサイトへの直接的なブラウザアクセス履歴をGoogle Workspace監査ログが追跡することはありません。しかし、Google Workspaceの機能と連携する形でAIサービスが利用された場合、その「兆候」を間接的に検出することは可能です。

ここでは、Google Workspaceの監査ログを活用した間接的な検出アプローチをいくつか紹介します。

1. OAuthクライアントアクセス監査ログの確認

多くの外部AIサービスは、Googleアカウントでのログインや、Googleドライブ、Gmailなどのデータへのアクセス許可をユーザーに求めます。この「OAuthによるアカウント連携」の履歴は、Google Workspaceの監査ログで追跡できます。

applicationNameoauth_client_activity の監査ログには、ユーザーがどのアプリケーションに、どのようなスコープでGoogleアカウントへのアクセスを許可したかという情報が記録されます。

検出できる情報:

  • ユーザーが特定のAIサービス(例: Googleアカウント連携機能を持つAIライティングツール、AIアシスタント)にアクセス許可を与えた事実。
  • 許可されたスコープ(例: Googleドライブへのアクセス、Gmailの読み取り)。

Reports APIでの取得方法: Admin SDK Reports APIの Activities.list メソッドを使用し、applicationNameoauth_client_activity に指定します。

// Admin SDK Reports APIでoauth_client_activityのログを取得する例
// (Google Apps Scriptなどから実行)
function getOAuthGrantActivities() {
  const userKey = 'all'; // 全ユーザーを対象
  const applicationName = 'oauth_client_activity';
  const eventName = 'OAUTH_GRANT'; // OAuthグラントイベントに絞る

  const today = new Date();
  const oneMonthAgo = new Date();
  oneMonthAgo.setMonth(today.getMonth() - 1); // 過去1ヶ月間のログを取得

  const options = {
    userKey: userKey,
    applicationName: applicationName,
    eventName: eventName,
    startTime: oneMonthAgo.toISOString(),
    endTime: today.toISOString(),
    maxResults: 500 // 取得件数
  };

  let pageToken;
  let allActivities = [];

  do {
    const response = AdminReports.Activities.list(userKey, applicationName, options);
    if (response.items) {
      allActivities = allActivities.concat(response.items);
    }
    pageToken = response.nextPageToken;
    options.pageToken = pageToken;
  } while (pageToken);

  // 取得したallActivitiesを処理(例: スプレッドシートに出力、フィルタリング)
  // ...
  Logger.log(`取得したOAuthグラント活動ログの件数: \${allActivities.length}`);
  return allActivities;
}

このログから、event.parameters 内の client_nameclient_id を確認することで、どの外部サービスが連携されたかを特定できます。不審なAIサービスや未承認のAIサービスへの連携を見つけた場合、ユーザーへのヒアリングやアクセス許可の取り消しを検討します。

2. Googleドライブ監査ログでのファイル活動検出

AIサービスで生成されたコンテンツがGoogleドライブに保存されたり、共有されたりする場合があります。特定のキーワードを含むファイル名や、短期間に大量に生成されたファイルなどから、AI利用の兆候を推測できます。

検出できる情報:

  • AI生成ツールと連携してドライブに保存されたファイル(例: 「AI_Report_2024.docx」「Generated by ChatGPT.pdf」など、ファイル名に特徴がある場合)。
  • 特定のユーザーが短期間に大量のドキュメントを作成・編集・共有している場合。

Reports APIでの取得方法: applicationNamedrive に指定し、eventNamecreate, edit, share などのイベントをフィルタリングします。

// Googleドライブのファイル作成・編集ログを取得する例
function getDriveActivityLogs() {
  const userKey = 'all';
  const applicationName = 'drive';

  const today = new Date();
  const oneWeekAgo = new Date();
  oneWeekAgo.setDate(today.getDate() - 7); // 過去1週間のログを取得

  const options = {
    userKey: userKey,
    applicationName: applicationName,
    startTime: oneWeekAgo.toISOString(),
    endTime: today.toISOString(),
    maxResults: 500
  };

  let pageToken;
  let allActivities = [];

  do {
    const response = AdminReports.Activities.list(userKey, applicationName, options);
    if (response.items) {
      allActivities = allActivities.concat(response.items);
    }
    pageToken = response.nextPageToken;
    options.pageToken = pageToken;
  } while (pageToken);

  // 取得したallActivitiesからファイル名やイベントをフィルタリング
  allActivities.forEach(activity => {
    activity.events.forEach(event => {
      // eventNameがcreate, edit, shareなどであること
      // event.parametersからdoc_titleやtarget_resource.nameなどを確認
      // 例: if (event.name === 'create' && event.parameters.doc_title.includes('AI_Generated')) { ... }
    });
  });

  Logger.log(`取得したGoogleドライブ活動ログの件数: \${allActivities.length}`);
  return allActivities;
}

このアプローチは、ファイル名に特徴がある場合に有効ですが、AIが生成したコンテンツであることを直接的に判断するものではありません。より高度な検出には、DLP (Data Loss Prevention) ソリューションやコンテンツ検査ツールの導入が必要です。

3. Gmail監査ログでのAIサービス関連メール検出

AIサービスからの通知メールや、AIサービス連携に関するメールの送受信履歴をGmailの監査ログから追跡するアプローチです。

検出できる情報:

  • noreply@chatgpt.comnotifications@claude.ai のような特定のドメインからのメール受信。
  • AIサービスへの登録確認メールや、利用状況レポートのメール。

Reports APIでの取得方法: applicationNameemail に指定します。ただし、Gmail監査ログはメールのメタデータ(送信者、受信者、件名など)は提供しますが、メール本文の具体的な内容までは提供しません。そのため、特定のキーワードで本文を検索するような直接的な検出は困難です。主に、特定のAIサービスからの通知メールの送受信履歴を把握する用途に限定されます。

4. Google Workspaceの組み込みAI (Gemini for Google Workspaceなど) の利用状況

Google Workspaceに直接組み込まれているAI機能(Gemini for Google Workspaceなど)の利用状況は、Google Workspaceの管理コンソールやReports APIを通じて直接レポート可能です。これは外部AIサービスとは異なり、Googleが提供する機能であるため、より詳細な監査が可能です。

Reports APIでの取得方法: applicationNamedrivedocs など、Gemini for Google Workspaceが連携する各アプリケーションのログを確認します。Gemini for Google Workspaceの具体的なイベント名が Reports APIで公開され次第、それらを活用して詳細な利用状況を把握できるようになります。

検出の限界と他のツールとの連携の必要性

上記のアプローチは、Google Workspaceの監査ログで可能な「間接的な検出」に焦点を当てています。しかし、これだけでは全てのAIサービス利用状況を完全に把握することはできません。

Google Workspace監査ログの限界:

  • Webサイトアクセス履歴の追跡不可: Google Workspaceの監査ログは、ユーザーがブラウザでどのWebサイト(chatgpt.comなど)を閲覧したかを直接記録しません。
  • メール本文の内容検索不可: Gmail監査ログではメールのメタデータは取得できますが、本文の内容を詳細に分析することは困難です。
  • ファイル内容の直接分析不可: Googleドライブ監査ログはファイルの作成・編集・共有履歴は記録しますが、ファイルの内容を直接スキャンしてAI生成コンテンツかを判断する機能はありません(DLP機能を除く)。

これらの限界を補完するためには、以下のセキュリティツールとの連携を検討することが重要です。

  • CASB (Cloud Access Security Broker): クラウドサービスの利用状況を監視し、アクセス制御やデータ漏洩防止機能を提供します。Webアクセスも監視できるため、外部AIサービスの利用を直接検出・制御できます。
  • SWG (Secure Web Gateway) / プロキシサーバー: 組織内のWebアクセスを全て経由させることで、アクセス先のURLを記録・フィルタリングできます。
  • DLP (Data Loss Prevention): 機密情報の流出を防止するソリューションで、ファイルや通信内容をスキャンして機密情報を検出します。AIサービスへの入力前に警告・ブロックすることが可能です。
  • EDR (Endpoint Detection and Response): エンドポイント(PCなど)での活動を監視し、不審な挙動を検出します。

DRASENASが提案する、Google Workspace監査ログを軸としたAIガバナンス戦略

情シスとして、AI利用の可視化は第一歩に過ぎません。検出した情報を元に、組織としてAIを安全かつ効果的に活用するためのガバナンス体制を構築することが重要です。DRASENASでは、以下のステップを推奨しています。

  1. 社内ポリシーの策定と周知徹底:
    • どのようなAIサービスの利用を許可・禁止するか、機密情報の取り扱いに関するルールなどを明確に定義します。
    • 従業員に対し、AI利用ガイドラインを周知し、定期的な教育を実施します。
  2. 検出結果の評価とリスクレベルに応じた対応:
    • OAuth連携ログやDriveの活動ログから検出されたAIサービスの利用状況を定期的に評価します。
    • 未承認のサービスや高リスクなデータ連携が見つかった場合、利用ユーザーへのヒアリング、アクセス許可の取り消し、利用停止の指示などを段階的に行います。
    • 特に機密情報へのアクセス権限を持つAIサービスへの連携は高リスクと判断し、厳重な対応を検討します。
  3. Google Workspace機能と外部ツールの段階的活用:
    • まずはGoogle Workspaceの監査ログとGoogle Apps Script (GAS) を活用し、低コストで迅速に可視化の仕組みを構築します。
    • 組織のAI利用が活発化し、より高度な管理が必要になった場合は、CASBやDLPなどの専門ツール導入を検討します。これにより、Webアクセスレベルでの制御やファイル内容のディープスキャンが可能になります。
  4. 継続的な監視とポリシーの見直し:
    • AI技術は日々進化しており、新たなサービスや利用方法が次々と登場します。
    • 一度構築した監視体制やポリシーも、定期的に見直し、組織の実情や技術の進歩に合わせてアップデートしていくことが不可欠です。

Reports API (またはGAS) を活用した自動レポートの仕組み構築

情シスが手動で監査ログを確認するのは非効率です。Google Apps Script (GAS) (Google Workspaceの機能を拡張・自動化できるクラウドベースのスクリプト環境) を活用することで、Reports APIから定期的にログを取得し、Googleスプレッドシートに集計・レポートする自動化された仕組みを構築できます。

1. サービスアカウントの作成とAPIの有効化

Reports APIにアクセスするには、サービスアカウント(Google Workspaceドメイン全体にアクセスできる特別なアカウント)を作成し、適切な権限を付与する必要があります。

具体的な手順は以下の通りです。

  1. Google Cloud Console で新しいプロジェクトを作成します。
  2. 作成したプロジェクト内で、ナビゲーションメニューから「IAMと管理」>「サービスアカウント」へ移動します。
  3. 「サービスアカウントを作成」をクリックし、サービスアカウント名と説明を入力して作成します。
  4. このサービスアカウントに、Reports APIへのアクセスに必要な役割(例: 「レポート閲覧者」または「組織の管理者」など、必要最小限の権限を選択してください)を付与します。
  5. サービスアカウントのキーを作成し、JSON形式でダウンロードします。このキーはGASからReports APIに認証するために使用します。
  6. 「APIとサービス」>「有効なAPIとサービス」に移動し、「Admin SDK API」を検索して有効化します。

2. Google Apps Script (GAS) 環境の準備

次に、ダウンロードしたサービスアカウントキーをGASから利用できるように設定し、スクリプトを作成します。

  1. Googleドライブから新しいGoogleスプレッドシートを作成し、「拡張機能」>「Apps Script」を選択してスクリプトエディタを開きます。
  2. スクリプトエディタで「プロジェクトの設定」アイコン(歯車マーク)をクリックし、「Google Cloud Platform(GCP)プロジェクト」セクションで、先ほど作成したGCPプロジェクトのプロジェクト番号またはプロジェクトIDを入力して関連付けます。
  3. 「サービス」タブに移動し、「Admin SDK API」を検索して追加します。これにより、GASからReports APIを呼び出すためのAdminReportsサービスが利用可能になります。
  4. ダウンロードしたサービスアカウントキーのJSONファイルの内容を、GASのスクリプト内に安全な方法で埋め込むか、Driveに保存してスクリプトから読み込めるように設定します。(例: スクリプトプロパティにJSON文字列として保存する、Driveの特定フォルダに置いてGASから読み取るなど)

3. Reports APIの呼び出しとデータ処理

準備が整ったら、GASスクリプト内でReports APIを呼び出し、取得したデータを処理します。

  1. 前述の「Google Workspace監査ログでAIサービス利用を「間接的に」検出するアプローチ」で紹介したコード例(OAuthクライアントアクセス監査ログやGoogleドライブ監査ログの取得例など)を参考に、Reports APIを呼び出す関数を作成します。
  2. サービスアカウントキーを使って認証を行い、AdminReports.Activities.list() メソッドで必要な監査ログを取得します。
  3. 取得したログデータはJSON形式であるため、GASのJavaScriptで解析し、必要な情報を抽出します。
  4. 抽出したデータをGoogleスプレッドシートに書き出す関数を作成し、見やすい形式でレポートを生成します。

4. スケジュール設定と自動実行

最後に、作成したスクリプトを定期的に自動実行するためのトリガーを設定します。

  1. GASスクリプトエディタの左側メニューにある「トリガー」アイコン(時計マーク)をクリックします。
  2. 「トリガーを追加」をクリックし、実行する関数、イベントのソース(例: 時間主導型)、時間の種類(例: 日付ベースのタイマー)、時間の間隔(例: 毎日、毎週)を設定します。
  3. これにより、設定した間隔でスクリプトが自動的に実行され、常に最新のAIサービス利用状況レポートがスプレッドシートに反映されるようになります。

この自動化された仕組みを構築することで、情シス担当者は手動でのログ確認作業から解放され、より戦略的なAIガバナンスの検討に時間を割けるようになります。

コーポレートITのご相談はお気軽に

この記事で書いたような業務改善・自動化の設計から実装まで、DRASENASではコーポレートITの現場に寄り添った支援を行っています。 「まず相談だけ」でも大歓迎です。DRASENAS 公式サイトからお気軽にどうぞ。

CONTACT

御社の IT 部門、ここにあります。

「ITのことはあまりわからない」── そのような状態からで、まったく問題ございません。まずはお気軽にご相談ください。

一社ずつ、一から。