1

我在 Secrets Manager 控制台上创建了一个密钥。然后我尝试使用 Go 代码快速入门指南,例如

ctx := context.Background()
client, err := secretmanager.NewClient(ctx)
if err != nil {
    log.Println(err)
}

// Build the request.
req := &secretmanagerpb.AccessSecretVersionRequest{
    Name: "projects/my-project/secrets/API_KEY/versions/latest",
}

// Call the API.
result, err := client.AccessSecretVersion(ctx, req)
if err != nil {
    log.Println(err)
}

但后来我得到

rpc error: code = PermissionDenied desc = Permission 'secretmanager.versions.access' denied for resource 'projects/my-project/secrets/API_KEY/versions/latest' (or it may not exist)

这是有道理的,因为秘密管理器 api 甚至如何知道我的代码具有管理员权限?

4

1 回答 1

0

正如@sethvargo 所建议的,请按照以下身份验证设置说明来解决错误:

  1. 安装客户端库。

  2. 要运行客户端库,您必须首先设置身份验证。

    2.a 创建服务帐户。将 NAME 替换为服务帐户的名称。

     gcloud iam service-accounts create NAME
    

    2.b 向服务帐户授予角色。为以下每个 IAM 角色运行一次以下命令:角色/所有者

    将 PROJECT_ID 替换为您的项目 ID。

    将 ROLE 替换为每个单独的角色。

     gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
    

    2.c 生成密钥文件。将 FILE_NAME 替换为密钥文件的名称。

    gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com
    
  3. 通过设置环境变量 GOOGLE_APPLICATION_CREDENTIALS 为您的应用程序代码提供身份验证凭据。

运行以下命令:

export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"
  1. 使用客户端库。

有关详细信息,请参阅文档

于 2022-01-30T07:45:44.263 回答