0

这真是令人难以置信。我正在使用 Python 并试图从我可以知道的可以访问的资源中提取秘密管理器值。我在使用 Python 3.8 的 Windows 上。

def fetch_credentials():
    project_id = "109837978792"  # Anonymized for Stack
    secret_id = "some_secret_name"
    version_id = "1"
    name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
    client = secretmanager.SecretManagerServiceClient()
    response = client.access_secret_version(request={"name": name})
    payload = response.payload.data.decode("UTF-8")
    print("Plaintext: {}".format(payload))

错误

google.api_core.exceptions.PermissionDenied:403 权限 'secretmanager.secrets.get' 拒绝资源'projects/109837978792/secrets/some_secret_name/versions/1'(或者它可能不存在)。

“grpc_message”:“资源的权限‘secretmanager.versions.access’被拒绝

配置

  • gcloud 在列表中显示我的项目名称、ID 和编号。
  • gcloud 在 auth 列表上显示 my-serviceaccount@myprojectname.iam.gserviceaccount.com 并被选中。
  • 控制台将服务账户的 IAM 角色显示为:Owner、DLP User 和 Secret Manager Secret Accessor。
  • 控制台将服务帐户密钥显示为活动的并以 JSON 形式显示。有效期至 9999 年 12 月 31 日。
  • 控制台将密钥显示为活动并位于路径:projects/109837978792/secrets/some_secret_name
  • 控制台显示秘密在版本 1
  • 控制台显示在密钥名称上为服务帐户继承的密钥特定 IAM 角色。
  • 控制台显示项目中活动的 Secrets Manager API 和 Cloud Resource Manager API。
  • 控制台以图表形式显示来自失败调用的秘密管理器活动。
  • windows 已设置 GOOGLE_APPLICATION_CREDENTIALS=C:/etc/service_account.json

绑定

{
  "role": "roles/secretmanager.secretAccessor",
  "members": [
    "serviceAccount:my-serviceaccount@myprojectname.iam.gserviceaccount.com"
  ]
}

为我的 gmail 设置了相同的角色。如果我使用我的 gmail 帐户使用 gcloud auth login 登录,当它具有相同项目的相同角色时,它仍然会失败。我在这里想念什么?

4

0 回答 0