GoogleクラウドGUIコンソールで、「IAM&admin」>「サービスアカウント」に移動し、ビューアーロールで「my-service-account」という名前のサービスアカウントを作成しました。
次に、このコマンドを実行しました。
gcloud iam service-accounts get-iam-policy [email protected]
この出力を見ました:
etag: ACAB
ドキュメントによると、これは、このサービスアカウントにポリシーが関連付けられていないことを意味します。そこで、「ポリシー」に含まれていない「ロール」を割り当てました。
サービスアカウントに関連付けられたロールを一覧表示するにはどうすればよいですか?
Google Cloudには、プロジェクトとサービスアカウントのIAMポリシーがあります。
プロジェクトのIAMポリシーを使用して、Google Cloudプロジェクトのリソースで特定のアクションを実行できるユーザーを定義します。プロジェクトポリシーを変更したサービスアカウントに「ビューア」ロールを追加します(つまり、サービスアカウントがプロジェクト内でできること)
一方、サービスアカウントのIAMポリシーは、誰が所有権を持ち、誰がサービスアカウントとその設定にアクセスできるかを制御するために使用されます。これは、投稿したコマンドで取得したものですが、プロジェクトのポリシーではなくサービスアカウントのポリシーを取得しているため、何も取得していません。
メンバーとそれに対応するロールを含むプロジェクトのIAMポリシーを取得するには、 次のコマンド を実行できます。
gcloud projects get-iam-policy PROJECT_ID
サービスアカウントの詳細については、次のリンクをご覧ください。
https://cloud.google.com/iam/docs/service-accounts
https://cloud.google.com/iam/docs/granting-roles-to-service-accounts
特定のサービスアカウントでフィルタリングするには、次のgcloudコマンドを使用します。
gcloud projects get-iam-policy <YOUR GCLOUD PROJECT> \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:<YOUR SERVICE ACCOUNT>"
Nice出力を提供します:
ROLE
roles/cloudtrace.agent
roles/servicemanagement.serviceController
roles/viewer
もちろん、特定のニーズに合わせてフォーマットパラメータを調整することもできます。