文档首页 > > 用户指南> 权限管理>

DLI自定义策略

DLI自定义策略

分享
更新时间:2021/04/27 GMT+08:00

如果系统预置的DLI权限,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考权限策略和授权项

目前华为云支持以下两种方式创建自定义策略:

  • 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。
  • JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。

具体创建步骤请参见:创建自定义策略。本章为您介绍常用的DLI自定义策略样例。

策略字段介绍

以授权用户拥有在所有区域中所有数据库的创建表权限为例进行说明:

{
    "Version": "1.1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dli:database:create_table"
            ],
            "Resource": [
                "dli:*:*:database:*"
            ]
        }
    ]
}
  • Version

    版本信息,1.1: 策略。IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。

  • Effect

    作用。包含两类:允许(Allow)和拒绝(Deny),既有Allow又有Deny的授权语句时,遵循Deny优先的原则。

  • Action

    授权项,指对资源的具体操作权限,不超过100个,如图1所示。

    图1 DLI授权项
    • 格式为:服务名:资源类型:操作,例:dli:queue:submit_job。
    • 服务名为产品名称,例如dli、evs和vpc等,服务名仅支持小写。资源类型和操作没有大小写,要求支持通配符号*,无需罗列全部授权项。
    • 资源类型可以参考DLI资源中的资源类型。
    • 操作:操作以IAM服务中已经注册的action为准。
  • Condition

    限制条件:使策略生效的特定条件,包括条件键和运算符。

    条件键表示策略语句的 Condition 元素中的键值,分为全局级条件键和服务级条件键。

    • 全局级条件键(前缀为g:)适用于所有操作。
    • 服务级条件键(前缀为服务缩写,如dli:,目前DLI未提供服务级条件键)仅适用于对应服务的操作。

    运算符与条件键一起使用,构成完整的条件判断语句。具体内容请参考DLI请求条件

  • Resource

    格式为:服务名:region:domainId:资源类型:资源路径, 通配符号*表示所有,资源路径可以参考DLI资源

    示例:

    "dli:*:*:queue:*": 表示所有的队列。

创建DLI自定义策略

用户可以根据场景设置不同级别的Action和Resource。

  1. 定义Action

    Action由服务名:资源类型:操作三段组成,通配符为*。例如:

    表1 Action

    Action

    说明

    dli:queue:submit_job

    DLI队列的提交操作

    dli:queue:*

    DLI队列的全部操作

    dli:*:*

    DLI所有资源类型的所有操作

    更多操作与系统权限的关系请参考常用操作与系统权限关系

  2. 定义Resource

    Resource由<服务名:region:domainId:资源类型:资源路径>5个字段组成,通配符号*表示所有资源。5个字段可以灵活设置,资源路径可以按照场景需要,设置不同级别的权限控制,DLI资源路径和资源类型可以参考DLI资源。当需要设置该服务下的所有资源时,可以不指定该字段。例如:

    表2 Resource

    Resource

    说明

    DLI:*:*:table:databases.dbname.tables.*

    DLI服务,任意region,任意账号ID下,数据库名为dbname下的所有表资源。

    DLI:*:*:database:databases.dbname

    DLI服务,任意region,任意账号ID下,数据库名为dbname的队列。

    DLI:cn-north-1:xxx:column: databases.db.tables.tb.columns.col

    DLI服务,cn-north-1,账号ID为xxx,数据库名为db,表名为tb,列名为col的资源。

    DLI:*:*:queue:queues.*

    DLI服务,任意region,任意账号ID下,任意队列资源。

    DLI:*:*:jobs:jobs.flink.1

    DLI服务,任意region,任意账号ID下,作业Id为1的flink作业。

    • 特定资源:
      图2 特定资源
    • 所有资源: 指该服务下的所有资源
      图3 所有资源
  3. 将上述的所有字段拼接为一个json就是一个完整的策略了,其中action和resource均可以设置多个,当然也可以通过IAM提供的可视化界面进行创建,例如:

    授权用户拥有DLI服务,任意region,任意账号ID下,任意数据库的创建删除权限,任意队列的提交作业权限,任意表的删除权限。

    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": " Allow",
                "Action": [
                      "dli:database:create_database",
                    "dli:database:drop_database",
                      "dli:queue:submit_job",
                      "dli:table:drop_table"
                ],
                "Resource": [
                      "dli:*:*:database:*",
                    "dli:*:*:queue:*",
                    "dli:*:*:table:*"
                ]
            }
        ]
    }

DLI自定义策略样例

  • 示例1:允许
    • 授权用户拥有在所有区域中所有数据库的创建表权限
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "dli:database:create_table"
                  ],
                  "Resource": [
                      "dli:*:*:database:*"
                  ]
              }
          ]
      }
    • 授权用户拥有在所在区域中数据库db中表tb中列col的查询权限
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "dli:column:select"
                  ],
                  "Resource": [
                      "dli:cn-north-7:*:column:databases.db.tables.tb.columns.col"
                  ]
              }
          ]
      }
  • 示例2:拒绝

    拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。

    • 授权用户不能创建数据库,删除数据库,提交作业(default队列除外),删除表
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Deny",
                  "Action": [
                      "dli:database:create_database",
                      "dli:database:drop_database",
                      "dli:queue:submit_job",
                      "dli:table:drop_table"
                  ],
                  "Resource": [
                      "dli:*:*:database:*",
                      "dli:*:*:queue:*",
                      "dli:*:*:table:*"
                  ]
              }
          ]
      }
    • 授权用户不能在队列名为demo的队列上提交作业
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Deny",
                  "Action": [
                      "dli:queue:submit_job"
                  ],
                  "Resource": [
                      "dli:*:*:queue:queues.demo"
                  ]
              }
          ]
      }
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区论坛频道来与我们联系探讨

智能客服提问云社区提问