
# 自定义策略
如果系统预置的DataArts Insight权限，不满足您的授权要求，可以创建自定义策略。自定义策略中可以添加的授权项（Action）请参考[权限策略和授权项](https://support.huaweicloud.com/api-dataartsinsight/dataartsinsight_api_0015.html)。
目前华为云支持以下两种方式创建自定义策略：
- 可视化视图创建自定义策略：无需了解策略语法，按可视化视图导航栏选择云服务、操作、资源、条件等策略内容，可自动生成策略。
- JSON视图创建自定义策略：可以在选择策略模板后，根据具体需求编辑策略内容；也可以直接在编辑框内编写JSON格式的策略内容。
具体创建步骤参考：[创建自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)。本章为您介绍常用的DataArts Insight自定义策略样例。
#### 策略字段介绍
以授权用户拥有在所有区域中所有数据库的创建表权限为例进行说明：
```
{
    "Version": "1.1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dataartsinsight:datasource:get"
            ],
            "Resource": [
                "DataArtsInsight:*:*:workspace:*"
            ]
        }
    ]
}
```
- Version 版本信息，1.1： 策略。IAM最新提供的一种细粒度授权的能力，可以精确到具体服务的操作、资源以及请求条件等。
  
- Effect 作用。包含两类：允许（Allow）和拒绝（Deny），既有Allow又有Deny的授权语句时，遵循Deny优先的原则。
  
- Action 授权项，指对资源的具体操作权限，不超过100个，如[图1]所示。
  图1DataArts Insight授权项   
  ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000001642758866.png "点击放大")
  ![](https://support.huaweicloud.com/usermanual-dataartsinsight/public_sys-resources/note_3.0-zh-cn.png)
  - 格式为：服务名:资源类型:操作，例：dataartsinsight:datasource:get。
  
  - 服务名为产品名称，例如dataartsinsight、evs和vpc等，服务名仅支持小写。资源类型和操作没有大小写，要求支持通配符号\*，无需罗列全部授权项。
  
  - 操作：操作以IAM服务中已经注册的action为准。
    
- Condition 限制条件：使策略生效的特定条件，包括条件键和运算符。
  条件键表示策略语句的 Condition 元素中的键值，分为全局级条件键和服务级条件键。
  - 全局级条件键（前缀为g:）适用于所有操作。详细请参考[策略语法](https://support.huaweicloud.com/usermanual-iam/iam_01_0019.html)中的条件键说明。
  
  - 服务级条件键，仅适用于对应服务的操作。
  
  
  运算符与条件键一起使用，构成完整的条件判断语句。具体内容请参考[表1]。
  DataArts Insight通过IAM预置了一组条件键。下表显示了适用于DataArts Insight服务特定的条件键。
   表1DataArts Insight请求条件 
  | DataArts Insight条件键 | 类型  | 运算符           | 描述                                                                                                                                            |
  |:---|:---|:---|:---|
  | g:CurrentTime       | 全局级 | Date and time | 接收到鉴权请求的时间。 说明： 以"ISO 8601"格式表示，例如：2012-11-11T23:59:59Z。 |
  | g:MFAPresent        | 全局级 | Boolean       | 用户登录时是否使用了多因素认证。                                                                                                                              |
  | g:UserId            | 全局级 | String        | 当前登录的用户ID。                                                                                                                                    |
  | g:UserName          | 全局级 | String        | 当前登录的用户名。                                                                                                                                     |
  | g:ProjectName       | 全局级 | String        | 当前登录的Project。                                                                                                                                 |
  | g:DomainName        | 全局级 | String        | 当前登录的Domain。                                                                                                                                  |
  | g:ResourceTag       | 全局级 | StringEquals  | 资源标签键值。                                                                                                                                       |
     
  
- Resource 格式为：服务名:region:domainId:资源类型:资源路径， 通配符号\*表示所有。
  示例：
  "DataArtsInsight:\*:\*:workspace:\*": 表示所有的工作空间（项目）资源。
  
 
#### 创建DataArts Insight自定义策略
用户可以根据场景设置不同级别的Action和Resource。
1. 定义Action Action由服务名:资源类型:操作三段组成，通配符为\*。例如：
   表2Action 
   | Action                          | 说明      |
   |:---|:---|
   | dataartsinsight:datasource:get  | 获取数据源详情 |
   | dataartsinsight:dataset:preview | 预览数据集   |
   | dataartsinsight:screen:view     | 预览数据大屏  |
      
   更多操作与系统权限的关系请参考[DataArts Insight常用操作与系统权限的关系](https://support.huaweicloud.com/productdesc-dataartsinsight/dataartsinsight_01_0007.html)。
   
2. 定义Resource Resource由\<服务名:region:domainId:资源类型:资源路径\>5个字段组成，通配符号\*表示所有资源。5个字段可以灵活设置，资源路径可以按照场景需要，设置不同级别的权限控制。当需要设置该服务下的所有资源时，可以不指定该字段。Resource定义请参考[表3]。
    表3Resource 
   | Resource                           | 说明               |
   |:---|:---|
   | dataartsinsight:\*:\*:workspace:\* | 表示所有的工作空间（项目）资源。 |
      
   - 特定资源：
     图2特定资源   
     ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000001642760842.png "点击放大") 
   
   - 所有资源： 指该服务下的所有资源
     图3所有资源   
     ![](https://support.huaweicloud.com/usermanual-dataartsinsight/zh-cn_image_0000001642761034.png "点击放大") 
    
3. 将上述的所有字段拼接为一个json就是一个完整的策略了，其中action和resource均可以设置多个，当然也可以通过IAM提供的可视化界面进行创建。
 
#### 相关链接
- [策略基本概念](https://support.huaweicloud.com/usermanual-iam/iam_01_0602.html)
- [RBAC策略语法](https://support.huaweicloud.com/usermanual-iam/iam_01_0601.html)
- [细粒度策略语法](https://support.huaweicloud.com/usermanual-iam/iam_01_0017.html)
- [创建自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)
 
