我正在Nodejs(10)中编写一个云函数,并尝试访问这样一个秘密:
const [secret] = await new SecretManagerServiceClient().accessSecretVersion({
name: `projects/PROJECT_NUMBER/secrets/SECRET_NAME/versions/latest`
})
我在web控制台中创建了该机密,代码中使用的名称与现有机密的名称匹配。在云功能详细信息页面上,它指出服务帐户是PROJECT_ID@appspot.gserviceaccount,com,所以我添加了secretmanager。秘书助理角色。但是,每次我都会遇到同样的错误:
<代码>错误:7 PERMISSION\u DENIED:PERMISSION“secretmanager”。版本。“拒绝访问资源”项目/项目编号/机密/机密名称/版本/最新版本(或者它可能不存在)
如果我指定一个具体的版本或者只使用最新版本,这没有什么区别。
我在使用secretmanager和python google cloud secretmanager库(2.4)时遇到过类似的问题。具体来说,在创建一个秘密并将我的服务帐户交给secretmanager之后。secretAccessor在这个秘密上的角色(没有其他,遵循最小特权原则),我在尝试访问它时遇到以下错误:
details = "Permission 'secretmanager.versions.access' denied for resource 'projects/projectid/secrets/keyname/versions/latest' (or it may not exist)."
我只能通过添加secretmanager来实现它。查看器在项目级别的角色,据我所知,文档中没有描述。
我也有同样的问题,要解决它,我必须:
>
它看起来像
在IAM Admin中,将“Secret Manager Secret Accessor”角色添加到此服务帐户。
在这之后,一切都正常了!
HTTP云功能代码:
const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
const secretManagerServiceClient = new SecretManagerServiceClient();
const name = 'projects/shadowsocks-218808/secrets/workflow/versions/latest';
exports.testSecretManager = async (req, res) => {
const [version] = await secretManagerServiceClient.accessSecretVersion({ name });
const payload = version.payload.data.toString();
console.debug(`Payload: ${payload}`);
res.sendStatus(200);
};
部署:
gcloud functions deploy testSecretManager --runtime nodejs10 --trigger-http --allow-unauthenticated
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
entryPoint: testSecretManager
httpsTrigger:
url: https://us-central1-shadowsocks-218808.cloudfunctions.net/testSecretManager
ingressSettings: ALLOW_ALL
labels:
deployment-tool: cli-gcloud
name: projects/shadowsocks-218808/locations/us-central1/functions/testSecretManager
runtime: nodejs10
serviceAccountEmail: shadowsocks-218808@appspot.gserviceaccount.com
sourceUploadUrl: https://storage.googleapis.com/gcf-upload-us-central1-43476143-b555-4cb2-8f6f-1b2d1952a2d7/42c4cda4-98a8-4994-a3be-d2203b9e646a.zip?GoogleAccessId=service-16536262744@gcf-admin-robot.iam.gserviceaccount.com&Expires=1596513795&Signature=kbLw5teN8EoYmj4fEweKKiIaakxcrhlUg2GGHV4jWJjvmeEfXePpRNOn9yz2zLn%2Fba0UqM9qdJMXujs5afBk%2BVBmywPEiptAZe2qgmldpr%2BsYejFu0woNgsPHVqtJ0NoWDo6W2dq4CuNNwO%2BaQ89mnhahUUQTInkJ55Y3wCIe9smk%2BqWtcvta3zICiToA7RQvPKY5MS6NViyj5mLxuJtDlTY9IKPL%2BqG6JAaQJSFYKYVgLyb6JfirXk8Q7%2FMvnHPpXPlhvsBLQksbF6jDPeefp2HyW4%2FSIQYprfpwKV3hlEIQyRQllz5J9yF83%2FxDPh%2BQPc5QmswKP5XAvYaszJPEw%3D%3D
status: ACTIVE
timeout: 60s
updateTime: '2020-08-04T03:34:32.665Z'
versionId: '2'
测试:
gcloud functions call testSecretManager --data '{}'
获得与您相同的错误:
error: |-
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
7 PERMISSION_DENIED: Permission 'secretmanager.versions.access' denied for resource 'projects/shadowsocks-218808/secrets/workflow/versions/latest' (or it may not exist).
解决方案:
您可以找到serviceAccountEmail:shadowsocks-218808@appspot.gserviceaccount.com来自云功能的部署详细信息。
转到IAM
再次测试:
> gcloud functions call testSecretManager --data '{}'
executionId: 1tsatxl6fndw
result: OK
阅读
testSECManager
云函数的日志:
gcloud functions logs read testSecretManager
您将看到机密负载字符串的日志。
我在帐户a中存储了一个密钥(USRFTP),我想从EC2框中使用帐户B中的角色ASHISHROLE访问这个密钥。我正在运行python代码来获取密钥,如下所示,在密钥中使用资源策略,KMS策略如下所示,但仍然得到这个问题 clienterRor:调用GetSecretValue操作时发生错误(AccessDeniedException):User:ARN:AWS:STS::AccountB:假定-
这是一个棘手的问题,我有以下输出: mysqldump:得到错误: 1045:访问拒绝用户'root'@'localhost'(使用密码:是)当尝试连接 当试图在Windows XP上使用导出我的数据库时。用户名为root,密码正确,仅包含字母数字字符。我尝试过不同的情况,有/没有引号,指定使用和,指定使用和和其他指定用户/密码的方法等,指定主机(它是所有本地的),甚至使用来指定数据库,而不仅仅是
我正在尝试从使用文件,以使用谷歌云平台机密管理器。我已经按照这里的说明操作了,但是我遇到了一个错误,说我没有权限访问这个秘密。 这就是我得到的错误: 我确实创建了一个具有“所有者”权限的服务帐户,下载了它,并使其
我正在构建一个简单的应用程序,它将Twilio凭据存储在GCP秘密管理器中,并在需要时将其拉下来。但是,我一直收到项目资源上的拒绝权限错误(403): 谷歌。api_核心。例外。PermissionDenied:403资源项目的权限被拒绝。 我使用环境变量设置到包含服务号凭据的JSON文件的路径。 以下是我已经尝试过的: 确保在GCP控制台中正确设置权限。服务帐户被设置为项目的所有者和项目级别的机
我有一个使用Bosh部署的concourse环境。它配置有AWS机密管理器。管道机密模板的格式为 我在AWS秘密管理器(其他类型的秘密)中创建了一个秘密,其值如下。 我在团队中设置了一个总汇管道。
我们在AWS环境中部署了完整的应用程序,我们发现AWS秘密管理器是存储数据库和其他一些组件的秘密的正确选择。