在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

凭证(Credential)的更多相关文章

  1. Jenkins 凭证管理 - 看这一篇就够了~

    目录 Credential 类型 Credential 安全 Credential 创建 Credential ID 定义 Credential 使用 Credential 相关插件 最佳实践 许多三 ...

  2. 【原】AFNetworking源码阅读(六)

    [原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...

  3. Win10/UWP开发—凭据保险箱PasswordVault

    PasswordVault用户凭据保险箱其实并不算是Win10的新功能,早在Windows 8.0时代就已经存在了,本文仅仅是介绍在UWP应用中如何使用凭据保险箱进行安全存储和检索用户凭据. 那么什么 ...

  4. Android广播大全

    1.String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式. 2.String ALL_APPS_ACTION 动作:列举所有可用的应用.输入:无. 3.String A ...

  5. Android权限列表permission说明

    网络上不乏android权限列表,但是很少有将列表和使用方法放在一起的,所以特此总结一下 需要在AndroidManifest.xml中定义相应的权限(以获取internet访问权限为例),如下: & ...

  6. android关于AndroidManifest.xml详细分析

    http://my.eoe.cn/1087692/archive/5927.html 一.关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必 ...

  7. 【转】Android Intent Action 大全

    String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式.. “android.intent.action.ADD_SHORTCUT” String ALL_APPS_AC ...

  8. android广播集合,intent,action

    android.permission.ACCESS_CHECKIN_PROPERTIES 同意读写訪问"properties"表在checkin数据库中,改值能够改动上传( All ...

  9. action使用大全

    1.Intent的用法: (1)Action跳转 1. 使用Action跳转,当程序AndroidManifest.xml中某一个 Activity的IntentFilter定义了包含Action, ...

  10. 在Ubuntu 12.10 上安装部署Openstack

    OpenStack系统有几个关键的项目,它们能够独立地安装但是能够在你的云计算中共同工作.这些项目包括:OpenStack Compute,OpenStack Object Storage,OpenS ...

随机推荐

  1. 2017-3-9 SQL server 数据库

    数据库的定义:数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,简单说数据库是一些存储在硬盘上的数据文件,随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所 ...

  2. vue组件最佳实践

    看了老外的一篇关于组件开发的建议(强烈建议阅读英文原版),感觉不错翻译一下加深理解. 这篇文章制定一个统一的规则来开发你的vue程序,以至于达到一下目的. 1.让开发者和开发团队更容易发现一些事情. ...

  3. Visual Studio 20周年软件趋势随想

    从2002年开始,.net让开发人员能快速构建和部署应用程序,便捷的开发windows和web服务器应用,同时著名的hacker Miguel de Icaza ,Miguel 为了GNOME项目启动 ...

  4. C#中static void Main(string[] args) 参数详解

    学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...

  5. Struts中数据处理

    对数据操作的3种方法(把数据保存到域中): 方式1:直接获取servletApi 核心类:ServletActionContext提供的静态方法 /** * 方式1:拿到servletApi,执行操作 ...

  6. java关于map用来筛选的用法

    我有一个实体 PropTemplateItem{id,名称,父节点,模版id},父节点为root是定义为根节点. 例如数据: 001,颜色,root,123 002,白色,001,123 003,红色 ...

  7. VueJs学习路线

    对于这个东西,我本人也是初学者,收集一些学习资源的链接,用于个人资源的学习,也分享给大家 lavyun的博客 里面有一些给初学者的建议,学习路线 http://www.cnblogs.com/smar ...

  8. 引用类型-----Object

    本文章转载至:https://segmentfault.com/a/1190000003984584 关于引用类型的概念: 引用类型:引用类型的值(对象)是引用类型的一个实例: 对象:是某个特定引用类 ...

  9. node.js 基础知识之 querystring.stringify querystring.escape

    序列化   1.  querystring.stringify({name:'chenshuai',ago:21,job:"web"})    'name=chenshuai&am ...

  10. 看懂SqlServer查询计划 SQL语句优化分析

    转自 http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 阅读目录 开始 SQL Server 查找记录的方法 SQL Ser ...