データベースの作成と管理

Cloud Firestore Enterprise エディションにのみ関連します。

このページでは、MongoDB 互換の Cloud Firestore データベースを作成、更新、削除する方法について説明します。プロジェクトごとに複数の Cloud Firestore データベースを作成できます。複数のデータベースを使用して、本番環境とテスト環境の設定、顧客データの分離、データのリージョン指定を行うことができます。

無料枠の使用量

Cloud Firestore では、費用をかけずに使い始めることができるように、無料枠が用意されています。

無料枠は、プロジェクトごとに 1 つの Cloud Firestore データベースにのみ適用されます。無料枠のデータベースがないプロジェクトで最初に作成されたデータベースには、無料枠が適用されます。無料枠が適用されたデータベースが削除されると、次に作成されるデータベースに無料枠が適用されます。

始める前に

データベースを作成する前に、次の操作を行う必要があります。

  1. まだ Firebase プロジェクトを作成していない場合は作成します。Firebase コンソールで、[プロジェクトを追加] をクリックし、画面上の指示に沿って、Firebase プロジェクトを作成するか、既存の Google Cloud プロジェクトに Firebase サービスを追加します。

  2. 次のセクションの説明に沿って、適切な Identity and Access Management ロールを割り当てます。

必要なロール

データベースを作成して管理するには、Owner または Datastore Owner の Identity and Access Management ロールが必要です。これらのロールにより必要な権限が付与されます。

必要な権限

データベースを管理するには、次の権限が必要です。

  • データベースを作成する: datastore.databases.create
  • データベース構成を読み取る: datastore.databases.getMetadata
  • データベースを構成する: datastore.databases.update
  • データベースを削除する: datastore.databases.delete
  • データベースのクローンを作成する: datastore.databases.clone

データベースの作成

MongoDB 互換の Cloud Firestore データベースを作成するには、次のいずれかの方法を使用します。

Firebase コンソール
  1. Firebase コンソールで、[Firestore データベース] ページに移動します。

    [Firestore データベース] に移動

  2. [データベースを作成] をクリックします。
  3. [Enterprise Edition] を選択します。[次へ] をクリックします。
  4. データベース ID を入力します。
  5. データベースのロケーションを選択します。
  6. モードを選択するデータベースを構成します。
  7. [作成] をクリックします。
Firebase CLI
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
gcloud CLI

gcloud firestore databases create コマンドを使用して、--edition=enterprise を設定します。

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise

以下を置き換えます。

削除保護を有効にするには、--delete-protection フラグを追加します。 この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--delete-protection

データベースにタグを追加するには、--tags フラグを使用します。例:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Terraform

google_firestore_database リソースを使用して、database_editionENTERPRISE に設定します。

resource "google_firestore_database" "database" {
  name             = "DATABASE_ID"
  location_id      = "LOCATION"
  type             = "FIRESTORE_NATIVE"
  database_edition = "ENTERPRISE"

  // Optional
  delete_protection_state = "DELETE_PROTECTION_STATE"
}

以下を置き換えます。

削除保護を有効にするには、delete_protection_stateDELETE_PROTECTION_ENABLED に設定します。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。

データベース ID

有効なデータベース ID には、次の要件に準拠する ID が含まれます。

  • 使用できるのは英字、数字、ハイフン(-)のみです。
  • 文字は小文字のみを使用できます。
  • 最初の文字は英字でなければなりません。
  • 最後の文字は英字または数字にしてください
  • 4 文字以上
  • 63 文字以内。
  • UUID、または UUID に似た ID は使用しないでください。たとえば、f47ac10b-58cc-0372-8567-0e02b2c3d479 のような ID は使用しないでください。

データベースを削除すると、5 分経過するまではデータベース ID を再利用することはできません。

削除保護

削除保護を使用すると、データベースの誤削除を防ぐことができます。削除保護は次のように機能します。

  • 削除保護を無効にするまで、削除保護が有効になっているデータベースを削除することはできません。
  • 削除保護はデフォルトで無効になっています。
  • 削除保護は、データベースの作成時に有効にすることも、データベース構成を更新して削除保護を有効にすることもできます。

データベースの一覧取得

データベースを一覧表示するには、次の方法のいずれかを使用します。

Firebase コンソール
  1. Firebase コンソールで、[Firestore データベース] ページに移動します。

    [Firestore データベース] に移動

  2. [Cloud Firestore] をクリックして、プロジェクトのすべてのデータベースを表示します。
gcloud CLI

gcloud firestore databases list コマンドを使用して、プロジェクト内のすべてのデータベースを一覧表示します。

gcloud firestore databases list

データベースの詳細を表示する

単一のデータベースの詳細を表示するには、次のいずれかの方法を使用します。

Firebase コンソール
  1. Firebase コンソールで、[Firestore データベース] ページに移動します。

    [Firestore データベース] に移動

  2. データベースのリストからデータベースを選択します。
gcloud CLI

gcloud firestore databases describe コマンドを使用します。

gcloud firestore databases describe --database=DATABASE_ID

DATABASE_ID をデータベース ID に置き換えます。

データベース構成を更新する

データベースの構成設定を更新するには、gcloud firestore databases update コマンドを使用します。

削除保護を有効または無効にするには、このコマンドを使用して変更します。

削除保護の設定を更新する

データベースの削除保護を有効にするには、--delete-protection フラグを指定して gcloud firestore databases update コマンドを使用します。例:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --delete-protection

DATABASE_ID をデータベース ID に置き換えます。

データベースの削除保護を無効にするには、--no-delete-protection フラグを指定して gcloud firestore databases update コマンドを使用します。例:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

DATABASE_ID をデータベース ID に置き換えます。

データベースを削除する

データベースを削除するには、コンソールまたはコマンドライン ツールを使用します。 データベースを削除しても、削除オペレーションの料金は発生しません。

データベースで削除保護の設定が有効になっている場合は、まず削除保護を無効にする必要があります。

Firebase コンソール
  1. Firebase コンソールで、[Firestore データベース] ページに移動します。

    [Firestore データベース] に移動

  2. 削除するデータベースを選択します。
  3. [さらに表示] をクリックします。
  4. [削除] をクリックしてデータベースを削除します。
gcloud CLI

「gcloud firestore databases delete」コマンドを使用します。

gcloud firestore databases delete --database=DATABASE_ID

DATABASE_ID は、削除するデータベース ID に置き換えます。

データベースのクローンを作成する

選択したタイムスタンプの既存のデータベースを新しいデータベースにクローン作成できます。

  • クローン作成されたデータベースは、ソース データベースと同じロケーションに作成される新しいデータベースです。

    クローンを作成するために、Cloud Firestore はソース データベースのポイントインタイム リカバリ(PITR)データを使用します。クローンデータベースには、すべてのデータとインデックスが含まれます。

  • デフォルトでは、クローン作成されたデータベースは、Google のデフォルトの暗号化または CMEK 暗号化を使用して、ソース データベースと同じ方法で暗号化されます。別の暗号化タイプを指定するか、CMEK 暗号化に別の鍵を使用できます。

  • タイムスタンプの粒度は 1 分で、PITR ウィンドウで定義された期間内の過去の時点を指定します。

    • データベースで PITR が有効になっている場合は、過去 7 日間の任意の分を選択します(PITR が 7 日前より短い時点で有効になった場合は、それより短い期間になります)。
    • PITR が有効になっていない場合は、過去 1 時間の任意の分を選択できます。
    • 選択できる最も古いタイムスタンプは、データベースの説明で確認できます。

コンソール

  1. Google Cloud コンソールで [Database] ページに移動します。

    [データベース] に移動

  2. クローンを作成するデータベースのテーブル行にある [さらに表示] をクリックします。[クローン] をクリックします。[クローンを作成] ダイアログが表示されます。

  3. [クローンを作成] ダイアログで、データベースのクローンを作成するためのパラメータを指定します。

    1. [クローンの ID を設定] フィールドに、新しいクローン データベースのデータベース ID を入力します。このデータベース ID を、既存のデータベースに関連付けることはできません。

    2. [クローン元] フィールドで、クローニングに使用する時点を選択します。選択した時間は、分単位の PITR タイムスタンプに対応します。

  4. [クローンを作成] をクリックします。

gcloud

gcloud alpha firestore databases clone コマンドを使用して、データベースのクローンを作成します。

gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

以下を置き換えます。

  • SOURCE_DATABASE: クローンを作成する既存のデータベースのデータベース名。名前の形式は projects/PROJECT_ID/databases/SOURCE_DATABASE_ID です。

  • PITR_TIMESTAMP: 分単位の RFC 3339 形式PITR タイムスタンプ。たとえば、2025-06-01T10:20:00.00Z2025-06-01T10:30:00.00-07:00 です。

  • DESTINATION_DATABASE_ID: クローン作成された新しいデータベースのデータベース ID。このデータベース ID を、既存のデータベースに関連付けることはできません。

例:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'

クローン作成されたデータベースの暗号化構成を変更する

デフォルトでは、クローン作成されたデータベースには、ソース データベースと同じ暗号化構成が設定されます。暗号化構成を変更するには、--encryption-type 引数を使用します。

  • (デフォルト)use-source-encryption: ソース データベースと同じ暗号化構成を使用します。
  • google-default-encryption: Google のデフォルトの暗号化を使用
  • customer-managed-encryption: CMEK 暗号化を使用します。--kms-key-name 引数でキー ID を指定します。

次の例は、クローン作成されたデータベースの CMEK 暗号化を構成する方法を示しています。

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

データベースごとのアクセス権限を構成する

Identity and Access Management の条件を使用して、データベースごとにアクセス権限を構成できます。次の例では、Google Cloud CLI を使用して 1 つ以上のデータベースに条件付きアクセスを割り当てます。Google Cloud コンソールで IAM 条件を定義することもできます。

既存の IAM ポリシーを表示する

gcloud projects get-iam-policy PROJECT_ID

プロジェクト ID に PROJECT_ID を設定します。

データベースへのアクセス権を付与する

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

以下のとおりに設定します。

  • PROJECT_ID: プロジェクト ID
  • EMAIL: 特定のアカウントを表すメールアドレス。例: alice@example.com
  • DATABASE_ID: データベース ID。
  • TITLE: 式のタイトル(省略可)。
  • DESCRIPTION: 式の説明(省略可)。

1 つを除くすべてのデータベースにアクセス権を付与する

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

以下のとおりに設定します。

  • PROJECT_ID: プロジェクト ID
  • EMAIL: 特定のアカウントを表すメールアドレス。例: alice@example.com
  • DATABASE_ID: データベース ID。
  • TITLE: 式のタイトル(省略可)。
  • DESCRIPTION: 式の説明(省略可)。

特定のメンバーとロールのポリシーを削除する

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

以下のとおりに設定します。

  • PROJECT_ID: プロジェクト ID
  • EMAIL: 特定のアカウントを表すメールアドレス。例: alice@example.com

制限事項

作成できるデータベースはプロジェクトあたり最大 100 個です。 この上限の引き上げをリクエストするには、サポートにお問い合わせください。

次のステップ