你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何查看、管理和轮换存储帐户访问密钥。 创建存储帐户时,Azure为帐户生成两个 512 位存储帐户访问密钥。 这些密钥可用于通过共享密钥授权或通过使用共享密钥签名的 SAS 令牌来授权访问存储帐户中的数据。
Microsoft建议使用Azure 密钥保管库来管理访问密钥,并定期轮换和重新生成密钥。 使用Azure 密钥保管库可以轻松轮换密钥,而不会中断应用程序。 还可以手动轮换密钥。
重要
为了获得最佳安全性,Microsoft 建议尽可能使用 Microsoft Entra ID 和托管标识来授权针对 blob、队列和表数据的请求。 具有Microsoft Entra ID和托管标识的授权提供优于共享密钥授权的安全性和易用性。 若要了解有关托管标识的详细信息,请参阅 什么是Azure资源的托管标识。 有关如何为 .NET 应用程序启用和使用托管标识的示例,请参阅 使用 .NET 为 Azure 托管应用程序进行 Azure 资源身份验证。
对于托管在Azure外部的资源(例如本地应用程序),可以通过Azure Arc使用托管标识。例如,在启用了Azure Arc的服务器上运行的应用可以使用托管标识连接到Azure服务。 若要了解详细信息,请参阅使用 Azure Arc 启用的服务器对 Azure 资源进行身份验证。
对于使用共享访问签名(SAS)的方案,Microsoft建议使用用户委派 SAS。 用户委派 SAS 是通过 Microsoft Entra 凭据而不是帐户密钥来保护的。 若要了解共享访问签名,请参阅使用共享访问签名授予有限的数据访问权限。 要了解如何使用 .NET 创建和使用针对 Blob 的用户委派 SAS 的示例,请参阅 创建一个 .NET 中用于 Blob 的用户委派 SAS。
保护访问密钥
存储帐户访问密钥提供对存储帐户数据的完全访问权限,以及生成 SAS 令牌的权限。 始终要小心保护访问密钥。 使用Azure 密钥保管库安全地管理和轮换密钥。 对共享密钥的访问权限会授予用户对存储帐户数据的完全访问权限。 应仔细限制和监视对共享密钥的访问。 在无法使用基于Microsoft Entra ID授权的情况下,使用具有有限访问权限的用户委派 SAS 令牌。 避免对访问密钥进行硬编码,或将其以纯文本形式保存在其他人可以访问的任何位置。 如果认为访问密钥可能已被盗用,请轮换密钥。
重要
若要防止用户使用共享密钥访问存储帐户中的数据,可以对存储帐户禁用共享密钥授权。 作为安全最佳做法,建议将对数据的精细访问限制为具有所选的最小特权。 应在支持 OAuth 的方案中使用基于 Microsoft Entra ID 的托管标识进行授权。 Kerberos 应该用于通过 SMB 访问 Azure 文件。 对于 Azure 文件存储 通过 REST,可以使用 SAS 令牌。 如果不需要共享密钥访问权限以防止意外使用,则应禁用共享密钥访问。 有关详细信息,请参阅 Azure 存储 帐户的Prevent 共享密钥授权。
若要保护具有Microsoft Entra 条件访问策略的Azure 存储帐户,必须禁止对存储帐户进行共享密钥授权。
如果你已禁用共享密钥访问,并且诊断日志中报告了共享密钥授权,则表示正在使用受信任的访问来访问存储。 有关更多详细信息,请参阅对 Microsoft Entra 租户中注册的资源的受信任访问。
查看帐户访问密钥
可以使用 Azure 门户、PowerShell 或Azure CLI查看和复制帐户访问密钥。 Azure 门户还为你的存储帐户提供了一个可供复制的连接字符串。
若要从 Azure 门户查看和复制存储帐户访问密钥或连接字符串,请执行以下步骤:
在 Azure 门户中,转到存储帐户。
在资源菜单中的“安全性 + 网络”下,选择“访问密钥”。 将显示您的帐户访问密钥,以及每个密钥的完整连接字符串。
选择“显示密钥”,即可显示访问密钥和连接字符串,以及允许按钮复制值。
在“key1”下找到“密钥”的值。 选择“复制”按钮以复制帐户密钥。
或者,您可以复制整个连接字符串。 在“key1”下,找到“连接字符串”值。 选择 Copy 按钮,复制连接字符串。
可以使用这两个密钥中的任一项来访问Azure 存储,但通常最好使用第一个密钥,并在轮换密钥时保留第二个密钥的使用。
若要查看或读取帐户的访问密钥,用户必须是服务管理员 (Service Administrator),或者必须被分配一个包含 Microsoft.Storage/storageAccounts/listkeys/action 的 Azure 角色。 包括此操作的一些 Azure 的内置角色是Owner、Contributor和Storage 帐户密钥操作员服务角色。 有关服务管理员角色的详细信息,请参阅 Azure 角色、Microsoft Entra角色和经典订阅管理员角色。 有关 Azure 存储 内置角色的详细信息,请参阅 Azure RBAC 中的 Azure 内置角色 的 Storage 部分。
使用Azure 密钥保管库管理访问密钥
Microsoft建议使用Microsoft Entra ID和托管标识来授权访问Azure 存储。 如果必须使用访问密钥,请将它们存储在Azure 密钥保管库中并定期轮换它们。 有关详细信息,请参阅以下文章:
授权访问 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 的内置角色是Owner、Contributor和Storage 帐户密钥操作员服务角色。 有关服务管理员角色的详细信息,请参阅 Azure 角色、Microsoft Entra角色和经典订阅管理员角色。 若要详细了解 Azure 存储的 Azure 内置角色,请参阅 Azure RBAC 的 Azure 内置角色中的“存储”部分。
创建密钥过期策略
密钥过期策略使你能够设置帐户访问密钥轮换提醒。 如果已超过指定的时间间隔,但尚未轮换密钥,则会显示提醒。 创建密钥过期策略后,可以监视存储帐户的合规性,以确保定期轮换帐户访问密钥。
注意
你可能需要至少轮换一次帐户访问密钥,然后才能创建密钥过期策略。
若要在Azure门户中创建密钥过期策略,请执行以下操作:
- 在 Azure 门户中,转到存储帐户。
- 在“安全性 + 网络”下,选择“访问密钥” 。 将显示您的帐户访问密钥,以及每个密钥的完整连接字符串。
- 选择“设置轮换提醒”按钮。 如果“设置轮换提醒”按钮灰显,则需要轮换每个密钥。 按照手动轮换访问密钥中所述的步骤轮换密钥。
- 在“设置提醒以轮换访问密钥”中,选择“启用密钥轮换提醒”复选框,并设置提醒的频率。
- 选择“保存”。
检查是否存在密钥过期策略冲突
可以使用Azure Policy监视存储帐户,以确保在建议的时间段内轮换帐户访问密钥。 Azure 存储提供了一个内置策略,用于确保存储帐户访问密钥未过期。 有关内置策略的详细信息,请参阅内置策略定义列表中的“存储帐户密钥不应过期”。
为资源范围分配内置策略
按照以下步骤将内置策略分配到Azure门户中的相应范围:
在Azure门户中,搜索 Policy 以显示Azure Policy仪表板。
在“创作”部分,选择“分配” 。
选择“分配策略”。
在“分配策略”页的“基本信息”选项卡上,在“范围”部分指定策略分配的范围 。 选择“更多”按钮以选择订阅和可选资源组。
对于“策略定义”字段,选择“更多”按钮,然后在“搜索”字段输入“存储帐户密钥” 。 选择名为“存储帐户密钥不应过期”的策略定义。
选择“查看 + 创建”以将策略定义分配到指定范围。
监视密钥过期策略的合规性
若要监视存储帐户是否符合密钥过期策略,请执行以下步骤:
在Azure Policy仪表板上,找到策略分配中指定的范围的内置策略定义。 可以在“搜索”框中搜索“存储帐户密钥不应过期”,筛选内置策略。
选择具有所需范围的策略名称。
在内置策略的“策略分配”页上,选择“查看合规性” 。 指定的订阅和资源组中不符合策略要求的任何存储帐户都将显示在合规性报告中。
若要使存储帐户合规,请轮换帐户访问密钥。