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 で生成できます。
OAuth 2.0 Playground で Cloud Storage API v1 をクリックし、アプリケーションのアクセスレベル(
full_control
、read_only
、またはread_write
)を選択します。[Authorize APIs] をクリックします。
メッセージが表示されたら、アカウントにログインします。表示されたダイアログで、[許可] をクリックします。
Playground のステップ 2 で、表示された認証コードの [Exchange authorization code for tokens] をクリックします。
アクセス トークンをコピーし、リクエストの
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 キーの管理をご覧ください。
次のステップ
- Cookie 認証を使用したブラウザベースのダウンロードについて学習する。
- サービス アカウントの Google Cloud での一般的な利用方法と Cloud Storage での具体的な利用方法について学習する。
- Cloud Storage OAuth 2.0 スコープについて学習する。