Cloud Storage の認証

Cloud Storage で実行されるほとんどのオペレーションでは認証が必要になります。唯一の例外は、匿名アクセスが許可されているリソースに対するオペレーションです。リソースの ACL に allUsers グループが含まれている場合、またはリソースに適用される IAM ポリシーに allUsers グループが含まれている場合、リソースは匿名アクセスが可能です。allUsers グループには、インターネット上のすべてのユーザーが含まれます。

OAuth 2.0 認証

Cloud Storage は、OAuth 2.0 を使って API の認証と認可を行います。認証とは、クライアントの身元を確認するプロセスを指します。認証の詳細は、Cloud Storage へのアクセス方法によって変わりますが、一般的に以下の 2 種類のいずれかになります。

  • サーバー中心のフローでは、認証を行うためのサービス アカウントの認証情報を、アプリケーションが直接保持します。このフローは、アプリケーションがユーザーデータではなくアプリケーション自体のデータを処理する場合に使用します。Google Cloud プロジェクトでは、デフォルト サービス アカウントを使用するか、新しいサービス アカウントを作成できます。

  • ユーザー中心のフローでは、アプリケーションがエンドユーザーから認証情報を取得できます。ユーザーは、認証を完了するためにログインします。このフローは、アプリケーションがユーザーデータにアクセスする必要がある場合に使用します。ユーザー中心のフローが適しているシナリオについては、ユーザー アカウント認証情報をご覧ください。

両方の種類の認証を 1 つのアプリケーションで使用できることができます。認証の詳しい背景情報については、Google Cloud Auth ガイドをご覧ください。

コマンドライン インターフェース認証

Google Cloud CLI を使用して Cloud Storage を操作する場合は、通常、ユーザー アカウントの認証情報を使用して認証する必要があります。これを行うには、コマンド gcloud auth login を実行し、指示に沿ってユーザー アカウントにログインします。他の認証オプションについては、gcloud CLI に対する認証をご覧ください。

クライアント ライブラリの認証

クライアント ライブラリは、アプリケーションのデフォルト認証情報を使用することによって、Google API で簡単に認証を行い、これらの API にリクエストを送信できます。アプリケーションのデフォルト認証情報を使用すると、ベースとなるコードを変更することなく、ローカルでのアプリケーションのテストやアプリケーションのデプロイが可能です。詳しくは、クライアント ライブラリを使用して認証するをご覧ください。

  • Google Cloud

    App Engine、Cloud Run 関数、Cloud Run、Compute Engine など、接続されたサービス アカウントをサポートするサービスでアプリケーションを実行している場合、サービス アカウントの認証情報がすでに提供されているため、それ以上の設定は必要ありません。Compute Engine の場合、サービス アカウントのスコープは、インスタンスを作成した方法に依存します。Compute Engine ドキュメントのアクセス スコープをご覧ください。App Engine では、cloud-platform スコープが使用されます。

  • その他の環境

    ローカルの開発環境または本番環境を初期化するには、Google Cloud サービス アカウントを作成し、鍵をダウンロードして、その鍵を使用するように GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定します。詳しい手順については、Cloud Storage クライアント ライブラリを使用した認証の設定をご覧ください。

API の認証

OAuth 2.0 を使って Cloud Storage の XML API または JSON API に対するリクエストを行う場合は、認証が必要なすべてのリクエストの Authorization ヘッダーにアプリケーションのアクセストークンを指定します。アクセス トークンは OAuth 2.0 Playground で生成できます。

  1. OAuth 2.0 PlaygroundCloud Storage API v1 をクリックし、アプリケーションのアクセスレベル(full_controlread_only、または read_write)を選択します。

  2. [Authorize APIs] をクリックします。

  3. メッセージが表示されたら、アカウントにログインします。表示されたダイアログで、[許可] をクリックします。

  4. Playground のステップ 2 で、表示された認証コードの [Exchange authorization code for tokens] をクリックします。

  5. アクセス トークンをコピーし、リクエストの Authorization ヘッダーに含めます。

    Authorization: Bearer OAUTH2_TOKEN

以下に、バケット内のオブジェクトを一覧表示するリクエストの例を示します。

JSON API

Objects リソースの list メソッドを使用します。

GET /storage/v1/b/example-bucket/o HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

コマンドラインを使用してリクエストを承認する場合、またはテスト目的でリクエストを承認する場合は、次の構文の curl コマンドを使用できます。

curl -H "Authorization: Bearer OAUTH2_TOKEN" "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o"

ローカルテストでは、gcloud auth application-default print-access-token コマンドを使用してトークンを生成できます。

XML API

オブジェクトのリスト リクエストを使用します。

GET / HTTP/1.1
Host: example-bucket.storage.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

コマンドラインを使用してリクエストを承認する場合、またはテスト目的でリクエストを承認する場合は、次の構文の curl コマンドを使用できます。

curl -H "Authorization: Bearer OAUTH2_TOKEN" "https://BUCKET_NAME.storage.googleapis.com"

ローカルテストでは、gcloud auth application-default print-access-token コマンドを使用してトークンを生成できます。

アクセストークンの管理と更新は複雑な作業であり、暗号アプリケーションを直接扱うとセキュリティ上のリスクがあるため、検証済みのクライアントライブラリを使用することを強くおすすめします。

Amazon S3 との相互運用可能なアクセスのために XML API で使用する HMAC キーが必要な場合は、サービス アカウントの HMAC キーの管理をご覧ください。

次のステップ