小编Vin*_*nce的帖子

从 Docker 中的 Python 访问 GCP Secret Manager 中的机密 - nontsop 权限被拒绝

我正在构建一个简单的应用程序,它将 Twilio 凭据存储在 GCP Secret Manager 中,并在需要时将其拉下。但是,我在项目资源上不断收到拒绝权限错误 (403):

google.api_core.exceptions.PermissionDenied:403 资源项目的权限被拒绝。

我使用的环境变量设置为包含服务帐户凭据的 JSON 文件的路径。

这是我已经尝试过的:

  • 确保在 GCP Console 中正确设置权限。服务帐户被设置为项目的所有者、项目级别的秘密访问者以及每个秘密的对象级别的秘密访问者。
  • 确保环境变量设置正确 - 我已经验证 ENV 变量设置正确并且可以读取它指向的文件。我可以通过将 ENV 变量作为 JSON 文件打开来打印文件的内容。
  • 通过将 JSON 文件的内容与 GCP 控制台中的数据进行比较,确认身份验证信息正确
  • 我已使用 gcloud CLI 在服务帐户下登录,然后使用 CLI 命令检索完全相同的机密
  • 我可以成功访问数据并将其推送到 GCS 存储桶,这表明凭证已从 ENV 变量正确加载
  • 我尝试过通过多种方式了解这些秘密。我尝试过其他方法,例如列出项目中的秘密。全部返回权限错误。

作为参考,我一直遵循https://cloud.google.com/secret-manager/docs/reference/libraries#client-libraries-install-python中的说明,并且也一直在使用官方客户端库文档探索还有什么可能是错误的。这里没有什么能真正帮助我。

我已经阅读了我能找到的所有资源,但没有任何帮助。有什么想法吗?

谢谢你!!!

编辑:添加以下代码:

def access_secret(project_id, secret_id, version):
    """
    Access a secret- API token, etc- stored in Secret Manager

    Code from https://cloud.google.com/secret-manager/docs/creating-and-accessing-secrets#secretmanager-access-secret-version-python
    """
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the secret …
Run Code Online (Sandbox Code Playgroud)

python docker google-cloud-platform google-secret-manager

5
推荐指数
1
解决办法
1万
查看次数