2016-10-22 106 views
1

我正在研究即将到来的大型解决方案的原型,并希望使用总是加密来加密某些敏感的数据库列。SSRS 2016的Tablix中没有显示总是加密的列的数据

我的设置如下: 数据库服务器:安装SQL Server 2016 应用服务器:安装了指向数据库服务器引擎的Reporting Server 2016。 IIS,.Net 4.6.2等全部设置。

该环境还设置为使DBA无法读取加密数据,即使从Management Studio中他将在连接中添加“列加密设置=启用”。因此,我的证书安装在Application Server上,而CMK和CEK安装在数据库服务器数据库上。

我可以查看安装在应用程序服务器上的Web应用程序的加密数据,没有问题,DBA也无法直接从数据库读取加密数据,因此我假定我的环境设置良好。

如上所述,我在应用程序服务器上安装了SSRS 2016,但指向数据库服务器上带有加密列的数据库。我已经使用Report Builder做了一个基本的转储报告(用于测试目的),并且所有工作都很好,除非加密的数据不显示 - 它在SSRS表中保留为空白!加密列只是一个基本的nvarchar(200)

在数据源连接字符串中,我添加了“列加密设置=启用”。没有它,报告会按预期显示#Error。所以我认为这也是需要的。

我还注意到的一点是,从查询设计器我可以读取加密列。如果我从数据源中删除'Column Encryption Setting = Enabled',如果我没有记错,查询设计器会显示VarBinary。当然,我正在使用Application Builder上的Report Builder和Query Designer。

我试图搜索关于如何使用总是加密的SSRS的任何教程,但我找不到任何东西。我发现的所有内容都是SSRS支持Always Encrypted的帖子中的一条评论。

有人可以指导我做错了什么或我失踪了吗?

在此先感谢。

回答

1

声明:我是微软的程序管理员。

要解决您的问题,请尝试在同一台计算机上运行报表生成器中的有问题的查询(报表生成器中没有返回数据的查询),并在同一台机器上运行报表生成器,通过“列加密设置=已启用”连接,并查看,如果您收到任何错误消息。

我见过不要返回在报表生成器没有结果,如果证书没有部署在机器上,主机托管报表生成器,或者用户没有访问证书许可加密列的查询。您是否将证书(用作列主密钥)存储在当前用户或本地计算机存储中?如果它位于本地计算机存储区中,则需要确保您(运行Report Builder的用户)具有访问证书的权限(您可以使用管理控制台配置证书的权限)。需要读取权限在本地计算机存储中始终处于加密证书上

+0

在您的个人资料中,有一个很好的地方可以让您在某个公司中的位置在StackOverflow上已知。如果用户点击你的名字,他们可以看到你设置的配置文件的描述。 –

+0

感谢Jakub对您的建议。 \t 我在Application Server上也安装了Management Studio,如果我将'Column Encryption Setting = Enabled'添加到连接,我可以在运行报表正在使用的存储过程时以纯文本格式查看数据。证书也安装在运行Report Builder的应用程序服务器上。 \t 我也使用管理员权限进行了记录,证书安装在本地计算机存储中。我也检查了权限,他们似乎是正确的 - 如果我在正确的地方检查。 –

0

运行SSRS服务帐户。右键单击证书,选择所有任务 - 管理私钥,然后在证书上提供SSRS服务帐户读取权限。