gpt4 book ai didi

python - App Engine 服务的自定义服务帐户

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:01 25 4
gpt4 key购买 nike

我在我们项目的 GCP(Google Cloud Platform)App Engine 上运行多个微服务。在我们的例子中,最好在每个服务的基础上最小化权限。目前,我们将所有凭证文件保存在 Keybase 中,并按团队成员身份划分 secret 。因此,如果我正在开发一项 App Engine 服务,我就无法看到另一团队的 App Engine 服务的 secret 。我们一直在为其他 secret 做些什么,例如带有密码和 secret token 的配置文件,我们为应用程序引擎服务帐户提供 kms 解密权限,只需从 firestore 中提取配置文件的加密副本并解密即可。但我们不想在任何地方都使用默认的应用程序引擎服务帐户,因为使用相同服务帐户的不同团队可以访问每个人的 secret 。因此,我们希望为开发中的每个应用引擎服务转移到基于每个服务的服务帐户。

据我在 Google 文档中所知,他们希望您在部署应用程序时上传凭证文件,这可以工作,但是,从云控制台,似乎很难锁定谁可以查看部署到服务的文件,任何具有访问权限的人都可以简单地复制/粘贴所有凭据。

如果你在字典中有配置,你可以这样做:


from google.oauth2 import service_account
from google.cloud import kms_v1
d = {'type': 'service_account',
'project_id': 'my-awesome-project',
'private_key_id': '074139282fe9834ac23401',
'private_key': '-----BEGIN PRIVATE KEY----\n supersecretkeythatnobodyknows==\n-----END PRIVATE KEY-----\n',
'client_email': 'my-cool-address@my-awesome-project.iam.gserviceaccount.com',
'client_id': '1234567890',
'auth_uri': 'https://accounts.google.com/o/oauth2/auth',
'token_uri': 'https://oauth2.googleapis.com/token',
'auth_provider_x509_cert_url':
'https://www.googleapis.com/oauth2/v1/certs',
'client_x509_cert_url': 'https://www.googleapis.com/robot/v1/metadata/x509/my-cool-addres%40my-awesome-project.iam.gserviceaccount.com'}

credentials = service_account.Credentials.from_service_account_info(d)
kms_client = kms_v1.KeyManagementServiceClient(credentials=credentials)

这是可行的,但是我们如何将字典“d”放入程序中而不使其出现在代码中并被广泛的人访问?

最佳答案

如果 AppEngine 环境中的每个服务都必须有自己的身份,那么 AppEngine 就不可能做到这一点。 Cloud Function 或 Cloud run 等较新的服务可以做到这一点,但非常旧的服务(针对云时代)AppEngine(超过 10 年)则不能。

您拥有所有 AppEngine 服务的服务帐户。您可以使用它来解密每个服务的其他服务帐户 key 文件,并在适当的服务中使用它们,但根授权保留默认的 App Engine 服务帐户,因此所有服务/所有团队都可以访问它(以及所有加密的服务帐户 key 文件)。

也许解决方案是重新设计应用程序并为每个团队创建一个项目?

关于python - App Engine 服务的自定义服务帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58453401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com