Firebase Extension に付与される権限

Firebase Extension が指定されたアクションを実行できるよう、Firebase はサービス アカウントを介して、インストールされた拡張機能のそれぞれのインスタンスにプロジェクトとデータへの制限付きアクセス権を付与します。

サービス アカウントとは

サービス アカウントは、特殊なタイプの Google ユーザー アカウントです。これは、Google API を使用してデータにアクセスすることが許可される人間以外のユーザーを表します。

拡張機能のインストール中に、Firebase によってプロジェクトでサービス アカウントが作成されます。インストールされた拡張機能のインスタンスごとに、固有のサービス アカウントがあります。

Firebase は、拡張機能のサービス アカウントに特定のロール(一連の権限)を割り当てることで、プロジェクトとデータへのアクセスを制限します。拡張機能の動作に必要なロールは、拡張機能の開発中に Firebase が決定します。Firebase はインストール時にこのロールを拡張機能のサービス アカウントに割り当てます。割り当てられたロールを変更、追加、削除しないでください(変更すると、インストールした拡張機能が予期されたとおりに動作しません)。ただし、拡張機能をアンインストールすると、サービス アカウント(およびそのアクセス権)は完全に削除されます。

拡張機能用に作成されるサービス アカウントは次の形式になります。ext-extension-instance-id@project-id.iam.gserviceaccount.com

Firebase プロジェクトに関連付けられたすべてのサービス アカウントは、 > [プロジェクトを設定][サービス アカウント] タブに表示されます。

権限とロール

拡張機能の開発中に、Firebase は拡張機能の動作に必要なアクセスレベルを決定します。

Firebase は、拡張機能のインストール中にサービス アカウントに割り当てる必要があるロール(一連の権限)を明示的にリスティングして、このアクセスレベルを定義します。

各ロール(および、各ロールに固有の権限)は、特定のプロダクトまたはサービスに基づきます。ロールの例に、firebasehosting.adminbigquery.dataEditorfirebasedatabase.admin があります。Firebase は、拡張機能の仕様ファイル(extension.yaml ファイル)に、拡張機能に必要なロールをリストします。

Firebase Extensions の公式拡張機能の場合、Firebase はこのロールのリストを確認し、拡張機能のアクセス権が拡張機能のタスクのスコープに厳密に制限されるようにします。また、Firebase Extensions ダッシュボードで拡張機能の詳細ページを表示するか、README ファイルを表示して、拡張機能に付与されたアクセス権を確認できます。

各ロールに含まれる権限については、以下をご覧ください。

拡張機能をアンインストールするとどうなりますか?

プロジェクトから拡張機能をアンインストールすると、その拡張機能のインスタンス用に作成されたサービス アカウントが削除されます。サービス アカウントが削除されると、プロジェクトやデータへのアクセス権がなくなるため、プロジェクトで拡張機能を実行できなくなります。