棋牌网站开发工程师,深圳品牌营销推广,做网站容易 但运营难,创建网站收费MaxCompute 是一个支持多租户的统一大数据处理平台#xff0c;不同的用户对数据安全需求不尽相同。为了满足不同租户对数据安全的灵活需求#xff0c;MaxCompute 支持项目空间级别的安全配置#xff0c;ProjectOwner 可以定制适合自己的外部账号支持和鉴权模型并且在某种程度…MaxCompute 是一个支持多租户的统一大数据处理平台不同的用户对数据安全需求不尽相同。为了满足不同租户对数据安全的灵活需求MaxCompute 支持项目空间级别的安全配置ProjectOwner 可以定制适合自己的外部账号支持和鉴权模型并且在某种程度上保障Project的数据安全。
通常情况下常见的开发模式为__MaxComputeDataWorks__方式针对这种场景下数据安全方案如下
一、禁止数据下载到本地
禁止数据流出或下载本地
方式① 数据保护机制也被称之为开启项目空间数据保护可以通过MaxCompute console 开启服务端禁止数据流出
set projectProtectiontrue
--设置ProjectProtection规则数据只能流入不能流出。
--默认时ProjectProtection不会被设置值为false。
方式② 那么更多开发者通过DataWorks进行数据分析通常会屏显在IDE上并且可以下载结果这种可以通过项目管理 项目配置中打开“在本项目中能下载select结果”具体如下 那么这种情况下在DataWorks查询结果页面就不可以通过“下载”按钮进行下载数据到本地。 开启数据保护机制后的数据流出方法
在您的Project被设置了ProjectProtection之后您可能很快就会遇到这样的需求user1向您提出申请她的确需要将某张表的数据导出您的项目空间。
而且经过您的审查之后那张表也的确没有泄漏您关心的敏感数据。为了不影响user1的正常业务需要MaxCompute为您提供了在ProjectProtection被设置之后的两种数据导出途径。
方式① ProjectOwner设置ExceptionPolicy针对已经开启项目数据保护的进行开例外。具体方式如下需要通过MaxCompute console操作
SET ProjectProtectiontrue WITH EXCEPTION policyFile
这种policy不同于Policy授权(尽管它与Policy授权语法完全一样)它只是对项目空间保护机制的例外情况的一种描述即所有符合policy中所描述的访问情形都可以打破ProjectProtection规则。policy详细文档 {Version: 1,Statement:[{Effect:Allow,Principal:ALIYUN$Alicealiyun.com,Action:[odps:Select],Resource:acs:odps:*:projects/alipay/tables/table_test,Condition:{StringEquals: {odps:TaskType:[DT, SQL]}}}]} ProjectProtection是一种数据流向的控制而不是访问控制。只有在用户能访问数据的前提下控制数据流向才是有意义的。 *** 另外可以通过show grants [for username] [on type objectType] 查看某用户权限查看是否加例外成功。
方法② 设置TrustedProject若当前项目空间处于受保护状态如果将数据流出的目标空间设置为当前空间的TrustedProject那么向目标项目空间的数据流向将不会被视为触犯ProjectProtection规则。可以通过如下命令方式进行设置需通过MaxCompute console进行
list trustedprojects;
--查看当前project中的所有TrustedProjects
add trustedproject projectname;
--在当前project中添加一个TrustedProject
remove trustedproject projectname;
--在当前project中移除一个TrustedProject
二、IP白名单控制
MaxCompute支持Project级别的IP白名单。
设置IP白名单后只有白名单列表中的IPconsole或者SDK所在的出口IP能够访问这个Project。设置IP白名单后您需要等待五分钟后才会生效。切记在设置白名单的时候加上自己当前机器IP以免把自己屏蔽。
setproject odps.security.ip.whitelist101.132.236.134,100.116.0.0/16,101.132.236.134-101.132.236.144;
白名单中IP列表的表示格式有三种。
单纯IP例如101.132.236.134。子网掩码100.116.0.0/16。网段101.132.236.134-101.132.236.144。
具体详细教程可以参考IP白名单控制。
更精细化的管理
当然MaxCompute Policy机制也可以实现控制某个用户/或者角色的用户从具体IP地址来访问具体资源表、UDF、资源等。Policy样例
{Version: 1,Statement:[{Effect:Allow,Principal:ALIYUN$alicealiyun.com,Action:[odps:CreateTable,odps:CreateInstance,odps:List],Resource:acs:odps:*:projects/prj1,Condition:{DateLessThan: {acs:CurrentTime:2013-11-11T23:59:59Z},IpAddress: {acs:SourceIp:10.32.180.0/23}}},{Effect:Deny,Principal:ALIYUN$alicealiyun.com,Action:odps:Drop,Resource:acs:odps:*:projects/prj1/tables/*}]} 授权用户alicealiyun.com只能在2013-11-11T23:59:59Z这个时间点之前、只能从“10.32.180.0/23”这个IP段提交请求 只允许在项目空间prj1中执行CreateInstance, CreateTable和 List操作禁止删除prj1下的任何table。具体可以参考Policy文档。 三、数据保护伞数据脱敏
数据保护伞为DataWorks的一个数据安全模块具体可以通过点击进入进行了解其包括数据脱敏、安全审计等。https://help.aliyun.com/document_detail/86320.html
可以针对敏感数据在DataWorks屏显进行加**显示如下图所示 注意数据保护伞是DataWorks的一个模块如果使用了数据保护伞且进行了数据脱敏但是通过console进行tunnel download还是未脱敏状态。 四、细粒度的权限管控
1、列级别LabelSecurity访问控制 项目空间中的LabelSecurity安全机制默认是关闭的ProjectOwner可以自行开启。
【应用场景】 场景说明user_profile是某项目空间中的一张含有敏感数据的表它包含有100列其中有5列包含敏感数据id_card, credit_card, mobile, user_addr, birthday. 当前的DAC机制中已经授权了所有用户对该表的Select操作。ProjectOwner希望除了Admin之外所有用户都不允许访问那5列敏感数据。
ProjectOwner操作步骤如下
set LabelSecuritytrue; --开启LabelSecurity机制
set label 2 to table user_profile(mobile, user_addr, birthday); --将指定列的敏感等级设置为2
set label 3 to table user_profile(id_card, credit_card); --将指定列的敏感等级设置为3
Alice是项目空间中的一员由于业务需要她要申请访问user_profile的mobile列的数据需要访问1周时间。项目空间管理员操作步骤如下
GRANT LABEL 2 ON TABLE user_profile TO USER alice WITH EXP 7;
更多关于列级别安全控制文档https://help.aliyun.com/document_detail/34604.html
2、Role Policy管理自定义Role 很多用户会因为DataWorks内置的数据开发、运维、管理员等角色不能满足其个性化需求会基于ACL创建符合自己业务逻辑的角色如数据分析师、ETL开发等基于这些role如何进行复杂的授权如批量授予ods_开头的表权限但限制条件的以及Deny类型的角色这个时候就需要结合Role policy来精细化管理。
一次操作对一组对象进行授权如所有的函数、所有以”taobao”开头的表。带限制条件的授权如授权只会在指定的时段内才会生效、当请求者从指定的IP地址发起请求时授权才会生效、或者只允许用户使用SQL而不允许其它类型的Task来访问某张表。
方式① Policy操作代码如下所示
get policy --读取项目空间的Policy
put policy policyFile --设置覆盖项目空间的Policy
get policy on role roleName --读取项目空间中某个角色的Policy
put policy policyFile on role roleName --设置覆盖项目空间中某个角色的Policy
方式② 通过DataWorks-项目管理-MaxCompute配置-自定义用户角色中进行。 创建步骤
【新增角色】点击新建角色填写角色名称勾选需要加入该角色的账号子账号用户。【角色授权】包括两种一个是表一个是项目。以表为例选择需要授权的表并赋予相应的操作权限如下所示针对具体表赋予具体权限。说明上述两种方式最大的区别就是role policy可以进行批量表授权如以taobao_开头的。但是DataWorks大的方式需要逐个表来进行筛选并配置权限。 四、JDBC 2.4数据安全加固
MaxCompute JDBC 2.4针对数据安全加固做了一定的挑战具体JDBC地址https://github.com/aliyun/aliyun-odps-jdbc/releases
在JDBC中使用数据安全加固方案具体步骤
下载JDBC 2.4建议配置jdbc url通常如下制定Tunnel endpoint地址如 jdbc:odps:http://service.cn.maxcompute.aliyun-inc.com/api?tunnelEndpointhttp://dt.cn-shanghai.maxcompute.aliyun-inc.com。具体region对应的MaxCompute Endpoint和Tunnel Endpoint可以参考文档https://help.aliyun.com/document_detail/34951.html开启项目保护SET ProjectProtectiontrue不需要加exception例外具体可以想见项目保护机制章节。打开控制返回数据条数setproject READ_TABLE_MAX_ROW1000;基于JDBC的工具进行查询数据返回条数会控制在1000条以内。说明如果使用的版本小于JDBC 2.4并且开启了项目保护那么通过JDBC方式会直接报错无权限。 原文链接 本文为云栖社区原创内容未经允许不得转载。