3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL2でのCloud SDKツールの承認を行う方法(gcloud auth login)がちょっとややこしくなっているらしい

Last updated at Posted at 2022-06-18

Google Cloud (GC)のTerraformについて勉強を始めたいと思い、WSL2にgcloudをインストールしたのですが、その承認方法がちょっとややこしいことになりつつあるという話です。

前提としてGCPのアカウントタイプには「ユーザーアカウント」と「サービスアカウント」の2種類があるのですが、今回は「ユーザーアカウント」で承認するケースについてです。

結論

  • 2022年7月まではgcloud auth login --no-launch-browserを使うのがおそらく一番楽(Googleとしては非推奨)
  • 2022年7月以降は、DISPLAY=":0" gcloud auth loginがとりあえずの回避策になりそう

(非推奨ではあるが)現在(2022年6月)使えるおそらく一番楽な方法

gcloudを用いてGCを操作するには、gcloud initまたはgcloud auth loginコマンドを用いて、ユーザーアカウントによるアクセスを行う必要があります。

ということで早速gcloud auth loginを使ってみます。
実行環境はWSL2です。

$ gcloud auth login
You are authorizing gcloud CLI without access to a web browser. Please run the following command on a machine with a web browser and copy its output back here. Make sure the installed gcloud version is 372.0.0 or newer.

gcloud auth login --remote-bootstrap="https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=IM7fR5Zqmxb2lntvyHJPVUkfKW421I&access_type=offline&code_challenge=rxWJF6LgNHeJpuqSWVSobYviIPr6Po3_nStkGgpnDdA&code_challenge_method=S256&token_usage=remote"


Enter the output of the above command:

何か色々と言われてますね。

You are authorizing gcloud CLI without access to a web browser. Please run the following command on a machine with a web browser and copy its output back here. Make sure the installed gcloud version is 372.0.0 or newer.

「Webブラウザを使わずにCLIの承認を行うとしているため、Webブラウザが使えるマシーンで改めてコマンドを実行してください」とのこと。

gcloudにおいては、ユーザーアカウントによる承認を行うためにはWebブラウザを用いて、Google Cloud SDKのリクエストを許可する必要があります。
(セキュリティ的な理由らしいです。)

WSL2にGUI設定をしたりとかしたら解決するのかもしれませんが、gcloudの承認をするためだけにそこまでするのか・・・と思ってしまいました。
(実践してないので本当はすごく楽なのかもしれませんが)

ということで、以下のようにして対策します。

  1. --no-launch-browserオプションを付与
  2. 表示されるURLをWebブラウザで開く
  3. 該当アカウントにログインして、リクエストを許可する
  4. 次の画面で表示される「認証コード」をコンソールで入力する

※コマンド結果やスクショは本記事の末尾に掲載しておきます。

上記の方法を取ることで、WSL2でWebブラウザが使えるようにする必要がなくなります。

ただしこの方法、現時点(2022年6月)で非推奨となっており、2022年7月頃には使えなくなります

代わりのオプション--no-browser

--no-launch-browserが使えなくなるということで、ドキュメントには--no-browserオプションを代用してくれと記載されています。

ただしこのオプション、付けていない時と挙動が変わりません。(少なくとも変わっていないように見える)

$ gcloud auth login --no-browser
You are authorizing gcloud CLI without access to a web browser. Please run the following command on a machine with a web browser and copy its output back here. Make sure the installed gcloud version is 372.0.0 or newer.

gcloud auth login --remote-bootstrap="https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=9LIFAagO246eEM3JGqJfVfubP580dP&access_type=offline&code_challenge=whQ0CzSRLKXYCNtFkHK3_V4YEG66iL5IdgIzrpMjonY&code_challenge_method=S256&token_usage=remote"


Enter the output of the above command:

どうやらGoogleとしては、セキュリティ的な都合から、ユーザーアカウントによる承認を行う際はWebブラウザが使えるマシーンでgcloud auth login --remote-bootstrap=https://xxxを実行することを必須としたいようです。

なので、WSL2でgcloudを使いたいならPowerShellにもgcloudをインストールする必要があるみたいです・・・。

現在(2022年6月)の回避策

先程参考2として載せていたGoogle Issue Trackerの中で回避策が提案されており、
google auth loginコマンドの前にDISPLAY=":0"をつけるというものです。

これによってWindowsのWebブラウザが開かれ、承認処理を行うことが可能です。

まとめ

DISPLAY=":0" gcloud auth loginでとりあえずはどうにかなりましたが、今回のアップデートについては渋い反応をしている方もいるようで、実際僕もちょっと不便だなとは思いました。
WSL2への理解があればもっと簡単に解決できたりするのでしょうか?

参考

(備考)gcloud auth login --no-lanunch-browserの結果

一部伏せてます

コマンド結果

$ gcloud auth login --no-launch-browser
WARNING: The login flow that you are using with the --no-launch-browser flag will be updated by July 12, 2022 to address a security issue. No immediate action is required to continue using this flag, but be sure to upgrade your gcloud installation by running `gcloud components update` between July 12, 2022 and August 2, 2022.

Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=6Dyp1cOOUspyHZcAXedLxeaBdYwQj7&prompt=consent&access_type=offline&code_challenge=kxms5cD27AW25yVUv0a7HiFt5xIrO_Z0iM6_9byPbbo&code_challenge_method=S256

Enter verification code: xxx

You are now logged in as [xxx@gmail.com].
Your current project is [default-353402].  You can change this setting by running:
  $ gcloud config set project PROJECT_ID

スクリーンショット

sdk_allow.png
sdk_allow_2.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?