我正在为即将推出的大型解决方案制作原型,并希望使用 Always Encrypted 来加密某些敏感的数据库列。
我的设置如下: 数据库服务器:安装了 SQL Server 2016 应用程序服务器:安装了指向数据库服务器引擎的 Reporting Server 2016。IIS、.Net 4.6.2 等也都设置好了。
该环境的设置方式也使得 DBA 无法读取加密数据,即使从 Management Studio 中他将在连接中添加“列加密设置 = 已启用”。所以我的证书安装在应用服务器上,而 CMK 和 CEK 安装在数据库服务器数据库上。
我可以毫无问题地从安装在应用服务器上的 Web 应用程序中查看加密数据,而 DBA 无法直接从数据库中读取加密数据,所以我假设我的环境设置良好。
如前所述,我在应用程序服务器上安装了 SSRS 2016,但在数据库服务器上指向具有加密列的数据库。当然,我已经使用 Report Builder 完成了一个基本的转储报告(用于测试目的),除了未显示加密数据之外,一切都运行良好 - 它在 SSRS 表中保持空白!加密列只是一个基本的 nvarchar(200)
在数据源连接字符串中,我添加了“列加密设置 = 已启用”。没有它,报告将按预期显示#Error。所以我假设这也是需要的。
我还注意到,从查询设计器中我可以读取加密列。如果我从数据源中删除“列加密设置 = 已启用”,如果我没记错的话,查询设计器会显示 VarBinary。当然,我直接在应用程序服务器上使用报表生成器和查询设计器。
我试图搜索有关如何将 SSRS 与 Always Encrypted 一起使用的任何教程,但我找不到任何东西。我发现的只是 SSRS 支持 Always Encrypted 的帖子中的评论。
有人可以启发我做错了什么或我错过了什么吗?
提前致谢。