混合云场景下实现OSS的RAM策略设置
本实践验证了对象存储OSS的RAM Policy功能,可以通过对Bucket、Object、指定IP等进行细粒度的权限控制,从而更好的进行对象存储OSS的访问管理,来满足复杂的业务需求。
前提条件
适用于对象存储OSS,云平台基于企业版V3.12及以上版本。
OSS权限策略
为保证存储在OSS中数据的安全性,OSS资源(包括Bucket和Object)默认为私有权限,只有资源拥有者或者被授权的用户允许访问。如果要授权他人访问或使用自己的OSS资源,可以通过多种权限控制策略向他人授予资源的特定权限。仅当所有的权限策略通过OSS鉴权后允许访问授权资源。
使用场景
可以对员工、系统或应用程序做权限策略,可以授权允许访问指定Bucket、指定Bucket的某一对象,也可以授权允许哪些网段访问资源。
方案概述
方案框架。
收到用户请求时,OSS会通过身份验证、基于角色的会话策略、基于身份的策略(RAM Policy)、Bucket Policy、Object ACL、Bucket ACL等鉴权结果来判断是允许或拒绝该请求。

方案流程。
创建RAM用户。
创建RAM AccessKey(RAM用户的密钥,用于ossutil连接OSS Bucket时使用)。
创建OSS Bucket的权限策略。
为RAM用户授予OSS Bucket接口权限策略 。
验证OSS Bucket权限策略。
方案详细配置
创建RAM用户。
登录Apsara Uni-manager运营控制台,在页面顶部的菜单栏中,单击产品>其他>API与工具,进入API与工具页面,产品选择Ram,然后选择Createuser api进行调试。


分别填写regionid、ak、sk、email、mobilephone、username信息,单击调用接口,返回参数为true则表明创建用户成功。

注意这里的ak、sk为所在组织的ak、sk,且下面步骤中使用的都是所在组织的ak、sk。可以通过企业>组织管理>对应组织>获取accesskey,来获取。

创建RAM AccessKey(创建RAM用户密钥,用于ossutil连接OSS Bucket时使用)。
选择CreateAccessKey api进行调试,填写regionid,ak,sk,username信息并进行调试,返回true则表明创建成功,记录下创建的ak和sk。

创建OSS Bucket的权限策略。
授予RAM用户列举和读取某个Bucket内所有Object资源的权限。
选择CreatePolicy api进行调试,regionid、ak、sk、policyname、policydocument的信息按照如下格式进行填写:
{"Statement":[{"Effect":"Allow","Action": ["oss:ListObjects","oss:GetObject"],"Resource":["acs:oss:*:*:osssts","acs:oss:*:*:osssts/*"]}],"Version":"1"},然后进行调试,返回true则表明创建成功,记录下policyname和type。授权RAM用户列举和读取某个Bucket内特定Object资源的权限。
选择CreatePolicy api进行调试,regionid、ak、sk、policyname、policydocument的信息按照如下格式进行填写(这里的ak、sk是组织的ak、sk):
{"Statement":[{"Effect":"Allow","Action":["oss:ListObjects","oss:GetObject"],"Resource":["acs:oss:*:*:osssts","acs:oss:*:*:osssts/test.txt"]}],"Version":"1"},然后进行调试,返回true则表明创建成功,记录下policyname和type。授权RAM用户通过制定IP地址访问OSS。
选择CreatePolicy api进行调试,regionid、ak、sk、policyname、policydocument的信息按照如下格式进行填写(这里的ak、sk是组织的ak、sk):
API链接:https://help.aliyun.com/document_detail/141925.html
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Effect":"Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:osssts", "acs:oss:*:*:osssts/*" ] }, { "Effect": "Deny", "Action": "oss:*", "Resource": [ "acs:oss:*:*:*" ], "Condition":{ "NotIpAddress": { "acs:SourceIp":["10.10.1.0/24"] } } } ] },然后进行调试,返回true则表明创建成功,记录下policyname和type。

为RAM用户授予OSS bucket接口权限策略。
选择AttachPolicyToUser api进行调试,填写regionid,ak,sk,username,policyname信息,policytype进行调试,返回true则表明创建成功。
验证OSS Bucket权限策略。
验证对某个Bucket访问的权限测录。
使用ossutil客户端对授权Bucket可以访问。
注意配置文件中的ak、sk是RAM用户的ak、sk。

使用ossutil客户端对未授权Bucket资源不能访问。

验证对某个Bucket特定资源的访问权限。
使用ossutil客户端对授权Bucket Object资源可以访问,对未授权Bucket Object资源不能访问。

验证指定IP地址对Bucket资源的访问权限。
使用特定网段IP ossutil客户端对授权Bucket Object资源可以访问。

不在指定网段的客户端不能访问Bucket资源。










