LoginSignup
4
4

More than 3 years have passed since last update.

GCPのIAM Roleどれ設定すればええねん問題

Last updated at Posted at 2019-12-18

Permission Error 地獄

Error: Permission iam.serviceAccounts.signBlob is required ...

ふむふむ、Permissionがないっていってるんやな。適切なPermissionをつければ動くのだろう。

=> googling...

なるほど、よくわからん!!

なんか適当にそれっぽいの含んでそうな権限を付与したら動くようになった!

えいや!

Error: xxxxxxx@appspot.gserviceaccount.com does not have storage.objects.get access to ...

(´;ω;`)

またなんか出た。

=> googling...

なるほど、よくわからん!!

Error: xxxxx@appspot.gserviceaccount.com does not have storage.objects.create access to ...

...勘弁してください...

てなことよくありませんか?
私はよく起こります。

そのたびにわからないながらもググって、おなじようなエラーに直面した人の解決方法見て、

Storage Admin をIAMで付与すると動きました!

とかを鵜呑みにして、「これ本当に適切なのだろうか???」とか思いながらも、とりあえず動かすためには書かれていた権限を付与したり、最悪Project Ownerとか付与したりしてモヤモヤとしていました。
ドキュメント見ても、権限 storage.objects.create がどんなことができるかとかそういうことしか書いてなくて、
これだ!という確信がないままIAMでRoleを設定することになります。

苦節数年…やっと解法を得たので共有しておきます。

Permissionに対応するRoleが何か調べる方法

  • GCPのConsole > IAM & admin > Role と進みます。
    スクリーンショット_2019_12_19_8_05.jpg

  • 検索種別にPermissionを
    Roles_–_IAM___admin_–_ideodora-aqmap2-1_–_Google_Cloud_Platform.jpg

  • 必要とされるPermissionで検索
    スクリーンショット 2019-12-19 8.08.49.png

すると、なんということでしょう。該当するPermissionを含んだRole達がずらりとリストされます。
title部をクリックすると、このRoleに割当てられているPermissionが一覧で確認できます。
Storage_Object_Admin_–_IAM___admin_–_ideodora-aqmap2-1_–_Google_Cloud_Platform.jpg

後は、この中から妥当なRoleを決めて、IAMに設定すればOKです。

IAM_–_IAM___admin_–_ideodora-aqmap2-1_–_Google_Cloud_Platform.jpg

選択すべきRole

おそらくですが、なるべく権限範囲の狭いRoleを付与するのが適切だと思われます。
先の例だと、Storage Adminまでは実は必要なく、Storage Object Adminがあれば、
storage.objects.get storage.objects.create をカバーしているのでStorage Object Adminの方が適切かと。

iam.serviceAccounts.signBlob だと Service Account Token Creator かな?

とりあえず、何でも Project Owner からは卒業しましょう!(汗

4
4
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
4
4