
# 通过IAM角色或策略授予使用iDME的权限
如果您需要对您所拥有的iDME进行[角色与策略](https://support.huaweicloud.com/productdesc-idme/idme_productdesc_0018.html)的权限管理，您可以使用[统一身份认证服务](https://support.huaweicloud.com/usermanual-iam/iam_01_0001.html)（Identity and Access Management，简称IAM）。
在iDME中，**iDME控制台、应用设计态、** **体验版** **应用运行态** 、**应用运行态** **API** （包括体验版、基础版以及基础版-Lite类型）的调用和**数字主线引擎** 是基于IAM[系统策略]和[自定义策略]的授权，可以通过用户组功能实现IAM用户的授权。当您需要将相关资源分配给企业中不同的员工或者应用程序使用时，可以通过添加IAM账号实现。
在进行IAM授权时，系统将根据用户选择的策略自动推荐授权范围方案，方便用户选择合适的授权作用范围。您可以根据实际情况，分别为用户组的企业项目视图和IAM项目视图配置不同的IAM策略，从而实现权限最小化原则的精准授权，降低资源操作过程中的风险。[表1]为iDME支持的所有授权范围方案。
 表1授权范围方案 
| 可选方案     | 方案说明                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|
| 所有资源     | 授权后，IAM用户可以根据权限使用账号中所有iDME资源，包括企业项目、区域项目和全局服务资源。                                                                                                                                                                                                                                                                                                                                                                    |
| 指定企业项目资源 | 选择指定企业项目，IAM用户可根据权限在iDME控制台管理该企业项目中的iDME资源，如部署或卸载应用。仅开通企业项目后可选。 **请注意，是否指定企业项目并不会影响用户正常使用应用设计态、运行态或数字主线引擎的功能。** 如果您暂未开通企业项目，将不支持基于企业项目授权，了解企业项目请参考：[什么是企业项目管理](https://support.huaweicloud.com/usermanual-em/em_eps_01_0000.html)。如需开通，请参考：[开通企业项目](https://support.huaweicloud.com/usermanual-em/eps_15_0001.html)。 |
| 指定区域项目资源 | 选择指定区域项目，IAM用户可以根据权限使用该区域项目中的资源。 如果选择作用范围为"区域项目"，且所勾选的策略包含全局服务权限，系统自动将全局服务权限的作用范围设置为所有资源，勾选的区域项目权限的作用范围仍为指定区域项目。                                                                                                                                                                                                                                                    |
   
基于IAM能力的授权遵循最大权限优先授权规则。如果用户同时获得iDME多个策略的授权，且这些策略的授权范围方案不同时，将根据该用户具有的最高权限进行授权，确保用户可以在其权限范围内进行最广泛的操作，从而充分利用其权限。**请注意，授权访问策略中的部分Action不支持企业项目维度的权限隔离** **，例如iam:users:listUsers。**
关于iDME更多相关权限的介绍，详细可参考[权限管理](https://support.huaweicloud.com/productdesc-idme/idme_productdesc_0017.html)。
#### IAM授权流程
图1给用户授权iDME权限流程   
![](https://support.huaweicloud.com/consog-idme/figure/zh-cn_image_0000002529858267.png)
1. [创建用户组并授权](https://support.huaweicloud.com/usermanual-iam/iam_03_0001.html)。
   
   在IAM控制台创建用户组，并授予iDME权限，例如iDME ReadOnlyAccess。
   
   
2. [创建用户并加入用户组](https://support.huaweicloud.com/usermanual-iam/iam_02_0001.html)。
   
   在IAM控制台创建用户，并将其加入[1]中创建的用户组。
   
   
3. [用户登录](https://support.huaweicloud.com/usermanual-iam/iam_01_0552.html)并验证权限。
   
   新创建的用户登录控制台后，在"服务列表"中选择"工业数字模型驱动引擎"，尝试创建应用，如果无法成功操作（假设当前权限仅包含iDME ReadOnlyAccess），表示"iDME ReadOnlyAccess"已生效。
   
   
 #### 系统策略
IAM中预置的iDME系统策略当前包含iDME FullAccess、iDME AppOperationAccess、iDME EnvOperationAccess和iDME ReadOnlyAccess几种策略。
关于iDME系统策略的主要权限说明，详细请参见[iDME系统策略](https://support.huaweicloud.com/productdesc-idme/idme_productdesc_0018.html)。
- **iDME FullAccess**：工业数字模型驱动引擎服务所有权限。
- **iDME AppOperationAccess**：工业数字模型驱动引擎服务应用管理权限，拥有创建和修改应用的权限。
- **iDME EnvOperationAccess**：工业数字模型驱动引擎服务运行环境管理权限，拥有部署和卸载应用的权限。
- **iDME ReadOnlyAccess**：工业数字模型驱动引擎服务的只读策略，拥有应用列表、运行服务列表的只读权限。
 
 #### 自定义策略
如果系统预置的iDME策略不满足授权要求，管理员可以创建自定义策略，并通过给用户组授予自定义策略来进行精细的访问控制，自定义策略是对系统策略的扩展和补充。自定义策略中可以添加的授权项（Action）请参考[权限策略和授权项](https://support.huaweicloud.com/api-idme/idme_api_0017.html)。
目前支持以下两种方式创建自定义策略：
- 可视化视图创建自定义策略：无需了解JSON语法，按可视化视图导航栏选择云服务、操作、资源、条件等策略内容，可自动生成策略。
- JSON视图创建自定义策略：可以在选择策略模板后，根据具体需求编辑策略内容；也可以直接在编辑框内编写JSON格式的策略内容。
具体创建步骤请参见：[创建自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)。
**请注意，自定义策略修改后，权限不会即时生效，通常需要等待约15分钟才会自动生效。**
以下为您介绍常用的iDME自定义策略样例。
- 示例1：授权用户仅有创建应用的权限
  ```
  {
      "Version": "1.1",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "dme:apps:get",
                  "dme:apps:create",
                  "iam:users:listUsers"
              ]
          }
      ]
  }
  ```
  
- 示例2：授权用户仅有部署应用的权限
  ```
  {
      "Version": "1.1",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "dme:apps:get",
                  "dme:envs:get",
                  "dme:envs:deployApp"
              ]
          }
      ]
  }
  ```
  
- 示例3：授权用户仅有应用列表的只读权限
  ```
  {
      "Version": "1.1",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "dme:apps:get"
              ]
          }
      ]
  }
  ```
  
 
