2017-08-29 65 views
0

我們的應用程序需要兩種類型的用戶(每一個應用程序的用戶需要進行數據庫訪問自己的憑據)授予角色SQL Server數據庫的用戶創建用戶並授予/改變的作用,但限制改變數據庫對象

  1. 聯繫

我們已經創建了一個用戶General User具有下列權限一般用戶:

  1. 可以瀏覽存儲過程/函數,但不允許查看裏面
  2. 只能選擇表的代碼,但不能插入/更新/刪除存儲過程的執行外

我創建了一個角色並補充General User它:

CREATE ROLE proc_executor 

GRANT EXECUTE TO proc_executor 
GRANT SELECT TO proc_executor 

現在我需要用下面的權限Admin角色:

  1. 持有General User所有角色,這已經是可用
  2. 創建新用戶,無論是數據庫和服務器
  3. 阿爾特角色添加新用戶

有用於Admin一些限制。他們只能執行存儲過程並從表中選擇。

我的研究,人們已經建議增加角色像db_accessadmindb_securityadminsp_addrolemember(未找到),這是不足以創建新的用戶,並同時打破了限制。

允許創建用戶權限並且限制漫步存儲過程代碼似乎很棘手。 SA的許可持有我們,我們不能允許客戶玩數據庫。

任何人都可以幫我嗎?

+0

你說什麼「我們從'sa'user'創建了用戶'General User'?用戶可以通過登錄創建,但不能通過「sa」登錄創建任何用戶 – sepupic

+0

我們通過用戶(默認用戶)登錄並創建了另一個用戶,包括數據庫和服務器。 – aadhikari

+0

創建用戶/登錄時如何登錄並不重要。你能確切地說明你做了什麼,而不是你做了什麼登錄。什麼登錄/用戶,你創建了什麼權限,或者你什麼都沒有創建,你的問題是用戶和創建什麼權限。 – sepupic

回答

0

爲什麼不單獨創建應用程序的安全模式。你可以有如下表:

-- storing users details 
CREATE [dbo].[SecurityUsers] TABLE 
(
    [SecurityUserID] BIGINT 
    ,... 
    ,... 
); 

-- storing groups details 
CREATE [dbo].[SecurityGroups] TABLE 
(
    [SecurityGroupID] INT 
    ,[SecurityGroupName] NVARCHAR(128) 
    ,[SecurityGroupDescription] NVARCHAR(1024) 
); 

-- storing group-users mapping 
CREATE [dbo].[SecurityGroupsMembership] 
(
    [SecurityGroupID] INT 
    ,[SecurityUserID] BIGINT 
); 

的,你可以寫在你的函數的乞討security check或存儲過程是這樣的:

if user is not member of `update data` 
begin; 
    return; 
end; 

SQL Server 2016 SP1你甚至可以映射表等安全功能SELECT使用row-level security

您的結構可能更復雜 - 您可以查看安全策略或/和安全角色。您需要添加一個界面(可能)來設置用戶權限/成員身份。

+0

我們希望限制用戶瀏覽對象資源管理器。有了這個限制,用戶不能漫步存儲過程(代碼)。應該允許它們執行,通過前端應用程序完成。我們已經做到了。但除此之外,我們需要獲得許可才能創建用戶以及上述限制。 – aadhikari

相關問題