指定子用户对特定文件夹有读写权限的Policy要如何写
详细解答可以参考官方帮助文档
再来考虑一种场景,已经有别的用户在使用开发的App,那么可以考虑用单独的Bucket来存储用户的App数据,假定为ram-test-app。那么考虑到权限隔离的问题,就不应该让应用服务器访问到ram-test-app,即仅授予ram_test_pub这个账号ram-test-dev的读权限。这也是可以通过RAM的权限系统来完成的。具体操作步骤如下:
由于系统中没有Bucket级别的默认策略,因此需要自定义策略。 这里Bucket访问的策略如下,更详细的信息请参考RAM策略的说明和OSS授权问题FAQ。 {
'Version': '1',
'Statement': [
{
'Effect': 'Allow',
'Action': [
'oss:ListObjects',
'oss:GetObject'
],
'Resource': [
'acs:oss:*:*:ram-test-dev',
'acs:oss:*:*:ram-test-dev/*'
]
}
]
}设置完成之后可以在自定义授权策略列表中查看。
在用户的授权管理中将该策略加入授权范围,并且在用户管理 > 管理 > 用户授权策略中将之前授予的OSS全部可读权限解除。
测试权限设置的有效性。
访问ram-test-dev的Object成功:$./osscmd get oss://ram-test-dev/test.txt test.txt --host=oss-cn-hangzhou.aliyuncs.com -i oOhue******Frogv -k OmVwFJO3qcT0******FhOYpg3p0KnA
100% The object test.txt is downloaded to test.txt, please check.
0.047(s) elapsed
访问ram-test-app的Object失败:$./osscmd get oss://ram-test-app/test.txt test.txt --host=oss-cn-hangzhou.aliyuncs.com -i oOhue******Frogv -k OmVwFJO3qcT0******FhOYpg3p0KnA
Error Headers:
[('content-length', '229'), ('server', 'AliyunOSS'), ('connection', 'keep-alive'), ('x-oss-request-id', '5646ED53F9EEA2F3324191A2'), ('date', 'Sat, 14 Nov 2015 08:14:11 GMT'), ('content-type', 'application/xml')]
Error Body:
AccessDenied
AccessDenied
5646ED53F9EEA2F3324191A2
ram-test-app.oss-cn-hangzhou.aliyuncs.com
Error Status:
403
get Failed!
上传文件到oss-test-app失败:$./osscmd put test.txt oss://ram-test-app/test.txt --host=oss-cn-hangzhou.aliyuncs.com -i oOhue******Frogv -k OmVwFJO3qcT0******FhOYpg3p0KnA
100% Error Headers:
[('content-length', '229'), ('server', 'AliyunOSS'), ('connection', 'keep-alive'), ('x-oss-request-id', '5646ED7BB8DE437A912DC7A8'), ('date', 'Sat, 14 Nov 2015 08:14:51 GMT'), ('content-type', 'application/xml')]
Error Body:
AccessDenied
AccessDenied
5646ED7BB8DE437A912DC7A8
ram-test-app.oss-cn-hangzhou.aliyuncs.com
Error Status:
403
put Failed!
通过上文的设置,就成功的将ram-test-dev和ram-test-app的权限完全区分开了。 上面介绍的主要是如何使用子账号的权限控制功能来分割权限,将信息泄露造成的危害降到最低。 如果用户有更复杂的权限控制需求,也可以参考RAM用户指南。
赞0
踩1