Google cloud platform 当我使用服务帐户进行身份验证时,为什么需要单独设置GOOGLE_APPLICATION_CREDENTIALS环境变量?
我对这种身份验证方法感到很困惑。 我有一个服务帐户,该帐户具有与GCP服务交互所需的所有角色和权限。我已使用“gcloud auth activate service account”命令激活了服务帐户,并使用“gcloud init”选择了正确的项目和服务帐户。但是,我仍然无法与GCP服务交互。我必须使用正确的json密钥文件设置环境变量“GOOGLE_APPLICATION_CREDENTIALS”,然后只有我才能与GCP服务交互Google cloud platform 当我使用服务帐户进行身份验证时,为什么需要单独设置GOOGLE_APPLICATION_CREDENTIALS环境变量?,google-cloud-platform,gcloud,service-accounts,Google Cloud Platform,Gcloud,Service Accounts,我对这种身份验证方法感到很困惑。 我有一个服务帐户,该帐户具有与GCP服务交互所需的所有角色和权限。我已使用“gcloud auth activate service account”命令激活了服务帐户,并使用“gcloud init”选择了正确的项目和服务帐户。但是,我仍然无法与GCP服务交互。我必须使用正确的json密钥文件设置环境变量“GOOGLE_APPLICATION_CREDENTIALS”,然后只有我才能与GCP服务交互 我的问题是,如果我的服务帐户拥有所有权限,并且我当前的活动服
我的问题是,如果我的服务帐户拥有所有权限,并且我当前的活动服务帐户也是相同的,那么为什么我需要设置GOOGLE_应用程序_凭据。gcloud身份验证在内部如何工作?谷歌云SDK CLI
gcloud
有自己的身份验证结构(文件和数据库)。此结构不可用于在同一系统上运行的应用程序
对于开发人员来说,使用环境变量GOOGLE\u APPLICATION\u CREDENTIALS
是SDK客户端函数的一部分,用于定位凭据。这称为ADC(应用程序默认凭据)。SDK客户端将搜索凭据
如果您有兴趣了解SDK存储凭据的秘密:
谷歌的SDK允许通过应用程序默认凭据(ADC)处理身份验证。除了简化您的代码外,ADC还提供了一些可移植性,因为代码在本地和Google计算服务上运行不变。这是因为ADC会在
GOOGLE\u APPLICATION\u credentials
或元数据中自动搜索凭据
使用gcloud auth application default
设置服务帐户时。您正在为gcloud
命令设置服务帐户,但为在同一客户端上运行的代码设置服务帐户。此代码不检查gcloud
配置中的凭据。它查找缺少本地元数据服务的GOOGLE\u应用程序\u凭据
请参阅:。过去有一份更好的文件来描述这一点
@john hanley击败了我。您还可以指定您尝试运行的gcloud命令以及收到的错误消息吗?请指定您尝试使用的命令,或者如果您在使用客户端库时遇到这种情况,您使用的是哪一个?我使用的是python脚本,它的pythonapi主要用于与PubSub和bigquery交互。