Firebaseの権限をIAMで管理する

Firebaseの権限をIAMで管理する

November 28, 2021

Google 公式の説明を引用しつつ適宜補足します。

基本的に Firebase の権限を管理するには Firebase IAM を利用します。Firebase IAM で可能な粒度よりもさらに細かく設定したい場合は Cloud IAM を利用します。

これは Firebase が GCP の一部分を使いやすく切り出したものでありそのベースは GCP であるためです。

Firebase プロジェクトについて理解する | Firebase

Firebase プロジェクトと Google Cloud の関係

Firebase コンソールで新しい Firebase プロジェクトを作成した場合、内部で実際に作成されるのは Google Cloud プロジェクトです。Google Cloud プロジェクトは、データ、コード、構成、サービスのための仮想的なコンテナと考えることができます。Firebase プロジェクトは、Google Cloud プロジェクトに Firebase 固有の構成とサービスを加えたものです。


Firebase IAM #

Firebase IAM によるプロジェクトへのアクセス権の管理 | Firebase

Identity and Access Management(IAM)を使用すると、特定の Firebase リソースと Google リソースに対するアクセス権を細かく設定し、他のリソースへの不要なアクセスを防ぐことができます。

(中略)

認証された メンバー が Firebase でなんらかのアクションを要求すると、IAM はそのメンバーが リソース に対して要求された操作を実行する 権限 があるかどうかによって認可を決定します。メンバーが要求を実行できるかどうかは、メンバーに割り当てられた ロール によって決まります。各ロールは権限の集合であり、ロールをメンバーに割り当てると、そのロールのすべての権限がそのメンバーに付与されます。

メンバー:権限を割り当てる対象 #

Firebase IAM を使用して、メンバーにロール(とその固有の権限)を割り当てます。メンバーには次のタイプがあります。

  • Google アカウント
  • サービス アカウント
  • Google グループ
  • Google アカウント:1 つの Google アカウントは、Google Cloud を利用するデベロッパー、管理者、または他のユーザーを表します。
  • サービス アカウント:サービス アカウントは、個々のエンドユーザーではなく、アプリケーションのアカウントです。Google Cloud にホストされているコードを実行すると、このコードは指定したアカウントとして実行されます。
  • Google グループ:Google グループは、Google アカウントとサービス アカウントの名前付きコレクションです。

ロール:権限の集合 #

権限はロールを介してプロジェクトメンバーに付与されます。ロールは権限の集合です。ロールをメンバーに割り当てると、そのロールに含まれるすべての権限がそのメンバーに付与されます。

Firebase IAM では、次のタイプのロールをサポートしています。

  • 基本ロール: 基本的なオーナー、編集者、閲覧者のロール(旧称「基本(primitive)ロール」)。
  • 事前定義ロール: 基本ロールより詳細にアクセス権を制御できる、キュレートされた Firebase 固有のロール。Firebase では次のロールが提供されます。
    • Firebase レベルのロール: すべての Firebase プロダクトに対する完全な読み取り / 書き込みアクセスまたは読み取り専用アクセスを付与するロール。
    • プロダクトカテゴリのロール: プロダクトグループへの完全な読み取り / 書き込みアクセスまたは読み取り専用アクセスを付与するロール。これらは Google アナリティクスや一般的なプロダクトカテゴリを中心に構成されています。
    • プロダクトレベルのロール: 特定の Firebase プロダクトへの完全な読み取り / 書き込みアクセスまたは読み取り専用アクセスを付与するロール。
  • カスタムロール: 組織の特定の要件を満たす独自の権限セットを含む、完全にカスタマイズされたロール。

上から下に向かって権限設定の粒度を細かく実施することが可能です。

基本ロール #

所有者、編集者、および閲覧者の役割 | Firebase

オーナー、編集者、閲覧者から選びます。Firebase コンソールから設定が可能です。

Firebase コンソール
  > プロジェクトの設定
    > ユーザーと権限
      > Firebase の役割を割り当てる
        > オーナー / 編集者 / 閲覧者

事前定義ロール:Firebase レベルのロール #

Firebase レベルの事前定義ロール | Firebase

管理者、閲覧者から選びます。Firebase コンソールから設定が可能です。

Firebase コンソール
  > プロジェクトの設定
    > ユーザーと権限
      > Firebase の役割を割り当てる
        > Firebase(すべての Firebase プロダクト)
          > 管理 / 閲覧者

事前定義ロール:プロダクトカテゴリのロール #

Firebase プロダクトカテゴリの事前定義ロール | Firebase

次の各プロダクトについてそれぞれ管理者、閲覧者から選びます。Firebase コンソールから設定が可能です。

  1. Google Analytics
  2. Firebase Develop
  3. Firebase Quality
  4. Firebase Grow
Firebase コンソール
  > プロジェクトの設定
    > ユーザーと権限
      > Firebase の役割を割り当てる
        > アナリティクス
          > 管理 / 閲覧者
        > 開発
          > 管理 / 閲覧者
        > 品質
          > 管理 / 閲覧者
        > 拡大
          > 管理 / 閲覧者

事前定義ロール:プロダクトレベルのロール #

Firebase プロダクトレベルの事前定義ロール | Firebase

次の各プロダクトについてそれぞれ権限を設定します。Google Cloud Console から設定します。

  1. Firebase App Distribution
  2. Firebase Authentication
  3. Firebase A/B Testing
  4. Cloud Firestore
  5. Cloud Storage
  6. Cloud Functions for Firebase
  7. Firebase Cloud Messaging
  8. Firebase Crashlytics
  9. Firebase Dynamic Links
  10. Firebase Hosting
  11. Firebase In-App Messaging
  12. Firebase ML
  13. Firebase Performance Monitoring
  14. Firebase Predictions
  15. Firebase Realtime Database
  16. Firebase Remote Config
  17. Firebase Test Lab

カスタムロール #

個別で権限を設定します。Google Cloud Console から設定します。

カスタムロール | Firebase


Cloud IAM #

以下をご参照ください。