计划和实现应用程序的传输层安全性 (TLS),包括 Azure 应用服务和 API 管理

已完成

Microsoft Azure 中使用的加密包括静态加密、外部加密以及 Azure Key Vault 的密钥管理。

静止数据加密

静态数据包括以任何数字格式驻留在物理介质上的永久性存储中的信息。 该介质可包括磁性介质或光学介质上的文件、归档数据和数据备份。 Microsoft Azure 提供各种数据存储解决方案,以满足不同需求,包括文件、磁盘、blob 和表存储。 Microsoft还提供加密来保护 Azure SQL 数据库、Azure Cosmos DB 和 Azure Data Lake。

静态数据加密可用于软件即服务(SaaS)、平台即服务(PaaS)和基础结构即服务(IaaS)云模型。

Azure 加密模型

Azure 支持各种加密模型,包括使用服务托管密钥、Key Vault 中客户托管密钥或客户所控硬件上客户托管密钥的服务器端加密。 通过客户端加密,可在本地或另一个安全位置管理并存储密钥。

客户端加密

客户端加密在 Azure 之外执行。 其中包括:

  • 由客户数据中心中运行的应用程序或服务应用程序加密的数据。
  • 当 Azure 接收到数据时,数据已加密。

使用客户端加密时,云服务提供商无法访问加密密钥,因此无法解密该数据。 你完全控制了密钥。

服务器端加密

三个服务器端加密模型提供不同的密钥管理特性,可根据要求进行选择:

  • 服务管理的密钥:在低负担的情况下提供控制与便利的平衡。
  • 客户管理的密钥:允许你控制密钥,包括“自带密钥”(BYOK)支持,或允许生成新密钥。
  • 客户控制硬件中的服务托管密钥:使你能够在Microsoft控制之外管理专有存储库中的密钥。 此特性称为自留密钥 (HYOK)。 但是,配置相当复杂,并且大多数 Azure 服务都不支持此模式。

Azure 磁盘加密

可以使用适用于 Linux VM 的 Azure 磁盘加密(利用设备映射器(DM)-Crypt)或适用于 Windows VM 的 Azure 磁盘加密(利用 Windows BitLocker)来保护托管磁盘,对操作系统磁盘和数据磁盘进行完整卷加密。

加密密钥和机密在 Azure Key Vault 订阅中受到保护。 通过使用 Azure 备份服务,可以备份和还原使用密钥加密密钥(KEK)配置的加密虚拟机(VM)。

Azure 存储服务加密

Azure Blob 存储和 Azure 文件共享中的静态数据都可以在服务器端和客户端方案中进行加密。

Azure 存储服务加密(SSE)可以在存储数据之前自动加密数据,并在检索数据时自动解密数据。 此过程对用户是完全透明的。 存储服务加密使用 256 位高级加密标准(AES)加密,这是可用的最强块加密之一。 AES 采用透明方式处理加密、解密和密钥管理。

Azure blob 的客户端加密

可通过各种方式执行 Azure blob 的客户端加密。

可使用适用于 .NET NuGet 包的 Azure 存储客户端库在客户端应用程序内加密数据,然后再将其上传到 Azure 存储。

在 Key Vault 中使用客户端加密时,将使用 Azure 存储客户端 SDK 生成的一次性对称内容加密密钥 (CEK) 加密数据。 CEK 在使用密钥加密密钥 (KEK) 加密后,可以是对称密钥,也可以是非对称密钥对。 可在本地进行管理或将其存储在 Key Vault 中。 然后,将加密数据上传到 Azure 存储。

最后,还可使用适用于 Java 的 Azure 存储客户端库执行客户端加密,之后再将数据上传到 Azure 存储,并在将数据下载到客户端时解密数据。 此库还支持与 Key Vault 集成,以便进行存储帐户密钥管理。

使用 Azure SQL 数据库加密静态数据

Azure SQL 数据库是 Azure 中的常规用途关系数据库服务,支持关系数据、JSON、空间和 XML 等结构。 SQL 数据库通过透明数据加密 (TDE) 功能支持服务器端加密,通过 Always Encrypted 功能支持客户端加密。

透明数据加密

TDE 用于使用数据库加密密钥(DEK)实时加密 SQL Server、Azure SQL 数据库和 Azure Synapse Analytics 数据文件,该加密密钥存储在数据库启动记录中,以便在恢复期间可用性。

TDE 使用 AES 和三重数据加密标准 (3DES) 加密算法保护数据和日志文件。 数据库文件加密在页面级执行。 加密数据库中的页面在写入磁盘之前被加密,在读入内存后被解密。 默认情况下,新创建的 Azure SQL 数据库启用 TDE。

Always Encrypted 功能

使用 Azure SQL 中的 Always Encrypted 功能,可以在将数据存储在 Azure SQL 数据库中之前加密客户端应用程序中的数据。 还可将本地数据库管理工作委派给第三方,并将数据拥有者和可查看数据的人员,以及管理数据但无权访问数据的人员分开。

单元级加密或列级加密

借助 Azure SQL 数据库,可使用 Transact-SQL 对数据列应用对称加密。 此方法称为单元格级加密或列级加密(CLE),因为你可以使用此方法来加密具有不同加密密钥的特定列,甚至特定数据单元。 这样可以提供比 TDE 更加精细的加密功能,能够加密页面中的数据。

CLE 具有内置函数,可通过函数使用对称或非对称密钥、证书的公钥或 3DES 的密码来加密数据。

Azure Cosmos DB 数据库加密

Azure Cosmos DB Microsoft全球分布式多模型数据库。 存储在非易失性存储(固态硬盘)中的 Azure Cosmos DB 中的用户数据默认情况下已加密。 无法将其打开或关闭。 静态加密是使用许多安全技术实现的,其中包括安全的密钥存储系统、加密的网络以及加密 API。 加密密钥由 Microsoft 管理,并根据 Microsoft 的内部指南进行轮换。 (可选)可以选择添加第二层加密,其中包含你管理的密钥以使用客户管理的密钥或 CMK 功能。

Data Lake 中的静态加密

Azure Data Lake 是一个面向企业的数据存储中心,在正式定义其需求或架构之前集中收集所有类型的数据。 Data Lake Store 支持“默认启用”透明加密静态数据,可以在创建帐户期间设置。 默认情况下,Azure Data Lake Store 替你管理密钥,但你可以选择自己管理密钥。

有三种类型的密钥用于加密和解密数据:主加密密钥 (MEK)、数据加密密钥 (DEK) 和块加密密钥 (BEK)。 MEK 用于加密存储在永久性介质上的 DEK,BEK 派生自 DEK 和数据块。 如果管理自己的密钥,可以轮换 MEK。

传输中的数据加密

Azure 提供了许多机制,用于在迁移数据时保持数据的私密性。

每当 Azure 客户流量在数据中心之间(在不受 Microsoft 或代表 Microsoft 的某方控制的物理边界之外)移动时,都会在底层网络硬件上点对点应用使用 IEEE 802.1AE MAC 安全标准(也称 MACsec)的数据链路层加密方法。 数据包会在发送之前在设备上进行加密,以防止物理上的“中间人”或窥探/窃听攻击。 由于此技术在网络硬件本身上集成,因此它会在网络硬件上提供线路速率加密,而不会增加可度量的链路延迟。 对于在区域内或区域之间传输的所有 Azure 流量,会默认启用此 MACsec 加密,客户无需执行任何操作。

Azure 中的 TLS 加密

Microsoft使客户能够在云服务和客户之间传输数据时使用传输层安全性(TLS)协议来保护数据。 Microsoft 的数据中心与连接到 Azure 服务的客户端系统协商建立 TLS 连接。 TLS 提供强大的身份验证、消息隐私和完整性(允许检测消息篡改、拦截和伪造)、互作性、算法灵活性以及部署和使用方便。

完美转发保密(PFS)通过唯一密钥保护客户客户端系统和Microsoft云服务之间的连接。 连接还使用基于 RSA 的 2,048 位加密密钥长度。 这种组合使得有人难以截获和访问传输中的数据。

Azure 存储事务

当通过 Azure 门户与 Azure 存储交互时,所有事务都通过 HTTPS 发生。 也可根据 HTTPS 使用存储 REST API 与 Azure 存储交互。 在调用 REST API 来访问存储帐户中的对象时,可通过启用存储帐户所需的安全传输来强制使用 HTTPS。

共享访问签名(SAS)可用于委托对 Azure 存储对象的访问,包括一个选项,用于指定在使用共享访问签名时只能使用 HTTPS 协议。 通过此方法,可确保只能使用正确的协议发送有 SAS 令牌的链接。

用于访问 Azure 文件共享的 SMB 3.0 支持加密,并且可在 Windows Server 2012 R2、Windows 8、Windows 8.1 和 Windows 10 中使用。 它允许跨区域访问,甚至在桌面上访问。

在将数据发送到 Azure 存储实例前,客户端加密会对数据加密,所以在通过网络传输时数据是加密的。

通过 Azure 虚拟网络进行服务器消息块 (SMB) 加密

通过在运行 Windows Server 2012 或更高版本的 VM 中使用 SMB 3.0,可以通过加密通过 Azure 虚拟网络传输的数据来保护数据传输。 加密数据有助于防止数据遭到篡改和窃听攻击。 管理员可以为整个服务器启用 SMB 加密,也可以启用特定的共享。

默认情况下,为共享或服务器启用 SMB 加密后,只允许 SMB 3.0 客户端访问加密共享。

VM 中的传输中加密

根据连接的性质,可通过多种方式对在运行 Windows 的 VM 间传输的数据进行加密。

远程桌面协议 (RDP) 会话

可以使用 Windows 客户端计算机或安装了 RDP 客户端的 Mac 中的远程桌面协议(RDP)连接和登录 VM。 在 RDP 会话中通过网络传输的数据可以受到 TLS 的保护。

还可使用远程桌面连接到 Azure 中的 Linux VM。

使用 SSH 保护对 Linux VM 的访问

对于远程管理,可以使用安全外壳(SSH)连接到在 Azure 中运行的 Linux VM。 SSH 是一种加密的连接协议,利用该协议可以通过未受保护的连接进行安全登录。 它是适用于 Azure 中托管的 Linux VM 的默认连接协议。 使用 SSH 密钥进行身份验证,无需使用密码即可登录。 SSH 使用公钥/私钥对(非对称加密)进行身份验证。

Azure VPN 网关

可以使用 Azure VPN 网关跨公共连接在虚拟网络和本地位置之间发送加密流量,或者在虚拟网络之间发送流量。

站点到站点 VPN 使用 IPsec 进行传输加密。 Azure VPN网关使用一组默认提议。 可将 Azure VPN 网关配置为使用具有特定加密算法和关键优势的自定义 IPsec/IKE 策略,而不是 Azure 默认策略集。

点到站点 VPN

点到站点 VPN 允许单个客户端计算机访问 Azure 虚拟网络。 安全套接字隧道协议 (SSTP) 用于创建 VPN 隧道。 它可遍历防火墙(隧道显示为 HTTPS 连接)。 你可使用自己的内部公钥基础结构 (PKI) 根证书颁发机构 (CA) 实现点到站点的连接。

可以使用具有证书身份验证或 PowerShell 的 Azure 门户,将点到站点 VPN 连接配置到虚拟网络。

站点到站点 VPN

可以使用站点到站点 VPN 网关连接通过 Internet 协议安全性(IPSec)/Internet 密钥交换(IKEv1 或 IKEv2)VPN 隧道将本地网络连接到 Azure 虚拟网络。 此类型的连接需要一个分配有面向外部的公共 IP 地址的本地 VPN 设备。

可以使用 Azure门户、PowerShell 或 Azure CLI 将站点到站点 VPN 连接配置到虚拟网络。

Data Lake 中的传输中加密

此外,还会始终在 Data Lake Store 中对传输数据(也称移动数据)加密。 除在将数据存储到永久性介质前进行加密外,还始终会在数据传输过程中使用 HTTPS 保护数据。 HTTPS 是 Data Lake Store 表示性状态传输(REST)接口支持的唯一协议。

使用 Key Vault 的密钥管理

如果没有适当地保护和管理密钥,加密会变得毫无用处。 Key Vault 是 Microsoft 推荐的解决方案,用于管理和控制云服务使用的对加密密钥的访问。 访问密钥的权限可以通过 Microsoft Entra 帐户分配给服务或用户。

Key Vault 可帮助组织减少对配置、修补以及维护硬件安全模块 (HSM) 和密钥管理软件的需求。 使用 Key Vault 时,一切由你控制。 Microsoft 永远看不到你的密钥,应用程序无法直接访问密钥。 还可以在 HSM 中导入或生成密钥。