gcloudコマンドでIAMを設定しサービスアカウントを作成
今回はブラウザでの作業はやめて,gcloudコマンドで作業します.
<xxx>
は書き換えて下さい.
- projectID
- sa-name
- sa-display-name
の3つは忘れないようにメモを.
サービスアカウントを作成とアクセス権の付与
新しいサービスアカウントを作成していきます.
サービスアカウントを作成
description
とsa-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 を比較し、値が一致する場合にのみポリシーを書き込みます。