如何將使用者定義為特定模式的 dbo

如何將使用者定義為特定模式的 dbo

我正在創建一個多租戶應用程序,它將利用具有多個模式的單一資料庫。每個租戶都有自己的登入名稱/密碼。我能夠將查看權限限制為特定架構。

我遇到的唯一問題是更新架構時。目前,我使用正確的模式憑證登入 C# 程式碼,然後每當我想要更新特定(或所有)模式時執行 SQL 程式碼。

起初,我嘗試更改該表,然後意識到我沒有足夠的權限。所以我再次調整了權限。現在,我嘗試在所有模式上添加全文索引,但它告訴我沒有權限。

我的問題很簡單,如何定義使用者的權限,以便the database owner for a specific schema在資料庫上執行的任何腳本都不會出現任何問題。

答案1

GRANT CONTROL ON SCHEMA::<schemaname> TO <username>;將授予所有權限適用於模式和模式包含的對象。但是,它不會授予適用於非架構物件的任何權限。舉個例子,它不適用於全文目錄,全文目錄是不是架構綁定物件(建立 FT 目錄時不指定架構)並且需要特殊CREATE FULLTEXT CATALOG權限。

在您的情況下,您必須檢查整個安全模型並決定租用戶需要/允許哪些權限和操作。沒有簡單的一刀切的答案。如果您授予租戶像完整 db_owner 一樣行事的自由,那麼您必須授予他們一個真正的資料庫。您將無法潛入模式並假裝是資料庫。 SQL 安全模型並不是這樣運作的,您最好配合而不是試圖規避它。

答案2

我認為這是不可能的。如果他們是 dbo,那麼他們可以在該資料庫中執行任何必要的操作。如果它們不是 dbo,則它們是有限的。資料庫擁有者就是該資料庫的擁有者。

相關內容