使用 Azure 存储 保护 PaaS 网页和移动应用的最佳实践

本文讨论了一系列关于保护您的平台即服务(PaaS)网页和移动应用的 Azure 存储 安全最佳实践。 Microsoft 从与 Azure 及 Azure 客户的经验中得出了这些最佳实践。

Azure 可以用本地不易实现的方式来部署并使用存储。 有了 Azure 存储,你可以相对轻松地实现高水平的可扩展性和可用性。 Azure 存储 是 Windows 和 Linux Azure 虚拟机 的基础,同时也能支持大型分布式应用。

Azure 存储 提供四项服务:Blob 存储、表存储、队列存储和文件存储。 有关详细信息,请参阅 Microsoft Azure 存储简介

本文将探讨以下最佳做法:

  • 共享访问签名 (SAS)
  • Azure 基于角色的访问控制 (Azure RBAC)
  • 高价值数据的客户端加密
  • 存储服务加密

使用共享访问签名代替了存储帐户密钥

访问控制是关键。 若要帮助控制对 Azure 存储的访问,当创建存储帐户时,Azure 将生成两个 512 位存储帐户密钥 (SAK)。 这种密钥冗余帮助你避免在例行密钥轮换时中断服务。

存储访问密钥属于高优先级秘密,应仅对负责存储访问控制的人员开放。 如果错误的人获得了这些密钥,他们将完全控制存储,并可以替换、删除或添加文件到存储中。 攻击者可能会上传恶意软件及其他类型的内容,可能威胁你的组织或客户。

但你仍然需要一种方法来提供存储中对象的访问权限。 为了提供更细致的访问,可以利用共享访问签名(SAS)。 SAS 允许你在预设时间区间和特定权限下共享存储中的特定对象。 通过共享访问签名,可定义:

  • SAS 有效的时间间隔,包括开始时间和到期时间。
  • SAS 授予的权限。 例如,blob SAS 可能授予用户对 blob 的读取和写入权限,但不是删除权限。
  • Azure 存储接受 SAS 的可选 IP 地址或 IP 地址范围。 例如,你可能指定属于组织的 IP 地址范围。 这一选项为您的SAS提供了另一种安全保障。
  • Azure 存储接受 SAS 所依据的协议。 你可以用这个可选参数来限制使用HTTPS的客户端访问。

通过 SAS 可以用希望的方式共享内容,而无需分配存储帐户密钥。 始终在应用中使用SAS,以安全共享存储资源,同时不泄露存储账户密钥。

有关共享访问签名的更多信息,请参见 使用共享访问签名

使用 Azure 基于角色的访问控制

管理访问的另一种方法是使用 Azure 基于角色的访问控制 (Azure RBAC)。 使用 Azure RBAC 时,可根据了解内容的需要和最低特权安全原则,重点考虑为员工提供所需的准确权限。 权限过多,可能会向攻击者公开帐户。 权限太少意味着员工无法有效地完成其工作。 Azure RBAC 通过为 Azure 提供细致的访问管理来帮助你解决此问题。 对于想要实施数据访问安全策略的组织,访问控制是必须要做的事。

可以使用 Azure 中的 Azure 内置角色向用户分配权限。 例如,将存储帐户参与者用于需要管理存储帐户的云操作员,并使用经典存储帐户参与者角色来管理经典存储帐户。 如果云操作员需要管理 VM 但不管理他们连接到的虚拟网络或存储帐户,则可以将他们添加到虚拟机参与者角色。

不通过使用 Azure RBAC 等功能来强制执行数据访问控制的组织,可能会赋予用户过多的权限。 不必要的权限一开始就允许某些用户访问他们不应有权访问的数据,从而可能会导致数据泄漏。

有关Azure RBAC的更多信息,请参见:

对于高价值数据使用客户端加密

通过客户端加密,可在上传到 Azure 存储之前以编程方式加密传输中的数据,并在检索数据时以编程方式解密数据。 客户端加密提供传输中的数据加密,但也提供静态数据加密。 客户端加密是最安全的加密数据方法,但它要求以编程方式更改应用程序,并将密钥管理程序放在正确的位置。

客户端加密还可以对加密密钥进行单独控制。 可生成和管理自己的加密密钥。 该过程采用信封技术,Azure 存储客户端库生成内容加密密钥(CEK),然后通过密钥加密密钥(KEK)对其进行封装(加密)。 密钥标识符用于识别KEK。 KEK 可以是非对称密钥对或对称密钥,你可以本地管理或存储在 Azure 密钥保管库 中。

客户端加密内置于 Java 和 .NET 存储客户端库中。 有关在客户端应用程序中加密数据以及生成和管理自己的加密密钥的信息,请参见 《Blob 的客户端加密》

启用静态数据的存储服务加密

当你为文件存储启用存储服务加密时,Azure 存储 会自动使用 AES-256 加密加密数据。 Microsoft 处理所有加密、解密和密钥管理。 此功能适用于 LRS 和 GRS 冗余类型。

后续步骤

本文介绍了有关保护 PaaS Web 和移动应用程序的一系列 Azure 存储安全最佳做法。 若要了解有关保护 PaaS 部署的详细信息,请参阅: