用户与角色
多租户安全体系:
1、用户认证
MaxCompute账号体系
MaxCompute支持云账号和RAM账号两种账号体系
云账号:默认情况下,MaxCompute项目仅能识别阿里云账号系统;
申请阿里云账号-实名认证-创建运行密钥accesskeys
accesskey由两部分组成:accesskeyid和accesskeysecret组成,accesskeyid 用于检索Accesskey,Accesskey用于计算消息签名
查看账号系统命令:
list accountproviders;
RAM账号:RAM(resource access management)是阿里云为客户提供的用户身份管理与资源访问控制服务,通过RAM服务,主账号可以创建、管理用户账号(RAM账号),控制这些用户账号对主账号名下资源具有的操作权限。
从归属关系上看,云账户与RAM用户是一种主子关系。
从权限角度看,云账户与RAM用户是一种root与user的关系(类比Linux系统)。
MaxCompute仅能识别RAM的账号体系,不能识别RAM的权限体系;添加RAM
账号系统命令:
add accountprovider ram;
用户认证:
用户认证检查请求request发送者的真实身份:正确验证消息发送方的真实身份,正确验证接收到的消息在途中是否被篡改。
云账号认证使用消息签名机制,可以保证消息在传输过程中的完整性integrity和真实性authenticity,目前采用的消息签名算法是HMAC-SHA1
LVS负载均衡发送accessid MD5签名-HTTP Server发送accessid MD5签名-云账号服务器返回accountid-HTTP Server
项目空间用户管理:
1、Alice创建一个名为wonderland的项目,自动成为owner;没有Alice授权,其他任何人都无法访问wonderland;
2、Alice要授权Bob允许他访问wonderland的一些对象:首先bob要有一个合法的云账号,然后Alice要把bob的云账号加到项目中,最后赋一些对象的权限给bob。
3、alice要禁止Bob访问项目,则直接将他的云账号从项目中移除即可,前提是bob没有被赋予任何角色。
4、bob虽然被移除了项目,但他之前被赋予的权限仍然保留在项目中。下次一旦他被Alice加入到同一个项目,原有的权限将会被自动激活。
角色管理:角色(role)是一组访问权限的集合。
相比owner,admin角色不能将admin角色赋给别的用户,不能设定项目空间的安全配置,不能修改项目空间的鉴权模型。
角色的限制:admin角色的权限不能被修改;没被使用的角色才可以被删除。
2、项目空间的用户与授权管理
授权三要素:主体subject、客体object、操作action
授权两方法:ACL基于对象的授权;Policy基于策略的授权。
ACL授权客体包括project、table、function、resource、instance。
说明:project类型对象的createtable操作、table类型的select、alter、update、drop操作需要与project对象的create instance操作权限配合使用;当跨项目操作如在项目A里select项目B的table,则需要有项目A的createinstace和项目B的tableselect权限。
ACL授权:
基本语法:
grant on
权限查看:
A:表示allow,即允许访问。
D:表示deny,即拒绝访问。
C:表示with Condition,即为带条件的授权,只出现在policy授权体系中。
G:表示with grant option,即可以对object进行授权
查看指定用户权限:
show grants;查看当前用户自己的访问权限
show grants for ;查看指定用户的访问权限,仅由projectowner和admin才能执行权限。
查看指定角色权限:
describe role;查看指定角色的访问权限角色指派
项目空间的安全配置:鉴权模型配置
用户管理和授权
基于标签的安全管理
基于标签的安全控制
labelsecurity基本操作
LabelSecurity注意事项
应用场景
应用场景2
跨项目空间的资源分享
Package
package是一种跨项目空间共享数据及资源的机制,主要用于解决跨项目空间的用户授权问题。
创建者(资源提供方)+使用者(资源使用者)=Package机制
Package创建者
Package使用者
例子:
项目空间的数据保护
防止数据流出:
项目空间的保护机制
设置ProjectProtection规则:数据只能流入,不能流出
set ProjectProtection=true;
设置后,触犯了ProjectProtection规则的数据流出会被禁止。
默认时,ProjectProtection不会被设置,需要手工开启。