我在获取云函数从秘密管理器访问秘密时遇到了问题。基本上,我希望通过向后端发送请求,然后后端从秘密管理器获取秘密,从而使我的前端访问秘密。
我的云函数端点看起来像这样:
Endpoint.get("/get-key", authMiddleware, async (req: any, res: Response) => {
try {
const auth = new GoogleAuth({
scopes: ['https://www.googleapis.com/auth/cloud-platform']
});
const project = req.params.projectId;
const secret = req.params.secret;
const name = `projects/${project}/secrets/${secret}/versions/latest`;
const credentials = await auth.getCredentials();
const ver = new SecretManagerServiceClient({credentials,projectId:project});
const request = {
name,
};
const response = await ver.accessSecretVersion(request);
const payload = response.payload.data.toString();
console.log(`Payload: ${payload}`);
return res.status(200).send({ payload });
} catch (error:any) {
console.log("get key error: ", error);
return res.status(500).send(error.message);
}
});
当我尝试访问这个端点时,我得到这个错误:
PERMISSION_DENIED: Permission denied: Consumer 'project:undefined' has been suspended
我尝试显式设置投影,它仍然给我这个错误。不知道我还能改变什么。也许是"最新的"。不是秘密管理器的有效端点。
PERMISSION_DENIED: Permission denied: Consumer 'project:undefined' has been suspended
当你超过这个github线程中讨论的使用配额或由于违反ToS时,会发生上述错误。你可能需要提交上诉。你可以联系谷歌技术支持。
还要确保您已经为您的服务帐户赋予了secretAccessor角色。