【正解】D
【0からの解説】
①前提知識
サービス アカウント キーは、サービス アカウントとして Google Cloud API に認証するための長期間有効な認証情報です。オンプレミスや他のクラウドのアプリケーションで使われることが多く、漏えい時のリスクが高いため、定期的な監査とローテーション(一定期間ごとの作り直し)が推奨されています。
Cloud Asset Inventory は、組織・フォルダ・プロジェクト全体の Google Cloud リソースのメタデータを横断的に検索・一覧表示できるサービスです。gcloud asset search-all-resources コマンドは、--scope で検索範囲(例: organizations/ORG_ID)、--asset-types でアセットタイプ、--query で createTime などの条件、--order-by で並べ替えを指定できます。サービス アカウント キーのアセットタイプは iam.googleapis.com/ServiceAccountKey です。
②要件の整理
・数百のサービス アカウントにまたがる「サービス アカウント キー」を監査する
・作成から 90 日を超えたキーを特定する
③正解の理由
組織スコープで iam.googleapis.com/ServiceAccountKey を対象に createTime < 90 日前の日付で検索すれば、組織内のすべてのプロジェクトのサービス アカウント キーのうち、作成から 90 日を超えたものを 1 回のコマンドで抽出し、作成日時順に並べられます。サービス アカウントごとにコマンドを繰り返す必要がなく、数百のアカウントでも効率的に監査できます。
【誤りの選択肢】
A:apikeys.googleapis.com/Key は「API キー」(API Keys API で作成する、主に公開 API の呼び出しに使う文字列キー)のアセットタイプです。サービス アカウント キーとは別のものなので、要件のキーは検索されません。
B:gcloud iam service-accounts list はサービス アカウント自体の一覧を表示するコマンドで、キーの一覧や作成日時は対象外です。古いサービス アカウントが分かっても、そのアカウントのキーがいつ作られたかは分かりません。
C:gcloud tans keys というコマンドは存在しません(原文のまま)。サービス アカウント キーを一覧表示する正しいコマンドは gcloud iam service-accounts keys list ですが、これは --iam-account で 1 つのサービス アカウントを指定して実行する必要があり、数百のアカウントに対して繰り返すのは非効率です。
【参考】
リソースを検索 | Cloud Asset Inventoryアセットタイプ | Cloud Asset Inventoryサービス アカウント キーを管理するためのベスト プラクティス | Identity and Access Management (IAM)