2016-10-22 107 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服務帳戶讀取權限。