目前,阿里云提供了多种系统授权策略可供用户选择使用。这些授权策略仅仅提供了粗粒度的访问控制能力,比如某个云产品级别的只读权限或所有权限。

如果您有更细粒度的授权需求,比如授权用户 bob 只能对 oss://samplebucket/bob/ 下的所有对象执行只读操作,而且限制 IP 来源必须为您的公司网络(可以通过搜索引擎查询“我的 IP”来获知您的公司网络 IP 地址),那么您可以通过创建自定义授权策略来进行访问控制。

本文以上述用户 bob 为例,介绍了创建自定义授权策略的方法,帮助您更好地理解和使用 RAM 进行精细粒度的访问控制。

日志组的限制为:最大 4096 条日志,或 10MB 空间。

前提条件

在创建自定义授权策略时,您需要了解授权策略语言的基本结构和语法,请参考Policy 语法结构

RAM 最细可以支持各产品 API 粒度的授权,即授权策略中的操作权限可以精细到每个 API 操作。在创建自定义授权策略前,您需要了解有关产品所支持的授权粒度和授权方法,具体请参考支持 RAM 的云服务

操作步骤

  1. 在RAM控制台点击左侧导航栏中的策略管理。在策略管理页面,可通过系统授权策略自定义授权策略子页,分别查看已有的系统和自定义策略。
    图 1. 自定义授权策略


  2. 点击新建授权策略,进入创建授权策略页面。
  3. 选择权限策略模板。
    说明
    可以选择空白模板,但推荐使用类似的已有系统策略作为模板进行编辑。此处以 AliyunOSSReadOnlyAccess (账号下所有 OSS 资源的只读权限)作为模板。
    图 2. 创建授权策略


  4. 基于选择的模板,编辑授权策略。
  5. 策略内容编辑完成后,点击新建授权策略
    图 3. 新建授权策略


此处修改了授权策略名称备注策略内容。上图策略内容中的高亮显示部分是新增的细粒度授权限制内容,其代码样例为:



```json
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:Get*",
"oss:List*"
],
"Resource": [
"acs:oss:*:*:samplebucket/bob/*"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": "121.0.27.1"
}
}
}
]
}

```

后续操作

接下来只需将本文创建的策略授权给用户 bob,则 bob 会拥有对 oss://samplebucket/bob/ 下的对象的只读操作权限,且限制条件是必须从您的公司网络(假设为121.0.27.1)进行访问。

为 RAM 用户授权,请参考为 RAM 用户授权