管理存储帐户访问密钥

当你创建存储帐户时,Azure 会为该帐户生成两个 512 位存储帐户访问密钥。 这些密钥可用于通过共享密钥授权来授予对你存储帐户中数据的访问权限。

Azure 建议使用 Azure 密钥保管库来管理访问密钥,并且定期轮换和重新生成密钥。 使用 Azure 密钥保管库可以轻松轮换密钥,而无需中断应用程序。 还可以手动轮换密钥。

保护访问密钥

存储帐户访问密钥类似于存储帐户的根密码。 始终要小心保护访问密钥。 使用 Azure 密钥保管库安全地管理和轮换密钥。 避免将访问密钥分发给其他用户、对其进行硬编码或将其以纯文本形式保存在其他人可以访问的任何位置。 如果你认为访问密钥可能已泄露,请轮换密钥。

注意

Azure 建议使用 Azure Active Directory (Azure AD) 而不是使用帐户密钥(共享密钥授权)来为针对 Blob 和队列数据的请求授权。 与共享密钥授权相比,使用 Azure AD 进行授权提供了更高的安全性和易用性。

若要使用 Azure AD 条件访问策略保护 Azure 存储帐户,则必须禁止存储帐户的共享密钥授权。 有关如何禁止共享密钥授权的详细信息,请参阅阻止对 Azure 存储帐户进行共享密钥授权

查看帐户访问密钥

可以使用 Azure 门户、PowerShell 或 Azure CLI 查看和复制帐户访问密钥。 Azure 门户还为你的存储帐户提供了一个可供复制的连接字符串。

若要从 Azure 门户查看和复制存储帐户访问密钥或连接字符串,请执行以下操作:

  1. Azure 门户中转到自己的存储帐户。

  2. 在“安全性 + 网络”下,选择“访问密钥” 。 此时会显示帐户访问密钥,以及每个密钥的完整连接字符串。

  3. 选择“显示密钥”,即可显示访问密钥和连接字符串,以及允许按钮复制值。

  4. 在“key1”下找到“密钥”的值。 选择“复制”按钮以复制帐户密钥。

  5. 或者,可以复制整个连接字符串。 在“key1”下,找到“连接字符串”值。 选择“复制”按钮以复制“连接字符串”。

    显示如何在 Azure 门户中查看访问密钥的屏幕截图

可以使用这两个密钥中的任何一个来访问 Azure 存储,但通常情况下,最好使用第一个密钥,并保留第二个密钥在轮换密钥时使用。

若要查看或读取帐户的访问密钥,用户必须是服务管理员,或者分配到包含“Microsoft.Storage/storageAccounts/listkeys/action”的 Azure 角色。 包含此操作的 Azure 内置角色有“所有者”、“贡献者”和“存储帐户密钥操作员服务角色”等 。 有关服务管理员角色的详细信息,请参阅经典订阅管理员角色、Azure 角色和 Azure AD 角色。 若要详细了解 Azure 存储的内置角色,请参阅 Azure RBAC 的 Azure 内置角色中的“存储”部分。

使用 Azure 密钥保管库管理访问密钥

Azure 建议使用 Azure 密钥保管库来管理和轮换访问密钥。 应用程序可以安全地访问密钥保管库中的密钥,这样就可以避免使用应用程序代码来存储密钥。 有关使用密钥保管库进行密钥管理的详细信息,请参阅以下文章:

手动轮换访问密钥

Azure 建议定期轮换访问密钥,以帮助保护存储帐户的安全。 如果可能,请使用 Azure 密钥保管库管理访问密钥。 如果不使用密钥保管库,将需要手动轮换密钥。

系统会分配两个访问密钥,以便可以轮换密钥。 拥有两个密钥可确保应用程序在整个轮换过程中能够持续访问 Azure 存储。

警告

重新生成访问密钥可能会影响依赖于存储帐户密钥的所有应用程序或 Azure 服务。 使用帐户密钥访问存储帐户的任何客户端必须更新为使用新密钥,其中包括媒体服务、云、桌面和移动应用程序,以及适用于 Azure 存储的图形用户界面应用程序,例如 Azure存储资源管理器

如果计划手动轮换访问密钥,Azure 建议设置密钥过期策略。 有关详细信息,请参阅创建密钥过期策略

创建密钥过期策略后,可以使用 Azure Policy 监视存储帐户的密钥是否已在建议的时间间隔内轮换。 有关详细信息,请参阅检查是否存在密钥过期策略冲突

在 Azure 门户中轮换存储帐户访问密钥:

  1. 更新应用程序代码中的连接字符串以引用存储帐户的辅助访问密钥。
  2. Azure 门户中导航到存储帐户。
  3. 在“安全性 + 网络”下,选择“访问密钥” 。
  4. 若要为存储帐户重新生成主访问密钥,请选择主访问密钥旁边的“重新生成”按钮。
  5. 更新代码中的连接字符串以引用新的主访问密钥。
  6. 以相同方式重新生成辅助访问密钥。

注意

Azure 建议同一时间在所有应用程序中只使用一个密钥。 如果在某些地方使用密钥 1 并在其他地方使用密钥 2,则无法在没有部分应用程序失去访问的情况下轮转密钥。

若要轮换帐户的访问密钥,用户必须是服务管理员,或者分配到包含“Microsoft.Storage/storageAccounts/regeneratekey/action”的 Azure 角色。 包含此操作的 Azure 内置角色有“所有者”、“贡献者”和“存储帐户密钥操作员服务角色”等 。 有关服务管理员角色的详细信息,请参阅经典订阅管理员角色、Azure 角色和 Azure AD 角色。 若要详细了解 Azure 存储的 Azure 内置角色,请参阅 Azure RBAC 的 Azure 内置角色中的“存储”部分。

创建密钥过期策略

密钥过期策略使你能够设置帐户访问密钥轮换提醒。 如果已超过指定的时间间隔,但尚未轮换密钥,则会显示提醒。 创建密钥过期策略后,可以监视存储帐户的合规性,以确保定期轮换帐户访问密钥。

注意

你可能需要至少轮换一次帐户访问密钥,然后才能创建密钥过期策略。

通过以下步骤在 Azure 门户中创建密钥过期策略:

  1. Azure 门户中转到自己的存储帐户。
  2. 在“安全性 + 网络”下,选择“访问密钥” 。 此时会显示帐户访问密钥,以及每个密钥的完整连接字符串。
  3. 选择“设置轮换提醒”按钮。 如果“设置轮换提醒”按钮灰显,则需要轮换每个密钥。 按照手动轮换访问密钥中所述的步骤轮换密钥。
  4. 在“设置提醒以轮换访问密钥”中,选择“启用密钥轮换提醒”复选框,并设置提醒的频率。
  5. 选择“保存”。

屏幕截图:显示如何在 Azure 门户中创建密钥过期策略

检查是否存在密钥过期策略冲突

可以使用 Azure Policy 监视存储帐户,以确保帐户访问密钥已在建议时段内轮换。 Azure 存储提供了一种内置策略,用于确保存储帐户访问密钥不会过期。 有关内置策略的详细信息,请参阅内置策略定义列表中的“存储帐户密钥不应过期”。

为资源范围分配内置策略

按照以下步骤在 Azure 门户将内置策略分配到适当的范围:

  1. 在 Azure 门户中,搜索 Policy 以显示 Azure Policy 仪表板。

  2. 在“创作”部分,选择“分配” 。

  3. 选择“分配策略”。

  4. 在“分配策略”页的“基本信息”选项卡上,在“范围”部分指定策略分配的范围 。 选择“更多”按钮以选择订阅和可选资源组。

  5. 对于“策略定义”字段,选择“更多”按钮,然后在“搜索”字段输入“存储帐户密钥” 。 选择名为“存储帐户密钥不应过期”的策略定义。

    屏幕截图显示了如何选择内置策略以监视存储帐户的密钥轮换间隔

  6. 选择“查看 + 创建”以将策略定义分配到指定范围。

    显示如何创建策略分配的屏幕截图

监视密钥过期策略的合规性

若要监视存储帐户是否符合密钥过期策略,请执行以下步骤:

  1. 在 Azure Policy 仪表板上,找到在策略分配中指定的范围内的内置策略定义。 可以在“搜索”框中搜索“存储帐户密钥不应过期”,筛选内置策略。

  2. 选择具有所需范围的策略名称。

  3. 在内置策略的“策略分配”页上,选择“查看合规性” 。 指定的订阅和资源组中不符合策略要求的任何存储帐户都将显示在合规性报告中。

    显示如何查看密钥过期内置策略的合规性报告的屏幕截图

若要使存储帐户合规,请轮换帐户访问密钥。

后续步骤