![Google Cloud - P12 からキー ID を判別する方法](https://rvso.com/image/756269/Google%20Cloud%20-%20P12%20%E3%81%8B%E3%82%89%E3%82%AD%E3%83%BC%20ID%20%E3%82%92%E5%88%A4%E5%88%A5%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
からhttps://console.cloud.google.com/iam-admin/serviceaccounts?project=[id]適切な権限を持つユーザーは、サービス アカウント キーをプロビジョニングできます。現在では、JSON 形式で渡されますが、以前は P12 (その JSON は、メタデータを含む、base64 化された P12 のみです) を受け取るオプションが提供されていました。保守する必要がある古いプロジェクトを引き継いでおり、認証に使用する P12 があります。
ただし、指定されたサービス アカウントには複数のキー ID がリストされています。それらをすべてローテーションして、新しくプロビジョニングされたキー以外のすべてを削除したいと思います。最大値 (10) にすでに達しているため、新しいキーを作成することはできません。ただし、アプリケーションは引き続き妨げられることなく実行する必要があるため、ランダムに削除することはできません。必要なのは 1 つだけですが、ルーレットを除けば、どのキーを持っているかを判断する方法がわかりません。
認証できます:
[~/scratch]$ gcloud auth activate-service-account [email protected] --key-file=x.p12 --prompt-for-password
Password:
WARNING: .p12 service account keys are not recomended unless it is necessary for backwards compatability. Please switch to a newer .json service account key for this account.
Activated service account credentials for: [[email protected]]
そしてコマンドを実行します。しかし、Gcloud を使っても、トリックを使っても、Google に自分が持っているキーを教えてもらえる方法が見つかりません。gcloud コマンドをいろいろ試しました。GCP のログ、直接の API 呼び出し、文書化されていないコマンド、または私が見逃している明らかな何かがあるのでしょうか?
答え1
キー ID は、付属の証明書の SHA1 フィンガープリントです。次のコマンドを使用して、pkcs12 ファイルから SHA1 フィンガープリントを抽出できます。
openssl pkcs12 -in /your/pkcs12/file.p12 -nodes | openssl x509 -noout -fingerprint