配置用户权限
阿里云权限管理机制包括访问控制和临时安全令牌,可以根据需求使用不同权限的RAM用户来访问表格存储,也支持为用户提供访问的临时授权。使用RAM和STS能极大地提高管理的灵活性和安全性。
背景信息
RAM和STS解决的一个核心问题是如何在不暴露主账号的AccessKey的情况下安全地授权其他人访问。因为主账号的AccessKey泄露会带来极大的安全风险,其他人可以随意操作该账号下所有的资源、盗取重要信息等。
RAM提供了一种长期有效的权限控制机制,通过分出不同权限的RAM用户,将不同的权限分给不同的用户,即使RAM用户的AccessKey泄露也不会造成全局的信息泄露。RAM用户一般情况也是长期有效的。因此RAM用户的AccessKey也不能泄露。
相对于RAM提供的长效控制机制,STS提供的是一种临时访问授权,通过STS可以获取临时的AccessKey和Token,这些信息可以直接发给临时用户用来访问表格存储。一般来说,从STS获取的权限会受到更加严格的限制,并且拥有时间限制,因此即使这些信息泄露,对于系统的影响也很小。
配置RAM用户权限
创建RAM用户。具体操作,请参见创建RAM用户。
为RAM用户授权,根据实际配置RAM用户的权限。具体操作,请参见为RAM用户授权。
如果需要管理表格存储,例如创建实例等,请授予RAM用户AliyunOTSFullAccess权限。
如果需要只读访问表格存储,例如读取表中数据等,请授予RAM用户AliyunOTSReadOnlyAccess权限。
如果需要只写访问表格存储,例如创建数据表等,请授予RAM用户AliyunOTSWriteOnlyAccess权限。
为RAM用户设置多因素认证。具体操作,请参见为RAM用户绑定多因素认证设备。
配置临时用户权限
创建临时角色及授权。
创建可信实体为阿里云账号的RAM角色。具体操作,请参见创建可信实体为阿里云账号的RAM角色。
创建名称分别为
ramtestappreadonly
和ramtestappwrite
两个角色,ramtestappreadonly
用于读取等操作,ramtestappwrite
用于上传文件的操作。创建自定义策略。具体操作,请参见创建自定义权限策略。
说明如果需要更精细的权限控制,您可以自定义策略的权限。更多信息,请参见自定义权限。
此处以
ram-test-app-readonly
和ram-test-app-write
两个策略为例介绍。ram-test-app-readonly策略
{ "Statement": [ { "Effect": "Allow", "Action": [ "ots:BatchGet*", "ots:Describe*", "ots:Get*", "ots:List*" ], "Resource": [ "acs:ots:*:*:instance/ram-test-app", "acs:ots:*:*:instance/ram-test-app/table/*" ] } ], "Version": "1" }
ram-test-app-write策略
{ "Statement": [ { "Effect": "Allow", "Action": [ "ots:Create*", "ots:Insert*", "ots:Put*", "ots:Update*", "ots:Delete*", "ots:BatchWrite*" ], "Resource": [ "acs:ots:*:*:instance/ram-test-app", "acs:ots:*:*:instance/ram-test-app/table/*" ] } ], "Version": "1" }
为临时角色授权。具体操作,请参见为RAM角色授权。
为
ramtestappreadonly
角色赋予ram-test-app-readonly
(只读访问表格存储)策略,为ramtestappwrite
角色赋予ram-test-app-write
(只写表格存储)策略。授权完成后,记录角色的ARN,即需要扮演角色的ID,如下图所示。
临时授权访问。
创建自定义策略。具体操作,请参见创建自定义权限策略。
说明如果需要更精细的权限控制,您可以自定义策略的权限。更多信息,请参见自定义权限。
此处以
AliyunSTSAssumeRolePolicy2016011401
和AliyunSTSAssumeRolePolicy2016011402
两个策略为例介绍。其中Resource
为角色的ARN信息。AliyunSTSAssumeRolePolicy2016011401
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "acs:ram:198***237:role/ramtestappreadonly" } ] }
AliyunSTSAssumeRolePolicy2016011402
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "acs:ram:198***237:role/ramtestappwrite" } ] }
授权RAM用户临时角色。具体操作,请参见为RAM用户授权。
将自定义策略
AliyunSTSAssumeRolePolicy2016011401
和AliyunSTSAssumeRolePolicy2016011402
授权给名称为ram_test_app
的RAM用户。
从STS获取的临时访问凭证。具体操作,请参见AssumeRole。
使用临时授权读写数据。
您可以使用临时授权调用不同语言的SDK访问表格存储。Java SDK请参考以下方式创建OTSClient对象,传入从STS获取的AccessKeyId、AccessKeySecret和SecurityToken等参数。
OTSClient client = new OTSClient(otsEndpoint, stsAccessKeyId, stsAccessKeySecret, instanceName, stsToken);