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