混合云场景下实现OSS的RAM策略设置

更新时间:
复制为 MD 格式

本实践验证了对象存储OSSRAM Policy功能,可以通过对Bucket、Object、指定IP等进行细粒度的权限控制,从而更好的进行对象存储OSS的访问管理,来满足复杂的业务需求。

前提条件

适用于对象存储OSS,云平台基于企业版V3.12及以上版本。

OSS权限策略

为保证存储在OSS中数据的安全性,OSS资源(包括BucketObject)默认为私有权限,只有资源拥有者或者被授权的用户允许访问。如果要授权他人访问或使用自己的OSS资源,可以通过多种权限控制策略向他人授予资源的特定权限。仅当所有的权限策略通过OSS鉴权后允许访问授权资源。

使用场景

可以对员工、系统或应用程序做权限策略,可以授权允许访问指定Bucket、指定Bucket的某一对象,也可以授权允许哪些网段访问资源。

方案概述

  1. 方案框架。

    收到用户请求时,OSS会通过身份验证、基于角色的会话策略、基于身份的策略(RAM Policy)、Bucket Policy、Object ACL、Bucket ACL等鉴权结果来判断是允许或拒绝该请求。1

  2. 方案流程。

    1. 创建RAM用户。

    2. 创建RAM AccessKey(RAM用户的密钥,用于ossutil连接OSS Bucket时使用)。

    3. 创建OSS Bucket的权限策略。

    4. RAM用户授予OSS Bucket接口权限策略 。

    5. 验证OSS Bucket权限策略。

方案详细配置

  1. 创建RAM用户。

    1. 登录Apsara Uni-manager运营控制台,在页面顶部的菜单栏中,单击产品>其他>API与工具,进入API与工具页面,产品选择Ram,然后选择Createuser api进行调试。23

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

    注意

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

    1
  2. 创建RAM AccessKey(创建RAM用户密钥,用于ossutil连接OSS Bucket时使用)。

    1. 选择CreateAccessKey api进行调试,填写regionid,ak,sk,username信息并进行调试,返回true则表明创建成功,记录下创建的aksk。1

  3. 创建OSS Bucket的权限策略。

    1. 授予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则表明创建成功,记录下policynametype。

      API链接:https://help.aliyun.com/document_detail/141924.html6

    2. 授权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则表明创建成功,记录下policynametype。

      API链接:https://help.aliyun.com/document_detail/141699.html7

    3. 授权RAM用户通过制定IP地址访问OSS。

      1. 选择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"]
        }
        }
        }
        ]
        },
      2. 然后进行调试,返回true则表明创建成功,记录下policynametype。8

  4. RAM用户授予OSS bucket接口权限策略。

    选择AttachPolicyToUser api进行调试,填写regionid,ak,sk,username,policyname信息,policytype进行调试,返回true则表明创建成功。

    API链接:https://help.aliyun.com/document_detail/28725.html9

  5. 验证OSS Bucket权限策略。

    1. 验证对某个Bucket访问的权限测录。

      1. 使用ossutil客户端对授权Bucket可以访问。

        注意

        配置文件中的ak、skRAM用户的ak、sk。

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

    2. 验证对某个Bucket特定资源的访问权限。

      使用ossutil客户端对授权Bucket Object资源可以访问,对未授权Bucket Object资源不能访问。12

    3. 验证指定IP地址对Bucket资源的访问权限。

      1. 使用特定网段IP ossutil客户端对授权Bucket Object资源可以访问。13

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