凭证和代理

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

在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,使用Job Owner的权限来执行Job

当Job Step的类型是Transact-SQL Script时,该类型的Step用于执行TSQL脚本,访问的资源都是SQL Server实例内部的,因此,不需要为该Job Step指定Agent Proxy,Job Step以Job Owner的权限上下文执行脚本代码。

2,使用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是可选的。

3,授予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/p/5611460.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
6月前
|
安全 API 数据安全/隐私保护
凭证管理
凭证管理
181 1
|
6月前
|
云安全 安全 开发工具
如何有效管理你的阿里云凭证?
如何有效管理你的阿里云凭证?
114 3
|
2月前
|
安全 API 网络架构
9-6|我现在请求一个接口,怎么关闭认证啊
9-6|我现在请求一个接口,怎么关闭认证啊
|
5月前
|
API
如何获取WCAG认证?
【6月更文挑战第2天】如何获取WCAG认证?
52 2
|
存储 JSON 数据格式
11 公众号开发 - 获取接口调用凭据
11 公众号开发 - 获取接口调用凭据
90 0
|
安全 前端开发 Java
基于Session方式深入了解认证授权 2
基于Session方式深入了解认证授权
55 0
|
Java Maven 数据安全/隐私保护
基于Session方式深入了解认证授权 1
基于Session方式深入了解认证授权
81 0
|
数据采集 监控 安全
代理IP的授权为什么是必要的?
代理IP在网络爬虫、数据采集以及其他涉及对网站访问的应用中发挥着重要作用。然而,为了维护网络生态和保护相关利益,代理IP的授权变得越来越重要。
|
存储 SQL 安全
客户端认证-认证方式
客户端认证-认证方式
120 0
Jasny SSO是否支持多种身份提供者?
Jasny SSO是否支持多种身份提供者?