【发布时间】:2019-01-20 19:23:53
【问题描述】:
我的名字是 Hari varma,我是一名 SQL DBA。
目前,我在我们的测试服务器中遇到了 SQL Server 2017 Development Edition 中的 Always Encryption 问题。
我在 Always Encryption 和 TDE 方面没有任何经验。我的一位客户要求我对数据库进行加密。
我已经对 Always Encryption 进行了一些测试,我能够通过执行以下操作来加密和解密列数据:
在 SQL Server 实例上 -->Options-->Additional connection Parameter-->Column Encryption Setting = Enabled启用列加密后,我可以查看表中的加密数据。
但是,我无法在此加密列中插入、更新和删除数据。 我还需要能够为允许/不允许查看此加密列上的数据的用户设置权限。
我需要为特定用户授予哪些权限,并为 Always Encryption 和 TDE 提供任何先决条件。
【问题讨论】:
-
我最近遇到了完全相同的问题。在谷歌搜索了一段时间后,我设法执行了 Insterst / Updates:我在数据库中创建了一个执行手头任务的过程。然后我创建了一个 C# 应用程序/SSIS 组件,它使用所需的参数调用该过程(目前在 SSMS 中似乎不可能对始终加密的列进行 DML)。请随时与我联系以获取更多详细信息。无论如何,“哪些权限”应该是过时的:始终加密适用于密钥对/证书。如果用户缺少所需的 KEY,他将不会发现任何解密数据。
-
你能提供我一步一步的过程吗?
-
当然,我会尽力而为。但在我开始之前:您已经尝试/执行了什么?您是否已经生成(并存储)证书(带有密钥)?正如您提到的,您已经看到了加密数据,我想这已经完成了?你还能看到解密的数据吗?
-
我只是创建一个测试数据库并在测试数据库中创建一个表并插入一些值。表结构包含 PersonID、FirastName、LastName、Address、City。我使用 GUI 进程权限在表加密列上对 City 列进行了加密。 column_encryption_key_name = 'CEK_Auto1' 我在 SSMS 中启用了 Column Encryption Setting=Enabled,启用后我能够以普通文本查看加密数据。当我尝试使用以下查询插入时,出现错误
-
错误消息 206、级别 16、状态 2、第 9 行操作数类型冲突:varchar 与使用 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 加密的 varchar(8000) 不兼容'CEK_Auto1', column_encryption_key_database_name = 'Encryption') collation_name = 'SQL_Latin1_General_CP1_CI_AS' INSERT INTO [dbo].[Persons](PersonID, FirstName, LastName, Address, City) VALUES ('4', 'ABC', 'DEF', ' AP','AP');
标签: sql-server