关于Google Cloud Platform:” gcloud auth应用程序默认登录”和” gcloud auth登录”之间的区别

Difference between “gcloud auth application-default login” and “gcloud auth login”

gcloud auth application-default logingcloud auth login有什么区别?

尽管有以下定义,仍然很难区分它们。

gcloud auth应用程序-默认登录名:

  • acquire new user credentials to use for Application Default Credentials

gcloud身份验证登录名:

  • authorize gcloud to access the Cloud Platform with Google user credentials

我什么时候应该在另一个上使用?


不同之处在于用例:

作为一名开发人员,我想通过gcloud与GCP进行交互。
gcloud auth login
这将获取您的凭据并将其存储在~/.config/gcloud/中。现在,您可以从终端运行gcloud命令,它将自动找到您的凭据。在这种情况下,任何代码/ SDK都不会自动获得您的信任。

参考:https://cloud.google.com/sdk/gcloud/reference/auth/login

作为一名开发人员,我希望我的代码通过SDK与GCP进行交互。
gcloud auth application-default login
这将通过网络流获取您的凭据,并将其存储在"应用程序默认凭据的众所周知位置"中。现在,您运行的任何代码/ SDK都将能够自动找到凭据。当您要本地测试通常在服务器上运行并使用服务器端凭据文件的代码时,这是一个很好的替代方法。

参考:https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login

编辑(09/19/2019):
正如肯特(Kent)在下面的评论中所述,"应用程序默认凭据的众所周知位置"是位于本地~/.config/gcloud/目录中的名为application_default_credentials.json的文件。我在下面添加了指向Theodore Sui和Daniel De Leo的文章的附加链接,其中更详细地介绍了差异身份验证方法。

文章:
https://medium.com/google-cloud/local-remote-authentication-with-google-cloud-platform-afe3aa017b95


我将其添加为答案,因为我没有评论的声誉。我认为@Himal \\的答案很明确,但我想澄清一下,当它说代码/ SDK时,我们应该认为代码或语言(Java / Ruby / Python)SDK v / s gcloud SDK(这是也称为Cloud SDK)。这让我有些困惑,因为我有同样的疑问

所以,
gcloud auth登录->登录到gcloud SDK

gcloud auth应用程序-默认登录->登录到计算机上运行的任何代码(应用程序中的语言SDK)

打开的浏览器窗口中的OAuth身份验证屏幕中也有一个赠品:

gcloud auth login要求您选择一个帐户以继续授予对" Google cloud sdk "的访问权限。

gcloud auth application-default login要求您授予对Google身份验证库的访问权限。