0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プリンシパルが持つパーミッションを一覧で出力する

Posted at

概要

Google Cloudで特定のプリンシパル(ユーザーやサービスアカウントなど)が持つパーミッションを確認する際、「割り当てられているロールを抽出」し、その後「各ロールに含まれるパーミッションを抽出する」という手順を踏むのは手間がかかります。
そこで、これらを一括して一覧で出力できるスクリプトを作りました。

コード

gcloud CLIがインストールされている環境で以下のコードを実行します。
PROJECT_IDPRINCIPAL_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 エディタ上でファイルを生成されたファイルを確認することができます。

スクリーンショット 2024-11-18 17.11.26(2).png

以上です。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?