2012-09-25 85 views
-2

如何限制在SQL Server 2008中的特定用戶/登錄創建,修改,刪除報表的訪問權限?如何限制特定用戶或登錄SQL Server中

+1

閱讀有關(HTTP的[MSDN上'GRANT'聲明]:// msdn.microsoft.com/en-us/library/ms187965.aspx) –

+0

這是一個更好看的地方[http://dba.stackexchange.com/](http://dba.stackexchange.com/)[這些帖子應該與你的問題相關](http://dba.stackexchange.com/search?q=How+do+I+restrict+access+for+CREATE%2C+ALTER%2C+DROP+statements+to+a+特別+用戶%2Flogin +在+%5BSQL - 服務器%5D&提交=搜索) – whytheq

回答

0

的SQL許可層級與登錄開始在實例級別,然後在數據庫級用戶,它映射到在實例登錄。

除非您通過服務器角色和數據庫角色(這些是簡化權限管理的原則和安全措施的集合)或直接授予對象權限,否則用戶及其相關登錄將不具有任何權限。

在SQL Server中,DENY覆蓋了GRANT,所以如果你的用戶已經在授予他們對有問題的對象發出DDL的權限,那麼你可以拒絕他們對特定對象的權限。語法此的一個例子,基於否認ALTER權限表如下:

DENY ALTER ON OBJECT::dbo.MyTable TO MyUser 

雖然你當然這種通過GUI的爲好。在SSMS中,鑽取數據庫> MyDatabase>安全性>用戶,然後打開相關用戶的屬性並在此處更改其分配。

數據庫世界中的安全性非常重要,我強烈建議您調查使用Windows組服務器角色和數據庫角色來管理您的權限,而不是以臨時方式設置權限。我還建議一份完整的文檔安全策略和例外文檔,詳細說明組織中的安全結構。保留這些工作文件將使您可以輕鬆跟蹤誰可以做什麼。這有助於避免不可追溯性問題,並使審計變得輕鬆。

我希望這會有所幫助。

0

你可以使用這個觸發器,如果​​u想只有1數據庫使用註釋代碼@event數據,寫你的邏輯

CREATE TRIGGER [permissions] 
    ON ALL SERVER 
    FOR CREATE_Table,DROP_Table,ALTER_Table, 
     CREATE_View,ALTER_View,Drop_View, 
     CREATE_Trigger,ALTER_Trigger,Drop_Trigger, 
     CREATE_DATABASE,DROP_DATABASE,ALTER_DATABASE, 
     CREATE_USER,DROP_USER,ALTER_USER, 
     CREATE_FUNCTION,ALTER_FUNCTION,DROP_FUNCTION, 
     CREATE_Procedure,ALTER_Procedure,DROP_Procedure, 
     CREATE_ASSEMBLY,ALTER_ASSEMBLY,DROP_ASSEMBLY, 
     CREATE_ROLE,ALTER_ROLE,DROP_ROLE 

AS 

BEGIN 



-- DECLARE @Eventdata XML,@ActionType varchar(100),@DataBase varchar(100) 
    --SET @Eventdata = EVENTDATA() 
     --SET @[email protected]('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)') 
-- SET @[email protected]('(/EVENT_INSTANCE/DatabaseName)[1]', 'nvarchar(100)') 

    IF SYSTEM_USER IN ('user') 
       BEGIN 
       RAISERROR ('not allowed.', 16, 1); 
       ROLLBACK; 
    END 




    END   
相關問題