Google での認証

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このドキュメントは、認証の主なコンセプトと、認証の実装やトラブルシューティングに関して役立つ情報を提供します。この認証ドキュメントでは主に Google Cloud サービスに焦点を当てていますが、認証ユースケースのリストと、このページで紹介している入門マテリアルには、他の Google プロダクトのユースケースが記載されています。

はじめに

認証とは、なんらかの認証情報を使用して ID を確認するプロセスです。認証とは自分の身元を証明することです。

Google が提供する多くの API とサービスでは、アクセス時に認証が必要になります。Google では、お客様が作成したアプリケーションをホストするさまざまなサービスも提供していますが、これらのアプリケーションでもユーザーの ID を判別する必要があります。

目的 情報
高レベルのプログラミング言語を使用して、アプリケーションから Google Cloud サービスに対する認証を行う。 アプリケーションのデフォルト認証情報を設定して、いずれかの Cloud クライアント ライブラリを使用します。
Cloud Run または Cloud Functions で実行されているアプリケーションを認証する。 OpenID Connect(OIDC)ID トークンを取得し、リクエストに含めます。
Google または Google Cloud のサービスとリソースにアクセスするアプリケーションにユーザー認証を実装する。 オプションの違いについては、アプリケーション ユーザーの認証をご覧ください。
自分のローカル開発環境で、いくつかの gcloud コマンドや Google Cloud REST API 呼び出しを試す。 ログイン認証情報を使用してアプリケーションのデフォルト認証情報を設定します。その後、curl などのコマンドライン ツールを使用して REST API を呼び出すことができます。
別の認証ユースケースのサポートを利用する。 認証のユースケースをご覧ください。
Identity and Access Management スペースで Google が提供するプロダクトのリストを確認する。 Google Identity and Access Management プロダクトのページをご覧ください。

認証の種類

ほとんどのリソースとアプリケーションには認証が必要です。このドキュメントは、次のいずれかの目標を持つアプリケーション コードを作成する技術担当者を対象としています。

OAuth 2.0

Google API は OAuth 2.0 フレームワークを実装して拡張します。OAuth 2.0 フレームワークでは、さまざまな認証「フロー」または認証アプローチについて説明しています。一般に、アプリケーションは、プリンシパル(ユーザーまたはサービス アカウント)を表す認証情報を承認サーバーという中間モジュールに提示します。承認サーバーはトークンを返します。アプリケーションは、このトークンを使用して、サービスの認証やリソースへのアクセスを行います。このトークンには 1 つ以上のスコープが含まれています。スコープは、アプリケーションで承認されるアクセスを表します。次に、アプリケーションはそのトークンをリソース サーバーに送信して、リソースにアクセスできるようにします。

Google Cloud サービスの認可

Google Cloud サービスは、Identity and Access Management(IAM)を使用して認証を行います。IAM では、プリンシパルとリソースごとにきめ細かく制御できます。通常、Google Cloud サービスに対する認証時には、すべての Google Cloud サービスを含むスコープ(https://www.googleapis.com/auth/cloud-platform)を使用します。

OAuth 2.0 スコープにより、第 2 の保護レイヤを提供できます。これは、トークン セキュリティが重要となる環境(モバイルアプリなど)でコードが実行されている場合に役立ちます。このシナリオでは、よりきめ細かいスコープを使用して、トークンが不正使用された場合のリスクを軽減できます。OAuth 2.0 スコープは、ユーザーデータへのアクセスを承認する場合にも使用されます。

アプリケーションのデフォルト認証情報(ADC)

ADC は、アプリケーション環境に基づいて認証情報を自動的に検索し、その認証情報を Google Cloud APIs の認証に使用するために、Cloud クライアント ライブラリと Google API クライアント ライブラリで使用されるストラテジです。ADC を設定してクライアント ライブラリを使用すると、Google Cloud サービスと API に対するアプリケーションの認証方法を変更せずに、開発環境または本番環境でコードを実行できます。

Google Cloud サービスを使用する必要があるコードを記述する場合は、可能な限り ADC を使用する必要があります。ADC を使用すると、さまざまな環境で同じ認証コードを使用できるため、開発プロセスを簡素化できます。

ADC を構成するには、コードを実行する場所に基づいて認証情報を指定します。認証情報を ADC に提供すると、ADC が認証情報を自動的に特定してバックグラウンドでトークンを取得するので、認証コードを変更せずにさまざまな環境で実行できます。たとえば、開発用ワークステーションまたは Compute Engine で実行する場合、同じバージョンのコードを Google Cloud APIs で認証できます。

用語

認証と認可について説明する際は、次の用語を理解しておく必要があります。

認証

認証とは、リソースにアクセスを試みるプリンシパルの ID を確認するプロセスです。

認可

認可は、リソースにアクセスを試みるプリンシパルまたはアプリケーションが、そのレベルのアクセスレベルで承認されているかどうかを判断するプロセスです。

認証情報

認証の場合、認証情報は ID を証明するデジタル オブジェクトです。アプリケーションの要件に応じて、パスワード、PIN、生体認証データはすべて認証情報として使用できます。たとえば、Google アカウントにログインするときに、パスワードを入力して、2 要素認証の要件をすべて満たします。これは、アカウントが実際に本人であることの証明であり、不正な行為者によるなりすましではないという証明です。

トークンは認証情報と呼ばれることもありますが、このドキュメントではデジタル オブジェクトといいます。呼び出し元は適切な認証情報を提供したことを証明しますが、認証情報そのものではありません。

提供する必要がある認証情報の種類は、認証対象によって異なります。Google Cloud コンソールでは、次の種類の認証情報を作成できます。

  • API キー

    他の認証情報とは異なり、API キーはプリンシパルを識別しません。API キーは、課金と割り当てを目的とした Google Cloud プロジェクトを提供します。

    多くの Google API は API キーを受け入れません。API キーの詳細については、API キーをご覧ください。

  • OAuth クライアント ID

    OAuth クライアント ID は、Google に対してアプリケーションを識別するために使用されます。これは、3-legged OAuth(3LO)とも呼ばれ、エンドユーザーが所有するリソースにアクセスする場合に必要です。OAuth クライアント ID を取得して使用する方法について詳しくは、OAuth 2.0 の設定をご覧ください。

プリンシパル

プリンシパルは、リソースへのアクセス権を付与できる ID です。認証に関して、Google API はユーザー アカウントサービス アカウントの 2 種類のプリンシパルをサポートします。

認証にユーザー アカウントを使用するかサービス アカウントを使用するかは、ユースケースによって異なります。それぞれをプロジェクトの異なるステージや異なる開発環境で使用できます。

ユーザー アカウント

ユーザー アカウントは、Google API やサービスを操作するデベロッパー、管理者、その他のユーザーを表します。

ユーザー アカウントは、Google Workspace または Cloud IdentityGoogle アカウントとして管理されます。サードパーティの ID プロバイダで管理され、Workload Identity 連携と連携しているユーザー アカウントも使用できます。

ユーザー アカウントを使用すると、次の方法で Google API とサービスの認証を行うことができます。

サービス アカウント

サービス アカウントは、人間のユーザーを表すアカウントではありません。アプリケーションが直接関与しない場合(アプリケーションが Google Cloud リソースにアクセスする必要がある場合など)に認証と承認を管理する方法を提供します。サービス アカウントは IAM によって管理されます。

以下に、サービス アカウントを使用して Google API とサービスの認証を行う方法を、安全性の高い順に示します。

トークン

認証と認可の場合、トークンは呼び出し元がそのトークンと交換した適切な認証情報を提供したことを示すデジタル オブジェクトです。このトークンには、リクエストを行っているプリンシパルの ID と、そのプリンシパルに対して許可されているアクセスに関する情報が含まれています。

トークンはホテルのキーのようなものです。ホテルにチェックインし、適切な書類をホテルの予約デスクに提示すると、特定のホテルリソースにアクセスするためのキーが付与されます。たとえば、このキーを使用して自分の部屋や宿泊客用のエレベーターにはアクセスできますが、他の部屋や従業員用のエレベーターにはアクセスできません。

API キーを除き、Google API では認証情報を直接サポートしていません。アプリケーションはトークンを取得または生成して、API に提供する必要があります。トークンにはいくつかの種類があります。詳細については、トークンの種類をご覧ください。

ワークロードとワークフォース

Google Cloud の ID とアクセス プロダクトを使用すると、プログラムによるアクセスと人間のユーザーの両方に対して Google サービスとリソースへのアクセスを制御できます。Google では、プログラム アクセスにはワークロード、ユーザー アクセスにはワークフォースという用語を使用しています。

Workload Identity 連携を使用すると、サービス アカウント キーを作成して管理しなくても、Google の外部で実行されているワークロードにアクセスできます。

Workforce Identity 連携では、外部 ID プロバイダを使用して、IAM を使用してワークフォース(従業員、パートナー、請負業者などのユーザー グループ)を認証および認可し、ユーザーが Google Cloud サービスにアクセスできるようにします。

次のステップ