https://cloud.google.com/iam/docs/impersonating-service-accounts?hl=ja#iam-service-accounts-grant-role-parent-gcloud
https://qiita.com/ryoeguchi/items/d24e5d91f85973720d01
Compute Adminロールを付与したサービスアカウントを作成する
プリンシパルに上記サービスアカウント権限借用を許可する
サービスアカウント権限を借用した状態で、vm一覧はできるが、バケット一覧はできないことを確認する
-- 1. 前作業
gcloud init
gcloud auth list
gcloud --version
gcloud projects create project01-9999999 \
--name="project01"
gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet
gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111
gcloud services enable compute.googleapis.com --project project01-9999999
gcloud components update
-- 2. サービス アカウントの作成
gcloud iam service-accounts create sa99999999 \
--description="sa99999999" \
--display-name="sa99999999"
gcloud iam service-accounts list
gcloud projects add-iam-policy-binding project01-9999999 \
--member="serviceAccount:sa99999999@project01-9999999.iam.gserviceaccount.com" \
--role="roles/compute.admin"
gcloud projects get-iam-policy project01-9999999
gcloud iam service-accounts add-iam-policy-binding \
sa99999999@project01-9999999.iam.gserviceaccount.com \
--member='user:hoge@example.com' \
--role=roles/iam.serviceAccountTokenCreator
-- 3. サービス アカウント借用してコマンド実行
gcloud compute instances list \
--impersonate-service-account=sa99999999@project01-9999999.iam.gserviceaccount.com
gcloud storage ls \
--impersonate-service-account=sa99999999@project01-9999999.iam.gserviceaccount.com
-- 4. クリーンアップ
gcloud projects list
gcloud projects delete project01-9999999 \
--quiet
gcloud beta billing projects unlink project01-9999999