このドキュメントでは、Google Cloud リソースにアクセスするための Google Cloud CLI の認証についてのみ説明します。Cloud クライアント ライブラリまたは Google API クライアント ライブラリを使用してワークロードを認証する必要がある場合は、アプリケーションのデフォルト認証情報の仕組みをご覧ください。
始める前に
Google Cloud を初めて使用し、ローカル開発環境で gcloud CLI コマンドの使用を開始する場合は、次のコマンドを使用して gcloud CLI を初期化できます。
gcloud init
初期化では、認証フローが実行され、gcloud CLI 構成が設定され、ユーザーに代わって操作する権限が gcloud CLI に付与されます。認証を別途行う必要はありません。
このドキュメントの残りの部分では、さまざまなプリンシパル タイプで gcloud CLI を使用する、さまざまな環境に適した認証方法、プリンシパルの切り替え、保存された認証情報の管理など、より複雑なシナリオについて説明します。
認証方法
すべての gcloud CLI コマンドは、 Google CloudAPI に対して認証を行う必要があります。認証は次の方法で行うことができます。
認証情報を承認して保存する: ローカル開発環境で人間が使用するのに適しています。
gcloud auth loginコマンドを使用して、プリンシパルの代わりに gcloud CLI が動作するように承認できます。このコマンドは、最初の認証後に gcloud CLI 構成ディレクトリに認証情報を保存します。gcloud CLI は、セッションが期限切れになるか、承認を取り消すまで、保存された認証情報を使用して後続のコマンドを自動的に認証します。認証情報ファイルで認証する: Google Cloudの外部で実行されているワークロードに適しています。環境変数または gcloud CLI 構成プロパティを使用して、自動認証用の認証情報ファイルを指定できます。このファイルは次のいずれかになります。
Workload Identity 連携の認証情報構成ファイル。
サービス アカウント キー。
アクセス トークンを提供する: 共有マシン上の高度に分離された自動ワークフローまたはステートレス セッションに適しています。アクセス トークンを gcloud CLI に直接指定することで、認証情報ストレージの保存をバイパスできます。これを行うには、特定の環境変数を未加工のアクセス トークン文字列に設定するか、アクセス トークンを含むファイルを指すように gcloud CLI を設定します。
認証後、サービス アカウントのメールアドレスを指定して、gcloud CLI にサービス アカウントの権限を借用させることもできます。
1 つの環境で複数の認証方法を使用できます。ただし、特定の gcloud コマンドに使用されるプリンシパルは 1 つだけです。使用するプリンシパルを決定するために、gcloud CLI は優先順位に従います。
認証が不要な場合
次のような場合は、gcloud CLI の認証は必要ありません。
- gcloud CLI を初期化した直後。認証と認可は初期化プロセスに含まれています。別のプリンシパルを使用して別のリソースにアクセスする必要がある場合や、プリンシパルを再認証する必要がある場合は、再度認証が必要になることがあります。
- Compute Engine メタデータ サーバーを公開するリソースから gcloud CLI を使用する場合。これには、Compute Engine VM インスタンス、Cloud Run サービス、Cloud Build ビルドなどのリソースが含まれます。gcloud CLI は、VM に関連付けられたサービス アカウントを使用して認証を行い、適用された アクセス スコープの範囲内で、そのサービス アカウントと同じリソースにアクセスする権限が付与されます。
- Cloud Shell を使用する場合。gcloud CLI は、 Google Cloud コンソールにログインしたプリンシパルを使用して自動的に認証します。新しい Cloud Shell セッションで gcloud CLI コマンドを初めて実行すると、そのプリンシパルを使用して Cloud Shell を承認するように求められます。
タスクに適したプリンシパルを選択する
人間が使用するプリンシパルと自動化されたワークロード用のプリンシパルには、さまざまなタイプがあります。使用する必要があるプリンシパル タイプによって、認証方法が異なります。
-
ユーザー アカウント: 偶発的な管理タスク、 Google Cloud サービスの非プログラムによる構成、テスト、実験、オブザーバビリティなど、人間がインタラクティブな作業を行うための Google アカウントです。
パスワードやワンタイム コードなどのユーザー認証情報を使用して、ユーザー アカウントとして認証します。
-
サービス アカウント: ワークロードがサービスやリソースにアクセスするために使用できる、 Google Cloud に固有のアカウントです。通常、サービス アカウントとして直接認証することはありません。代わりに、サービス アカウントを Compute Engine VM などのリソースにアタッチするか、サービス アカウントの権限借用を使用します。
-
フェデレーション プリンシパル: 外部 ID プロバイダのユーザー アカウントまたはサービス アカウントを参照する ID です。 Google Cloudでサポートされているフェデレーション プリンシパルには 2 つのタイプがあり、名前が似ています。
-
Workforce Identity 連携: 外部 ID プロバイダで管理されている ID を使用して、ユーザーが Google Cloud にログインできるようにします。組織ですでにシングル サインオン(SSO)が設定されている場合は、このタイプの ID を使用して Google Cloudを認証できます。
Workforce Identity 連携を使用するには、ID プロバイダが OpenID Connect(OIDC)または SAML 2.0 をサポートしている必要があります。
-
Workload Identity 連携: Google Cloud の外部で実行されているワークロードが Google Cloud リソースを操作できるようにします。
Workload Identity 連携は、 X.509 クライアント証明書を使用して認証するワークロード、 アマゾン ウェブ サービス(AWS)または Azure で実行されるワークロード、オンプレミスの Active Directory、 GitHub や GitLab などのデプロイ サービス、 OpenID Connect(OIDC)または Security Assertion Markup Language(SAML)V2.0 をサポートする任意の ID プロバイダで使用できます。
-
人間として gcloud CLI を使用する
インタラクティブ タスクの場合、通常は次のいずれかで認証します。
ユーザー アカウント
Workforce Identity 連携を使用したフェデレーション ユーザー ID
ユーザー アカウント
gcloud CLI のユーザー アカウントで認証する方法は、デバイスにウェブブラウザがインストールされているかどうかによって異なります。
デバイスにウェブブラウザが搭載されている
ウェブブラウザを搭載したデバイスでユーザー アカウントを使用して認証するには、次の手順を行います。
次のコマンドを実行してプロセスを開始します。
gcloud auth loginブラウザベースのフローに沿って、gcloud CLI を認証して承認し、今後のコマンドでユーザーに代わってリソースにアクセスできるようにします。
gcloud auth login コマンドは、アクセス認証情報をホーム ディレクトリに保存します。認証されたプリンシパルは、アクティブな gcloud CLI 構成のアクティブなプリンシパルになります。オーバーライドされない限り、gcloud CLI はこれらの保存された認証情報を使用して Google Cloudにアクセスします。
デバイスにウェブブラウザが搭載されていない
gcloud CLI を使用する必要があるデバイスにウェブブラウザがない場合は、別の信頼できるデバイスでユーザー アカウントを使用して認証できます。このプロセスは、別の信頼できるデバイスにインストールされているソフトウェアによって異なります。
別の信頼できるデバイスを使用して認証する
他の信頼できるデバイスで使用できるソフトウェアを選択します。
gcloud CLI とウェブブラウザ
--no-browser フラグを使用して、ウェブブラウザと gcloud CLI がインストールされている別のデバイスで認証プロセスを完了します。
gcloud CLI を使用する元のデバイスで、次のコマンドを実行します。
Linux / macOS
gcloud auth login \ --no-browserWindows(PowerShell)
gcloud auth login ` --no-browsergcloud auth login --remote-bootstrap="で始まるgcloudコマンドをコピーして、別のデバイスで使用します。ウェブブラウザと gcloud CLI バージョン 372.0.0 以降がインストールされている別の信頼できるデバイスに移動します。
ターミナルで、先ほどコピーした
gcloud auth login --remote-bootstrap="で始まるコマンドを実行し、ブラウザベースのフローを完了します。ターミナルで、
https://localhostで始まる URL をコピーして、元のデバイスで使用します。元のデバイスに戻ります。
ターミナルのプロンプトに、先ほどコピーした
https://localhostURL を貼り付けます。キーボードの Enter キーまたは Return キーを押して、プロセスを完了します。
gcloud auth login コマンドは、アクセス認証情報をホーム ディレクトリに保存します。認証されたプリンシパルは、アクティブな gcloud CLI 構成のアクティブなプリンシパルになります。オーバーライドされない限り、gcloud CLI はこれらの保存された認証情報を使用して Google Cloudにアクセスします。
ウェブブラウザのみ
別のデバイスのウェブブラウザを使用して認証プロセスを完了するには、--no-launch-browser フラグを使用します。
gcloud CLI を使用する元のデバイスで、次のコマンドを実行します。
Linux / macOS
gcloud auth login \ --no-launch-browserWindows(PowerShell)
gcloud auth login ` --no-launch-browserhttps://accounts.google.com/o/oauth2/authで始まる URL をコピーして、別のデバイスで使用します。ウェブブラウザがインストールされている、信頼できる別のデバイスに移動します。
ウェブブラウザを開き、先ほどコピーした URL に移動して、ブラウザベースのフローを完了します。
確認コードをコピーして、元のデバイスで使用します。
元のデバイスに戻ります。
ターミナルのプロンプトに、先ほどコピーした確認コードを貼り付けます。キーボードの Enter キーまたは Return キーを押して、プロセスを完了します。
gcloud auth login コマンドは、アクセス認証情報をホーム ディレクトリに保存します。認証されたプリンシパルは、アクティブな gcloud CLI 構成のアクティブなプリンシパルになります。オーバーライドされない限り、gcloud CLI はこれらの保存された認証情報を使用して Google Cloudにアクセスします。
フェデレーション ユーザー ID
外部 ID プロバイダ(IdP)で管理されている連携ユーザー ID を使用して、gcloud CLI を使用できます。これは、Workforce Identity 連携を使用して行います。
次の手順では、IdP と連携するように Workforce Identity 連携プールとプロバイダがすでに設定されていることを前提としています。
フェデレーション ユーザー ID で gcloud CLI を使用するには、ログイン構成ファイルを作成し、ブラウザベースのフローを使用してログインします。
次のコマンドを実行して、ログイン構成ファイルを作成します。
Linux / macOS
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --output-file=LOGIN_CONFIG_PATH
Windows(PowerShell)
gcloud iam workforce-pools create-login-config ` locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID ` --output-file=LOGIN_CONFIG_PATH
次のように置き換えます。
WORKFORCE_POOL_ID: Workforce Identity 連携プール ID。WORKFORCE_PROVIDER_ID: Workforce Identity 連携プロバイダ ID。-
LOGIN_CONFIG_PATH: ログイン構成ファイルを書き込むパス。例:login-config.json
ログイン構成ファイルには、gcloud CLI でブラウザベースの認証フローを有効にし、Workforce Identity プール プロバイダで構成された IdP にオーディエンスを設定するために使用するエンドポイントが含まれています。ファイルに機密情報は含まれていません。
ログイン構成ファイルの内容は次のようになります。
{ "universe_domain": "googleapis.com", "universe_cloud_web_domain": "cloud.google", "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.google/authorize", "token_url": "https://sts.googleapis.com/v1/oauthtoken", "token_info_url": "https://sts.googleapis.com/v1/introspect" }
環境変数、アクティブな gcloud CLI 構成のプロパティを使用してログイン構成ファイルを指定するか、
gcloud auth loginコマンドで直接使用します。環境変数
環境変数でログイン構成ファイルを使用するには、次の手順を行います。
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE環境変数をログイン構成ファイルのパスに設定します。-
次のコマンドを実行します。
gcloud auth login
- gcloud CLI は、環境変数を参照してログイン構成ファイルを見つけ、認証プロセスを開始します。ブラウザベースのフローに沿って、gcloud CLI を認証し、今後のコマンドでユーザーに代わってリソースにアクセスできるように承認します。
gcloud auth loginコマンドでログイン構成ファイルの使用を停止するには、CLOUDSDK_AUTH_LOGIN_CONFIG_FILE環境変数をクリアします。gcloud CLI の構成
gcloud CLI 構成プロパティでログイン構成ファイルを使用するには、次の手順を行います。
-
次のコマンドを使用して、アクティブな gcloud CLI 構成の
auth/login_config_fileプロパティをログイン構成ファイルのパスに設定します。gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
-
次のコマンドを実行します。
gcloud auth login
- gcloud CLI は、構成プロパティを参照してログイン構成ファイルを見つけ、認証プロセスを開始します。ブラウザベースのフローに沿って、認証を行い、今後のコマンドでユーザーに代わってリソースにアクセスするように gcloud CLI を承認します。
gcloud auth loginコマンドでログイン構成ファイルの使用を停止するには、次のコマンドを使用してプロパティの設定を解除します。gcloud config unset auth/login_config_file
gcloud auth login
gcloud auth loginコマンドでログイン構成ファイルを直接使用するには、次の手順を行います。-
ログイン構成ファイルの作成時に
--activateフラグを使用した場合は、次のコマンドを実行します。gcloud auth login
-
ログイン構成ファイルの作成時に
--activateフラグを使用しなかった場合は、次のコマンドを実行します。Linux / macOS
gcloud auth login \ --login-config=LOGIN_CONFIG_PATH
Windows(PowerShell)
gcloud auth login ` --login-config=LOGIN_CONFIG_PATH
LOGIN_CONFIG_PATH は、ログイン構成ファイルのパスに置き換えます。
gcloud auth login コマンドは、アクセス認証情報をホーム ディレクトリに保存します。認証されたプリンシパルは、アクティブな gcloud CLI 構成のアクティブなプリンシパルになります。オーバーライドされない限り、gcloud CLI はこれらの保存された認証情報を使用して Google Cloudにアクセスします。
ワークロードで gcloud CLI を使用する
自動化されたワークロードの場合、通常は次のいずれかで認証します。
Workload Identity 連携を使用するフェデレーション ワークロード ID
権限借用を使用するサービス アカウント
フェデレーション ワークロード ID
連携ワークロード ID で gcloud CLI を使用できます。これは、Workload Identity 連携を使用して行います。
ワークロードは、Workload Identity プールで定義されたプリンシパルとして機能して Google Cloud リソースに直接アクセスするか、Workload Identity プールに接続されたサービス アカウントの権限を借用できます。
権限が過剰なサービス アカウントを回避し、連携プリンシパルの ID を使用してリソース アクセスをロギングするには、直接アクセス方式を使用することをおすすめします。Google Cloud API が Workload Identity 連携をサポートしていない場合にのみ、サービス アカウントの権限借用を使用します。
次の手順では、IdP と連携するように Workload Identity 連携プールとプロバイダがすでに設定されていることを前提としています。
サポートされている ID プロバイダの手順に沿って、Workload Identity 連携の認証情報構成ファイルを作成します。
認証情報構成ファイルのパスは、環境変数、アクティブな gcloud CLI 構成のプロパティ、または
gcloud auth loginコマンドで定義します。環境変数
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE環境変数を認証情報構成ファイルのパスに設定します。gcloud CLI はコマンドを実行するたびにこのファイルを参照し、IdP から認証情報を取得します。この認証情報は、 Google Cloudのアクセス トークンと交換されます。認証情報構成ファイルの使用を停止するには、
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE環境変数をクリアします。gcloud CLI の構成
次のコマンドを使用して、アクティブな gcloud CLI 構成の
auth/credential_file_overrideプロパティを認証情報構成ファイルのパスに設定します。gcloud config set auth/credential_file_override CONFIGURATION_PATHCONFIGURATION_PATHは、認証情報の構成ファイルのパスに置き換えます。gcloudコマンドで認証情報構成ファイルがデフォルトで使用されないようにするには、次のコマンドを使用してプロパティの設定を解除します。gcloud config unset auth/credential_file_overridegcloud auth login
--cred-fileフラグを使用して、次のコマンドを実行します。Linux / macOS
gcloud auth login \ --cred-file=CONFIGURATION_PATHWindows(PowerShell)
gcloud auth login ` --cred-file=CONFIGURATION_PATHCONFIGURATION_PATHは、認証情報の構成ファイルのパスに置き換えます。gcloud auth login コマンドは、アクセス認証情報をホーム ディレクトリに保存します。認証されたプリンシパルは、アクティブな gcloud CLI 構成のアクティブなプリンシパルになります。オーバーライドされない限り、gcloud CLI はこれらの保存された認証情報を使用して Google Cloudにアクセスします。
サービス アカウント
gcloud CLI は、サービス アカウントで次の方法で使用できます。
Compute Engine メタデータ サーバーを公開するリソース(Compute Engine VM インスタンスや Cloud Run サービスなど)。gcloud CLI は、リソースに関連付けられているサービス アカウントを使用してデフォルトで認証を行います。
別のプリンシパルを使用してサービス アカウントの権限を借用する。
サービス アカウント キーを使用する。
サービス アカウントの権限借用
プリンシパルが通常アクセスできないリソースへのアクセスについては、サービス アカウントの権限借用を使用するのではなく、Privileged Access Manager を使用して権限昇格を管理することをおすすめします。
Privileged Access Manager がユースケースに適合しない場合は、次の手順に沿って、サービス アカウントで gcloud CLI を使用します。
サービス アカウントの権限を借用するには、プロジェクトで Service Account Credentials API が有効になっていることを確認します。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。サービス アカウントの権限を借用するために使用するプリンシパルを選択します。
-
サービス アカウントの権限を借用するために必要な権限をプリンシパルに持たせるには、サービス アカウントに対するサービス アカウント トークン作成者 (
roles/iam.serviceAccountTokenCreator)の IAM ロールをプリンシパルに付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。この事前定義ロールには、サービス アカウントの権限を借用するために必要な
iam.serviceAccounts.getAccessToken権限が含まれています。 ユーザー アカウント、 フェデレーション ユーザー ID、フェデレーション ワークロード ID、別のサービス アカウントなど、選択したプリンシパルを使用して gcloud CLI の認証を行います。
権限を借用するサービス アカウントを選択します。既存のサービス アカウントを見つけるか、新しいサービス アカウントを作成します。
サービス アカウントのメールアドレスをコピーします。
すべてのコマンドでサービス アカウントを偽装するか、単一のコマンドでのみ偽装するかを選択します。
すべてのコマンド
以降のコマンドで gcloud CLI でサービス アカウントの権限借用を使用するには、環境変数を設定するか、アクティブな gcloud CLI 構成でプロパティを設定します。
環境変数:
CLOUDSDK_AUTH_IMPERSONATE_SERVICE_ACCOUNT環境変数をサービス アカウントのメールアドレスに設定します。サービス アカウントの使用を停止するには、
CLOUDSDK_AUTH_IMPERSONATE_SERVICE_ACCOUNT環境変数をクリアします。gcloud CLI の構成: 次のコマンドを使用して、アクティブな gcloud CLI 構成の
auth/impersonate_service_accountプロパティを設定します。gcloud config set auth/impersonate_service_account SERVICE_ACCOUNT_EMAILSERVICE_ACCOUNT_EMAILは、サービス アカウントのメールアドレスに置き換えます。gcloudコマンドでデフォルトでサービス アカウントの権限借用を使用しないようにするには、次のコマンドでプロパティを設定解除します。gcloud config unset auth/impersonate_service_account
単一コマンド
1 つのコマンドで gcloud CLI でサービス アカウントの権限借用を使用するには、gcloud CLI サービス コマンドに
--impersonate-service-accountフラグを追加します。たとえば、サービス アカウントの権限借用を使用して Compute Engine VM インスタンスを一覧表示するには、次のコマンドを実行します。
Linux / macOS
gcloud compute instances list \ --impersonate-service-account=SERVICE_ACCOUNT_EMAILWindows(PowerShell)
gcloud compute instances list ` --impersonate-service-account=SERVICE_ACCOUNT_EMAILSERVICE_ACCOUNT_EMAILは、サービス アカウントのメールアドレスに置き換えます。
サービス アカウント キー
Google Cloudの外部で実行されるほとんどのワークロードには、Workload Identity 連携を使用することをおすすめします。サービス アカウント キーは、Workload Identity 連携をサポートしていない分離された外部環境でワークロードが実行されている場合にのみ使用します。
Workload Identity 連携には次のメリットがあります。
リソースへのアクセスは Identity and Access Management(IAM)を介して付与され、ワークロードは個々のプリンシパルとして扱われます。つまり、複数のユースケースでサービス アカウントに過剰な権限を付与する必要はありません。
ワークロードがどのタスクを実行しているかを監査できます。アクションはサービス アカウントのメールアドレスの背後に隠されていません。
Workload Identity 連携は、有効期間の短いアクセス トークンを使用して、データ漏洩のリスクを軽減します。サービス アカウント キーは、手動で取り消されない限り有効期限が切れません。
以降のコマンドで gcloud CLI でサービス アカウントを使用するには、次の操作を行います。
サービス アカウント キーを作成し、環境内の安全な場所にファイルとして保存します。
サービス アカウント キーファイルのパスを環境変数、アクティブな gcloud CLI 構成のプロパティ、または
gcloud auth loginコマンドで定義します。環境変数:
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE環境変数をサービス アカウント キーファイルのパスに設定します。サービス アカウント キーの使用を停止するには、
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE環境変数をクリアします。gcloud CLI 構成: 次のコマンドを使用して、アクティブな gcloud CLI 構成の
auth/credential_file_overrideプロパティをサービス アカウント キーのパスに設定します。gcloud config set auth/credential_file_override KEY_PATHKEY_PATHは、サービス アカウント キーファイルのパスに置き換えます。gcloudコマンドでデフォルトでサービス アカウント キーを使用しないようにするには、次のコマンドでプロパティを設定解除します。gcloud config unset auth/credential_file_overridegcloud auth login:--cred-fileフラグを使用して、次のコマンドを実行します。Linux / macOS
gcloud auth login \ --cred-file=KEY_PATHWindows(PowerShell)
gcloud auth login ` --cred-file=KEY_PATHKEY_PATHは、サービス アカウント キーファイルのパスに置き換えます。gcloud auth login コマンドは、アクセス認証情報をホーム ディレクトリに保存します。認証されたプリンシパルは、アクティブな gcloud CLI 構成のアクティブなプリンシパルになります。オーバーライドされない限り、gcloud CLI はこれらの保存された認証情報を使用して Google Cloudにアクセスします。
アクセス トークンで gcloud CLI を使用する
別のデバイスで gcloud CLI の認証をすでに済ませている場合は、次のコマンドを使用して、そのデバイスのアクティブ プリンシパルのアクセス トークンを取得できます。
gcloud auth print-access-token
このアクセス トークンを別のデバイスで使用して、 Google Cloudリソースにアクセスできます。アクセス トークンを使用すると、アクティブ プリンシパルを設定する必要がなくなり、アクティブな gcloud CLI 構成で設定されているアクティブ プリンシパルがオーバーライドされます。
ユーザー アカウントのアクセス トークンのデフォルトの有効期間は 1 時間です。
アクセス トークンは、gcloud CLI で今後のコマンドに使用することも、単一のコマンドでのみ使用することもできます。
すべてのコマンド
今後のコマンドで gcloud CLI でアクセス トークンを使用するには、環境変数を設定するか、アクティブな gcloud CLI 構成でプロパティを設定します。
環境変数:
CLOUDSDK_AUTH_ACCESS_TOKEN環境変数をアクセス トークン文字列に設定します。アクセス トークンの使用を停止するには、
CLOUDSDK_AUTH_ACCESS_TOKEN環境変数をクリアします。gcloud CLI 構成: アクセス トークンをファイルに保存し、次のコマンドを使用して、アクティブな gcloud CLI 構成の
auth/access_token_fileプロパティをファイルのパスに設定します。gcloud config set auth/access_token_file ACCESS_TOKEN_PATHACCESS_TOKEN_PATHは、アクセス トークン ファイルのパスに置き換えます。gcloudコマンドでデフォルトでアクセス トークンを使用しないようにするには、次のコマンドでプロパティの設定を解除します。gcloud config unset auth/access_token_file
単一コマンド
1 つのコマンドで gcloud CLI でアクセス トークンを使用するには、gcloud CLI サービス コマンドに --access-token-file フラグを追加します。
アクセス トークンをファイルに保存します。
gcloudサービス コマンドで--access-token-fileフラグを使用します。たとえば、アクセス トークンを使用して Compute Engine VM インスタンスを一覧表示するには、次のコマンドを実行します。
Linux / macOS
gcloud compute instances list \ --access-token-file ACCESS_TOKEN_PATHWindows(PowerShell)
gcloud compute instances list ` --access-token-file ACCESS_TOKEN_PATHACCESS_TOKEN_PATHは、アクセス トークン ファイルのパスに置き換えます。
認証情報の優先度
1 つの環境で複数の認証方法が使用される可能性があるため、gcloud CLI は特定の方法で認証方法を評価して、使用するプリンシパルを決定します。gcloud CLI は、指定された認証情報で起動し、サービス アカウントの権限借用がリクエストされているかどうかを評価します。
指定された認証情報の評価順序は次のとおりです。
CLOUDSDK_AUTH_ACCESS_TOKEN環境変数(アクセス トークン文字列に設定)。アクセス トークン ファイル。アクセス トークン ファイルパスの定義に使用されるメソッドは、次の順序で評価されます。
--access-token-fileコマンドライン フラグ。任意の gcloud CLI コマンドで使用されます。CLOUDSDK_AUTH_ACCESS_TOKEN_FILE環境変数。アクティブな gcloud CLI 構成の
auth/access_token_fileプロパティ。
認証情報ファイル。認証情報ファイルのパスを定義するために使用されるメソッドは、次の順序で評価されます。
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE環境変数。アクティブな gcloud CLI 構成の
auth/credential_file_overrideプロパティ。
gcloud auth loginコマンドまたはcore/accountプロパティの設定によって設定されたアクティブ プリンシパル。
サービス アカウントの権限借用の優先度
サービス アカウントの権限借用がリクエストされた場合、gcloud CLI は、権限借用を行うプリンシパルの認証情報が提供された後に、どのサービス アカウントの権限を借用するかを確認します。権限借用用のサービス アカウントを定義するために使用されるメソッドは、次の順序で評価されます。
--impersonate-service-accountコマンドライン フラグ。CLOUDSDK_AUTH_IMPERSONATE_SERVICE_ACCOUNT環境変数。アクティブな構成の
auth/impersonate_service_accountプロパティで定義されたサービス アカウント。
スコープに Google ドライブを追加する
gcloud CLI スコープは、 Google Cloudに加えて Google ドライブへのアクセスを含むように拡張できます。つまり、Google ドライブで Google Cloud アクセス トークンを使用できます。
スコープを拡張して Google ドライブを含めるには、gcloud CLI を承認するときに --enable-gdrive-access フラグを追加します。
Linux / macOS
gcloud auth login \
--enable-gdrive-access
Windows(PowerShell)
gcloud auth login `
--enable-gdrive-access
次に、gcloud CLI を使用して Google Drive API を呼び出し、アクセス トークンを指定します。たとえば、Google ドライブ内のすべてのファイルを一覧表示するには、次のリクエストを行います。
Linux / macOS
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://www.googleapis.com/drive/v3/files"
Windows(PowerShell)
Invoke-WebRequest `
-Method GET `
-Headers @{ "Authorization" = "Bearer $(gcloud auth print-access-token)" } `
-ContentType "application/json; charset=utf-8" `
-UseBasicParsing `
-Uri "https://www.googleapis.com/drive/v3/files" | Select-Object -Expand Content
たとえば、前のコマンドのレスポンスからファイル ID を使用して、Google ドキュメント ファイルからテキストを抽出できます。
Linux / macOS
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=text/plain"
Windows(PowerShell)
Invoke-WebRequest `
-Method GET `
-Headers @{ "Authorization" = "Bearer $(gcloud auth print-access-token)" } `
-ContentType "application/json; charset=utf-8" `
-UseBasicParsing `
-Uri "https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=text/plain" | Select-Object -Expand Content
Google ドライブへのアクセスの一般的なユースケースは、Google スプレッドシートに保存されているデータで BigQuery を使用することです。
Google Drive API の詳細については、Google Drive API の概要をご覧ください。
gcloud CLI を認証ヘルパーとして Docker に追加する
Artifact Registry コンテナ レジストリから pull するには、Docker 構成に gcloud CLI を認証情報ヘルパーとして追加します。
それには、gcloud auth configure-docker コマンドを実行します。
gcloud auth configure-docker REGION-docker.pkg.dev
プリンシパルと認証情報を管理する
gcloud auth login コマンドを使用すると、同じ環境内の複数のプリンシパルを認証し、gcloud CLI がプリンシパルの代わりにリソースにアクセスすることを承認できます。ただし、一度に有効にできるプリンシパルは 1 つだけです。以降のセクションでは、gcloud CLI 構成でのプリンシパルの管理について説明します。プリンシパルのリスト表示、プリンシパルの切り替え、認証情報の取り消しなどについて説明します。
プリンシパルの一覧表示
アクセス認証情報がローカル システムに保存されているプリンシパル(つまり、gcloud auth login を使用して認証されたプリンシパル)を一覧表示するには、gcloud auth list コマンドを実行します。
gcloud auth list
gcloud CLI により、プリンシパルが一覧表示され、有効なプリンシパルが示されます。
Credentialed Accounts
ACTIVE ACCOUNT
alex@altostrat.com
* bola@altostrat.com
principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/cruz@cymbalgroup.com
アクティブなプリンシパルのオーバーライドはこのリストに含まれません。これには、次の環境変数が含まれます。
CLOUDSDK_AUTH_ACCESS_TOKENCLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDECLOUDSDK_AUTH_IMPERSONATE_SERVICE_ACCOUNT
これらの環境変数が設定されているかどうかを確認するには、オペレーティング システムに応じて次のコマンドを実行します。
Linux / macOS
echo "$ENVIRONMENT_VARIABLE"
Windows(PowerShell)
echo $env:ENVIRONMENT_VARIABLE
ENVIRONMENT_VARIABLE は、確認する環境変数に置き換えます。
アクティブ プリンシパルのオーバーライドには、次の構成プロパティも含まれます。
auth/access_token_fileauth/credential_file_overrideauth/impersonate_service_account
これらの構成プロパティが設定されているかどうかを確認するには、次のコマンドを実行します。
gcloud config list
アクティブ プリンシパルを切り替える
認証情報を保存しているアクティブなプリンシパル(以前に gcloud auth login フローを完了したプリンシパル)に切り替えるには、gcloud config set を実行します。
gcloud config set account PRINCIPAL_IDENTIFIER
PRINCIPAL_IDENTIFIER は、プリンシパルの完全な ID に置き換えます。
プリンシパルは次の方法で切り替えることもできます。
--accountコマンドライン フラグを使用して、単一のコマンドのプリンシパルを指定します。
セッションの長さを設定する
管理者は、各ユーザーが再認証を行わずに gcloud CLI にアクセスできる時間を管理できます。たとえば、高度な権限を持つユーザーに、通常のユーザーよりも頻繁に再認証を行わせることができます。
詳細については、 Google Cloud サービスのセッション継続時間を設定するをご覧ください。
プリンシパルの認証情報を取り消す
gcloud auth login で認証されたプリンシパルの認証情報を取り消して、gcloud CLI がプリンシパルの代わりに行動できないようにすることができます。取り消しを行うと、Google の認可サーバーで認証情報が無効になり、プリンシパルがアクティブな gcloud CLI 構成から削除されます。
認証情報を取り消すには、gcloud auth revoke を実行します。
gcloud auth revoke PRINCIPAL_IDENTIFIER
PRINCIPAL_IDENTIFIER は、プリンシパルの完全な ID に置き換えます。
Google アカウントに関連付けられているすべてのデバイスで gcloud CLI のアクセス権を取り消すには、Google アカウントの設定の [サードパーティ製のアプリやサービス] に移動し、Google Cloud SDK とのすべての接続を削除します。
保存された認証情報を管理する
gcloud CLI は、使用する認証情報ファイルを gcloud CLI 構成ディレクトリに保存します。認証情報ファイルの場所を確認するには、gcloud info を実行します。
gcloud info
gcloud CLI により、インストールに関する情報が表示されます。認証情報ファイルは、出力で定義されているユーザー構成ディレクトリに保存されます。
User Config Directory: [/home/USERNAME/.config/gcloud]
Linux と macOS の場合、gcloud CLI 構成ディレクトリは通常 /home/USERNAME/.config/gcloud です。Windows の場合は %APPDATA%\gcloud です。
次のステップ
gcloud CLI のカスタマイズの詳細については、gcloud CLI のプロパティをご覧ください。
名前付きの gcloud CLI プロパティ セットを管理する詳細については、gcloud CLI の構成をご覧ください。
Cloud クライアント ライブラリまたは Google API クライアント ライブラリを使用するコードベースのワークロードを認証するには、アプリケーションのデフォルト認証情報の仕組みをご覧ください。