HMAC 密钥

本页面讨论基于哈希的消息身份验证代码 (HMAC) 密钥,您可以使用该密钥验证针对 Cloud Storage 的请求。如需阅读有关创建和管理服务帐号 HMAC 密钥的指南,请参阅管理服务帐号的 HMAC 密钥

概览

HMAC 密钥是一种凭据,可以与 Cloud Storage 中的服务帐号或用户帐号相关联。您可以使用 HMAC 密钥创建签名,这些签名随后会包含在针对 Cloud Storage 的请求中。签名表明某个给定请求是由用户帐号或服务帐号授权的。

HMAC 密钥有两个主要组成部分:访问权限 ID 和密文。访问权限 ID 和密文唯一地标识 HMAC 密钥,但密文是更敏感的信息,因为它会用来创建签名。

HMAC 密钥在以下情况下很有用:

  • 您想要在其他云存储提供程序与 Cloud Storage 之间移动数据,因为借助 HMAC 密钥,您可以重复使用现有代码访问 Cloud Storage。

存储密文

为服务帐号创建 HMAC 密钥时,系统会向您提供一次密钥的密文。您必须安全地存储密文以及关联的访问权限 ID。如果您丢失了密文,则您或 Google 无法找回密文,您需要为服务帐号创建新的 HMAC 密钥才能继续对请求进行身份验证。

为用户帐号创建 HMAC 密钥时,您可以通过 Google Cloud Console 查看该密钥的密文。如需执行此操作,您必须使用用户帐号登录到 Cloud Console。您可以在 Cloud Storage 的互操作标签页的设置菜单中找到与用户帐号关联的密文。

限制

  • HMAC 密钥只能用于向 XML API 发出请求,而不能用于向 JSON API 发出请求。

  • 每个服务帐号最多可以有 5 个 HMAC 密钥。删除的密钥不计入此限额。

从用户帐号 HMAC 密钥进行迁移

通常情况下,将 HMAC 密钥与服务帐号相关联比与用户帐号相关联更合适,尤其是对于生产工作负载:

  • 借助服务帐号,您可以更好地实施管理监控措施,并消除个人用户所拥有帐号的安全和隐私隐患。

  • 服务帐号有助于降低因依赖用户帐号而导致服务中断的风险,例如当用户帐号因为用户离开项目或公司而停用时。

如果您目前将 HMAC 密钥与用户帐号搭配使用,但想要迁移到服务帐号,请注意以下几点:

  • 您的项目必须拥有服务帐号,并且拥有与其相关联的 HMAC 密钥

  • 服务帐号必须获得在 Cloud Storage 中执行操作所需的权限

    Storage Object Admin 角色拥有使用对象的广泛权限,但您可能需要使用单独的服务帐号执行不同的操作。例如,您可能需要一个用于读取的服务帐号(该帐号将具有 Storage Object Viewer 角色),以及另一个用于写入的服务帐号(该帐号将具有 Storage Object Creator 角色)。

  • 您应进行测试,以确保服务帐号的行为符合预期,然后再将任何更新推送到生产环境。

  • 在您的生产工作改用服务帐号 HMAC 密钥后,您应检查以下 Stackdriver 指标,以验证系统不再使用与用户帐号相关联的 HMAC 密钥:

    指标 说明
    storage.googleapis.com/authn/authentication_count HMAC 密钥已用于对请求进行身份验证的次数。

    您可以设置以下标签来跟踪迁移期间仍在使用的用户帐号密钥:

    • access_id:标识发出请求的访问密钥。您还可以在密钥轮替期间使用 access_id 来观察流量从一个密钥移动到另一个密钥的情况。

    • authentication_method:标识密钥是用户帐号密钥还是服务帐号密钥。

  • 验证系统不再使用用户帐号 HMAP 密钥后,您应删除这些 HMAC 密钥。这样做可以降低数据遭受不当访问的风险。

  • 如果用户帐号不再用于访问 Cloud Storage 资源,请撤消该帐号对 Cloud Storage 所具有的任何访问权限。

后续步骤