Cloud Asset Inventoryで検索されるサービスアカウントキーにはSYSTEM_MANAGEDも含まれる
Cloud Asset Inventoryでサービスアカウントキーを検索すると、USER_MANAGEDキーだけでなくSYSTEM_MANAGEDキーも表示されます。
「USER_MANAGEDキーだけが表示されるのでは?」と思っていたのですが、実際に試したところ両方とも表示されました。
今回はサービスアカウントにUSER_MANAGEDキーとSYSTEM_MANAGEDキーをそれぞれ用意し、Cloud Asset Inventoryでの表示を確認してみます。
サービスアカウントキーの種別
Google Cloudのサービスアカウントキーには、以下の2種類があります。
| 種別 | 説明 |
|---|---|
| USER_MANAGED | ユーザーが作成・管理するキー。ローテーションもユーザー自身で行う |
| SYSTEM_MANAGED | Googleが自動で作成・ローテーションするキー。ユーザーがダウンロードすることはできない |
SYSTEM_MANAGEDキーは、Google内部のサービス間認証などに使用されるもので、通常ユーザーが意識する必要はありません。
やってみた
前提
- Google Cloudプロジェクトが作成済みであること
gcloudCLIが認証済みであること- 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 でキーの一覧を確認します。デフォルトではキーの種別が表示されないため、--format で keyType を含めます。
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キーも検索結果に含まれることです。

アセット インベントリの検索結果では、キーの種別(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 でフィルタリングするのがおすすめです。







