このページでは、アプリケーション デベロッパー向けに Google Cloud プラットフォームでの認証の概要について説明します。プリンシパル、アプリケーションの認証情報、さまざまな Google Cloud APIs 呼び出しの認証方法について説明します。
はじめに
Google Cloud APIs のアクセス制御には、認証、認可、監査があります。認証はユーザーを識別することであり、認可はユーザーの行える内容を決定することです。また、ユーザーの行ったことを監査ログに記録します。
このページでは、特に認証について説明します。認可については、Identity and Access Management(IAM)をご覧ください。監査については、クラウド監査ログをご覧ください。
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
無料で開始プリンシパル
プリンシパルは、リソースへのアクセスを許可できるエンティティであり、ID とも呼ばれます。Google Cloud APIs では、ユーザー アカウントとサービス アカウントの 2 種類のプリンシパルをサポートします。
ユーザー アカウントは Google アカウントとして管理され、Google Cloud を利用するデベロッパー、管理者、その他のユーザーを表します。これは、アプリケーションが人間のユーザーに代わってリソースにアクセスする必要がある場合を対象としています。詳細については、エンドユーザーとして認証するをご覧ください。
サービス アカウントは IAM によって管理されるもので、人間のユーザー以外のものを指しています。App Engine アプリの実行や Compute Engine インスタンスとのやり取りなど、アプリケーション自体がリソースにアクセスする場合や、アクションを独自に実行する必要がある場合を対象としています。詳細については、サービス アカウントとして認証するをご覧ください。
各アカウント タイプの詳細については、IAM の概要をご覧ください。
アプリケーション
Google Cloud APIs は、登録されたアプリケーションからのリクエストのみを受け付けます。登録されたアプリケーションは、一意に識別可能なアプリケーションで、リクエストの際に認証情報を提示します。匿名のアプリケーションからのリクエストは拒否されます。
アプリケーションの認証情報は、Google Cloud API にリクエストを送信する呼び出し側に関する必要な情報を提供します。有効な認証情報タイプには、API キー、OAuth 2.0 クライアント資格情報、サービス アカウント キーがあります。サービス アカウントは、アプリケーションの認証情報またはプリンシパル ID のいずれにも使用される場合があり、一意なものとなっています。詳細については、サービス アカウントについてをご覧ください。
呼び出し側が登録済みアプリケーションとして識別されるのは、Google Cloud APIs へのリクエストでアプリケーション認証情報が示されたときだけです。認証が必要な場合、クライアントはユーザー アカウントやサービス アカウントなど、アプリケーションを実行しているプリンシパルも特定する必要があります。このプロセスについては、以下のセクションで説明します。
認証ストラテジー
Google Cloud APIs では、ユーザー アカウントとサービス アカウントの認証の両方に、OAuth 2.0 プロトコルが使用されます。OAuth 2.0 を使用した認証プロセスにより、プリンシパルとアプリケーションの両方を識別します。
ほとんどの Google Cloud APIs で、API キーを使用した一般公開データへの匿名アクセスがサポートされています。ただし、API キーはアプリケーションのみを識別し、プリンシパルは識別しません。API キーを使用する場合には、プリンシパルを他の方法で認証する必要があります。
Google Cloud APIs では、さまざまなランタイム環境を対象に複数の認証フローがサポートされています。デベロッパーに最適な環境とするには、Google Cloud APIs で Google Cloud クライアント ライブラリを使用することをおすすめします。Google Cloud クライアント ライブラリは Google が提供する認証ライブラリで、さまざまな認証フローとランタイム環境がサポートされています。
Google Cloud APIs を使用してアプリケーションを構築するには、次の一般的な手順に従います。
- 提供された Google Cloud クライアント ライブラリを選択して使用する
- アプリケーションに適した認証フローを決定する
- アプリケーションに必要な認証情報を確認または作成する
- アプリケーションの起動時に、アプリケーションの認証情報をクライアント ライブラリに渡す。アプリケーションのデフォルト認証情報(ADC)を使用するのが理想的です。
アプリケーションに求められる内容と実行される場面に基づいて、アプリケーションの認証情報を選択する必要があります。次の表に、一般的な要件を想定した場合に推奨される方法について示します。
要件 | 推奨 | コメント |
---|---|---|
一般公開データに匿名でアクセスする | API キー | API キーはアプリケーションを識別するだけであり、ユーザー認証は必要とされません。一般公開データへのアクセスには、これで十分です。 |
エンドユーザーに代わって限定公開データにアクセスする | OAuth 2.0 クライアント | OAuth 2.0 クライアントによりアプリケーションが識別され、Google でアプリケーションを認証できるようになります。これにより、アプリケーションがエンドユーザーに代わって Google Cloud APIs にアクセスできます。 |
Google Cloud 環境内でサービス アカウントに代わって限定公開データにアクセスする | 環境提供のサービス アカウント | Compute Engine、App Engine、GKE、Cloud Run、Cloud Functions などの Google Cloud 環境内でアプリケーションを実行する場合、アプリケーションはその環境で提供されるサービス アカウントを使用する必要があります。 Google Cloud クライアント ライブラリは、サービス アカウントの認証情報を自動的に検索して使用します。 |
Google Cloud 環境外でサービス アカウントに代わって非公開データにアクセスする | サービス アカウント キー | サービス アカウントを作成し、その秘密鍵を JSON ファイルとしてダウンロードする必要があります。そのファイルを Google Cloud クライアント ライブラリに渡して、実行時にサービス アカウントの認証情報を生成できるようにする必要があります。 Google Cloud クライアント ライブラリは、 GOOGLE_APPLICATION_CREDENTIALS 環境変数を使用して、サービス アカウントの認証情報を自動的に検索して使用します。 |
例
次のコード例は、Go 言語バージョンの Pub/Sub クライアント ライブラリを使用してさまざまな認証ストラテジーを適用する方法を示しています。他の言語の場合でも、デベロッパーはほぼ同じように使用できます。
サービス アカウント キー
詳細については、サービス アカウントとして認証するをご覧ください。環境サービス アカウント
詳細については、サービス アカウントとして認証するをご覧ください。OAuth 2.0 クライアント
詳細については、エンドユーザーとして認証をご覧ください。API キー
詳細については、API キーの使用をご覧ください。次のステップ
- エンドユーザーとして認証する方法を学習する
- サービス アカウントとして認証する方法について学習する
- API キーの使用方法について学習する