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)

posted @ 2022-06-04 16:58  Jerry_Chen  阅读(642)  评论(0编辑  收藏  举报