几个小时前,我们的应用程序开始失败
Error: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
at (/user_code/node_modules/@google-cloud/datastore/node_modules/grpc/src/node/src/client.js:442)
据我所知,客户端库使用应用程序默认凭据方法,以防万一没有权限文件传递到数据库连接实例,或者没有 env。指定的变量。我们没有在远程 Google Cloud Functions 执行环境中使用任何这些文件。
const db = new require("@google-cloud/datastore")();
并且知道我没有看到任何其他方式并生成凭据文件并在数据库初始化期间显式传递它。
const db = new require("@google-cloud/datastore")({
keyFilename: "./configs/db_key.json"
});
如果有人知道这种行为的原因 - 请分享。
在与 Google 支持人员对话后,我们发现了几件事。
注意:创建默认服务帐户的确切行为以及它们在您的项目中的显示方式将来可能会发生变化,因为它们旨在供 Google Compute Engine 和 Google App Engine 使用,因此建议您不要t 依赖这些默认帐户的存在供您使用。建议您使用 IAM API、Cloud Platform Console 或 gcloud 工具明确创建其他服务帐号以供长期使用。来源
因此,看起来最好为应用程序中使用的每个模块和服务使用显式密钥。此外,这里是服务帐户最佳实践的链接
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句