[转]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)用来将文件或 ...
随机推荐
- 海量文件查重SimHash和Minhash
SimHash 事实上,传统比较两个文本相似性的方法,大多是将文本分词之后,转化为特征向量距离的度量,比如常见的欧氏距离.海明距离或者余弦角度等等.两两比较固然能很好地适应,但这种方法的一个最大的缺点 ...
- java 默认内存大小
https://www.cnblogs.com/jack204/archive/2012/07/02/2572932.html -Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设 ...
- Django 如何实现文件下载
1. 思路: 文件,让用户下载 - a标签+静态文件 - 设置响应头(django如何实现文件下载) 2. a标签实现 <a href="/static/xxx.xlsx"& ...
- 辨析各类web服务器:Apache/Tomcat/Jboss/Nginx/等,还有Nodejs
先说一下各类服务器能干啥,特点是啥,然后在区分他们的类别. (1)Apache: Apache是指Apache软件基金会的Apache HTTP Server, 它能够接收http请求,然后返回各类资 ...
- ngx_lua_waf完整安装说明
测试环境:centos5.6 x32,nginx1.4.4,LuaJIT-2.0.3,ngx_devel_kit-0.2.19.lua-nginx-module-0.9.11,ngx_lua_waf ...
- CentOS7用yum安装MySQL与启动
首先CentOS7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安 ...
- hdu多校5
1002 思路:贪心显然不好贪,直接爆搜. #include<bits/stdc++.h> #define LL long long #define fi first #define se ...
- Aras Innovator DB备份与还原
错误信息 确认到该问题是因为孤立帐号的问题,在解决孤立帐号之前,可以通过语句查看,另外,还原了DB后,系统不会自动创建原来的登陆帐号的,需要手动新增登陆帐号 #查看孤立帐号列表exec sp_chan ...
- (5) go 控制台输入输出、进制转换、原反补码、位运算
一.控制台接受输入 二.原反补码 三.位运算 四.移位运算
- 17-7-24-react入门
先说明下为什么说好每天一更,周五周六周日都没有更新.因为在周五的时候,上司主动找我谈了转正后的工资4-4.5K.本来想好是6K的,后来打听了一圈公司的小伙伴,都是5-5.5,我就把自己定到了5K.万万 ...