🍭

github actions✖︎GCP(container registry、cloud run)に必要なIAMのロールをまとめた

2023/02/04に公開

はじめに

Dockerで作成したアプリをgithub actionsを使って、container registryとcloud runへpushとdeployした際に、GCPのIAM権限周りでハマってしまいました。
container registryとcloud runをgithub actionsで通信するにあたってサービスアカウントに付与したロールを備忘録としてまとめてみました。
最後にハマったポイントをまとめてみましたのでそちらも併せてご覧下さいませ。
actionsのエラーをもとにぽちぽちと設定していっただけなので、もしかしたら不要なロールも追加されているかもしれません、、、mm

構成


github actionsからGCPへは下記のような通信を行うように設定しました。
githubの特定のbranchにプルリクされたら、container registryへpush、cloud runへdeployするという単純な流れです。

container registryのpushの際に付与したロール

cloud runのdeployの際に付与したロール

cloud storage

  • ストレージのレガシー バケット オーナー(roles/storage.legacyBucketOwner)

    このロールについては、Permissionsでstorage.buckets.getが付与されれば良いのでStorage レガシー バケット読み取りロールでも良かったかもしれないです。

  • Workload Identity ユーザー(roles/iam.workloadIdentityUser

ハマったポイント

今回GCPを使うにあたってハマってしまったのがcloud storageの権限でした。
下記のようなエラーが出てstorage.buckets.getの権限が必要だったみたいですが

ERROR: Policy modification failed. For a binding with condition, run "gcloud alpha iam policies lint-condition" to identify issues in condition.
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Role roles/storage.buckets.get is not supported for this resource.

IAMのコンソール画面からロールの設定が出来ず悪戦苦闘しました。結果的にcloud storageの画面でバケットを選択してアクセス権を設定しました。
IAMの画面で設定する方法があるのでしょうか、、、?

cloud storageのコンソール画面

参考

最後にIAMのロールを検索する際に参考になる下記Googleのロール一覧から検索すると、付与したい権限のロールを一発で見つかるので便利でした。
ロールについて

Discussion