gpt4 book ai didi

google-cloud-platform - 如何将我的 gcloud 用户凭据安全地放入容器中,并在本地测试时使用它们模拟服务帐户?

转载 作者:行者123 更新时间:2023-12-05 06:18:13 24 4
gpt4 key购买 nike

从这里开始:

  • 用户有自己的谷歌用户帐户,这些帐户是通过本地设置的gcloud 登录
  • 应用程序以通常的方式使用 gcp API——默认情况下,它将查找 GOOGLE_APPLICATION_CREDENTIALS、GCE 角色、服务帐户,或使用本地用户 gcloud 配置的凭据
  • 当用户在本地运行时,它将使用他们自己的用户帐户,当在 gcp 中运行时,它将使用服务帐户
  • 用户的帐户也有权模拟该服务帐户。因此,当在本地运行应用程序时,用户首先执行 gcloud config set
    auth/impersonate_service_account [SA_FULL_EMAIL]
    可以运行具有与将在开发环境中运行的相同的凭据 - 他们无需下载任何 key

现在可以了。但我也希望能够在容器中本地运行应用程序。使用 docker/docker-compose/minikube/etc 我怎样才能模拟服务帐户?

容器需要访问 gcloud creds 并且在应用程序以某种方式启动之前,它也需要在 session 中设置模拟。这不能在代码中完成 - 应用程序应该像往常一样使用 API,而不必做任何不同的事情。

编辑:当应用程序在开发或生产 GCP 帐户/项目中运行时,它们在具有针对该特定应用程序的正确范围权限的服务帐户的上下文中运行。开发人员自己的用户帐户对开发环境具有广泛的权限。在本地运行时,使用与应用程序在开发环境中运行时相同的服务帐户而不是开发人员自己的用户帐户来运行很有用

最佳答案

实现此目的的正确方法是 Google Cloud 提供的 Secret Manager。

  • 在您的 Google Cloud 帐户中激活 Secret Manager API。
  • 使用 GC UI 或 SDK 创建 Secret 数据和相关负载。
  • 在您的 settings.py 中使用以下函数和您的项目 ID。
  • 授予您的服务帐户访问 Secrets 的权限(如果它还没有访问权限)
  • 使用 Secret Manager 访问代码中的有效载荷,而无需显式公开有效载荷。
def access_secret_version(secret_id):
"""
Access the payload for the given secret version if one exists. The version
can be a version number as a string (e.g. "5") or an alias (e.g. "latest").
"""
project_id = PROJECT_ID
version_id = 1
# Import the Secret Manager client library.
from google.cloud import secretmanager_v1beta1 as secretmanager

# Create the Secret Manager client.
client = secretmanager.SecretManagerServiceClient()

# Build the resource name of the secret version.
name = client.secret_version_path(project_id, secret_id, version_id)

# Access the secret version.
response = client.access_secret_version(name)

# Print the secret payload.
#
# WARNING: Do not print the secret in a production environment - this
# snippet is showing how to access the secret material.
payload = response.payload.data.decode('UTF-8')
# logging.info('Plaintext: {}'.format(payload))
logging.info('Secret accessed for :' + secret_id)
return payload

关于google-cloud-platform - 如何将我的 gcloud 用户凭据安全地放入容器中,并在本地测试时使用它们模拟服务帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61345638/

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