Firestore に対して認証を行う

このドキュメントでは、Firestore に対する認証をプログラムで行う方法について説明します。 Firestore に対する認証方法は、API へのアクセスに使用するインターフェースと、コードが実行されている環境によって異なります。

このページの情報は、サーバー クライアント ライブラリと REST API および RPC API を使用する場合に適用されます。モバイル クライアントまたはウェブ クライアントにクライアント ライブラリを使用している場合、認証は Firestore セキュリティ ルールと Firebase Auth の組み合わせによって管理されます。詳細については、 モバイル クライアントとウェブ クライアントのデータを保護するをご覧ください。

認証の詳細については、 Google Cloud 認証方法をご覧ください。 .

API アクセス

Firestore ではプログラムによるアクセスがサポートされています。次の方法で API にアクセスできます。

クライアント ライブラリ

Firestore クライアント ライブラリでは、Firestore に対する認証をプログラムで行うための高レベルの言語サポートを提供します。 Google Cloud API の呼び出しを認証するために、クライアント ライブラリでは アプリケーションのデフォルト認証情報(ADC)がサポートされています。 このライブラリは、一連の定義済みロケーションの中から認証情報を探し、それらの認証情報を使用して API へのリクエストを認証します。ADC を使用すると、アプリケーション コードを変更することなく、ローカルでの開発や本番環境など、さまざまな環境のアプリケーションで認証情報を使用できるようになります。

Google Cloud CLI

gcloud CLI を使用して Firestore にアクセスする場合は、gcloud CLI コマンドが使用する認証情報を提供する Google アカウントで gcloud CLI にログインします。

組織のセキュリティ ポリシーによってユーザー アカウントに必要な権限が与えられない場合は、サービス アカウントの権限借用を使用できます。

詳細については、gcloud CLI を使用して認証するをご覧ください。Firestore で gcloud CLI を使用する詳しい方法については、gcloud CLI のリファレンス ページをご覧ください。

Firestore の認証を設定する

認証の設定方法は、コードが実行されている環境によって異なります。

認証の設定には、次のオプションが最も一般的に使用されます。認証のその他のオプションと詳細については、認証方法をご覧ください。

ローカル開発環境の場合

ローカル開発環境の認証情報は、次の方法で設定できます。

クライアント ライブラリまたはサードパーティ ツール

ローカル環境で アプリケーションのデフォルト認証情報(ADC) を設定します。

  1. Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。

    gcloud init

    外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります

  2. ローカルシェルを使用している場合は、ユーザー アカウントのローカル認証情報を作成します。

    gcloud auth application-default login

    Cloud Shell を使用している場合は、この操作を行う必要はありません。

    認証エラーが返され、外部 ID プロバイダ (IdP)を使用している場合は、フェデレーション ID を使用して gcloud CLI にログインしていることを確認します。

    ログイン画面が表示されます。ログインすると、ADC で使用されるローカル認証情報ファイルに認証情報が保存されます。

ローカル環境での ADC の操作の詳細については、 ローカル開発環境の ADC を設定するをご覧ください。

サービス アカウントの権限借用

ほとんどの場合、ユーザー認証情報を使用してローカル開発環境から認証できます。これが不可能な場合、またはサービス アカウントに割り当てられた権限をテストする必要がある場合は、サービス アカウントの権限借用を使用できます。iam.serviceAccounts.getAccessToken 権限が必要です。この権限は、サービス アカウント トークン作成者roles/iam.serviceAccountTokenCreator)IAM ロールに含まれています。

サービス アカウントの権限借用を使用するように gcloud CLI を設定するには、gcloud config set コマンドを使用します。

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

一部の言語では、サービス アカウントの権限借用を使用して、クライアント ライブラリで使用するローカル ADC ファイルを作成できます。このアプローチは、Go、Java、Node.js、Python のクライアント ライブラリでのみサポートされています。他の言語ではサポートされていません。サービス アカウントの権限借用を使用してローカル ADC ファイルを設定するには、gcloud auth application-default login コマンド--impersonate-service-account フラグを使用します。

gcloud auth application-default login --impersonate-service-account=SERVICE_ACCT_EMAIL

サービス アカウントの権限借用の詳細については、サービス アカウントの権限借用を使用するをご覧ください。

オン Google Cloud

Google Cloudで実行されるワークロードを認証するには、Compute Engine 仮想マシン(VM)インスタンスなど、コードが実行されているコンピューティング リソースに関連付けられているサービス アカウントの認証情報を使用します。このアプローチは、 Google Cloud コンピューティング リソースで実行されるコードに対して推奨される認証方法です。

ほとんどのサービスでは、コードを実行するリソースの作成時にサービス アカウントを関連付ける必要があります。サービス アカウントを後から追加または置換することはできません。Compute Engine は例外で、サービス アカウントをいつでも VM インスタンスに関連付けることができます。

gcloud CLI を使用してサービス アカウントを作成し、リソースに関連付けます。

  1. Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。

    gcloud init

    外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります

  2. 認証を設定します。

    1. サービス アカウントの作成 IAM ロール (roles/iam.serviceAccountCreator)とプロジェクト IAM 管理者ロール (roles/resourcemanager.projectIamAdmin)があることを確認します。ロールを付与する方法をご覧ください
    2. サービス アカウントを作成します。

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME をサービス アカウントの名前に置き換えます。

    3. プロジェクトとリソースへのアクセス権を付与するには、サービス アカウントにロールを付与します。

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

      以下を置き換えます。

      • SERVICE_ACCOUNT_NAME: サービス アカウントの名前
      • PROJECT_ID: サービス アカウントを作成したプロジェクト ID
      • ROLE: 付与するロール
    4. サービス アカウントに別のロールを付与するには、前の手順で行ったようにコマンドを実行します。
    5. サービス アカウントを他のリソースに関連付けるプリンシパルに必要なロールを付与します。

      gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

      以下を置き換えます。

      • SERVICE_ACCOUNT_NAME: サービス アカウントの名前
      • PROJECT_ID: サービス アカウントを作成したプロジェクト ID
      • USER_EMAIL: Google アカウントのメールアドレス
  3. コードを実行するリソースを作成し、そのリソースにサービス アカウントを関連付けます。たとえば、Compute Engine を使用する場合は次のようになります。

    Compute Engine インスタンスを作成します。インスタンスを次のように構成します。
    gcloud compute instances create INSTANCE_NAME --zone=ZONE --service-account=SERVICE_ACCOUNT_EMAIL

Google API に対する認証について詳しくは、 認証方法をご覧ください。

オンプレミスまたは別のクラウド プロバイダ

Google Cloud の外部から認証を設定する際に推奨される方法は、Workload Identity 連携を使用することです。詳細については、認証ドキュメントの オンプレミスまたは他のクラウド プロバイダの ADC を設定する をご覧ください。

Firestore のアクセス制御

Firestore への認証後、 リソースへのアクセスが認可される必要があります。 Google Cloud Firestore では Identity and Access Management(IAM)を使用して認可を行います。

Firestore のロールの詳細については、サーバー クライアント ライブラリのセキュリティをご覧ください。 IAM と認可の詳細については、IAM の概要をご覧ください。

次のステップ