API 密钥是用于在与 Firebase 和 Google 服务交互时将请求路由到您的 Firebase 项目的唯一字符串。本页介绍了有关 API 密钥的基本信息,以及使用和管理 Firebase 应用的 API 密钥的最佳实践。
有关 API 密钥和 Firebase 的常规信息
Firebase 的 API 密钥与典型的 API 密钥不同
与 API 密钥的典型用法不同,Firebase 服务的 API 密钥不能用来控制对后端资源的访问权限;此项控制只能通过 Firebase 安全规则(用于控制哪些用户可以访问资源)和 App Check(用于控制哪些应用可以访问资源)来实现。
通常,您需要严密保护 API 密钥(例如,使用保险柜服务或将密钥设置为环境变量);而 Firebase 服务的 API 密钥则可以包含在代码中或签入的配置文件中。
虽然 Firebase 服务的 API 密钥可以安全地包含在代码中,但在一些特定的情况下,您仍应对 API 密钥施加限制;例如,在使用 Firebase ML 时、将 Firebase Authentication 与电子邮件地址/密码登录方法结合使用时,或使用计费 Google Cloud API 时。您可以在本页面稍后部分中详细了解此类情况。
创建 API 密钥
一个 Firebase 项目可以有多个 API 密钥,但每个 API 密钥只能与一个 Firebase 项目关联。
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
您的应用调用 Firebase API 时,会在 Firebase 配置文件/对象中自动查找项目的 API 密钥。不过,您也可以使用环境变量等其他机制设置 API 密钥。
对 API 密钥施加限制(推荐)
虽然没有必要将 Firebase 服务的 API 密钥视为机密,但在某些特定情况下(见下文),您可能需要采取其他措施来防止您项目的 API 密钥遭到滥用。
使用基于密码的身份验证时收紧配额
如果您使用基于密码的 Firebase Authentication 身份验证机制,只要您的 Firebase 项目的数据库或 Cloud Storage 数据受到 Firebase 安全规则的保护,即便有人掌握了您的 API 密钥,也无法访问任何此类数据。但是,他们可以使用您的 API 密钥访问 Firebase 的身份验证端点,并向您的项目发出身份验证请求。
为了降低有人滥用 API 密钥进行暴力破解的可能性,您可以收紧 identitytoolkit.googleapis.com 端点的默认配额,使其满足应用的正常流量预期即可。但请注意,如果您收紧了此配额,当遇到应用用户激增的情况时,可能会收到登录错误,直到您增加配额为止。您可以在 Google Cloud 控制台中更改项目的 API 配额。
针对特定类型的 API 使用单独的受限 API 密钥
虽然用于 Firebase 服务的 API 密钥一般不需要视为机密,但如果这类 API 密钥是用于授予对手动启用 Google Cloud API 的访问权限时,则应采取一些额外的预防措施。
如果您使用的 Google Cloud API(在任何平台上)不是由 Firebase 自动启用(即由您自行启用),则应考虑创建单独的受限 API 密钥以用于这些 API。如果 API 用于收费的 Google Cloud 服务,这一点尤其重要。
例如,如果您在 iOS 上使用 Firebase ML 的 Cloud Vision API,则应单独创建 API 密钥以仅用于访问 Cloud Vision API。
通过为非 Firebase API 使用单独的受限 API 密钥,您可以在必要时轮替或更换密钥,以及为 API 密钥施加额外的限制,同时不影响您使用 Firebase 服务。
展开此部分,了解如何创建 API 特定密钥
以下说明介绍如何为一个名为 Super Service API 的虚构 API 创建单独的受限 API 密钥。