為了讓非sysadmin可以在SSMS 2008 R2中以最小權限開啟舊版DTS並執行,要沒有修改DTS權限,我研究了一下順便供有需要的人參考,執行如下指令,只先建一個登入帳號test
USE master
GO
CREATE LOGIN test
WITH
password = 'test',
CHECK_POLICY
= OFF
GO
USE msdb
GO
CREATE USER
test
GO
1.執行下列指令就能讓test帳號有權取得DTS封裝的清單,但無法限制只能查詢自己的DTS封裝
GRANT SELECT ON sysdtspackages TO test
GO
若沒給訂權限將會遭遇如下錯誤喔
結構描述'dbo',資料庫'msdb',物件'sysdtspackages' 沒有SELECT 權限。(Microsoft SQL Server, 錯誤: 229)若沒給訂權限將會遭遇如下錯誤喔
2.執行下列指令就可以讓test有權打開DTS封裝執行,很簡單
GRANT EXEC ON sp_enum_dtspackages TO test
GRANT EXEC ON sp_get_dtspackage TO test
GO
若沒給訂上列兩個DTS的系統預存程序可能會遇到如下兩個錯誤喔
結構描述'dbo',資料庫'msdb',物件'sp_enum_dtspackages' 沒有EXECUTE 權限。
因為沒有多給其他DTS的系統預存程序的權限,若嘗試將封裝編輯後儲存將會遇到如下錯誤,這樣就達到我們無法修改或新增的需求囉
千萬不要指派像是db_ssisoperator角色之類的,因為預設權限太大了,如下圖
其實我還希望讓test帳號只能列出自己擁有的封裝,不能列出其他人的封裝,因為這樣才算最小權限,但研究了半天好像做不到,後來我實際上是把這類需要給非sysadmin手動執行的封裝移到測試機去,給定上述的權限,反正他們也不能新增修改封裝內容,也只能看到部分的封裝,也算是一種折衷的作法吧,不知還有沒有其他辦法呢?
0 意見:
張貼留言