Sql-Server

如何授予拒絕 DML 逗號的 AD 組中的使用者在特定表上更新

  • February 12, 2020

我的 sql 伺服器中有一個名為 SQLQRY 的 Active Directory 使用者帳戶。SQLQRY 只允許讀取數據。這些使用者可以使用 onyl select 語句。我只需要將特定表的更新和刪除權限授予 SQLQRY AD 帳戶中的幾個開發人員。我怎麼能做到這一點而不將它們從組中提取出來?

我只需要將特定表的更新和刪除權限授予 SQLQRY AD 帳戶中的幾個開發人員。我怎麼能做到這一點而不將它們從組中提取出來?

如果您為所有開發人員使用相同的 AD 使用者,我建議您開始使用 AD 組並將您的開發人員添加到這些組中。有關對多個使用者使用一個 AD 登錄的問答,請參見此處。之後,您可以按照以下步驟操作。

向 AD 組的所有成員授予權限或不授予權限。

如果您想向其中一些使用者授予權限,則必須添加不同的廣告組或單獨添加使用者。

之後,您可以向該組授予更新和刪除權限,或者創建具有該權限的新角色並將組/使用者添加到其中。

範例命令:

USE [master]
CREATE LOGIN [SQLQRY_2] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
USE [DBName]

CREATE USER [SQLQRY_2] FOR LOGIN [SQLQRY_2];
CREATE ROLE [NewRole];
GRANT INSERT,UPDATE,DELETE ON dbo.test to [NewRole]; -- table1
-- Table 2,3, ...

ALTER ROLE [NewRole] ADD MEMBER [SQLQRY_2];

它們在 SQLQRY AD 帳戶中定義,並且沒有更新和刪除權限。那麼,我的角色會覆蓋我的拒絕規則嗎?

如果您在將數據寫入表時指定了拒絕權限,則授予相應的寫入權限將不起作用。DENY 的優先級高於 grant。

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