【问题标题】:How to use API Keys stored in Google Firebase Cloud Functions如何使用存储在 Google Firebase Cloud Functions 中的 API 密钥
【发布时间】:2022-01-27 02:50:01
【问题描述】:

我正在尝试在托管在 Google Firebase 上的 react 网站中使用 MailChimp API。我正在尝试使用云功能和环境配置来存储我的 API 密钥。但是,我并不完全确定在设置这些配置变量后如何访问它们。这些变量是在我的整个 React 应用程序中设为全局变量,还是我需要以某种方式导入它们?

我正在尝试遵循此处列出的文档:https://firebase.google.com/docs/functions/config-env

这是我的文件结构:

【问题讨论】:

  • 嗨,迈克尔。你在这方面有什么进展吗?我试图在下面提供答案。你有没有机会检查一下,这有意义吗?如果我的回答有用,请点击它左侧的点赞按钮 (▲)。如果它回答了您的问题,请单击复选标记 (✓) 接受它。这样其他人就知道你得到了(足够的)帮助

标签: javascript reactjs firebase google-cloud-functions environment-variables


【解决方案1】:

API 密钥仅在已部署的函数中可用,在 React 应用中不可用。你可以从你的 react 应用调用一个函数,然后调用 MailChimp API。这使您的 API 密钥远离客户端代码,从而确保其安全。

如文档所述,您在终端中使用 CLI 设置 API 密钥

firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

然后您可以通过调用在 firebase 函数中使用它们

const apiKey = functions.config().someservice.key

【讨论】:

    【解决方案2】:

    Firebase 可以使用 Google Cloud Platform Services,您可以将 GCP Secret Manager 集成到您的函数中。 Google Secret Manager 是一个完全托管、安全且方便的存储系统,用于存储此类机密。

    开发人员历来利用环境变量或文件系统来管理 Cloud Functions 中的机密。这主要是因为与 Secret Manager 集成需要开发人员编写自定义代码……直到现在。使用此服务,您可以存储原始密钥(这些将被加密)并由您的代码函数检索,这带来的好处是您可以通过Cloud IAM 和服务帐户限制访问。 这也可以帮助您定义项目的哪些成员或哪些服务帐户可以访问 API 密钥(秘密) 通过将 access permissions 分配给机密,可以配置对机密的权限,即使开发人员也无法看到生产环境密钥,但允许函数获取机密(因为与您的函数关联的服务帐户可以读取机密)。

    其他好处包括:

    • 零代码更改。已经通过以下方式使用秘密的云功能 简单地与源上传捆绑的环境变量或文件 在部署期间需要一个额外的标志。云功能 服务在运行时解析并注入秘密和明文 值仅在进程内部可见。
    • 轻松的环境分离。使用相同的代码库很容易 跨多个环境,例如 dev、staging 和 prod,因为 秘密与代码分离,并在运行时解析。
    • 支持 12 要素应用模式。因为可以注入秘密 在运行时导入环境变量,原生集成 支持 12 因素模式,同时提供更强的安全性 保证。
    • 集中式秘密存储、访问和审核。利用秘密 Manager 作为集中式机密管理解决方案,可轻松实现 访问控制、审核和访问日志的管理。

    在这个文档中你可以找到一个code example在JS中关于如何使用GCP Secret Manager。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-15
      • 2019-12-30
      • 2021-06-30
      • 2018-01-14
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      相关资源
      最近更新 更多