Closed7

RevenueCatのGoogle課金で最低限必要なIAMポリシー

ツルオカツルオカ
resourcemanager.projects.get: プロジェクトを表示(選択)するのに必要
iam.serviceAccounts.create: サービスアカウントの作成に必要
iam.serviceAccounts.list: サービスアカウントの一覧の取得に必要
resourcemanager.projects.setIamPolicy: サービスアカウントへのポリシー付与に必要
resourcemanager.projects.getIamPolicy: サービスアカウントへのロール付与時にgetするために必要
iam.serviceAccountKeys.list: サービスアカウントのKeyの一覧を取得するために必要
iam.serviceAccountKeys.create: サービスアカウントのKeyを作るために必要
pubsub.topics.list: Pub/Sub閲覧のため
serviceusage.services.list: Pub/Sub閲覧のため

これらポリシーを持つカスタムロールを作るとひとまず最低権限で課金に必要なGoogle Cloud上のセットアップを一任できる(カスタムロール作ろうとするとデバッグが辛いな..)。

iam.serviceAccountKeys.createに関しては、同じプロジェクトで複数サービスを運営している場合に、他のサービスアカウントKeyの鍵も生成できてしまうので、権限に強弱をつけるなどの対応が必要かも

ツルオカツルオカ

RevenueCatのドキュメントはこちら
Configure Play Store Service Credentials | RevenueCat

手順は書いてあるものの、それぞれの操作に必要なIAMのポリシーまでは記載してくれていなかったので記録。もちろん個人開発などOwnerが与えられる環境であれば気にする必要は無いが、ポリシー付与するのにも第三者に依頼が必要な社内環境では、予め必要なポリシーを一覧で渡せるようにしておいた方が楽。

ツルオカツルオカ

こういった形で都度聞かれて面倒なので、サービスアカウントのJSONキーをダウンロードできるとこまでに必要な権限をまとめたのが背景。

ツルオカツルオカ

(備忘録的なものをスクラップに残そうと思ったが、画像が拡大表示されずちょっと不便なので普通にライトな記事にするのでも良いのかも)

ツルオカツルオカ

resourcemanager.projects.setIamPolicyでロールのプルダウンが表示され追加操作はできるものの、この状態で完了ボタンを押下すると失敗してしまう。何の権限が足りないのか..。

ツルオカツルオカ

「プロジェクトのロールを追加できませんでした」などのような、何のポリシーが不足しているのかわからない場合は、実際のPOSTに対してどのAPIが叩かれているかを見ると良い。

上の例でいうと、「続行」ボタンを押下処理が失敗しているので、Chromeの検証ツールなどを開きつつ「Network」タブで実際に叩かれているAPIを確認する。大抵、403が返ってきてくるはずで、エラーメッセージの中に不足の権限がログ出力されている場合が多い。今回はresourcemanager.projects.getIamPolicyが無いために弾かれていることが分かった。結果、resourcemanager.projects.getIamPolicyを付けることで無事にロールを付与することが出来て解決した。おそらくロール付与時に、同時にgetする処理が必要なのだろう。

このスクラップは2021/10/21にクローズされました