Firebase Extension が指定されたアクションを実行できるよう、Firebase はサービス アカウントを介して、インストールされた拡張機能のそれぞれのインスタンスにプロジェクトとデータへの制限付きアクセス権を付与します。
サービス アカウントとは
サービス アカウントは、特殊なタイプの Google ユーザー アカウントです。これは、Google API を使用してデータにアクセスすることが許可される人間以外のユーザーを表します。
拡張機能のインストール中に、Firebase によってプロジェクトでサービス アカウントが作成されます。インストールされた拡張機能のインスタンスごとに、固有のサービス アカウントがあります。
Firebase は、拡張機能のサービス アカウントに特定のロール(一連の権限)を割り当てることで、プロジェクトとデータへのアクセスを制限します。拡張機能の動作に必要なロールは、拡張機能の開発中に Firebase が決定します。Firebase はインストール時にこのロールを拡張機能のサービス アカウントに割り当てます。割り当てられたロールを変更、追加、削除しないでください(変更すると、インストールした拡張機能が予期されたとおりに動作しません)。ただし、拡張機能をアンインストールすると、サービス アカウント(およびそのアクセス権)は完全に削除されます。
拡張機能用に作成されるサービス アカウントは次の形式になります。ext-extension-instance-id@project-id.iam.gserviceaccount.com
Firebase プロジェクトに関連付けられたすべてのサービス アカウントは、
権限とロール
拡張機能の開発中に、Firebase は拡張機能の動作に必要なアクセスレベルを決定します。
Firebase は、拡張機能のインストール中にサービス アカウントに割り当てる必要があるロール(一連の権限)を明示的にリスティングして、このアクセスレベルを定義します。
各ロール(および、各ロールに固有の権限)は、特定のプロダクトまたはサービスに基づきます。ロールの例に、firebasehosting.admin
、bigquery.dataEditor
、firebasedatabase.admin
があります。Firebase は、拡張機能の仕様ファイル(extension.yaml
ファイル)に、拡張機能に必要なロールをリストします。
Firebase の公式拡張機能の場合、Firebase はこのロールのリストを確認し、拡張機能のアクセス権が拡張機能のタスクのスコープに厳密に制限されるようにします。また、Firebase Extensions ダッシュボードで拡張機能の詳細ページを表示するか、README
ファイルを表示して、拡張機能に付与されたアクセス権を確認できます。
各ロールに含まれる権限については、以下をご覧ください。
拡張機能をアンインストールするとどうなりますか?
プロジェクトから拡張機能をアンインストールすると、その拡張機能のインスタンス用に作成されたサービス アカウントが削除されます。サービス アカウントが削除されると、プロジェクトやデータへのアクセス権がなくなるため、プロジェクトで拡張機能を実行できなくなります。