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