使用 Always Encrypted 向导配置列加密

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例

Always Encrypted 向导是一个功能强大的工具,可让你为所选数据库列设置所需的 Always Encrypted 配置。 根据当前配置和所需的目标配置,该向导可以对列加密或解密(删除加密),或重新对其加密(例如,使用为列配置的新列加密密钥或不同于当前类型的加密类型)。 可以在该向导的单次运行中配置多个列。

该向导允许使用现有列加密密钥对列进行加密,也可以选择生成新的列加密密钥,或同时生成新的列加密密钥和新的列主密钥。

如果数据库配置了安全 Enclave,则无需将数据移出数据库,即可就地运行加密操作。 如果任何依赖项会阻止要加密的列的架构更改,向导将移除所有此类依赖项。 这将通过使用数据库引擎中的 Enclave 对每个列进行就地加密。 加密完成后,向导将重新创建依赖项。 有关具有安全 Enclave 的 Always Encrypted 的详细信息,请参阅具有安全 Enclave 的 Always Encrypted

如果数据库配置安全 Enclave,向导将为你提供启用安全 Enclave 的机会。 如果你选择不启用安全 Enclave,或者使用已启用 Enclave 的密钥,则向导会将数据移出数据库并在 SSMS 进程中执行加密操作。 该向导会在数据库中创建具有所需加密配置的一个或多个新表,从原始表中加载所有数据,执行请求的加密操作,将数据上传到新表中,然后将原始表换为新表。

提示

在环境中使用具有安全 Enclave 的 Always Encrypted 就地加密,可以大幅缩短加密操作的时间并提高可靠性。

注意

运行加密操作可能需要很长时间。 在此期间,数据库不可用于写入事务。 建议将 PowerShell 作为对较大表执行加密操作的工具。 请参阅 通过 PowerShell 配置使用 Always Encrypted 的列加密,或 通过 PowerShell 配置就地列加密

权限

若要使用该向导执行加密操作,必须拥有“查看任意列主密钥定义”和“查看任意列加密密钥定义”权限。 还需要密钥存储权限来创建、访问和使用列主密钥。 有关密钥存储库权限的详细信息,请参阅 创建并存储 Always Encrypted 的列主密钥,然后查找与密钥存储库相关的部分。

打开 Always Encrypted 向导

可以在三个不同的级别启动该向导:

  • 在数据库级别 - 如果要加密位于不同表中的多列。
  • 在表级别 - 如果要加密位于相同表中的多列。
  • 在列级别 - 如果要加密一个特定列。
  1. 使用 SQL Server Management Studio 的对象资源管理器组件连接到 SQL Server。

  2. 若要进行加密,请执行以下操作:

    1. 对于位于数据库不同表中的多列,请右键单击数据库,指向“任务”,然后选择“加密列”
    2. 对于位于相同表中的多列,请导航到该表,右键单击它,然后选择“加密列”
    3. 对于单个列,请导航到该列,右键单击它,然后选择“加密列”

列选择页

在此页中,可选择要加密、重新加密或解密的列,并为所选列定义目标加密配置。

若要加密纯文本列(未加密的列),请为列选择加密类型(“确定性”或“随机”)和加密密钥。

若要为已加密列更改加密类型或轮换(更改)列加密密钥,请选择所需加密类型和密钥。

如果希望该向导使用新的列加密密钥加密或重新加密一列或多列,请选取在名称中包含“(New)”的密钥。 该向导会生成密钥。

若要解密当前已加密的列,请为加密类型选择“纯文本”

注意

如果要利用就地加密,并且正在使用现有密钥,请确保选择已启用 Enclave 的密钥 - 注释为“(已启用 Enclave)”

注意

该向导不支持对临时表和内存中表执行加密操作。 可以使用 Transact-SQL 创建空的临时表或内存中表,并使用应用程序插入数据。

主密匙配置页

如果在上一页中为任何列选择了自动生成的列加密密钥,则在此页中需要选择现有列主密钥,或者配置将加密列加密密钥的新的列主密钥。

配置新的列主密钥时,可以在 Windows 证书存储或 Azure Key Vault 中选取现有密钥,并让该向导仅在数据库中为密钥创建元数据对象,也可以选择在数据库中同时生成密钥和用于描述密钥的元数据对象。

要使用就地加密,请确保为新的列主密钥选择“允许 Enclave 计算”。 仅当数据库配置了安全 Enclave 时,才允许选择此复选框。

有关在 Windows 证书存储、Azure Key Vault 或其他密钥存储库中创建和存储列主密钥的详细信息,请参阅 创建并存储 Always Encrypted 的列主密钥管理具有安全 Enclave 的 Always Encrypted 密钥

提示

该向导仅允许在 Windows 证书存储和 Azure Key Vault 中浏览和创建密钥。 它还会自动生成新密钥和用于描述密钥的数据库元数据对象的名称。 如果你需要更好地控制密钥预配方式(并对包含列主密钥的密钥存储有更多选择),可以使用“新建列主密钥”和“新建列加密密钥”对话框先创建密钥,然后运行该向导并选取所创建的密钥。 请参阅 使用“新建列主密钥”对话框预配列主密钥预配启用 Enclave 的密钥,以及 使用“新建列加密密钥”对话框预配列加密密钥

“就地加密设置”页

如果在数据库中配置了安全 Enclave,并且使用的是已启用 Enclave 的密钥,则此页面允许指定就地加密所需的 Enclave 证明参数。 如果不想使用就地加密,请取消选择“对符合条件的列使用就地加密”以继续使用客户端加密。 建议将此复选框保留为启用状态,以便向导可以使用就地加密。

有关 Enclave 证明的详细信息,请参阅 使用 Azure 证明配置 Always Encrypted 证明

后续步骤

另请参阅