天天看點

憑證和代理

在SQL Server中,憑證(Credential)用于把Windows使用者的身份驗證資訊(在Windows環境下,是Windows 使用者名和密碼)存儲在SQL Server執行個體中,并把該身份驗證資訊傳遞給Login和Proxy,使其有權限通路SQL Server執行個體之外的資源。在SQL Server安全體系中,Login用于登陸SQL Server執行個體,使用者通過Login登陸到SQL Server執行個體,在權限規定的範圍内,通路SQL Server執行個體内部的資源,也就是說,Login權限的作用域是SQL Server 執行個體;而對于SQL Server執行個體外部的資源,通路權限是由作業系統Windows負責管控的,作業系統不識别SQL Server内部的Login,隻識别Windows 使用者(User),是以,SQL Server在通路執行個體外部的資源時,需要模拟Windows使用者的身份來通路作業系統管理的資源。

由于憑證(Credential)包含通路 SQL Server 執行個體之外的資源所需要的身份驗證資訊,這使得Login通過憑證,有權限通路SQL Server執行個體之外的系統資源。一個憑證可以映射多個Login,一個Login隻能映射到一個憑證,通過系統視圖: sys.credentials  檢視憑證資訊。使用者可以建立自定義的憑證,SQL Server在安裝時也會自動建立系統憑證,并關聯到特定的端點(EndPoint),系統憑證的名字以##打頭。

一,憑證和Login

雖然Login有權限登陸SQL Server 執行個體,但是不具有通路SQL Server 執行個體之外的資源的權限。而憑證用于通路SQL Server 執行個體以外的資源,在建立Login時,把Login和憑證關聯,Login就能通過憑證中存儲的Windows賬戶通路SQL Server 執行個體之外的資源。如果以SQL Server 驗證方式建立Login,并将該Login映射到憑證,那麼該Login能夠通過存儲在憑證中的身份驗證資訊通路到 SQL Server 執行個體外部的資源。

1,建立憑證

Identity 指定憑證包含的Windows使用者名,Secret指定Windows使用者的密碼,使用Identity參數指定的Windows使用者連接配接SQL Server執行個體的外部資源。

CREATE CREDENTIAL credential_name 
WITH IDENTITY = 'windows_user', SECRET = 'password'       

2,将Login映射到憑證

一個Login隻能映射到一個憑證,多個Login能夠映射到同一個憑證。

CREATE CREDENTIAL AlterEgo 
WITH IDENTITY = 'Mary5', SECRET = '<EnterStrongPasswordHere>';

ALTER LOGIN Login1
WITH CREDENTIAL = AlterEgo;
GO      

3,使用TSQL指令修改憑證的密碼

ALTER CREDENTIAL credential_name 
WITH IDENTITY = N'domain\username', SECRET = N'new_password'      

當然,也能通過SSMS的UI修改憑證的密碼,打開Server級别的Security,修改Credentials目錄下的憑證:

憑證和代理

二,憑證和Proxy

SQL Server Agent在執行Job Step時,使用兩種類型的權限,分别是Job Owner和代理(Proxy),Proxy包含憑證(Credential),定義Job Step的安全上下文(Security Context),在Job Step執行之前,Agent模拟憑證指定的Windows User的權限,在該權限範圍(Security Context)内執行Job Step,使Job Step有權限通路SQL Server 執行個體之外的資源。

1,使用Proxy來執行Job Step

除了執行TSQL腳本的Job Step之外,其他Job Step必須使用Proxy,這以為着,Job Step必須運作在Proxy定義的安全上下文中,在建立Job Step時,必須在Run as 屬性中指定Proxy。

在建立Proxy時,必須填寫Proxy Name,Credential name和選擇Agent子系統(Subsystem),Proxy的Description是可選的。

憑證和代理

2,授予Principal(Login, server role)通路Proxy的權限

在SQL Server中,不是所有的login都有權限通路Proxy。打開 New Proxy Account Wizard,在Principals Tab中,授予Principal(Login, server role)通路Proxy的權限。隻有被授予通路Proxy權限的Principal,才能在Job Step中使用Proxy。預設情況下,固定伺服器角色 sysadmin的成員有權限通路執行個體中的所有Proxy。

憑證和代理

如果Login有權限通路Proxy,或者Login屬于有權限通路Proxy的伺服器角色(Server Role),那麼使用者能夠在Job Step中使用Proxy。

參考文檔:

Creating SQL Server Agent Proxies

SQL Server DBA Tip: Credentials and Proxies

Credentials (Database Engine)

Security Questions: Logins, Credentials, and Proxies

作者

:悅光陰

出處

:http://www.cnblogs.com/ljhdo/

本文版權歸作者和部落格園所有,歡迎轉載,但未經作者同意,必須保留此段聲明,且在文章頁面醒目位置顯示原文連接配接,否則保留追究法律責任的權利。

繼續閱讀