适用于:Windows
Azure SQL 数据库上的 SQL Server 2019 (15.x) 及更高版本
带安全区域的 Always Encrypted 支持对数据库列执行就地加密运算——在数据库引擎内的安全区域中进行。 使用就地加密,无需将此类操作的数据移出数据库,从而使加密操作更快、更可靠。
注意
虽然就地加密具有性能优势,但对大型表进行加密操作可能会花费很长时间并且消耗大量资源,从而可能会影响和降低应用程序的性能和可用性。
就地加密还可以使用 ALTER TABLE ALTER COLUMN (Transact-SQL) 语句来触发加密运算,而如果没有 enclave,则无法执行此操作。
先决条件
支持的加密操作以及用于该操作的列加密密钥的要求如下:
- 对明文列进行加密。 用于加密该列的列加密密钥必须支持安全区域。
- 使用新的加密类型或/和新的列加密密钥重新加密已加密的列。 当前列加密密钥和新列加密密钥(如果与当前密钥不同)都必须支持安全区域。
- 解密加密列 - 用于保护该列的列加密密钥必须已启用 enclave。
如要了解有关如何确保列加密密钥已启用 enclave 的信息,请参阅管理具有安全 Enclave 的 Always Encrypted 的密钥。
还需要确保环境满足运行使用安全 enclave 的语句的一般先决条件。
触发加密操作的用户或应用程序必须有权对包含受影响的列的表进行架构更改,并有权访问操作中涉及的列主密钥以及数据库中的相关密钥元数据。
可以使用以下方法之一触发就地加密:
- ALTER TABLE ALTER COLUMN(Transact-SQL)(从 SQL Server Management Studio 或自定义应用程序中) 请参阅使用 Transact-SQL 就地配置列加密。
- 始终加密向导
- Set-SqlColumnEncryption cmdlet。 请参阅使用 PowerShell 就地配置列加密。
- 数据层应用程序 (DAC) 包。 请参阅使用 DAC 包原位配置列加密。