在初始化Reporting Service時(shí),SSRS會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫[ReportServer],用于存儲(chǔ)報(bào)表元數(shù)據(jù),報(bào)表訂閱,以及憑證(Credential)和連接信息等身份驗(yàn)證信息,身份驗(yàn)證數(shù)據(jù)非常重要,為了保護(hù)敏感數(shù)據(jù),Reporting Service支持對(duì)稱性密鑰(Symmetric keys)加密算法。對(duì)稱性密鑰在報(bào)表服務(wù)器初始化時(shí)生成,用于保護(hù)敏感數(shù)據(jù),而公有(Public)和私有(Private)密鑰對(duì)是操作系統(tǒng)生成的,成對(duì)出現(xiàn),每個(gè)報(bào)表服務(wù)器實(shí)例都有一對(duì),用于保護(hù)對(duì)稱性密鑰。
報(bào)表服務(wù)器的加密管理,主要是對(duì)稱性密鑰的管理,打開Reporting Service配置管理器(Reporting Service Configuration Manager,簡稱RSCM),切換到Encryption Keys選項(xiàng)卡,能夠看到對(duì)稱性密鑰管理的界面,主要是密鑰的備份,還原,更新和刪除。
很久之前,寫過一篇不成熟的文章《SSRS配置1:憑證和郵件》,分享的內(nèi)容是如何配置報(bào)表服務(wù)器的憑證和郵件,現(xiàn)在很少在項(xiàng)目中用到SSRS,為了和遺忘做抗?fàn)?,遂有此續(xù)文。
一,報(bào)表服務(wù)器加密的流程
報(bào)表服務(wù)器首先通過System.Data.SqlClient 訪問ReportServer數(shù)據(jù)庫,以獲取跟報(bào)表服務(wù)有關(guān)的數(shù)據(jù),此時(shí),報(bào)表服務(wù)器需要對(duì)連接到ReportServer數(shù)據(jù)庫的信息進(jìn)行加密;ReportServer數(shù)據(jù)庫和對(duì)稱性密鑰是一一對(duì)應(yīng)的,
在連接到ReportServer數(shù)據(jù)庫之后,報(bào)表服務(wù)執(zhí)行報(bào)表文件,報(bào)表文件需要訪問外部數(shù)據(jù)源去獲取業(yè)務(wù)數(shù)據(jù),所謂外部數(shù)據(jù)源,是指除了ReportServer數(shù)據(jù)庫之外的數(shù)據(jù),此時(shí),報(bào)表服務(wù)器需要連接到外部數(shù)據(jù)源,該連接信息是非常敏感的,必須加密;
然后,連接信息的加密需要使用對(duì)稱性密鑰,而這個(gè)密鑰是非常重要的,必須保護(hù)對(duì)稱性密鑰,此時(shí),報(bào)表服務(wù)器需要加密對(duì)稱性密鑰;
最后,為了避免密鑰丟失,或密鑰恢復(fù),必須對(duì)密鑰進(jìn)行備份,報(bào)表服務(wù)器要求在讀取密鑰的備份文件時(shí),必須輸入密碼才能訪問。WOW,保護(hù)的太多了吧。
二,加密的數(shù)據(jù)
報(bào)表服務(wù)把加密之后數(shù)據(jù)存儲(chǔ)到ReportServer數(shù)據(jù)庫和配置文件中,大部分的加密數(shù)據(jù)是憑證和連接信息,用于訪問報(bào)表服務(wù)器之外的數(shù)據(jù)。
1,連接到ReportServer數(shù)據(jù)庫
每個(gè)報(bào)表服務(wù)器實(shí)例都需要訪問ReportServer數(shù)據(jù)庫,獲取報(bào)表元數(shù)據(jù),訂閱等數(shù)據(jù),報(bào)表服務(wù)器連接到ReportServer數(shù)據(jù)庫需要連接信息和憑證,這些數(shù)據(jù)在報(bào)表服務(wù)的配置