はじめに

多くのGoogle Cloud プロジェクトを管理していると、「このプロジェクトは現在も使われているのだろうか」という疑問が浮かぶことがあります。
利用されなくなったリソースを放置することは、不要なコストやセキュリティリスクの増大につながります。しかし、Google Cloud にはプロジェクト全体の最終アクセス日を直接確認する、といった単純明快な機能は存在しません。

本記事では、この課題に対する代替策として、ユーザーアカウント、サービスアカウント、そしてリソースのアクティビティという3つの観点からプロジェクトの利用状況を把握し、放置されたプロジェクトを特定するための検証手順を解説します。

今回実現した構成

本記事は特定のリソースを構築するものではなく、既存のGoogle Cloud プロジェクトの利用状況を調査・確認する手順を解説します。
調査対象として、複数のユーザーとサービスアカウントが存在し、一部は活発に利用され、一部は長期間利用されていないGoogle Cloud プロジェクトを想定しています。
この調査を通じて、プロジェクトがアクティブかどうかを多角的に判断します。

なお、本記事に掲載した gcloud コマンドは実際のプロジェクトに対して実行し、動作を確認済みです。コンソール操作と合わせて、CLI による確認・自動化の参考にしてください。

検証手順と結果

Google Cloud プロジェクトが「利用されているか」を判断するために、以下の3つの観点で最終アクセス状況を確認します。

1. ユーザー (人間のアカウント) の最終ログインを確認する

Google Cloud プロジェクトへのアクセスは、多くの場合Google Workspace (またはCloud Identity) のユーザーアカウントを介して行われます。そのため、ユーザーの最終ログイン日時を確認することは、プロジェクト利用状況の重要な指標となります。

  1. Google Workspace 管理コンソールに管理者権限でログインします。
  2. ナビゲーションメニューから [レポート] > [ユーザーレポート] > [アカウント]を選択します。
  3. 表示されたユーザーリストで「最終ログイン日時」の列を確認します。
  4. 特定のユーザーの活動をより詳しく知りたい場合は、 [レポート] > [監査と調査] > [ユーザーのログイン イベント] から、対象のユーザー名やイベント(例:login)でフィルタリングして調査します。

注記(権限の分離): この確認には Google Cloud の IAM 権限ではなく、Google Workspace(または Cloud Identity)の管理者権限が必要です。Google Cloud 側の権限しか持たない場合はこの画面にアクセスできないため、組織によっては Workspace 管理者との連携が必要になります。

補足:
この手順により、どのユーザーがいつ最後にGoogle Cloud 関連の活動(コンソールログインなど)を行ったかを確認できます。ただし、これはあくまでGoogleアカウントへのログイン日時であり、直接特定のGoogle Cloud プロジェクトにアクセスした日時ではない点に注意が必要です。長期間ログインがないユーザーは、関連するプロジェクトの利用も停止している可能性が高いと推測できます。

2. サービスアカウントの最終利用状況を確認する

アプリケーションや自動化処理は、サービスアカウントを使ってGoogle Cloud リソースにアクセスします。そのため、サービスアカウントがいつ最後に使われたかを確認することは非常に重要です。

  1. Google Cloud コンソールで、対象のプロジェクトを選択します。
  2. ナビゲーションメニューから [IAMと管理] > [サービスアカウント] を選択します。
  3. サービスアカウントの一覧が表示されます。ただし、この一覧画面の列に「最終認証日時」は表示されません(表示できる列はステータス/名前/説明/キーの作成日/OAuth 2 クライアント ID/一意の ID のみ)。最後に認証された日時を知るには、以下の方法を使います。
    • Activity Analyzer(推奨・確実): CLI の gcloud policy-intelligence query-activity --activity-type=serviceAccountLastAuthentication で各サービスアカウントの最終認証日時を取得します(後述)。

実際に CLI で最終認証日時を取得した結果です。(policyanalyzer.googleapis.com 有効化済み)
※日時は実際の取得値、サービスアカウント名はダミーに置換した表示例です。

$ gcloud policy-intelligence query-activity \
  --activity-type=serviceAccountLastAuthentication --project=PROJECT_ID \
  --format="table(fullResourceName.basename(), activity.lastAuthenticatedTime)"

  SERVICE_ACCOUNT   LAST_AUTH
  app-runner-sa     2026-05-26T07:00:00Z
  api-gateway-sa    2026-05-26T07:00:00Z
  eval-service-sa   2026-05-26T07:00:00Z
  legacy-batch-sa   (記録なし)

→ 最終認証の記録がない legacy-batch-sa が未使用候補です。

結果:
「最終認証」の日時を確認することで、API呼び出しなどに利用されているサービスアカウントを特定できます。90日以上認証がないサービスアカウントは、関連するアプリケーションが停止しているか、あるいはそのサービスアカウントがもはや不要であることを示唆します。今回の検証でも、最終認証の記録がない legacy-batch-sa(ダミー名)のようなアカウントを起点に「どのアプリが使っていたか」「停止して問題ないか」を棚卸しできました。IAM Recommender(CLI では Insight)は、こうした未使用のアカウントを自動的に特定してくれるため、棚卸し作業の効率化に大きく貢献します。

3. プロジェクト内のリソースのアクティビティログを確認する

ユーザーやサービスアカウントのアクセスがない場合でも、Cloud Schedulerのようなサービスが内部的にリソースを動作させている可能性があります。最終的な確認として、プロジェクトの監査ログを調べ、API呼び出しの有無を確認します。

  1. Google Cloud コンソールで、対象のプロジェクトを選択します。
  2. ナビゲーションメニューから [ロギング] > [ログ エクスプローラ] を選択します。
  3. クエリビルダーを使い、調査したい期間(例:過去30日間)を設定します。
  4. クエリ入力欄に、プロジェクト全体のアクティビティを確認するための基本的なクエリを入力し実行します。例えば、管理アクティビティログを確認するには以下のクエリが利用できます。
    logName:"cloudaudit.googleapis.com%2Factivity"
    
  5. ログエントリが表示されれば、その期間内に何らかのAPI呼び出しや管理操作が行われたことを意味します。逆に、長期間にわたって全くログがない場合、プロジェクトが休眠状態である可能性が非常に高いです。

注記(管理アクティビティとデータアクセスの違い): 上記クエリが対象とする管理アクティビティ(Admin Activity)監査ログは常時記録され、無効化できません(リソースの作成・変更・削除など)。一方、データアクセス(Data Access)監査ログは既定で無効で、明示的に有効化しない限り記録されません。したがって「管理アクティビティログが無い=書き込み系の操作が無い」は強い根拠になりますが、参照系(読み取り)の活動は既定では捕捉されない点に留意してください。

結果:
ログエクスプローラで監査ログを確認することで、ユーザーやサービスアカウントの直接的なログイン以外の活動(システムイベントや内部的なAPI呼び出しなど)の有無を確認できました。長期間(例:90日以上)にわたり、いかなる種類の監査ログも記録されていないプロジェクトは、事実上「放置されている」と判断する強力な根拠になります。

感想・気づき

  • 機能によっては API 有効化が前提: サービスアカウントの「最終認証」確認には Policy Analyzer API、未使用SAの検出には Recommender API が必要でした。コンソールで列が表示されない・CLIがエラーになる場合は、まず対象APIの有効状態を疑うとよいです。
  • IAM Recommender(Insight)の有用性: 未使用のサービスアカウントや権限を自動で検出してくれる機能は、手作業での棚卸しに比べて圧倒的に効率的かつ正確です。定期的な確認プロセスに組み込むべき機能だと感じました。CLI で扱う場合は recommendations ではなく insights API を使う点に注意です。
  • 監査ログの調査: ユーザーやサービスアカウントのアクセスがなくても、プロジェクトが生きている可能性はあります。Cloud Loggingで長期間のアクティビティを調べることは、プロジェクトの利用状況を最終判断する上で不可欠な手順です。ただし既定で記録されるのは管理アクティビティのみで、データアクセスログは別途有効化が必要な点は押さえておきましょう。

まとめ

Google Cloud プロジェクトの最終アクセス日を直接的に確認する機能はありませんが、本記事で紹介した3つのアプローチを組み合わせることで、プロジェクトの利用実態を高い精度で把握することが可能です。

  1. Google Workspaceのユーザーレポートで、人間のユーザーの活動状況を確認します。
  2. IAMのサービスアカウントページやIAM Recommender(CLIではInsight)で、アプリケーションによる利用状況を確認します。
  3. Cloud Loggingの監査ログで、プロジェクト全体のAPIアクティビティを確認します。

これらの情報を総合的に評価し、長期間にわたって一切の活動が見られないプロジェクトを特定することで、コスト削減とセキュリティ体制の強化につなげることができます。まずは自組織のプロジェクトの一つを対象に、これらの手順を試してみることをお勧めします。