Sql-Server
SQL Server 登錄必須具備哪些最低權限和/或角色才能將數據庫 db_datareader 角色授予其他登錄?
要授權安全管理員將新的 SQL 登錄添加到數據庫中的 db_datareader 角色,安全管理員必須擁有的最少權限和/或角色是什麼?
如果這是一個權限,那麼您可以使用
WITH GRANT OPTION
,但事實並非如此。假設您希望允許某人或特定數據庫級角色中的任何人執行此操作*,但*不允許他們分配其他角色,則沒有權限或角色。
但是,您可以通過模組簽名來實現這種細粒度的“權限”。任何人都需要的最低權限是
EXECUTE
您編寫的儲存過程,除了將登錄名或角色添加到該特定數據庫角色之外什麼也不做。這類似於我在以下答案中概述的內容:
我需要向使用者提供哪些最低權限才能檢查 SQL Server 代理服務的狀態?
除了在您的特定情況下,它甚至更容易,因為不需要伺服器級別的權限。只需執行以下操作:
- 創建具有主體名稱輸入參數的儲存過程,並將該數據庫主體添加到
db_datareader
數據庫級角色- 在同一個數據庫中創建證書
- 從該證書在同一個數據庫中創建一個使用者
- 將基於證書的使用者添加到
db_owner
數據庫級角色- 使用該證書籤署儲存過程(從步驟 1 開始)
- 授予應該能夠
EXECUTE
對該儲存過程執行此權限的任何使用者為了完整起見:
從技術上講,您可以添加
EXECUTE AS 'dbo'
到CREATE PROCEDURE
聲明中,但它使用的模擬有其自身的問題,並且不如我上面描述的模組簽名方法安全。