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キーをダウンロードできるとこまでに必要な権限をまとめたのが背景。
ちなみに、そこまで厳密に最低限のポリシーのみを付与する必要がない場合は、それぞれのポリシーを持つロールを与えてあげれば良い。どのロールがどのポリシーを持っているかの確認は下記、「ロール」から行える。
ロールについて | Cloud IAM のドキュメント | Google Cloud
(備忘録的なものをスクラップに残そうと思ったが、画像が拡大表示されずちょっと不便なので普通にライトな記事にするのでも良いのかも)
resourcemanager.projects.setIamPolicy
でロールのプルダウンが表示され追加操作はできるものの、この状態で完了ボタンを押下すると失敗してしまう。何の権限が足りないのか..。
「プロジェクトのロールを追加できませんでした」などのような、何のポリシーが不足しているのかわからない場合は、実際のPOSTに対してどのAPIが叩かれているかを見ると良い。
上の例でいうと、「続行」ボタンを押下処理が失敗しているので、Chromeの検証ツールなどを開きつつ「Network」タブで実際に叩かれているAPIを確認する。大抵、403が返ってきてくるはずで、エラーメッセージの中に不足の権限がログ出力されている場合が多い。今回はresourcemanager.projects.getIamPolicy
が無いために弾かれていることが分かった。結果、resourcemanager.projects.getIamPolicy
を付けることで無事にロールを付与することが出来て解決した。おそらくロール付与時に、同時にgetする処理が必要なのだろう。