博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
只需一步:创建oss bucket并控制访问权限
阅读量:7164 次
发布时间:2019-06-29

本文共 3499 字,大约阅读时间需要 11 分钟。

本文介绍怎样利用阿里云(ROS),一步创建阿里云资源(以OSS为例)、创建多个子帐号,并付给子帐号不同的资源访问权限。

资源编排的RAM功能介绍

阿里云资源访问控制服务(RAM),帮助您把不同的资源权限分配给特定的用户(比如员工、系统或应用程序),达到最小特权的安全实践。例如,授权某个子用户管理两台指定的ECS实例。

资源编排服务按照三种粒度进行访问控制:

    • 给当前账号创建子账号,同时给子帐号指定授权策略
    • 创建用户组,如果给组指定授权策略,组中的每个用户都默认拥有了相同的访问权限
    • 创建角色,如果给角色设置授权策略,那么扮演此角色的用户即拥有了此访问权限

给子用户授权OSS访问的实践

应用场景:

在某款app的开发过程中,需要将部分数据存储到oss中。管理员创建ros-bucket,考虑到权限隔离的问题,开发小组中只有liSir拥有ros-bucket的读写权限,其他人只有只读权限,逻辑结构如下图:

screenshot

实践:

  • 创建Bucket(ros-bucket)

    • 作为被访问的资源
  • 创建用户组Group(devGroup)
  • 创建两个User

    • User(liSir)
    • User(developer), 加入用户组 devGroup
  • 创建两个Policy

    • fullAccessPolicy 拥有bucket的读写权限,并为组devGroup授权
    • readOnlyPolicy 拥有bucket的只读权限,并为User(liSir)授权

创建Bucket

ALIYUN::OSS::Bucket ,AccessControl配置为private。只有当前账号可以对该bucket内的Object进行读写操作。

"Resources": {    "MyBucket": {      "Type": "ALIYUN::OSS::Bucket",      "Properties": {        "AccessControl": "private",        "BucketName": "ros-bucket"      }    }  }

创建Group

ALIYUN::RAM::Group ,这里定义组名为devGroup。

"Resources": {    "devGroup": {      "Type": "ALIYUN::RAM::Group",      "Properties": {        "GroupName": "devGroup"      }    }  }

创建两个User

ALIYUN::RAM::User ,创建两个子帐号,并分别配置登录名和密码。然后把developer加入到组devGroup。

"Resources": {    "liSir": {      "Type": "ALIYUN::RAM::User"      "Properties": {        "UserName": "liSir",        "LoginProfile": {            "Password": "123456789"        }      }    },    "developer": {      "Type": "ALIYUN::RAM::User",      "Properties": {        "UserName": "developer",        "LoginProfile": {            "Password": "123456789"        },        "Groups": [          "Fn::Join": ["",              [                "Fn::GetAtt" : [ "devGroup", "GroupName"]              ]          ]        ]      }    }  }

创建两个Policy

ALIYUN::RAM::ManagedPolicy 。Policy语法定义。

  • fullAccessPolicy

    • 允许oss类型资源的所有操作
    • 然后为User(liSir)授权
  • readOnlyPolicy

    • 允许对oss类型资源进行获取bucket列表操作。
    • 然后限制对MyBucket只能进行读取操作。
    • 最后为组(devGroup)授权
"Resources": {    "fullAccessPolicy": {      "Type": "ALIYUN::RAM::ManagedPolicy",      "Properties": {        "PolicyName": "fullAccessPolicy",        "PolicyDocument" : {            "Version": "1",            "Statement" : [{               "Effect" : "Allow",               "Action" : [ "oss:*" ],               "Resource" : ["acs:oss:*:*:*"]            }]         },         "Users": [             "Fn::Join": ["",              [                "Fn::GetAtt" : [ "liSir", "UserName"]              ]            ]         ]             }    },    "readOnlyPolicy": {      "Type": "ALIYUN::RAM::ManagedPolicy",      "Properties": {        "PolicyName": "readOnlyPolicy",        "PolicyDocument": {            "Version": "1",            "Statement" : [{              "Effect": "Allow",              "Action": [                "oss:ListBuckets"              ],              "Resource": [                "acs:oss:*:*:*"              ]            },            {              "Effect": "Allow",              "Action": [                "oss:GetObject",                "oss:ListObjects"              ],              "Resource": [                "Fn::Join": ["",                    [                      "acs:oss:*:*:",                      "Fn::GetAtt" : [ "MyBucket", "Name"]                    ]                ]              ]            }]        },        "Groups": [            "Fn::Join": ["",              [                "Fn::GetAtt" : [ "devGroup", "GroupName"]              ]            ]        ]      }    }  }

验证(以控制台为例)

  • ,创建完成的资源列表如下图:
    resources_list
  • 用子帐号liSir登录oss控制台,可以对ros-bucket进行上传文件、删除文件等任何操作。例如,可以上传几个文件,如下图所示:

liSir

  • 用子帐号developer登录控制台并上传文件, 系统提示没有权限。如下图所示:

developer

  • 完整的模板

转载地址:http://zvxwm.baihongyu.com/

你可能感兴趣的文章