创建自定义权限策略

更新时间:
复制 MD 格式

您可以创建自定义权限策略,实现精细化权限管理。

创建方式

  • 通过可视化编辑模式创建自定义权限策略

    RAM提供所见即所得的可视化编辑界面,您只需选择效果、云服务、操作、资源和条件,就可以生成自定义权限策略。同时,提供的智能校验功能,帮助您提高权限策略的正确性和有效性。该方式操作简单,易于上手。

  • 通过脚本编辑模式创建自定义权限策略

    RAM提供JSON脚本编辑界面,您需要按照权限策略语法和结构编写自定义权限策略。该方式使用灵活,适用于对权限策略语法比较熟悉的用户。

  • 通过导入策略创建自定义权限策略

    • 导入策略模板:基于长期的业务实践,RAM提供了常见场景的权限策略模板。例如:系统管理员、财务人员、网络管理员等。您只需要导入合适的权限策略模板,然后基于模板进行简单修改,就能一键轻松创建自定义策略。

    • 导入系统策略:您可以通过导入一个系统策略模板,然后基于规范化的系统策略模板修改适合实际业务的内容,更加方便快捷地创建自定义权限策略。

通过可视化编辑模式创建自定义权限策略

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择权限管理 > 权限策略

  3. 权限策略页面,单击创建权限策略

  4. 创建权限策略页面,单击可视化编辑页签。

    可视化编辑器显示策略语句表单,包含以下字段:Effect(必填,可选 AllowDeny,默认为 Allow)、Service(必填)、Action(必填)、Resource(必填)和 Condition(非必填)。需先选择服务后才能配置 ActionResourceCondition。页面底部可通过 Add Statement 添加更多策略语句。

  5. 配置权限策略。

    关于权限策略基本元素的详情,请参见权限策略基本元素

    1. 效果区域,选择允许拒绝

    2. 服务区域,选择云服务。

      说明

      支持可视化编辑模式的云服务以控制台界面显示为准。

    3. 操作区域,选择全部操作指定操作

      系统会根据您上一步选择的云服务,自动筛选出可以配置的操作。如果您选择了指定操作,您需要继续选择具体的操作。

    4. 资源区域,选择全部资源指定资源

      系统会根据您上一步选择的操作,自动筛选出可以配置的资源类型。如果您选择了指定资源,您需要继续单击添加资源,配置具体的资源ARN。您可以使用匹配全部功能,快速选择对应配置项的全部资源。

      说明

      为了权限策略的正常生效,对操作关联的必要资源ARN标识了必要,强烈建议您配置该资源ARN。

    5. 条件区域,单击添加条件,配置条件。

      条件包括阿里云通用条件和服务级条件,系统会根据您前面配置的云服务和操作,自动筛选出可以配置的条件列表。您只需要选择对应条件键配置具体内容。

    6. 单击添加语句,重复上述步骤,配置多条权限策略语句。

  6. 单击页面上方的优化策略,然后单击执行,对权限策略内容进行高级优化。

    高级权限策略优化功能会完成以下任务:

    • 拆分不兼容操作的资源或条件。

    • 收缩资源到更小范围。

    • 去重或合并语句。

  7. 创建权限策略页面,单击确定

  8. 创建权限策略对话框,输入策略名称备注,然后单击确定

通过脚本编辑模式创建自定义权限策略

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择权限管理 > 权限策略

  3. 权限策略页面,单击创建权限策略

  4. 创建权限策略页面,单击脚本编辑页签。

    页面显示 JSON 编辑器,默认策略模板包含 Version(值为 "1")和 Statement 数组,其中每条语句包括 Effect(默认 "Allow")、Action(待填写)、Resource(待填写)和 Condition 字段。请根据实际需求在 ActionResource 中填入对应的操作和资源。

  5. 输入权限策略内容。

    关于权限策略语法结构的详情,请参见权限策略语法和结构

  6. 单击页面上方的优化策略,然后单击执行,对权限策略内容进行高级优化。

    高级权限策略优化功能会完成以下任务:

    • 拆分不兼容操作的资源或条件。

    • 收缩资源到更小范围。

    • 去重或合并语句。

  7. 创建权限策略页面,单击确定

  8. 创建权限策略对话框,输入策略名称备注,然后单击确定

常见自定义权限策略配置示例

以下示例展示了通过脚本编辑模式配置自定义权限策略时的常见场景及对应的策略 JSON,帮助您快速完成策略编写。

场景一:授权 RAM 用户管理操作(账号级)

RAM 用户管理类 API(如 ram:CreateUserram:CreateAccessKeyram:ListUsers 等)属于账号级操作,Resource 必须设置为 "*",且添加权限时授权范围必须选择整个云账号,不能限定在资源组内。

策略示例:允许创建 RAM 用户和 AccessKey。


{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:CreateUser",
        "ram:CreateAccessKey",
        "ram:ListUsers"
      ],
      "Resource": ["*"]
    }
  ]
}
重要

如果将此策略的授权范围设置为指定资源组,策略将不会生效。RAM 用户管理类操作仅支持授权范围为整个云账号

场景三:仅允许 RAM 用户修改自身密码

如果只需要 RAM 用户修改自己的登录密码,授予 ram:ChangePassword 权限即可,不建议授予 AliyunRAMFullAccess(RAM 完全访问权限),避免权限过大带来安全风险。

策略示例:仅允许修改自身密码。


{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:ChangePassword"
      ],
      "Resource": ["*"]
    }
  ]
}

场景四:授权只读访问指定资源(以 ECS 实例为例)

当需要限制 RAM 用户仅可查看指定 ECS 实例时,需在 Resource 中指定实例的 ARN。ARN 格式为 acs:ecs:{region}:{account-id}:instance/{instance-id},注意 instance 后必须带斜杠 /

策略示例:仅允许查看指定 ECS 实例。


{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DescribeInstances",
        "ecs:DescribeInstanceAttribute",
        "ecs:DescribeInstanceStatus"
      ],
      "Resource": [
        "acs:ecs:*:*:instance/i-bp1xxxxxxxxxxxxxxxxx"
      ]
    }
  ]
}
说明

i-bp1xxxxxxxxxxxxxxxxx 替换为实际的 ECS 实例 ID。如需授权多个实例,在 Resource 数组中添加多个 ARN,用逗号分隔。

场景五:日志服务(SLS)精细化授权

日志服务的查询操作需要指定 Project 和 Logstore 层级的 ARN。如果通过 SDK 调用仍报权限不足,需额外补充 log:GetProjectlog:GetLogStore 权限。

策略示例:允许查询指定 Logstore 的日志数据。


{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "log:GetLogStoreLogs",
        "log:CreateStoreView",
        "log:GetProject",
        "log:GetLogStore"
      ],
      "Resource": [
        "acs:log:*:*:project/exampleproject",
        "acs:log:*:*:project/exampleproject/logstore/examplelogstore"
      ]
    }
  ]
}
说明

exampleprojectexamplelogstore 替换为实际的 Project 名称和 Logstore 名称。

场景六:配置可视化模式不支持的特定 Action

部分产品的 Action 无法通过可视化编辑模式选择,需通过脚本编辑模式手动配置。常见的此类 Action 包括:

产品

Action

说明

安骑士(云安全中心)

yundun-sc:DescribeCdnIpList

查询 CDN IP 列表

Milvus

CreateConnectionDbmConnect

Milvus 控制台登录所需权限

运维编排服务(OOS)

oos:StartExecution

启动执行

策略示例:允许使用 OOS 执行运维编排任务。


{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "oos:StartExecution",
        "oos:ListExecutions",
        "oos:GetExecutionTemplate"
      ],
      "Resource": ["*"]
    }
  ]
}

权限不足报错排查方法

当 RAM 用户调用 API 返回 AccessForbidden 错误或控制台提示权限不足时,可按以下步骤排查:

  1. 使用 API Troubleshoot 工具定位缺失权限

    在阿里云 API Troubleshoot 工具中输入错误返回的 RequestID,工具会显示具体缺失的 AuthAction,根据提示针对性补充权限即可。

  2. 确认授权范围是否匹配

    账号级操作(如 ram:CreateUser)的授权范围必须为整个云账号;资源组感知型 API 需确保策略授权给了正确的资源组或整个云账号。如果授权范围与策略中 Resource 的定义不一致,权限将不会生效。

  3. 检查隐式依赖权限

    部分操作除主 Action 外,还需关联的 Describe/List/Connect 类基础权限才能正常使用。例如:

    • 日志服务(SLS):查询日志除 log:GetLogStoreLogs 外,还需 log:GetProjectlog:GetLogStore 权限。

    • Milvus:登录控制台除主操作权限外,还需 CreateConnectionDbmConnect 等连接类权限。

    建议参考对应产品的 RAM 授权文档补全所需权限。

通过导入策略创建自定义权限策略

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择权限管理 > 权限策略

  3. 权限策略页面,单击创建权限策略

  4. 创建权限策略页面,单击导入策略

  5. 导入策略对话框右上角的下拉列表中,选择策略模板系统策略,然后导入策略。

    1. 选择策略模板或系统策略。

    2. 部分策略模板需要根据实际业务配置模板参数。

    3. 选择新导入的权限策略模板的覆盖规则。

      默认新导入的策略内容完全覆盖已有的内容。您也可以选中不要覆盖,追加新的语句到末尾,将新导入的策略内容追加到已有内容的末尾。

    4. 单击导入

  6. 在可视化编辑或脚本编辑模式下,查看和修改已导入的权限策略内容。

  7. 单击页面上方的优化策略,然后单击执行,对权限策略内容进行高级优化。

    高级权限策略优化功能会完成以下任务:

    • 拆分不兼容操作的资源或条件。

    • 收缩资源到更小范围。

    • 去重或合并语句。

  8. 创建权限策略页面,单击确定

  9. 创建权限策略对话框,输入策略名称备注,然后单击确定

常见问题

为什么在可视化编辑模式下搜索不到某些权限或保存策略失败?

可能原因及解决方案如下:

  • 部分 Action 未在可视化列表中更新:部分新上线或底层 API(如 oos:StartExecution)可能尚未同步到可视化编辑模式的 Action 列表,或通配符(如 swas-open:*)在特定资源限制下存在解析冲突。建议切换至脚本编辑模式手动输入 Action。

  • Action 名称拼写错误:部分 API 的 Action 名称存在单复数差异(如 ECS 的重新初始化磁盘操作为 ecs:ReInitDisks 而非 ecs:ReInitDisk),请核对对应产品的 API 文档确认准确的 Action 名称。

  • 系统策略未同步:如果搜索不到特定系统策略(如 AliyunAccountCenterFullAccess),可查阅该系统策略的官方 JSON 内容,通过脚本编辑模式创建同等效果的自定义策略。

  • JSON 格式校验失败:请检查 JSON 语法是否正确,特别注意以下常见错误:

    • Resource 字段不能重复定义,多个资源需用逗号分隔写在同一数组中。

    • ARN 格式必须符合规范:acs:<service>:<region>:<account-id>:<resource-type>/<resource-id>

为什么已授予 FullAccess 或自定义策略后仍无法访问控制台或执行操作?

可能原因及解决方案如下:

  • 控制台访问需要额外基础权限:部分产品控制台(如备案增值服务等)除业务权限外,还需 PowerUserAccess 等基础控制台访问权限。单纯的业务 FullAccess 可能不足以加载控制台页面。请根据产品文档确认控制台访问所需的完整权限组合。

  • 授权范围与策略 Resource 不匹配:添加权限时选择的授权范围(整个云账号或指定资源组)需与策略中 Resource 的定义一致。例如,OceanBase 等实例级操作需授权范围为整个云账号,且策略中指定具体实例 ARN。

  • 策略冲突或 Deny 覆盖:检查是否存在 Deny 语句覆盖了 Allow,或自定义策略与系统策略存在冲突。RAM 的策略评估逻辑为:显式 Deny > Allow > 默认 Deny。对于复杂场景(如 MQTT 公网接入),如果自定义策略无效,建议优先使用官方推荐的系统策略(如 AliyunMQFullAccess)验证连通性,再逐步精细化权限。