BlackCoffy

gcloudコマンドでIAMを設定しサービスアカウントを作成

今回はブラウザでの作業はやめて,gcloudコマンドで作業します.

<xxx>は書き換えて下さい.

  • projectID
  • sa-name
  • sa-display-name

の3つは忘れないようにメモを.

サービスアカウントを作成とアクセス権の付与

新しいサービスアカウントを作成していきます.

サービスアカウントを作成

descriptionsa-display-nameは任意です. ただ,sa-display-nameを付けないと一覧を出力した時に空白になるので,付けておいた方が見やすいです.

gcloud iam service-accounts create <sa-name> \
--description="<サービスアカウントの説明>" \
--display-name="<sa-display-name>"

サービス アカウントのメールアドレスは,<sa-name>@<projectID>.iam.gserviceaccount.comとなります.

作ったら,一覧で確認しましょう.

gcloud iam service-accounts list

サービス アカウントの作成と管理

アクセス権の付与

作ったサービスアカウントにアクセス権を付与します.add-iam-policy-binding

gcloud projects add-iam-policy-binding <projectID> \
--member="<member>" \
--role=<role-id>

メンバーは,メンバータイプメールアドレスで構成します. メンバータイプは,userやserviceAccount,メールアドレスは先程のメールアドレスです.

例えば,Storageオブジェクト管理者のアクセス権を付与する場合は以下のようにします.

gcloud projects add-iam-policy-binding <projectID> \
--member="serviceAccount:<sa-name>@<projectID>.iam.gserviceaccount.com" \
--role=roles/storage.admin

今回の例は,メンバータイプがサービスアカウントなのでserviceAccountです。

—roleはroles/を付けないとエラーになります.

リソースへのアクセス権の付与、変更、取り消し

作ったらポリシーを確認します.

# json
gcloud projects get-iam-policy <projectID> --format json > <ファイル名>

# yaml
gcloud projects get-iam-policy <projectID> --format yaml > <ファイル名>

現在のポリシーの取得

ロールの取り消し

ロールを取り消す場合は,remove-iam-policy-bindingを呼びます.

gcloud projects remove-iam-policy-binding <projectID> \
--member="<member>" \
--role=<role-id>

ポリシーの設定

jsonかyamlファイルでポリシーを設定することもできます.

jsonで設定する場合,get-iam-policyで現在のポリシーを読み取り.

gcloud projects get-iam-policy <projectID> --format json > a.json

jsonファイルを編集して,set-iam-policyでポリシーを書き込みます.

gcloud projects set-iam-policy <projectID> a.json

複数のソースで同時にポリシーの更新が試行される場合の衝突を防ぐために、ポリシーには etag 値が含まれています。setIamPolicy() を呼び出すと、IAM はリクエスト内の etag 値と既存の etag を比較し、値が一致する場合にのみポリシーを書き込みます。