
# 管理员和开发者权限分离
对于中小规模团队，管理员希望对ModelArts资源进行主导分配，全局控制，而对于普通开发者只需关注自己实例的生命周期控制。对于开发者账号，一般不会具有te_admin的权限，相应的权限也需要主账号进行统一配置。本章节以使用Notebook进行项目开发为例，通过自定义策略配置实现管理员和开发者分离。
#### 场景描述
以使用Notebook进行项目开发为例，管理员账号需要拥有ModelArts专属资源池的完全控制权限，以及Notebook所有实例的访问和操作权限。
普通开发者使用开发环境，只需关注对自己Notebook实例的操作权限，包括对自己实例的创建、启动、停止、删除等权限以及周边依赖服务的权限。普通开发者不需要ModelArts专属资源池的操作权限，也不需要查看其他用户的Notebook实例。
图1账号关系示意图   
![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000001430670422.png "点击放大")
#### 配置管理员权限
管理员账号需要拥有ModelArts专属资源池的完全控制权限，以及Notebook所有实例的访问和操作权限。可以通过以下配置流程实现管理员权限配置。
1. 使用主账号创建一个管理员用户组ModelArts_admin_group，将管理员账号加入用户组ModelArts_admin_group中。具体操作请参见[Step1 创建用户组并加入用户](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_24_0089.html)。
2. 创建自定义策略。
   
   1. [登录IAM管理控制台](https://console.huaweicloud.com/iam/#/iam/groups)。
   
   2. 创建自定义策略1，赋予用户IAM和OBS服务权限。在统一身份认证服务控制台的左侧菜单栏中，选择"权限管理\> 权限"。单击右上角"创建自定义策略"，在"策略名称"中填入"Policy1_IAM_OBS"，策略配置方式选择JSON视图，输入策略内容，单击"确定"。
      自定义策略"Policy1_IAM_OBS"的具体内容如下，赋予用户IAM和OBS操作权限。可以直接复制粘贴。
      ```
      { 
          "Version": "1.1", 
          "Statement": [ 
              { 
                  "Effect": "Allow", 
                  "Action": [ 
                      "iam:users:listUsers",
                      "iam:projects:listProjects",
                      "obs:object:PutObject",
                      "obs:object:GetObject",
                      "obs:object:GetObjectVersion",
                      "obs:bucket:HeadBucket",
                      "obs:object:DeleteObject",
                      "obs:bucket:CreateBucket",
                      "obs:bucket:ListBucket"
                      ] 
              }
          ] 
      }
      ```
      
   
   3. 重复[2.b]创建自定义策略2，赋予用户依赖服务ECS、SWR、MRS和SMN的操作权限，ModelArts的操作权限。"策略名称"为"Policy2_AllowOperation"，策略配置方式选择JSON视图，输入策略内容，单击"确定"。
      自定义策略"Policy2_AllowOperation"的具体内容如下，赋予用户依赖服务ECS、SWR、MRS和SMN的操作权限，ModelArts的操作权限。可以直接复制粘贴。
      ```
      { 
          "Version": "1.1", 
          "Statement": [ 
              { 
                  "Effect": "Allow", 
                  "Action": [ 
                      "ecs:serverKeypairs:list",
                      "ecs:serverKeypairs:get",
                      "ecs:serverKeypairs:delete",
                      "ecs:serverKeypairs:create",
                      "swr:repository:getNamespace",
                      "swr:repository:listNamespaces",
                      "swr:repository:deleteTag",
                      "swr:repository:getRepository",
                      "swr:repository:listTags",
                      "swr:instance:createTempCredential",
                      "mrs:cluster:get",
                      "modelarts:*:*"
                  ] 
              }
          ] 
      }
      ```
      
   
   
   
   
3. 将[2]创建的自定义策略授权给管理员用户组ModelArts_admin_group。
   
   1. 在统一身份认证服务控制台的左侧菜单栏中，选择"用户组"。在用户组页面单击对应用户组名称ModelArts_admin_group操作列的"授权"，勾选策略"Policy1_IAM_OBS"和"Policy2_AllowOperation"。单击"下一步"。
   
   2. 选择授权范围方案为所有资源，单击"确定"。
   
   
   
   
4. 给管理员用户配置ModelArts委托授权，允许管理员使用开发环境和创建专属资源池。 
   1. 使用主账号登录[ModelArts控制台](https://console.huaweicloud.com/modelarts)，在左侧导航栏单击"权限管理"，进入"权限管理"页面。
   
   2. 单击"添加委托"。在"添加委托"页面，在"委托对象类型"下面选择"IAM子用户"，"对象名称"选择管理员的账号，选择"新增委托"，"委托模板"选择"开发环境模块"、"专属资源池模块"。
   
   3. 单击"创建"。
   
   
   
   
5. 测试管理员用户权限。 
   1. 使用管理员用户登录[ModelArts控制台](https://console.huaweicloud.com/modelarts)。在登录页面，请使用"IAM用户登录"方式进行登录。
      首次登录会提示修改密码，请根据界面提示进行修改。
      
   
   2. 在ModelArts控制台的左侧导航栏中，选择"专属资源池"，单击创建，未提示权限不足，表明管理员用户的权限配置成功。
   
   
   
   
 
#### 配置开发者权限
开发者权限需要通过IAM的细粒度授权控制实现，可以通过以下配置流程实现开发者权限配置。
1. 使用主账号创建一个开发者用户组user_group，将开发者账号加入用户组user_group中。具体操作请参见[Step1 创建用户组并加入用户](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_24_0089.html)。
2. 创建自定义策略。 
   1. [登录IAM管理控制台](https://console.huaweicloud.com/iam/#/iam/groups)。
   
   2. 创建自定义策略3，拒绝用户操作ModelArts专属资源池并拒绝用户查看其他用户的Notebook。 在统一身份认证服务控制台的左侧菜单栏中，选择"权限管理\> 权限"。单击右上角"创建自定义策略"，"策略名称"为"Policy3_DenyOperation"，策略配置方式选择JSON视图，输入策略内容，单击"确定"。
      自定义策略"Policy3_DenyOperation"的具体内容如下，可以直接复制粘贴。
      ```
      { 
          "Version": "1.1", 
          "Statement": [ 
             {
                  "Effect": "deny", 
                  "Action": [
                      "modelarts:pool:create",
                      "modelarts:pool:update",
                      "modelarts:pool:delete",
      "modelarts:notebook:listAllNotebooks"
                  ]
      
      }
          ] 
      }
      ```
      
   
   
   
   
3. 将自定义策略授权给开发者用户组user_group。 
   1. 在统一身份认证服务控制台的左侧菜单栏中，选择"用户组"。在用户组页面单击对应用户组名称user_group操作列的"授权"，勾选策略"Policy1_IAM_OBS"、"Policy2_AllowOperation"和"Policy3_DenyOperation"。单击"下一步"。
   
   2. 选择授权范围方案为所有资源，单击"确定"。
   
   
   
   
4. 给开发者用户配置ModelArts委托授权，仅允许开发者使用开发环境模块。 
   1. 使用主账号登录[ModelArts控制台](https://console.huaweicloud.com/modelarts)，在左侧导航栏单击"权限管理"，进入"权限管理"页面。
   
   2. 单击"添加委托"。在"添加委托"页面，在"委托对象类型"下面选择"IAM子用户"，"对象名称"选择开发者的账号，"委托类型"选择"新增委托"，"委托名称"设置为"ma_agency_develop_user"，"委托模板"选择"开发环境模块"。
   
   3. 单击"创建"。
   
   4. 在"权限管理"页面，再次单击"添加委托"，进入"访问授权"页面，为其他开发者用户配置委托。 "委托对象类型"选择"IAM子用户"，"对象名称"选择开发者的账号，"委托类型"选择"已有委托"，"委托名称"勾选上一步创建的"ma_agency_develop_user"。
      
   
   
   
   
5. 测试开发者用户权限。 
   1. 使用user_group用户组中任意一个子账号登录[ModelArts控制台](https://console.huaweicloud.com/modelarts)。在登录页面，请使用"IAM用户登录"方式进行登录。
      首次登录会提示修改密码，请根据界面提示进行修改。
      
   
   2. 在ModelArts左侧菜单栏中，选择"专属资源池"，单击创建，界面未提示权限不足，表明开发者用户的权限配置成功。
   
   
   
   
 
