概要
Google Cloudで特定のプリンシパル(ユーザーやサービスアカウントなど)が持つパーミッションを確認する際、「割り当てられているロールを抽出」し、その後「各ロールに含まれるパーミッションを抽出する」という手順を踏むのは手間がかかります。
そこで、これらを一括して一覧で出力できるスクリプトを作りました。
コード
gcloud CLIがインストールされている環境で以下のコードを実行します。
PROJECT_ID
とPRINCIPAL_EMAIL
は任意の文字列をいれてください。
#!/bin/bash
# 設定:プロジェクトIDとプリンシパルのメールアドレス
PROJECT_ID="your-project-id" # プロジェクトIDを入力
PRINCIPAL_EMAIL="your-principal-email@example.com" # プリンシパルのメールアドレスを入力
OUTPUT_FILE="permissions_output.txt" # 出力ファイル名
# 出力ファイルを初期化
> $OUTPUT_FILE # 中身を空にする
# 1. プリンシパルに割り当てられているすべてのロールを取得
roles=$(gcloud projects get-iam-policy $PROJECT_ID \
--flatten="bindings[].members" \
--format="value(bindings.role)" \
--filter="bindings.members:$PRINCIPAL_EMAIL")
# 2. 各ロールに含まれるパーミッションを取得し、重複を排除してファイルに出力
for role in $roles; do
gcloud iam roles describe $role --format="value(includedPermissions)" | tr ',;' '\n' >> $OUTPUT_FILE
done
# 結果を一意にする(重複排除)
sort $OUTPUT_FILE | uniq > "unique_$OUTPUT_FILE"
# 出力結果の案内
echo "すべてのパーミッションを 'unique_$OUTPUT_FILE' に出力しました。"
Cloud Shellで実行すると、Cloud Shell エディタ上でファイルを生成されたファイルを確認することができます。
以上です。
参考リンク