Compute Engine API を使用して Compute Engine リソースを管理する場合に、アプリケーションが API から認証を受けるには、Compute Engine サービス アカウントから認証情報を取得します。サービス アカウントを使用すると、アプリケーション コードに秘密鍵を埋め込まずに、アプリケーションを API に対して認証できます。
アプリケーションが API に対するリクエストを承認する必要があるほとんどのケースでは、サービス アカウントを使用することをおすすめします。ただし、開発または管理ツールを作成している場合は、ユーザーからアプリケーション側に Google Cloud リソースへのアクセス許可が与えられるため、ユーザー承認フローを使用します。
サービス アカウントから認証情報を取得するには、Compute Engine クライアント ライブラリとアプリケーションのデフォルト認証情報を使用します。これらのパッケージを使用すると、アプリケーションは、その実行場所に応じて、利用可能ないずれかのソースから認証情報を取得できます。
アプリケーションを Compute Engine インスタンス上で実行する場合
Compute Engine インスタンス上でアプリケーションを実行する場合は、アプリケーションのデフォルト認証情報を使用して組み込みのサービス アカウント経由で認証情報を取得できます。これらの組み込みサービス アカウントを使用してインスタンスを構成し、Compute Engine インスタンスでアプリケーションを実行する方法については、アクセス トークンを使用したアプリケーションの直接認証をご覧ください。
Google Cloud の外部で実行されるアプリケーション
Google Cloud 外のシステム上でアプリケーションを実行する場合、アプリケーションのデフォルトの認証情報を使用してシステムの環境変数から認証情報を取得できます。必要な認証情報を使用して環境変数を構成する方法については、サービス アカウントとして認証するをご覧ください。
アプリケーションが開発中の場合
アプリケーションをローカルで開発する際に、gcloud auth application-default login
コマンドを使用して、アプリケーションのユーザー認証情報を一時的に取得できます。このコマンドは、通常はサービス アカウントを使用するコードを開発する際に、ローカル開発環境でコードを実行する必要がある場合に、ユーザー認証情報を提供するのに役立ちます。認証情報は、アプリケーションのデフォルト認証情報クライアント ライブラリを使用するすべての API 呼び出しに適用されます。
開発システムに gcloud CLI をインストールします。
gcloud auth application-default login
コマンドを使用して、ツールに認証情報を提供します。
アプリケーションは gcloud ツールから認証情報を取得します。後でアプリケーションを Compute Engine インスタンスにデプロイし、アプリケーションによって組み込みのサービス アカウントから認証情報が自動的に取得されるようにしたり、環境変数に認証情報が指定されている他のシステムにアプリケーションをデプロイしたりできます。
例: アプリケーションのデフォルト認証情報を使用した認証
この例では、Python クライアント ライブラリを使用して認証を行い、プロジェクト内のバケットの一覧表示を行う Cloud Storage API にリクエストを行います。これは、次の手順により行います。
- Cloud Storage API に必要な認証情報を取得し、
build()
メソッドと認証情報を使用して Cloud Storage サービスを初期化します。 - Cloud Storage 内のバケットをリストします。
このサンプルは、Cloud Storage のバケットを管理するためのアクセス権があるインスタンス、gcloud beta auth application-default login
コマンドを実行した後のローカルマシン、またはアプリケーションのデフォルトの認証情報使用のために環境変数を設定した後に実行できます。
アプリケーションのユーザーが所有する Google Cloud リソースに対するアクセス権を取得する
開発または管理ツールを作成している場合は、ユーザーからアプリケーション側に Google Cloud リソースへのアクセス許可が与られるため、ベーシック OAuth 2.0 プロセスを介して承認を得ます。このプロセスでは、ユーザー承認フローによって、ユーザーからアプリケーション側にユーザー情報に対するアクセス許可を与える必要があります。ユーザー情報に対するアクセス権を得たアプリケーションは、当該ユーザーのプロジェクト内の Compute Engine リソースを表示または変更できます。
リクエストには、アプリケーションが必要とするメソッドとユーザー情報のみにアクセスを制限するアクセス スコープを指定します。たとえば、既存の Compute Engine リソースを表示するだけで、ユーザーのリソースを作成または変更しないアプリケーションには、compute.readonly
スコープを指定します。
Compute Engine には次のスコープがあります。
スコープ | 意味 |
---|---|
https://www.googleapis.com/auth/compute |
Compute Engine メソッドに対する読み取り/書き込みアクセス権。 |
https://www.googleapis.com/auth/compute.readonly |
Compute Engine メソッドに対する読み取り専用アクセス権。 |
https://www.googleapis.com/auth/cloud-platform |
指定した Google Cloud プロジェクトのほとんどの Google Cloud サービスのデータを表示して管理します。 |
Google Cloud 全体のサービスと必要なスコープの一覧については、Google API の OAuth 2.0 スコープをご覧ください。