保護模型
在報表伺服器上使用報表模型,作為建立與使用特定報表的資料來源。您可以利用三種方式來保護報表模型:透過報表伺服器資料夾命名空間、透過模型項目安全性,以及透過資料庫安全性。
由於報表模型的安全性是多層的,因此可以檢視資料夾階層中之模型的使用者,可能會遇到其他限制,限制該模型於設計階段與執行階段的使用方式。使用模型作為報表資料來源的能力,取決於下列因素:
- 模型上以角色為基礎的安全性 (亦即,在報表伺服器資料夾階層中檢視模型的能力)。
- 報表上使用模型作為資料來源,以角色為基礎的安全性。如果使用者無法存取報表,可能無法檢視模型所提供的資料 (在 Reporting Services 裡,只能在報表中檢視模型內的資料;協力廠商應用程式可能會以其他方式公開模型資料)。
- 模型內之項目上的安全性。
- 檢視、資料表或資料行層級的資料庫安全性。
保護資料夾命名空間中的報表模型
您可以定義項目層級的角色指派,來決定使用者是否可以檢視或管理報表模型,這與所有儲存在報表伺服器上的項目一樣。
- 擁有檢視模型之權限的使用者,可以在報表伺服器資料夾階層中看到模型,在 [一般] 屬性頁面中讀取有限數量的模型相關資訊 (例如,模型建立或修改的時間),並在使用模型作為資料來源的任何特定報表中的連結上按一下,以查詢模型。
- 擁有管理模型之權限的使用者,可以刪除、重新命名以及更新模型。模型管理工作通常也需要發行新模型的能力,但是發行的能力實際上是透過資料夾的角色指派傳達,資料夾角色指派會決定使用者是否可以將項目加入至資料夾。
擁有檢視已發行模型之權限的使用者,不能直接開啟模型以檢視其內容,也不能將模型下載到檔案系統。執行階段時,與報表模型的所有互動都是透過使用模型的報表進行。
保護模型中的項目
模型項目安全性可以讓您控制對模型中特定部分的存取。若要設定模型項目安全性,請使用 SQL Server Management Studio。啟用模型項目安全性之後,您可以在模型命名空間中的特定節點上建立角色指派。如需詳細資訊,請參閱<模型屬性 (模型項目安全性頁面)>。
報表模型命名空間會以階層式結構呈現,其中包含根節點、實體、模型角色和欄位。它也包含了資料夾與檢視方塊,您可以使用這些來組織 (但是不保護) 模型項目。您在 Management Studio 中檢視模型時,可以瀏覽階層式結構,以及在不同的層級指定角色指派。您可以在報表模型的根節點上指定角色指派,以控制對整個模型的存取,或者在模型的各部分指定,以改變選取之分支上的存取權限。模型命名空間支援樹狀結構中較低層項目的繼承安全性,這與使用報表伺服器資料夾命名空間安全性一樣。
依預設,模型項目安全性為關閉。未啟用模型項目安全性時,檢視模型呈現之資料的所有權限,是透過報表伺服器資料夾階層中之模型與報表上的角色指派決定。
使用者看得到模型項目安全性。如果使用者沒有模型階層中特定分支的存取權,使用者在報表中就不會看到模型的該部分。它不能用於瀏覽資料,也不能傳回報表中的資料。使用模型項目安全性,報表伺服器會修改傳送至資料來源的查詢,以排除模型中超出使用者存取權限的任何部分。
透過資料庫安全性保護模型
資料庫安全性在模型驅動的報表中,提供第三層安全性。如果您限制對資料表或資料行的存取,資料庫就會針對所有未經授權的存取,傳回拒絕存取錯誤。如果您在模型中包含受到資料庫安全性規範的任何資料表或資料行,則在使用者存取對應到其無權檢視之資料表或資料行的模型項目時,會傳回資料庫錯誤訊息。雖然在某些狀況下,必須有資料表或資料行層級的資料庫安全性,不過務必要考慮它對特定報表導覽的影響。在導覽報表時收到資料庫錯誤訊息的使用者,必須追溯其步驟,以返回其擁有存取權的模型部分。
附註: |
---|
如果您依賴資料庫安全性,來保證只允許特定的使用者讀取特定的資料表或資料行值,請確定您設定資料來源使用 Windows 整合式安全性。 |
安全性實體模型項目
使用 Management Studio 來保護模型的下列部分:
- 根節點
- 資料夾
- 實體
- 模型角色 (「角色」一詞是指實體之間的關聯性)
- 欄位
您不能保護整個檢視方塊,但是可以保護檢視方塊內的模型項目。安全性是根據模型項目的安全性繼承。例如,若只有管理員能在模型中存取模型項目,則當模型項目在檢視方塊中出現時,只有管理員能夠存取模型項目。
報表模型安全性與您為報表伺服器資料夾階層定義的安全性,以及在系統層級定義的安全性是分開的。模型的根節點並非透過資料夾階層存取或保護。
隱藏模型項目
除了透過角色指派限制存取之外,也可以使用隱藏屬性,以防止使用者看到模型的某些部分。如果您不希望任何使用者看到模型項目,請在模型設計師中,將項目的隱藏屬性變更為 True。隱藏項目並不會將其從模型計算或關聯性移除。例如,若您隱藏在運算式中使用的欄位,儘管使用者看不到它,不過運算式中仍會使用該欄位。隱藏項目會對所有使用者隱藏該項目。如果您要依使用者或群組改變可見性與存取權,請使用角色指派,而不要使用隱藏屬性來保護項目。
如何在報表模型中保護項目
保護模型中的項目需要 Management Studio 中的報表伺服器連接。若要保護模型項目,必須在報表伺服器上部署報表模型。
- 在 Management Studio 中,連接到儲存模型的報表伺服器。
- 在 [物件總管] 中導覽至模型,以滑鼠右鍵按一下您要保護的模型,然後按一下 [屬性]。
- 在 [模型屬性] 頁面中,按一下 [模型安全性]。
- 選取 [獨立保護此模型的個別模型項目] 核取方塊。
- 選取根節點。根節點上需要角色指派。
- 按一下 [針對每個群組或使用者帳戶使用這些角色]。
- 按一下 [加入群組或使用者]。
- 選取您要建立角色指派的群組或使用者,然後按一下 [確定]。
- 導覽至您要保護的下一個實體、關聯性、欄位或資料夾。重複步驟 6 至 8。
請參閱
概念
模型設計師物件屬性
HiddenFields 集合 (模型設計師)
使用模型設計師