[转]SSIS ProtectionLevel 对包中敏感数据的访问控制
本文转自:http://technet.microsoft.com/zh-cn/library/ms141747.aspx
为了保护 Integration Services 包中的数据,可以设置保护级别,以帮助仅保护包中的敏感数据或包中的所有数据。 另外,可以采用密码或用户密钥对数据加密,或依靠数据库对数据进行加密。 另外,您对包所采用的保护级别不一定是静态的,而是在包的整个生命周期内可能变化。 通常,您可以在包开发阶段设置一个保护级别,在包部署阶段设置另一个保护级别。
注意 |
|---|
|
除了本主题中所述的保护级别外,您还可以使用固定数据库级角色保护保存到 Integration Services 服务器的包。 |
在 Integration Services 包中,下列信息定义为“敏感”信息:
连接字符串的密码部分。 但是,如果选择加密所有数据的选项,则整个连接字符串都将被视为敏感信息。
标记为敏感的任务生成的 XML 节点。 XML 节点的标记由 Integration Services 控制,用户无法更改。
标记为敏感的所有变量。 标记的变量由 Integration Services 控制。
Integration Services 认为属性是否敏感,主要取决于 Integration Services 组件(连接管理器或任务)的开发人员是否将该属性指定为敏感。 用户不能向被视为敏感的属性列表添加属性,也不能从该列表删除属性。
加密(如包保护级别所使用的加密)是通过使用 Microsoft 数据保护 API (DPAPI) 来执行的,DPAPI 是 Cryptography API (CryptoAPI) 的一部分。
使用密码加密包的包保护级别还要求您提供密码。 如果将保护级别从不使用密码的级别更改为使用密码的级别,则系统将提示您输入密码。
另外,对于使用密码的保护级别,Integration Services 会使用 Triple DES 加密算法(其密钥长度为 192 位),.NET Framework 类库 (FCL) 中提供该算法。
下表介绍 Integration Services 提供的保护级别。 括号中的值是来自 DTSProtectionLevel 枚举的值。 在 SQL Server Data Tools (SSDT) 中处理包时,这些值出现在用来配置包属性的“属性”窗口中。
|
保护级别 |
说明 |
||
|---|---|---|---|
|
不保存敏感数据 (DontSaveSensitive) |
保存包时不保存包中敏感属性的值。 这种保护级别不进行加密,但它防止标记为敏感的属性随包一起保存,因此其他用户将无法使用这些敏感数据。 如果其他用户打开该包,敏感信息将被替换为空白,用户必须提供这些敏感信息。 当与 dtutil 实用工具 (dtutil.exe) 一起使用时,此保护级别对应的值为 0。 |
||
|
使用密码加密所有数据 (EncryptAllWithPassword) |
使用密码加密整个包。 使用用户在创建包或导出包时提供的密码加密包。 若要在 SSIS 设计器中打开包或使用 dtexec 命令提示实用工具运行包,用户必须提供包密码。 如果没有密码,用户将无法访问或运行包。 当与 dtutil 实用工具一起使用时,此保护级别对应的值为 3。 |
||
|
使用用户密钥加密所有数据 (EncryptAllWithUserKey) |
使用基于当前用户配置文件的密钥加密整个包。 只有创建包或导出包的用户才可以在 SSIS 设计器中打开包或使用 dtexec 命令提示实用工具运行包。 当与 dtutil 实用工具一起使用时,此保护级别对应的值为 4。
|
||
|
使用密码加密敏感数据 (EncryptSensitiveWithPassword) |
使用密码只加密包中敏感属性的值。 DPAPI 用于此加密。 敏感数据作为包的一部分保存,但数据是使用当前用户在创建包或导出包时提供的密码加密的。 若要在 SSIS 设计器中打开包,用户必须提供包密码。 如果不提供该密码,则包虽然可以打开但其中不包含敏感数据,当前用户必须为敏感数据提供新值。 如果用户试图在不提供密码的情况下执行包,则包执行将会失败。 有关密码和命令行执行的详细信息,请参阅dtexec 实用工具。 当与 dtutil 实用工具一起使用时,此保护级别对应的值为 2。 |
||
|
使用用户密钥加密敏感数据 (EncryptSensitiveWithUserKey) |
使用基于当前用户配置文件的密钥只加密包中敏感属性的值。 只有使用同一配置文件的同一个用户才能加载此包。 如果其他用户打开该包,敏感信息将被替换为空白,当前用户必须为敏感数据提供新值。 如果用户试图执行该包,则包执行将会失败。 DPAPI 用于此加密。 当与 dtutil 实用工具一起使用时,此保护级别对应的值为 1。
|
||
|
依靠服务器存储进行加密 (ServerStorage) |
使用 SQL Server 数据库角色保护整个包。 在将包保存到 SQL Server msdb 数据库后,支持此选项。 此外,SSISDB 目录使用 ServerStorage 保护级别。 在将包从 SQL Server Data Tools (SSDT) 保存到文件系统时,不支持此选项。 |
SSISDB 目录使用 ServerStorage 保护级别。 在向 Integration Services 服务器部署 Integration Services 项目时,该目录会自动对包数据和敏感值加密。 该目录还会在检索数据时自动解密数据。
若将项目(.ispac 文件)从 Integration Services 服务器导出到文件系统,该系统会将保护级别自动更改为 EncryptSensitiveWithUserKey。 如果使用 SQL Server Data Tools (SSDT) 中的“Integration Services 导入项目向导”导入项目,“属性”窗口中的 ProtectionLevel 属性将显示值 EncryptSensitiveWithUserKey。
在 SQL Server Data Tools (SSDT) 中初次开发 SQL Server Integration Services 包时,可以设置该包的保护级别。 以后当部署包时,在 SQL Server Management Studio 中将包导入 Integration Services 或从中导出包时,或者在将包从 SQL Server Data Tools (SSDT) 复制到 SQL Server、SSIS 包存储区或文件系统时,都可以更新包的保护级别。 例如,如果在计算机上使用某个用户密钥保护级别选项创建并保存包,则在将包提供给其他用户时,很可能需要更改保护级别,否则,他们将无法打开该包。
通常,您可以按下面列出的步骤更改保护级别:
在部署期间,将包的保护级别保留为默认值 EncryptSensitiveWithUserKey。 此设置可以保证只有开发人员可以看到包中的敏感值。 或者,您可以考虑使用 EncryptAllWithUserKey 或 DontSaveSensitive。
部署包时,您需要将保护级别更改为不依靠开发人员用户密钥的保护级别。 因此,通常需要选择 EncryptSensitiveWithPassword 或 EncryptAllWithPassword。 通过分配一个生产环境中运营团队也知道的临时强密码来加密包。
在将包部署到生产环境后,运营团队可以通过分配一个只有他们自己知道的强密码来重新加密部署的包。 他们也可以通过选择 EncryptSensitiveWithUserKey 或 EncryptAllWithUserKey,并使用要运行包的帐户的本地凭据来加密部署的包。
[转]SSIS ProtectionLevel 对包中敏感数据的访问控制的更多相关文章
- 如何在SSIS的脚本组件中访问变量
原文:如何在SSIS的脚本组件中访问变量 这是一个小问题,我们在SSIS的设计中很多地方都会用到变量,我习惯性地将"变量"和"表达式"称为SSIS的灵魂,虽然不 ...
- java 执行 jar 包中的 main 方法
java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...
- commons-lang包中我们常用的类的作用
commons-lang包中对我们有用的类主要有: 1.StringUtils 该类主要提供对字符串的操作,对null是安全的,主要提供了字符串查找,替换,分割,去空白,去掉非法字符等等操作 2.Ob ...
- 不同包中继承关系访问protected内部类问题
有两个包pack1和pack2,pack1中是父类,pack2中子类继承自pack1中的父类.这里主要探索一下子类访问父类中protected内部类的问题: 第一个类: package pack1; ...
- html或者jsp页面引用jar包中的js文件
一,页面上引用jar包中的js文件的方法 使用java web框架AppFuse的时候发现,jquery.bootstrap等js框架都封装到jar包里面了.这些js文件通过一个wro4j的工具对其进 ...
- tar 只解压tar包中某个文件
sh-4.1# ls test.tar sh-4.1# tar -tf test.tar ./ecs20161207.png ./ecs.png ./ecs.xml ./rds.png ./Scree ...
- 判断一个类到底是从哪个jar包中调用的工具类
项目中使用的jar包较多时,会出现jar冲突的情况,有时候很难判断当前使用的这个类是从哪个jar包中调用的.因为一般我们只能看到jar包的名称,不清楚其中的类的目录结构. 这个类的作用就是说明当前调用 ...
- java.io包中的字节流—— FilterInputStream和FilterOutputStream
接着上篇文章,本篇继续说java.io包中的字节流.按照前篇文章所说,java.io包中的字节流中的类关系有用到GoF<设计模式>中的装饰者模式,而这正体现在FilterInputStre ...
- 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类
---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...
随机推荐
- MySQL的读写分离---主从复制、主主复制
1.复制是基于BinLog日志 存在三种日志格式:Statement:存储Sql语句,存储日志量是最小的.有可能复制不一致Row:存储event数据,存储日志量大,但是不能很直接进行读取:Mixed: ...
- 01 java 基础:jdk jre path classpath 相关问题
JRE : Java 运行环境 JDK : Java 开发工具包,其中包括 JRE (javac.java.javap.jar.javadoc .javah 等命令) JVM : Java 虚拟机 ...
- 解决CentOS7 firefox崩溃问题
现象:我在博客园写随笔的时候插入图片,每次都会崩溃,百度了好久,发现这个方法还挺好用的 在终端敲入如下命令: setsebool -P unconfined_mozilla_plugin_transi ...
- 计划任务at cron
计划任务作用:做一些周期性的任务,主要用于定时备份数据,同步时间,定时删除日志 所有计划任务执行的输出都会以邮件的方式发送给指定用户,除非重定向 (1)at:一次性调度执行 1)安装 yum inst ...
- schtasks命令
1.创建任务 在每天的22.44定时执行一次. schtasks /create /tn : 在特定时间运行一次. schtasks /create /tn : /sd // 2.运行一次任务 创建任 ...
- Java篇:IO流
流(IO) 四个基本流: InputStream(输入字节流).OutputStream(输出字节流).writer(输出字符流).reader(输入字符流)-四个基本流都是抽象类不能实例化,固只能用 ...
- 基于kbengine 0.4.20
前言: v0.0.1 2015-04-10 誉小痕(shawhen2012@hotmail.com) v0.0.2 2015-04-12 誉小痕(shawhen2012@hotmail.com) ch ...
- 洛谷 P2680 运输计划-二分+树上差分(边权覆盖)
P2680 运输计划 题目背景 公元 20442044 年,人类进入了宇宙纪元. 题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条 ...
- Windows下的cd命令
http://blog.sina.com.cn/s/blog_5e971b850100rtta.html 首先先了解下什么是驱动器,什么是盘符. 驱动器是指通过系统格式化并带有一个驱动器号的存储区域, ...
- scrapy抓取拉勾网职位信息(四)——对字段进行提取
上一篇中已经分析了详情页的url规则,并且对items.py文件进行了编写,定义了我们需要提取的字段,本篇将具体的items字段提取出来 这里主要是涉及到选择器的一些用法,如果不是很熟,可以参考:sc ...
注意