Azure 数据安全与加密最佳做法

本文介绍了针对数据安全和加密的最佳做法。

最佳做法以观点的共识以及 Azure 平台功能和特性集为基础。 观点和技术将随着时间改变,本文会定期更新以反映这些更改。

保护数据

为了帮助保护云中的数据,需要考虑数据可能出现的状态以及可用于该状态的控件。 Azure 数据安全与加密的最佳做法与以下数据状态相关:

  • 静态:包括物理媒体(磁盘或光盘)上以静态方式存在的所有信息存储对象、容器和类型。
  • 传输中:在各组件、位置或程序间传输数据时,数据处于“传输中”状态。 例如通过网络、通过服务总线(从本地到云,反之亦然,包括诸如 ExpressRoute 的混合连接)进行传输,或在输入/输出过程。

选择密钥管理解决方案

保护密钥对保护云中的数据至关重要。

Azure Key Vault 可帮助保护云应用程序和服务使用的加密密钥和机密。 密钥保管库简化了密钥管理过程,可让你控制用于访问和加密数据的密钥。 开发人员可以在几分钟内创建用于开发和测试的密钥,然后将其迁移到生产密钥。 安全管理员可以根据需要授予(和吊销)密钥权限。

可以使用 Key Vault 创建多个安全容器(称为保管库)。 这些保管库受 HSM 支持。 保管库可以集中存储应用程序机密,降低安全信息意外丢失的可能性。 Key vault 还控制并记录外界对其所存储内容的访问。 Azure Key Vault 负责处理传输层安全性 (TLS) 证书的请求和续订事宜。 它为可靠的证书生命周期管理解决方案提供相关功能。

Azure Key Vault 旨在支持应用程序密钥和机密。 Key Vault 不应用于存储用户密码。

以下是使用 Key Vaul 的安全最佳做法。

最佳做法:向特定范围内的用户、组和应用程序授予访问权限。
详细信息:使用 Azure RBAC 预定义角色。 例如,要向用户授予管理密钥保管库的访问权限,需要将预定义的角色密钥保管库参与者分配给位于特定范围内的此用户。 在此情况下,该范围可以是订阅、资源组,或只是特定的密钥保管库。 如果预定义角色不符合需求,可以定义自己的角色

最佳做法:控制用户有权访问的内容。
详细信息:可通过以下两个独立接口来控制对密钥保管库的访问:管理平面和数据平面。 管理平面访问控制与数据平面访问控制相互独立。

使用 Azure RBAC 控制用户有权访问的内容。 例如,如果想要授予应用程序使用密钥保管库中的密钥的访问权限,只需使用密钥保管库访问策略授予数据平面访问权限,而无需授予此应用程序的管理平面访问权限。 相反,如果希望用户能够读取保管库属性和标记,但不让其具有任何访问密钥、机密或证书的权限,则可以使用 Azure RBAC 向此用户授予“读取”访问权限,而无需授予数据平面访问权限。

最佳做法:将证书存储在 Key Vault 中。 证书的价值很高。 如果落入他人之手,应用程序或数据的安全性可能会受到损害。
详细信息:Azure 资源管理器可以在部署 VM 时,将存储在 Azure Key Vault 中的证书安全地部署到 Azure VM。 通过为密钥保管库设置适当的访问策略,还可以控制有权访问证书的人员。 另一个好处是,可以在 Azure Key Vault 中的一个位置管理所有证书。 有关详细信息,请参阅将证书从客户托管的 Key Vault 部署到 VM

最佳做法:确保可以恢复删除的 Key Vault 或 Key Vault 对象。
详细信息:删除 Key Vault 或 Key Vault 对象可以是无意或恶意的。 启用 Key Vault 的软删除和清除保护功能,尤其是对用于加密静态数据的密钥。 删除这些密钥相当于丢失数据,因此可以在需要时恢复已删除的保管库和保管库对象。 定期练习 Key Vault 恢复操作。

备注

如果用户具有密钥保管库管理平面的参与者权限 (Azure RBAC),则该用户可以通过设置密钥保管库访问策略来授予自己对数据平面的访问权限。 建议严格控制具有密钥保管库“参与者”权限的人员,以确保只有获得授权的人员可以访问和管理密钥保管库、密钥、机密和证书。

使用安全工作站进行管理

备注

订阅管理员或所有者应使用安全访问工作站或特权访问工作站。

因为绝大多数的攻击以最终用户为目标,所以终结点将成为主要攻击点之一。 入侵终结点的攻击者可以使用用户的凭据来访问组织的数据。 大多数终结点攻击都利用了用户是其本地工作站的管理员这一事实。

最佳做法:使用安全管理工作站来保护敏感帐户、任务和数据。
详细信息:使用 特权访问工作站来减小工作站的受攻击面。 这些安全管理工作站可帮助减轻其中一些攻击,以确保数据更为安全。

最佳做法:确保终结点受保护。
详细信息:在用于使用数据的所有设备上强制实施安全策略(无论数据位于云中还是本地)。

保护静止的数据

静态数据加密是实现数据隐私性、符合性和数据主权的必要措施。

最佳做法:使用磁盘加密来帮助保护数据。
详细信息:使用 Azure 磁盘加密。 它使 IT 管理员能够加密 Windows 和 Linux IaaS VM 磁盘。 磁盘加密利用符合行业标准的 Windows BitLocker 功能和 Linux dm-crypt 功能为 OS 和数据磁盘提供卷加密。

Azure 存储和 Azure SQL 数据库默认对静态数据进行加密,并且许多服务都将加密作为选项提供。 可以使用 Azure Key Vault 来持续控制用于访问和加密数据的密钥。 有关详细信息,请参阅 Azure 资源提供程序加密模型支持

最佳做法:使用加密来帮助降低与未经授权访问数据相关的风险。
详细信息:在将敏感数据写入驱动器之前先将驱动器加密。

未实施数据加密的组织面临的数据保密性问题风险更大。 例如,未经授权的用户或恶意用户可能会窃取已入侵帐户中的数据,或者未经授权访问以明文格式编码的数据。 公司还必须证明,为了遵守行业法规,他们在不断作出相应努力并使用正确的安全控件来增强其数据安全性。

保护传输中的数据

保护传输中的数据应该是数据保护策略中不可或缺的部分。 由于数据在许多位置间来回移动,因此,通常建议始终使用 SSL/TLS 协议在不同位置间交换数据。 在某些情况下,可以使用 VPN 隔离本地与云基础结构之间的整个信道。

对于在本地基础结构与 Azure 之间移动的数据,请考虑适当的防护措施,例如 HTTPS 或 VPN。 通过公共 Internet 在 Azure 虚拟网络和本地位置之间发送加密流量时,请使用 Azure VPN 网关

以下是特定于使用 Azure VPN 网关、SSL/TLS 和 HTTPS 的最佳做法。

最佳做法:从位于本地的多个工作站安全访问 Azure 虚拟网络。
详细信息:使用 站点到站点 VPN

最佳做法:从位于本地的单个工作站安全访问 Azure 虚拟网络。
详细信息:使用 点到站点 VPN

最佳做法:通过专用高速 WAN 链路移动大型数据集。
详细信息:使用 ExpressRoute。 如果选择使用 ExpressRoute,则还可以使用 SSL/TLS 或其他协议在应用程序级别加密数据,以提供额外的保护。

最佳做法:通过 Azure 门户与 Azure 存储交互。
详细信息:所有事务都通过 HTTPS 进行。 也可通过 HTTPS 使用存储 REST APIAzure 存储进行交互。

无法保护传输中数据的组织更容易遭受中间人攻击窃听和会话劫持。 这些攻击可能是获取机密数据访问权限的第一步。

后续步骤

有关通过 Azure 设计、部署和管理云解决方案时可以使用的更多安全最佳做法,请参阅 Azure 安全最佳做法和模式

以下资源提供了有关 Azure 安全性及相关 Microsoft 服务的更多常规信息: