Cloud Asset Inventoryで検索されるサービスアカウントキーにはSYSTEM_MANAGEDも含まれる

Cloud Asset Inventoryで検索されるサービスアカウントキーにはSYSTEM_MANAGEDも含まれる

2026.04.05

Cloud Asset Inventoryでサービスアカウントキーを検索すると、USER_MANAGEDキーだけでなくSYSTEM_MANAGEDキーも表示されます。

「USER_MANAGEDキーだけが表示されるのでは?」と思っていたのですが、実際に試したところ両方とも表示されました。

今回はサービスアカウントにUSER_MANAGEDキーとSYSTEM_MANAGEDキーをそれぞれ用意し、Cloud Asset Inventoryでの表示を確認してみます。

サービスアカウントキーの種別

Google Cloudのサービスアカウントキーには、以下の2種類があります。

種別 説明
USER_MANAGED ユーザーが作成・管理するキー。ローテーションもユーザー自身で行う
SYSTEM_MANAGED Googleが自動で作成・ローテーションするキー。ユーザーがダウンロードすることはできない

https://cloud.google.com/iam/docs/reference/rest/v1/projects.serviceAccounts.keys#ServiceAccountKeyType

SYSTEM_MANAGEDキーは、Google内部のサービス間認証などに使用されるもので、通常ユーザーが意識する必要はありません。

やってみた

前提

  • Google Cloudプロジェクトが作成済みであること
  • gcloud CLIが認証済みであること
  • Cloud Asset Inventory API(cloudasset.googleapis.com)が有効であること

シェル変数の定義

以降のコマンドで使用するプロジェクトIDを変数に設定します。

export PROJECT_ID=$(gcloud config get-value project)

サービスアカウントの作成

検証用のサービスアカウントを作成します。

gcloud iam service-accounts create sa-key-test \
  --display-name="SA Key Test" \
  --project=$PROJECT_ID

USER_MANAGEDキーの作成

作成したサービスアカウントのUSER_MANAGEDキーを作成します。

gcloud iam service-accounts keys create key.json \
  --iam-account=sa-key-test@$PROJECT_ID.iam.gserviceaccount.com

キーの一覧を確認

gcloud iam service-accounts keys list でキーの一覧を確認します。デフォルトではキーの種別が表示されないため、--formatkeyType を含めます。

gcloud iam service-accounts keys list \
  --iam-account=sa-key-test@$PROJECT_ID.iam.gserviceaccount.com \
  --format="table(name.basename(), keyType, validAfterTime, validBeforeTime)"

実行結果の例です。USER_MANAGEDキーとSYSTEM_MANAGEDキーの両方が表示されます。

KEY_ID                                    KEY_TYPE        CREATED_AT            EXPIRES_AT
60a66988e8ce0e5fe1a65cef847cd63469461195  USER_MANAGED    2026-03-30T07:32:16Z  9999-12-31T23:59:59Z
376123be178727dd5e22e8caf07a8b49f5976b48  SYSTEM_MANAGED  2026-03-30T07:31:53Z  2028-04-02T14:27:51Z

サービスアカウントを作成すると、ユーザーが明示的に作成しなくてもSYSTEM_MANAGEDキーが確認できます。USER_MANAGEDキーの有効期限が 9999-12-31(無期限)であるのに対し、SYSTEM_MANAGEDキーはGoogleが自動でローテーションするため有限の有効期限が設定されています。

Cloud Asset Inventoryで検索

Google Cloudコンソールから「アセット インベントリ」を開き、アセットタイプに iam.googleapis.com/ServiceAccountKey を指定して検索します。

Cloud Asset Inventoryへの反映にはタイムラグがあります。一般的なリソースは数分で反映されますが、IAMリソース(ServiceAccountKeyを含む)は最大7日間データが古い場合があるとドキュメントに記載されています。私が試した際は、反映まで24時間以上かかりました。

検索結果には、先ほど作成したサービスアカウントのキーが表示されます。ここでのポイントは、USER_MANAGEDキーだけでなくSYSTEM_MANAGEDキーも検索結果に含まれることです。

IAM_と管理_–_sato_masaki_–_Google_Cloud_コンソール.png

アセット インベントリの検索結果では、キーの種別(USER_MANAGED / SYSTEM_MANAGED)は直接表示されません。表示されるのはキーのリソース名のみです。

gcloudコマンドでの確認方法

Cloud Asset Inventoryの検索結果だけでは、キーがUSER_MANAGEDなのかSYSTEM_MANAGEDなのか判別できません。

キーの種別を確認するには、gcloud iam service-accounts keys list--managed-by オプションを使用します。

USER_MANAGEDキーのみ表示する場合は以下です。

gcloud iam service-accounts keys list \
  --iam-account=sa-key-test@$PROJECT_ID.iam.gserviceaccount.com \
  --managed-by=user

SYSTEM_MANAGEDキーのみ表示する場合は以下です。

gcloud iam service-accounts keys list \
  --iam-account=sa-key-test@$PROJECT_ID.iam.gserviceaccount.com \
  --managed-by=system

Cloud Asset Inventory CLIでの検索

コンソールだけでなく、gcloud asset search-all-resources コマンドでも同様にSYSTEM_MANAGEDキーが表示されることを確認できます。

gcloud asset search-all-resources \
  --asset-types=iam.googleapis.com/ServiceAccountKey \
  --scope=projects/$PROJECT_ID

このコマンドの結果にも、USER_MANAGEDキーとSYSTEM_MANAGEDキーの両方が含まれます。

まとめ

Cloud Asset Inventoryの ServiceAccountKey 検索では、USER_MANAGEDキーだけでなくSYSTEM_MANAGEDキーも表示されます。

組織内のサービスアカウントキーを棚卸しする際に、Cloud Asset Inventoryの検索結果をそのまま「ユーザーが作成したキーの一覧」として扱うと、SYSTEM_MANAGEDキーが混在して実態より多く見えてしまいます。

USER_MANAGEDキーだけを把握したい場合は、gcloud iam service-accounts keys list --managed-by=user でフィルタリングするのがおすすめです。

この記事をシェアする

関連記事