Sql-Server
SQL Server 向一個架構上的使用者授予 CRUD
我有一個名為
training
. 我希望接受培訓的使用者對該架構上的任何對像都具有 CRUD 權限。我不希望他們對該架構之外的任何其他對象擁有任何其他權限,我也不希望他們擁有架構本身的創建/刪除權限。授予此類訪問權限的最少權限是多少?
training
目前,我以 dbo 作為所有者來設置架構。然後我創建了一個名為的角色training_modify
並將training
架構添加為安全的,並明確授予了“選擇”、“更新”、“插入”和“刪除”。最後,我會將使用者添加到該角色。這是正確的方法嗎?它有什麼意想不到的後果嗎?
這是正確的方法嗎?
這是正確的方法,具有該角色的使用者將只能對
training
模式中的對象執行 CRUD 操作,而不能執行其他操作。這是最小權限的方法並且是正確的。真正的最小權限實際上是僅將權限分配給該架構中的特定對象,但正如您所指出的,使用者應該有權訪問所有對象,那麼在架構範圍內應用權限是合適的。
我不希望他們對該架構之外的任何其他對象擁有任何其他權限
你可能實際上並不想要這個。考慮公共伺服器角色。對於沒有顯式權限(GRANT 或 DENY)的任何對象,權限是從使用者(任何使用者、所有使用者)的公共角色繼承的。
由於您無法撤銷使用者的公共成員資格,因此您需要明確拒絕每個對象的權限,以防止使用者看到 Management Studio 中列出的對象 - 這真的有必要嗎?除了看到對象存在之外,他們無權訪問,使用者仍然無法與他們互動。
預設情況下,公共訪問權限僅授予使用者對一些系統目錄視圖的訪問權限,以允許所有使用者查看基本對象的名稱和定義以及一些基本的 DB/Server 資訊(有關更多資訊,請參閱本文)。