当前位置: 首页 > 知识库问答 >
问题:

在当地环境中,您如何从GCP的秘密经理那里获得秘密?

封景曜
2023-03-14

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

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错误:code=PermissionDenied desc=Permission'secretmanager。版本。资源“项目/我的项目/机密/API\U密钥/版本/最新版本”的访问被“拒绝”(或它可能不存在)

这很有意义,因为secrets manager api怎么知道我的代码具有管理员权限?

共有1个答案

林泰平
2023-03-14

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

>

  • 安装客户端库。

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

    2、a创建服务账号。用服务帐户的名称替换名称。

     gcloud iam service-accounts create NAME
    

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

    用项目ID替换PROJECT\u ID。

    用每个单独的角色替换角色。

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

    2、c生成密钥文件。用密钥文件的名称替换FILE\u NAME。

    gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com
    

    通过设置环境变量GOOGLE_APPLICATION_CREDENTIALS为应用程序代码提供身份验证凭据。

    运行以下命令:

    export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"
    

    请参阅留档了解更多信息

  •  类似资料:
    • 在图表部署CI/CD管道期间,有没有办法从GCP机密管理器中检索掌舵图表的机密?还是最好使用CI/CD secret manager,然后为图表部署获取凭据?

    • 我成功地实现了在terraform中创建敏感资源的流程,在任何时候都不会透露敏感细节是什么,因此在我们的github repo中不会以纯文本存储。我让TF创建一个服务帐户,它与SA密钥相关,然后创建一个引用SA密钥输出的GCP密钥。 我现在想看看是否有任何方法可以对一些预定义的数据库密码执行相同的操作。流量会略有不同: 手动创建GCP secret(在secrets manager中),该密码的值

    • 我正在尝试从使用文件,以使用谷歌云平台机密管理器。我已经按照这里的说明操作了,但是我遇到了一个错误,说我没有权限访问这个秘密。 这就是我得到的错误: 我确实创建了一个具有“所有者”权限的服务帐户,下载了它,并使其

    • 我正在构建一个简单的应用程序,它将Twilio凭据存储在GCP秘密管理器中,并在需要时将其拉下来。但是,我一直收到项目资源上的拒绝权限错误(403): 谷歌。api_核心。例外。PermissionDenied:403资源项目的权限被拒绝。 我使用环境变量设置到包含服务号凭据的JSON文件的路径。 以下是我已经尝试过的: 确保在GCP控制台中正确设置权限。服务帐户被设置为项目的所有者和项目级别的机

    • 我正在运行fabric 1.4.0网络,我是它的管理员。我丢失了其中一个身份(不是管理员)的密码/机密。 我怎样才能知道这个秘密 我知道,每当我们注册一个新身份时,我们就会得到这个秘密(如果尚未提供的话),并且可以将这个秘密用于注册和其他目的。但我失去了这个秘密。 我也知道,我可以通过使用命令来向身份发布一个新的秘密。但是,这不是我的选择。我想得到现有的一个。 我运行了来查看身份信息,但没有在那里

    • 我有一个使用Bosh部署的concourse环境。它配置有AWS机密管理器。管道机密模板的格式为 我在AWS秘密管理器(其他类型的秘密)中创建了一个秘密,其值如下。 我在团队中设置了一个总汇管道。