管理存储帐户访问密钥的生命周期
当你创建存储帐户时,Azure 会为该帐户生成两个 512 位存储帐户访问密钥。 这些密钥可用于通过共享密钥授权或通过使用共享密钥签名的 SAS 令牌来授权访问存储帐户中的数据。
Microsoft 建议使用 Azure 密钥保管库来管理访问密钥,并且定期轮换和重新生成密钥。 使用 Azure 密钥保管库可以轻松轮换密钥,而无需中断应用程序。 还可以手动轮换密钥。
保护访问密钥
存储帐户访问密钥提供对存储帐户配置以及数据的完全访问权限。 始终要小心保护访问密钥。 使用 Azure 密钥保管库安全地管理和轮换密钥。 通过获取共享密钥,用户可以具有对存储账户配置及其数据的完全访问权限。 应仔细限制和监视对共享密钥的访问。 在无法使用基于 Microsoft Entra ID 的授权的情况下,请使用访问权限范围有限的共享访问签名 (SAS) 令牌。 避免对访问密钥进行硬编码,或将其以纯文本形式保存在其他人可以访问的任何位置。 如果认为访问密钥可能已被盗用,请轮换密钥。
Microsoft 建议使用 Microsoft Entra ID 而不是使用帐户密钥(共享密钥授权)来为针对 Blob、队列和表数据的请求授权。 与共享密钥授权相比,使用 Microsoft Entra ID 进行授权提供了更高的安全性和易用性。 对于服务器消息块 (SMB) Azure 文件共享,Microsoft 建议使用本地 Active Directory 域服务 (AD DS) 集成或 Microsoft Entra Kerberos 身份验证。
若要防止用户使用共享密钥访问存储帐户中的数据,可以对存储帐户禁用共享密钥授权。 作为安全最佳做法,建议将对数据的精细访问限制为具有所选的最小特权。 应将基于 Microsoft Entra ID 的授权用于支持 OAuth 的方案。 应使用 Kerberos 或 SMTP 通过 SMB 用于 Azure 文件存储。 对于通过 REST 进行的 Azure 文件存储,可以使用 SAS 令牌。 如果不需要共享密钥访问权限以防止意外使用,则应禁用共享密钥访问。
若要使用 Microsoft Entra 条件访问策略保护 Azure 存储帐户,必须禁止对存储帐户进行共享密钥授权。
如果你已禁用共享密钥访问,并且诊断日志中报告了共享密钥授权,则表示正在使用受信任的访问来访问存储。
查看帐户访问密钥
可以使用 Azure 门户、PowerShell 或 Azure CLI 查看和复制帐户访问密钥。 Azure 门户还为你的存储帐户提供了一个可供复制的连接字符串。
若要从 Azure 门户查看和复制存储帐户访问密钥或连接字符串,请执行以下操作:
在 Azure 门户中转到自己的存储帐户。
在“安全性 + 网络”下,选择“访问密钥” 。 此时会显示帐户访问密钥,以及每个密钥的完整连接字符串。
选择“显示密钥”,即可显示访问密钥和连接字符串,以及允许按钮复制值。
在“key1”下找到“密钥”的值。 选择“复制”按钮以复制帐户密钥。
或者,可以复制整个连接字符串。 在 key1 下,找到“连接字符串”值。 选择“复制”按钮以复制“连接字符串”。
可以使用这两个密钥中的任何一个来访问 Azure 存储,但通常情况下,最好使用第一个密钥,并保留第二个密钥在轮换密钥时使用。
若要查看或读取帐户的访问密钥,用户必须是服务管理员,或者必须被分配一个包含 Microsoft.Storage/storageAccounts/listkeys/action 的 Azure 角色。 包括此操作的一些 Azure 内置角色是“所有者”、“参与者”和“存储帐户密钥操作员服务角色”。
使用 Azure 密钥保管库管理访问密钥
Microsoft 建议使用 Azure 密钥保管库来管理和轮换访问密钥。 应用程序可以安全地访问密钥保管库中的密钥,这样就可以避免使用应用程序代码来存储密钥。
手动轮换访问密钥
Microsoft 建议定期轮换访问密钥,以帮助保护存储帐户的安全。 如果可能,请使用 Azure 密钥保管库管理访问密钥。 如果不使用密钥保管库,将需要手动轮换密钥。
系统会分配两个访问密钥,以便可以轮换密钥。 拥有两个密钥可确保应用程序在整个轮换过程中能够持续访问 Azure 存储。
重新生成访问密钥可能会影响依赖于存储帐户密钥的所有应用程序或 Azure 服务。 使用帐户密钥访问存储帐户的任何客户端必须更新为使用新密钥,其中包括媒体服务、云、桌面和移动应用程序,以及适用于 Azure 存储的图形用户界面应用程序,例如 Azure存储资源管理器。
此外,轮换或重新生成访问密钥会撤销基于该密钥生成的共享访问签名 (SAS)。 轮换访问密钥后,必须重新生成帐户和服务 SAS 令牌,以避免应用程序发生中断。 请注意,用户委派 SAS 令牌受 Microsoft Entra 凭据的保护,并且不受密钥轮换的影响。
如果计划手动轮换访问密钥,Microsoft 建议设置密钥过期策略。
创建密钥过期策略后,可以使用 Azure Policy 监视存储帐户的密钥是否已在建议的时间间隔内轮换。
若要在 Azure 门户中轮换存储帐户访问密钥,请执行以下操作:
- 更新应用程序代码中的连接字符串以引用存储帐户的辅助访问密钥。
- 在 Azure 门户中导航到存储帐户。
- 在“安全性 + 网络”下,选择“访问密钥” 。
- 若要为存储帐户重新生成主访问密钥,请选择主访问密钥旁边的“重新生成”按钮。
- 更新代码中的连接字符串以引用新的主访问密钥。
- 以相同方式重新生成辅助访问密钥。
注意
Microsoft 建议同一时间在所有应用程序中只使用一个密钥。 如果在某些地方使用密钥 1 并在其他地方使用密钥 2,则无法在没有部分应用程序失去访问的情况下轮转密钥。
若要轮换帐户的访问密钥,用户必须是服务管理员,或者分配到包含“Microsoft.Storage/storageAccounts/regeneratekey/action”的 Azure 角色。 包括此操作的一些 Azure 内置角色是“所有者”、“参与者”和“存储帐户密钥操作员服务角色”。
创建密钥过期策略
密钥过期策略使你能够设置帐户访问密钥轮换提醒。 如果已超过指定的时间间隔,但尚未轮换密钥,则会显示提醒。 创建密钥过期策略后,可以监视存储帐户的合规性,以确保定期轮换帐户访问密钥。
通过以下步骤在 Azure 门户中创建密钥过期策略:
在 Azure 门户中转到自己的存储帐户。
在“安全性 + 网络”下,选择“访问密钥” 。 此时会显示帐户访问密钥,以及每个密钥的完整连接字符串。
选择“设置轮换提醒”按钮。 如果“设置轮换提醒”按钮灰显,则需要轮换每个密钥。 按照手动轮换访问密钥中所述的步骤轮换密钥。
在“设置提醒以轮换访问密钥”中,选中“启用密钥轮换提醒”复选框,并为提醒设置频率。
选择“保存”。
检查是否存在密钥过期策略冲突
可以使用 Azure Policy 监视存储帐户,以确保帐户访问密钥已在建议时段内轮换。 Azure 存储提供了一种内置策略,用于确保存储帐户访问密钥不会过期。
为资源范围分配内置策略
按照以下步骤在 Azure 门户将内置策略分配到适当的范围:
在 Azure 门户中,搜索 Policy 以显示 Azure Policy 仪表板。
在“创作”部分,选择“分配” 。
选择“分配策略”。
在“分配策略”页的“基本信息”选项卡上,在“范围”部分指定策略分配的范围 。 选择“更多”按钮以选择订阅和可选资源组。
对于“策略定义”字段,选择“更多”按钮,然后在“搜索”字段输入“存储帐户密钥” 。 选择名为“存储帐户密钥不应过期”的策略定义。
选择“查看 + 创建”以将策略定义分配到指定范围。
监视密钥过期策略的合规性
若要监视存储帐户是否符合密钥过期策略,请执行以下步骤:
在 Azure Policy 仪表板上,找到在策略分配中指定的范围内的内置策略定义。 可在“搜索”框中搜索“存储帐户密钥不应过期”,以筛选内置策略。
选择具有所需范围的策略名称。
在内置策略的“策略分配”页上,选择“查看合规性” 。 指定的订阅和资源组中不符合策略要求的任何存储帐户都将显示在合规性报告中。 若要使存储帐户合规,请轮换帐户访问密钥。