在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. JAVA学习之动态代理

    JDK1.6中的动态代理 在Java中Java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成一个动态代理对象.JDK提供 ...

  2. Spring IOC以及三种注入方式

    IOC是spring的最基础部分,也是核心模块,Spring的其他组件模块和应用开发都是以它为基础的.IOC把spring的面向接口编程和松耦合的思想体现的淋漓尽致. IOC概念 IOC(Invers ...

  3. webpack-react之webpack篇(http://www.jianshu.com/p/794d573d2c53)

    构建一个小项目——FlyBird,学习webpack和react.(本文成文于2017/2/25) 从webpack开始本篇从零开始,详细记录webpack的各个方面.文章中将会放入很多链接以便扩展, ...

  4. iOS 集成Weex入门教程

    前言 自Weex发布伊始, 其口号 "Write Once, Run Everywhere"就吸引了大批前端与客户端程序猿纷纷入坑, 我也不能独善其中. 就我目前所学习Weex的经 ...

  5. VC++中解决“在查找预编译头使用时跳过”的方法

    Visual C++ Concepts: Building a C/C++ ProgramCompiler Warning (level 1) C4627Error Message": sk ...

  6. Button颜色选择器进阶

    drawable/button_color.xml <?xml version="1.0" encoding="utf-8"?> <selec ...

  7. Javascript:面试经典套路-查重(reduce)

    今天在偶然间查看到了一段代码,代码使用了很短的篇幅完成了字符串统计相同字符次数这个经典面试题,其中用到了reduce这个方法,网上查了查,没有查到什么有价值的东西,导致浪费了我一些时间才看懂,现将我的 ...

  8. 【读书笔记】-- 你不知道的JavaScript

    <你不知道的JavaScript>是一个不错的JavaScript系列书,书名可能有些标题党的意思,但实符其名,很多地方会让你有耳目一新的感觉. 1.typeof null === &qu ...

  9. Arrays工具类的实用功能

  10. 知问前端——html+jq+jq_ui+ajax

    **************************************************************************************************** ...