我正在尝试在bash脚本中进行身份验证并启用我的服务帐户,并且我有cred.json
。这是我尝试过的:
gcloud auth activate-service-account --key-file=/etc/gcp-cred.json
问题是我必须明确设置项目:
gcloud config set project my_proj
这是多余的,因为gcp-cred.json
已经将该项目包含为字段:
"project_id": "my_proj"
有没有办法避免gcloud config set project
显式地进行设置并将其设置为gcp-cred.json
?
否- gcloud
验证时不会更改您的工作核心项目。
这里的窍门是验证和设置“默认”工作项目是否gcloud
是单独的关注点。您可以在不进行身份验证的情况下设置项目,也可以在不更改项目的情况下进行身份验证。
这里的逻辑源于一个事实,即身份可以访问许多项目。即使服务帐户驻留在特定项目中,也很可能被授权访问任何其他项目。因此,该gcloud
程序不假设您希望您的服务帐户执行哪个项目。
其次,一般你不必须设置默认的工作项目gcloud
-您可以指定该项目是旗你的行动目标--project PROJECT_ID
。在此处查看文档以获取该gcloud
标志。
但是,由于服务帐户与特定项目紧密相关,因此像解析json一样手动提取它是否安全?
@SomeName-一个项目中的服务帐户可以在另一个项目中使用。您还可以创建一个不能在同一项目中使用的服务帐户。CLI支持切换服务帐户,因此自动更改默认项目ID不一定是一个好主意。服务帐户
project_id
密钥仅表示创建服务帐户的项目,与授权服务帐户的项目无关。正确-我不会强调服务帐户是“耦合”到项目的。即使在项目中创建了服务帐户,它仍然可以对该项目中的任何内容进行0访问!IAM与服务帐户的诞生地是一个单独的问题。