[转]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)用来将文件或 ...
随机推荐
- linux命令(48):nl命令
nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...
- session和cookie基本操作
session的作用同cookie一样: 1.在不同页面使用同一数组 2.实现验证码,用户跟踪(个人觉得这个用到的其实还是1中的作用) session相对于cookie更加的安全 先来说一下cooki ...
- AC日记——[SDOI2017]树点涂色 bzoj 4817
4817 思路: 跪烂大佬 代码: #include <bits/stdc++.h> using namespace std; #define maxn 500005 struct Tre ...
- 走进 UnitTest for Xamarin.Forms
之前讲了 Xamarin.Forms 的 UITest 走进 UITest for Xamarin.Forms 走进 Xamarin Test Recorder for Xamarin.Forms 但 ...
- C#读取RSS源,并利用Solr索引
折磨我几天的问题今天终于解决了,分享一下近期solr使用的一些经验. 本来是用nutch在爬取页面,可是客户需要爬取RSS,而且可以识别那些页面是通过RSS源抓取出来的.nutch虽然自带解析RSS的 ...
- 四十七 常用内建模块 XML
XML虽然比JSON复杂,在Web中应用也不如以前多了,不过仍有很多地方在用,所以,有必要了解如何操作XML. DOM vs SAX 操作XML有两种方法:DOM和SAX.DOM会把整个XML读入内存 ...
- Linux rsync数据定时增量备份
一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 系统一般默认已安装,安装方法: yum -y install rsync 2.添加配置文件 rsync没有 ...
- web.config 数据库连接
方法一:connectionsStrings 首先配置web.config文件 <configurations> <connectionStrings> <add nam ...
- AndroidManifest.xml文件详解(permission)
http://blog.csdn.net/think_soft/article/details/7574726 语法(SYNTAX): <permissionandroid:descriptio ...
- 洛谷——P1724 东风谷早苗
P1724 东风谷早苗 题目描述 在幻想乡,东风谷早苗是以高达控闻名的高中生宅巫女.某一天,早苗终于入手了最新款的钢达姆模型.作为最新的钢达姆,当然有了与以往不同的功能了,那就是它能够自动行走,厉害吧 ...
注意