我正在尝试从使用中存储的API密钥迁移代码。env
文件,以使用谷歌云平台机密管理器。我已经按照这里的说明操作了,但是我遇到了一个错误,说我没有权限访问这个秘密。
import * as admin from "firebase-admin"
import { SecretManagerServiceClient } from "@google-cloud/secret-manager"
admin.initializeApp()
const secretClient = new SecretManagerServiceClient()
async function main() {
async function getSecret(): Promise<string | null | undefined> {
const [version] = await secretClient.accessSecretVersion({ name: "TELEGRAM_TOKEN" })
return version.payload?.data?.toString()
}
const TELEGRAM_TOKEN = await getSecret()
console.log(TELEGRAM_TOKEN)
}
main().catch(console.error)
这就是我得到的错误:
> node lib/app.js --telegram
{ Error: 7 PERMISSION_DENIED: Permission denied on resource project TELEGRAM_TOKEN.
at Object.callErrorFromStatus (/Users/bartekpacia/dev/node/telegram-lang-enforcer/node_modules/@grpc/grpc-js/build/src/call.js:30:26)
at Object.onReceiveStatus (/Users/bartekpacia/dev/node/telegram-lang-enforcer/node_modules/@grpc/grpc-js/build/src/client.js:174:52)
at Object.onReceiveStatus (/Users/bartekpacia/dev/node/telegram-lang-enforcer/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:340:141)
at Object.onReceiveStatus (/Users/bartekpacia/dev/node/telegram-lang-enforcer/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:303:181)
at Http2CallStream.outputStatus (/Users/bartekpacia/dev/node/telegram-lang-enforcer/node_modules/@grpc/grpc-js/build/src/call-stream.js:114:27)
at Http2CallStream.maybeOutputStatus (/Users/bartekpacia/dev/node/telegram-lang-enforcer/node_modules/@grpc/grpc-js/build/src/call-stream.js:153:22)
at Http2CallStream.endCall (/Users/bartekpacia/dev/node/telegram-lang-enforcer/node_modules/@grpc/grpc-js/build/src/call-stream.js:140:18)
at Http2CallStream.handleTrailers (/Users/bartekpacia/dev/node/telegram-lang-enforcer/node_modules/@grpc/grpc-js/build/src/call-stream.js:262:14)
at ClientHttp2Stream.emit (events.js:198:13)
at emit (internal/http2/core.js:265:8)
code: 7,
details: 'Permission denied on resource project TELEGRAM_TOKEN.',
metadata:
Metadata {
internalRepr:
Map {
'google.rpc.help-bin' => [Array],
'grpc-status-details-bin' => [Array],
'grpc-server-stats-bin' => [Array] },
options: {} },
note:
'Exception occurred in retry method that was not classified as transient' }
我确实创建了一个具有“所有者”权限的服务帐户,下载了它,并使其export GOOGLE_APPLICATION_CREDENTIALS=/Users/
。我的服务帐户。当我执行
echo$GOOGLE\u APPLICATION\u CREDENTIALS
时,json文件位置会正确显示。
我真的不知道我做错了什么。
这些答案引导了我,但我花了很长时间才让它发挥作用。您需要输入PROJECT_ID
而不是Project-Name
。
查找您的项目ID:
第二列显示了项目ID:
现在使用它并运行脚本
await secretClient.accessSecretVersion({
name: "projects/PROJECT_ID/secrets/SECRET_NAME/versions/latest"
})
我只是遇到了同样的问题,在秘密名称中指定项目名称后,我个人不得不添加/versions/latest
。
await secretClient.accessSecretVersion({
name: "projects/my-project/secrets/TELEGRAM_TOKEN/versions/latest"
})
访问秘密时,需要指定项目:
await secretClient.accessSecretVersion({ name: "TELEGRAM_TOKEN" })
应该是
await secretClient.accessSecretVersion({ name: "projects/my-project/secrets/TELEGRAM_TOKEN/versions/latest" })
我正在构建一个简单的应用程序,它将Twilio凭据存储在GCP秘密管理器中,并在需要时将其拉下来。但是,我一直收到项目资源上的拒绝权限错误(403): 谷歌。api_核心。例外。PermissionDenied:403资源项目的权限被拒绝。 我使用环境变量设置到包含服务号凭据的JSON文件的路径。 以下是我已经尝试过的: 确保在GCP控制台中正确设置权限。服务帐户被设置为项目的所有者和项目级别的机
我们在AWS环境中部署了完整的应用程序,我们发现AWS秘密管理器是存储数据库和其他一些组件的秘密的正确选择。
我有一个使用Bosh部署的concourse环境。它配置有AWS机密管理器。管道机密模板的格式为 我在AWS秘密管理器(其他类型的秘密)中创建了一个秘密,其值如下。 我在团队中设置了一个总汇管道。
我在帐户a中存储了一个密钥(USRFTP),我想从EC2框中使用帐户B中的角色ASHISHROLE访问这个密钥。我正在运行python代码来获取密钥,如下所示,在密钥中使用资源策略,KMS策略如下所示,但仍然得到这个问题 clienterRor:调用GetSecretValue操作时发生错误(AccessDeniedException):User:ARN:AWS:STS::AccountB:假定-
我成功地实现了在terraform中创建敏感资源的流程,在任何时候都不会透露敏感细节是什么,因此在我们的github repo中不会以纯文本存储。我让TF创建一个服务帐户,它与SA密钥相关,然后创建一个引用SA密钥输出的GCP密钥。 我现在想看看是否有任何方法可以对一些预定义的数据库密码执行相同的操作。流量会略有不同: 手动创建GCP secret(在secrets manager中),该密码的值
我创造了一个“其他类型的秘密”。我还在这个模板中添加了一个作为give的lambda函数。现在,当我试图立即旋转时,它会说“Fail to Rotion the secret”test_secret_Rothing“以前的旋转没有完成。将重新尝试该旋转。”轮转的时间是一天,即使第二天我看到分泌物也没有更新。我只是添加了那个lambda函数。我需要定义任何参数或任何其他lambda设置吗。我还在文档