構成とセキュリティのリファレンス

Firebase CLI を使用すると、バージョン管理可能なローカル プロジェクト ディレクトリで Firebase プロジェクトを管理できます。これには、プロジェクト内の Data Connect サービス、それらのサービスのコネクタ、各コネクタのスキーマ、クエリ、ミューテーション ソースなどのリソースが含まれます。CLI を使用すると、Firebase Data Connect エミュレータをインストールして操作することもできます。CLI は、Firebase コンソールで作業するよりも効率的な方法です。

非公開プレビュー プログラムの Firebase CLI 試験運用版のインストール手順と Data Connect 関連の CLI コマンドについては、CLI リファレンスをご覧ください。

このリファレンス ガイドでは、次の内容について説明します。

  • firebase.json プロジェクト構成ファイル内の Data Connect 固有のエントリ。
  • dataconnect.yamlconnector.yamlData Connect 構成。
  • Data Connect を使用するプロジェクト用に構成する必要がある IAM ロール。

Firebase プロジェクトの構成ファイル

firebase.json 構成リファレンス

dataconnect キーを使用して、プロジェクトで 1 つ以上の Data Connect サービスを構成します。

dataconnect: {
   source: string // Path to the directory containing the dataconnect.yaml service file.
}

dataconnect.yaml 構成リファレンス

dataconnect.yaml ファイルには、アプリケーション スキーマソース、コネクタソース、データソース接続情報の場所に関する構成情報が保存されます。このファイルは、Firebase CLI のプロジェクト ディレクトリの識別子としても機能します。

schemaValidation キーは、デプロイ中にスキーマが移行されたときに実行されるスキーマ検証のレベルを制御します。値が設定されていない場合、dataconect:sql:migrate コマンドは互換性のある変更を適用し、厳密な変更を実行する前にプロンプトを表示します。設定すると、次のように動作します。

  • STRICT モード。アプリケーション スキーマをデプロイするには、データベース スキーマがアプリケーション スキーマと完全に一致している必要があります。Data Connect スキーマで使用されていないテーブルや列は、データベースから削除されます。
  • COMPATIBLE モード。アプリケーション スキーマをデプロイする前に、データベース スキーマがアプリケーション スキーマと互換性がある必要があります。その他の変更は任意と見なされます。互換性があるということは、スキーマ移行が、作成したアプリケーション スキーマに基づいていることを意味します。アプリケーション スキーマで使用されていないデータベースの要素は変更されません。そのため、デプロイ後、バックエンドには未使用のスキーマ、テーブル、列が含まれる場合があります。

このファイル内の他のキーの値については、以下のコメントで説明します。

# The top-level Firebase Data Connect YAML file.

# The Firebase Data Connect API version to target.
# Optional. Defaults to the latest version.
specVersion: string

# The ID of the Firebase Data Connect service resource.
# Required.
serviceId: string

# The location of the Firebase Data Connect service.
# Required.
location: string

# Required.
schema:
  # Relative path to directory for schema definitions.
  # Recursively loads all .gql files in this directory.
  # Optional. If not present, defaults to ./schema.
  source: string
  # Datasource connection information.
  # Required.
  datasource:
    # Required.
    postgresql:
      # The name of the PostgreSQL database.
      # Required.
      database: string
      cloudSql:
        # The ID of the CloudSQL instance resource.
        # Required.
        instanceId: string
        # Schema validation mode for schema migrations.
        # Defaults to unspecified/commented out, meaning you are prompted to
        # review all changes during migration.
        # If desired, uncomment and indicate one of "STRICT" or "COMPATIBLE".
        schemaValidation: string

# Required.
# Relative paths to directories for connector definitions.
# Recursively loads all .gql files in the listed directories.
# All directories specified MUST contain a connector.yaml file.
connectorDirs: [string]

YAML ファイルは、次のデフォルト(ただし構成可能な)ディレクトリ構造を前提としています。

./(project root)
   /dataconnect
      dataconnect.yaml
      /schema
        *.gql
      /connector
        connector.yaml
        *.gql

connector.yaml 構成リファレンス

connector.yaml を使用して、デフォルトの認証モードと SDK 生成オプションを構成します。

# The connector-level YAML file.

# Required. The connector name of the Firebase Data Connect connector resource.
connectorId: string

# Optional. If not specified, no generated libraries (i.e. type-safe SDKs) will be generated.
generate:
    # Optional.
    javascriptSdk:
        # Path to the directory that will be updated with the latest generated
        # web SDK.
        # Required.
      - outputDir: string
        # Path to your package.json directory. If specified, the new generated sdk will be installed in this path.
        # Optional. If not provided, the package will not be auto-installed for you.
      - packageJsonDir: string
        # Name of the package to be created.
        # Optional. Defaults to @firebasegen/<connectorID>
      - package: string
        <option>: string
    # Optional.
    swiftSdk:
        # Path to the directory that will be updated with the latest generated
        # iOS Swift SDK.
        # Required.
      - outputDir: string
        # Name of the package to be created.
      - package: string
        <option>: string
    # Optional.
    kotlinSdk:
        # Path to the directory that will be updated with the latest generated
        # Android SDK.
        # Required.
      - outputDir: string
        # Name of the package to be created.
      - package: string
        <option>: string

Data Connect プロジェクトの IAM 構成

Data Connect のきめ細かい IAM ロール

Firebase の基本ロールと事前定義ロールは、下位レベルの Data Connect ロールにマッピングされます。マッピングについては、表を参照してください。

Data Connect の個々の IAM ロールの割り当てをよりきめ細かいレベルで管理するには、Google Cloud コンソールを使用します。

IAM ロール 権限
firebasedataconnect.googleapis.com/admin

Firebase Data Connect API 管理者

このロールには Firebase Data Connect API 閲覧者が含まれます。
firebasedataconnect.* と同じです。

これは、Cloud Owner、Cloud Editor、
Firebase 管理者、Firebase Develop 管理者のロールによって提供されます。
Firebase Data Connect API リソース(データを含む)への完全アクセス権。

firebasedataconnect.googleapis.com/operations.delete
firebasedataconnect.googleapis.com/operations.cancel
firebasedataconnect.googleapis.com/services.create
firebasedataconnect.googleapis.com/services.update
firebasedataconnect.googleapis.com/services.delete
firebasedataconnect.googleapis.com/services.executeGraphql
firebasedataconnect.googleapis.com/services.executeGraphqlRead
firebasedataconnect.googleapis.com/schemas.create
firebasedataconnect.googleapis.com/schemas.update
firebasedataconnect.googleapis.com/schemas.delete
firebasedataconnect.googleapis.com/schemaRevisions.create
firebasedataconnect.googleapis.com/schemaRevisions.delete
firebasedataconnect.googleapis.com/connectors.create
firebasedataconnect.googleapis.com/connectors.update
firebasedataconnect.googleapis.com/connectors.delete
firebasedataconnect.googleapis.com/connectorRevisions.create
firebasedataconnect.googleapis.com/connectorRevisions.delete
firebasedataconnect.googleapis.com/viewer

Firebase Data Connect API 閲覧者

これは、Cloud のオーナー、Cloud の編集者、
Cloud の閲覧者、Firebase 管理者、Firebase 閲覧者、
Firebase Develop 管理者、Firebase Develop 閲覧者のロールによって提供されます。
Firebase Data Connect API リソースに対する読み取り専用アクセス権。ロールによってデータへのアクセス権は付与されません。

cloudresourcemanager.googleapis.com/projects.list
cloudresourcemanager.googleapis.com/projects.get

firebasedataconnect.googleapis.com/operations.list
firebasedataconnect.googleapis.com/operations.get
firebasedataconnect.googleapis.com/locations.list
firebasedataconnect.googleapis.com/locations.get
firebasedataconnect.googleapis.com/services.list
firebasedataconnect.googleapis.com/services.get
firebasedataconnect.googleapis.com/schemas.list
firebasedataconnect.googleapis.com/schemas.get
firebasedataconnect.googleapis.com/schemaRevisions.list
firebasedataconnect.googleapis.com/schemaRevisions.get
firebasedataconnect.googleapis.com/connectors.list
firebasedataconnect.googleapis.com/connectors.get
firebasedataconnect.googleapis.com/connectorRevisions.list
firebasedataconnect.googleapis.com/connectorRevisions.get
firebasedataconnect.googleapis.com/dataAdmin

Firebase Data Connect API データ管理者

これは、クラウド オーナー、クラウド編集者、
Firebase 管理者、Firebase Develop 管理者のロールによって提供されます。
データソースに対する完全な読み取り / 書き込みアクセス権。

firebasedataconnect.googleapis.com/services.executeGraphql
firebasedataconnect.googleapis.com/services.executeGraphqlRead
firebasedataconnect.googleapis.com/dataViewer

Firebase Data Connect API データ閲覧者

これは、Cloud のオーナー、Cloud の編集者、
Firebase 管理者、Firebase Develop 管理者のロールによって提供されます。
データソースにランダムにアクセスします。

firebasedataconnect.googleapis.com/services.executeGraphqlRead