本FAQは、次の目的に該当する場合にご参照ください。
■目的
- IDCFユーザーまたはクラウドコンソールの「アカウント>連携アカウントページ」で作成したサービアカウントを、すべてのバケットにアクセスさせるのではなく、特定バケットにのみアクセスする設定を行いたい。
- クラウドコンソールを使用せずにバケットへのIAM設定を行いたい。
# gsutil iam get gs://test-iam-xxxxxxxx > get.json
3.コピーを実施(または直接編集)
# cp get.json set.json
4.追加したいサービスアカウントのiam設定を追記
(追記する内容は diff get.json set.json の差分の部分、下記の例はストレージオブジェクト作成者とストレージオブジェクト閲覧者の権限をサービスアカウントに付与する例です。)
# vi set.json # diff get.json set.json diff -u get.json set.json --- get.json 2018-12-11 11:27:36.000000000 +0900 +++ set.json 2018-12-11 11:28:31.000000000 +0900 @@ -12,6 +12,18 @@ "projectViewer:idcf-xxxxxxxx-xxxxxxxx" ], "role": "roles/storage.legacyBucketReader" + }, + { + "members": [ + "serviceAccount:test-acl-sa-xxxxxxxx@idcf-xxxxxxxx-xxxxxxxx. iam.gserviceaccount.com" + ], + "role": "roles/storage.objectCreator" + }, + { + "members": [ + "serviceAccount:test-acl-sa-xxxxxxxx@idcf-xxxxxxxx-xxxxxxxx. iam.gserviceaccount.com" + ], + "role": "roles/storage.objectViewer" } ], "etag": "CAE="``
※ユーザーの場合は「user:xxxxx@xxxx」をmembersに追加します。
※複数指定も可能です。
5.サービスアカウントのiamを設定
# gsutil iam set set.json gs://test-iam-xxxxxxxx
6.設定が反映されたか確認
# gsutil iam get gs://test-iam-xxxxxxxx { "bindings": [ { "members": [ "projectEditor:idcf-xxxxxxxx-xxxxxxxx", "projectOwner:idcf-xxxxxxxx-xxxxxxxx" ], "role": "roles/storage.legacyBucketOwner" }, { "members": [ "projectViewer:idcf-xxxxxxxx-xxxxxxxx" ], "role": "roles/storage.legacyBucketReader" }, { "members": [ "serviceAccount:test-acl-sa-xxxxxxxx@idcf-xxxxxxxx-xxxxxxxx. iam.gserviceaccount.com" ], "role": "roles/storage.objectCreator" }, { "members": [ "serviceAccount:test-acl-sa-xxxxxxxx@idcf-xxxxxxxx-xxxxxxxx. iam.gserviceaccount.com" ], "role": "roles/storage.objectViewer" } ], "etag": "CAI=" }