Security7:管理SQL Server Agent的許可權

來源:互聯網
上載者:User

標籤:logs   service   admin   調度   最小   dba   固定   資源   ted   

SQL Server Agent對象包括警報(Alert),操作員(Operator),Job,調度(Schedule)和代理(Proxy),SQL Server使用msdb系統資料庫管理Agent 對象的許可權,msdb內建三個固定資料庫角色,按照許可權從小到大的順序,依次是:SQLAgentUserRoleSQLAgentReaderRole 和SQLAgentOperatorRole。如果一個使用者不是這三個角色或sysadmin角色中的成員,那麼該使用者通過SSMS的Object Explorer看不到Agent節點。一個使用者必須是SQLAgent的角色或sysadmin角色的成員,才能使用SQL Server Agent。

另外,Agent的許可權,還跟代理(Proxy)的存取權限有關,代理是用來執行Job Step的,只有建立代理和登陸(Login)之間的映射,使用者建立(Own)的Job才能執行。

一,Agent固定資料庫角色

SQLAgentUserRole 角色被授予操作Agent的最小許可權的集合,其成員只能對其建立的本地Job和Job Schedule具有操作許可權,也就是有,該角色的成員對於Owner是自己的Job具有許可權,並且不能修改job的所有權(Ownership)。

SQLAgentUserRole 角色具有的許可權:

  • 具有操作本地Job和Job Schedule的所有許可權,包括建立(Create)、刪除(Delete),修改(Modify),啟用(Enable)、禁用(Disable)、執行(Execute)、開始(Start)、停止(Stop)等,但是不能修改Job的所有權關係(Ownership);
  • 查看Owned Jobs的執行日誌,但是不具有刪除曆史日誌的許可權;
  • 查看可用的Operator列表;
  • 查看可用的Proxy列表;

SQLAgentReaderRole 角色,除了具有Multiserver jobs的查看許可權之外,和SQLAgentUserRole角色的許可權相同;

SQLAgentOperatorRole 角色,除了具有查看警告(Alert)的列表和屬性的許可權之外,和SQLAgentReaderRole 角色的許可權相同;

SQLAgentUserRoleSQLAgentReaderRole 和SQLAgentOperatorRole 都對自己建立的Job具有操作許可權,都不能修改Job的所有權:

sysadmin 角色的成員,具有SQL Server Agent的全部許可權,能夠修改Job的所有權。

二,執行Job Step的許可權

在執行Job Step時,SQL Server Agent使用兩種類型的許可權,分別是Job Owner和代理(Proxy)。如果建立的Job Step是 Transact-SQL script (T-SQL) 類型,那麼使用Job Owner的許可權去執行TSQL指令碼;如果建立的Job Step是另外11種類型種的一種,那麼使用代理的許可權去執行Job Step。在Job Step執行之前,Agent類比憑證指定的Windows User的許可權,在該許可權範圍(Security Context)內執行Job Step,使Job Step有許可權訪問SQL Server 執行個體之外的資源。

代理(Proxy)使得Job Step在特定的安全上下文中執行,DBA需要建立代理,並為代理設定必須的許可權。

SQL Server Agent lets the database administrator run each job step in a security context that has only the permissions required to perform that job step, which is determined by a SQL Server Agent proxy. To set the permissions for a particular job step, you create a proxy that has the required permissions and then assign that proxy to the job step. A proxy can be specified for more than one job step. For job steps that require the same permissions, you use the same proxy.

1,建立代理

每一個Proxy都關聯一個憑證(Credential),憑證定義了執行Job Step的安全上下文(Security Context)。使用SSMS建立代理,在SQL Server Agent目錄下開啟建立代理賬戶(New Proxy Account)的嚮導,輸入建立的代理名稱和關聯的憑證名稱,從11個子系統(subsystem)列表中選擇“SQL Server Intergration Services Package”,該子系統用於執行SSIS的Package。

由於代理的許可權是由憑證決定的,因此,在建立代理時,為了有效管控執行Job Step的許可權,一般情況下,需要為代理(Proxy)建立專用的使用者賬戶,並未使用者授予必需的許可權,

  • Create dedicated user accounts specifically for proxies, and only use these proxy user accounts for running job steps.

  • Only grant the necessary permissions to proxy user accounts. Grant only those permissions actually required to run the job steps that are assigned to a given proxy account.

2,授予Login訪問代理的許可權

在SQL Server中,不是所有的login都有許可權訪問Proxy。為Proxy添加伺服器層級(Server-Level)的安全性主體(Login),授予其訪問Proxy的許可權,這樣,使用者就能夠引用Proxy去執行Job Step。

在Principals Tab中,授予Login,伺服器角色(server role)或msdb資料庫角色訪問Proxy的許可權。只有被授予訪問Proxy許可權的Principal,才能在Job Step中使用Proxy。預設情況下,固定伺服器角色 sysadmin的成員有許可權訪問執行個體中的所有Proxy。

 

3,引用代理

如果Login有許可權訪問Proxy,或者Login屬於有許可權訪問Proxy的伺服器角色(Server Role),那麼使用者能夠在Job Step中使用Proxy,例如,在建立Job Step,從Run as 列表種選擇可訪問的Proxy:

三,安全性群組(Security Group)

在Windows 域環境中,如果把Job的Owner設定為Security Group(SG),該組的成員無法訪問該Job,只有把Job的Owner設定為使用者的Windows 賬戶時,使用者才能操作Job。

 

參考文檔:

SQL Server Agent

Implement SQL Server Agent Security

SQL Server Agent Fixed Database Roles

Security7:管理SQL Server Agent的許可權

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.