Sql-Server

SQL Server 登錄必須具備哪些最低權限和/或角色才能將數據庫 db_datareader 角色授予其他登錄?

  • August 18, 2017

要授權安全管理員將新的 SQL 登錄添加到數據庫中的 db_datareader 角色,安全管理員必須擁有的最少權限和/或角色是什麼?

如果這是一個權限,那麼您可以使用WITH GRANT OPTION,但事實並非如此。

假設您希望允許某人或特定數據庫級角色中的任何人執行此操作*,但*不允許他們分配其他角色,則沒有權限或角色。

但是,您可以通過模組簽名來實現這種細粒度的“權限”。任何人都需要的最低權限是EXECUTE您編寫的儲存過程,除了將登錄名或角色添加到該特定數據庫角色之外什麼也不做。

這類似於我在以下答案中概述的內容:

我需要向使用者提供哪些最低權限才能檢查 SQL Server 代理服務的狀態?

除了在您的特定情況下,它甚至更容易,因為不需要伺服器級別的權限。只需執行以下操作:

  1. 創建具有主體名稱輸入參數的儲存過程,並將該數據庫主體添加到db_datareader數據庫級角色
  2. 在同一個數據庫中創建證書
  3. 從該證書在同一個數據庫中創建一個使用者
  4. 將基於證書的使用者添加到db_owner數據庫級角色
  5. 使用該證書籤署儲存過程(從步驟 1 開始)
  6. 授予應該能夠EXECUTE對該儲存過程執行此權限的任何使用者

為了完整起見:

從技術上講,您可以添加EXECUTE AS 'dbo'CREATE PROCEDURE聲明中,但它使用的模擬有其自身的問題,並且不如我上面描述的模組簽名方法安全。

引用自:https://dba.stackexchange.com/questions/183792