SQL Server ->> 憑證(Credential)

憑據定義了訪問 SQL Server 外部資源所需的身份驗證信息。 主要用處可以用於訪問Windows資源、Azure BLOB或者PolyBase模擬器訪問大數據Hadoop。系統憑據是自動創建的,並與特定端點關聯, 系統憑據名以兩個哈希符號 (##) 開頭。

憑證又分爲實例級別憑證和數據庫級別憑證(DATABASE SCOPED)。區別就是,實例級別的憑證可以映射到登錄用戶(LOGIN),而數據庫憑證不映射到數據庫用戶和登錄用戶(LOGIN)。

 

創建憑證(CREATE CREDENTIAL)

身份是Windows用戶身份的時候,CREATE CREDENTIAL語句的IDENTITY指定Windows賬戶名,Secret指定賬戶密碼。創建共享訪問簽名憑據,IDENTITY='SHARED ACCESS SIGNATURE',SECRET = 'accesstoken'

 

使用場景1(SQL Server Agent作業步驟的運行身份):

現在有個SSIS包需要訪問Windows機器上的文件,這個包的定時作業執行是通過SQL Server Agent服務來執行的,但是由於SQL Server Agent的默認身份是本地機器的NetworkServices身份,所以會導致允許SSIS包的時候報錯。爲了不影響其他的Job作業,可以CREATE CREDENTIAL創建一個憑證,憑證的登錄身份是可以訪問目標機器文件的Windows用戶,然後通過創建SQL Server Agent的代理,選擇所創建的憑證,然後修改SSIS執行作業步驟的運行身份爲前面所創建的代理。

 

使用場景2(創建外部數據源 EXTERNAL DATASOURCE):

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH
     IDENTITY = '<hadoop_user_name>',
     SECRET = '<hadoop_password>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    CREDENTIAL = HadoopUser1 ,
    TYPE = HADOOP ,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
  );

 

 

參考:

憑證

CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

CREATE CREDENTIAL (Transact-SQL)

CREATE EXTERNAL DATA SOURCE (Transact-SQL)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章