# 自定义委托授权
#### 操作场景
在使用SWR企业仓库实例时，需要访问租户的某些资源。只有通过委托授权后，SWR服务才能访问这些资源。委托是IAM提供的一种权限管理方式。
委托是您与其他云服务、华为云账号或者代运维公司创建的一种信任关系。如果您在华为云购买了多种云资源，其中一种云资源希望让更专业、高效的公司、账号或者云服务来代运维，您可以通过IAM的委托功能，与云服务、账号或者代运维公司创建委托关系，实现安全高效的资源代运维工作。被委托的云服务、账号或公司可以根据权限代替您进行资源运维工作。
创建委托授权有两种形式：
- **【推荐】由于容器镜像服务企业版目前处于公测阶段，如果您的租户登录页面后看不到"企业版"链接，请提交[工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请入口。申请成功后，登录容器镜像服务企业版控制台时，弹出授权指引提示框。**
  ![](https://support.huaweicloud.com/bestpractice2-swr/public_sys-resources/caution_3.0-zh-cn.png)
  此种方式需要登录的用户具有Tenant Administrator的权限。
  
- **由用户自己创建委托并授权完成。**
  如果您的账号没有Tenant Administrator的权限，您可以在统一身份认证服务控制台手动创建委托来实现。
  
#### 通过IAM创建委托
以下是在IAM新版控制台和IAM旧版控制台中，用户自行创建自定义委托并完成授权的操作指南。
![](https://support.huaweicloud.com/bestpractice2-swr/public_sys-resources/caution_3.0-zh-cn.png)
- 委托名称不能重复，即如果您在IAM新版控制台创建的的信任委托A,则不能在IAM旧版控制台创建同名的委托A，反之亦然。
- 当使用第二种方式即由用户自己创建委托并授权的场景下，如果使用了IAM新版控制台的委托，则不能再使用IAM旧版控制台的委托，即所有的局点都只能使用IAM新版控制台的委托。而第一种通过SWR控制台弹框授权的方式无此限制，故建议使用第一种方式进行委托的创建并授权。
 
#### IAM新版控制台
![](https://support.huaweicloud.com/bestpractice2-swr/public_sys-resources/caution_3.0-zh-cn.png)
SWR 服务仅在**拉美-圣保罗一**局点支持通过 IAM 新版控制台创建的信任委托。
1. 登录[统一身份认证服务新版控制台](https://console.huaweicloud.com/iam5)。
2. 在左侧导航窗格中，选择"身份策略"页签，单击右上方的"创建自定义身份策略"。
3. 策略名称填写为"SWR_EE_Policies"。策略配置方式选择"JSON视图"**，** 策略内容复制粘贴如下内容，单击"确定"。
   
   ```
   {
     "Version": "5.0",
     "Statement": [
       {
         "Action": [
           "vpc:securityGroups:create",
           "vpc:securityGroups:delete",
           "vpc:securityGroups:get",
           "vpc:securityGroupRules:create",
           "vpc:securityGroupRules:delete",
           "vpc:ports:create",
           "vpc:ports:delete",
           "vpc:ports:update",
           "vpc:ports:get",
           "vpc:subnets:get",
           "vpc:vpcs:get",
           "vpcep:endpoints:create",
           "vpcep:endpoints:delete",
           "vpcep:endpoints:get",
           "kms:cmk:getMaterial",
           "kms:cmk:get",
           "kms:cmk:list",
           "kms:cmk:scheduleKeyDeletion",
           "kms:cmk:sign",
           "kms:cmk:create",
           "kms:cmk:getPublicKey",
           "kms:cmk:decryptDataKey",
           "kms:cmk:createDataKey",
           "ces:metricData:list"
         ],
         "Effect": "Allow"
       }
     ]
   }
   ```
   ![](https://support.huaweicloud.com/bestpractice2-swr/public_sys-resources/caution_3.0-zh-cn.png)
   - 如果不需要由SWR服务来创建或删除内网访问，可以删除json中的 **vpcep:endpoints:create** 、**vpcep:endpoints:delete** 两行记录。
   
   - 如果不需要由SWR服务来创建或删除加密的obs桶，可以删除json中的 **kms:cmk:creat** e、**kms:cmk:scheduleKeyDeletion** 两行记录。
    
   
   
4. 再创建一条自定义身份策略，策略名称填写为"SWR_EE_OBS_Policies"。策略配置方式选择"JSON视图"，策略内容复制粘贴如下内容，单击"确定"。
   
   ```
   {
     "Version": "5.0",
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "obs:bucket:getBucketStorage",
           "obs:bucket:getEncryptionConfiguration",
           "obs:bucket:getLifecycleConfiguration",
           "obs:bucket:headBucket",
           "obs:bucket:createBucket",
           "obs:bucket:deleteBucket",
           "obs:bucket:listBucket",
           "obs:bucket:listBucketMultipartUploads",
           "obs:bucket:putEncryptionConfiguration",
           "obs:bucket:putLifecycleConfiguration",
           "obs:object:abortMultipartUpload",
           "obs:object:deleteObject",
           "obs:object:getObject",
           "obs:object:listMultipartUploadParts",
           "obs:object:putObject"
         ]
       }
     ]
   }
   ```
   ![](https://support.huaweicloud.com/bestpractice2-swr/public_sys-resources/caution_3.0-zh-cn.png)
   如果不需要由SWR服务创建或删除OBS桶，可以删除json中的**obs:bucket:createBucket** 、**obs:bucket:deleteBucket** 两行记录。
   
   
5. 再创建一条自定义身份策略，策略名称填写为"SWR_EE_IAM_Policies"。策略配置方式选择"JSON视图"，策略内容复制粘贴如下内容，单击"确定"。
   
   ```
   {
       "Version": "5.0",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iam:users:getUser"
               ]
           }
       ]
   }
   ```
   
   
6. 在左侧导航窗格中，选择"委托"页签，单击"创建信任委托"。
7. 在创建信任委托页面，委托名称填写为"swr_ee_trust"，信任主体类型选择"云服务"，云服务选择"容器镜像服务"，最大会话持续时长选择"12小时"，单击"完成"。
8. 创建成功后，单击"立即授权"，勾选[步骤3]、[步骤4]和[步骤5]创建的三条自定义身份策略SWR_EE_Policies、SWR_EE_OBS_Policies和SWR_EE_IAM_Policies，单击"下一步"，选择授权范围，单击"确定"。
9. 如需支持制品扫描功能，还需要在SWR_EE_Policies 策略下增加以下权限： 
   ```
   hss:image:batchScanSwrImage
   hss:image:vulnerabilities
   hss:image:listVulnerabilityCve
   hss:image:runImageSynchronizeTask
   hss:image:listRegistryImages
   hss:container:listImageScanTask
   swr:instance:createTempCredential
   swr:instance:list
   swr:repository:listRepositories
   swr:repository:listArtifacts
   swr:repository:downloadArtifact
   swr:repository:getTag
   ```
   ![](https://support.huaweicloud.com/bestpractice2-swr/public_sys-resources/caution_3.0-zh-cn.png)
   授权完成后需等待15-30分钟方可生效，请耐心等待！
   
   
 
#### IAM旧版控制台
1. 登录[IAM控制台](https://console.huaweicloud.com/iam/?locale=zh-cn#/iam/users)。
2. 在左侧导航窗格中，选择"权限管理\>权限"页签，单击右上方的"创建自定义策略"。
3. 策略名称填写为"SWR_EE_Policies"，策略名称不能填写其他值。策略配置方式选择"JSON视图"，策略内容复制粘贴如下内容，单击"确定"。
   
   ```
   {
       "Version": "1.1",
       "Statement": [
           {
               "Action": [
                   "vpc:securityGroups:create",
                   "vpc:securityGroups:delete",
                   "vpc:securityGroups:get",
                   "vpc:securityGroupRules:create",
                   "vpc:securityGroupRules:delete",
                   "vpc:ports:create",
                   "vpc:ports:delete",
                   "vpc:ports:update",
                   "vpc:ports:get",
                   "vpc:subnets:get",
                   "vpc:vpcs:get",
                   "vpcep:endpoints:create",
                   "vpcep:endpoints:delete",
                   "vpcep:endpoints:get",
                   "kms:cmk:create",
                   "kms:cmk:update",
                   "kms:cmk:getMaterial",
                   "kms:cmk:get",
                   "kms:cmk:list",
                   "kms:cmk:sign",
                   "kms:cmk:getPublicKey",
                   "kms:dek:create",
                   "kms:dek:decrypt",
                   "kms:dek:encrypt",
                   "ces:metricData:list"
               ],
               "Effect": "Allow"
           }
       ]
   }
   ```
   
   
4. 再创建一条自定义策略，策略名称填写为"SWR_EE_OBS_Policies"，策略名称不能填写其他值。策略配置方式选择"JSON视图"，策略内容复制粘贴如下内容，单击"确定"。
   
   ```
   {
       "Version": "1.1",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "obs:bucket:GetBucketPolicy",
                   "obs:bucket:GetLifecycleConfiguration",
                   "obs:bucket:PutLifecycleConfiguration",
                   "obs:bucket:ListBucketMultipartUploads",
                   "obs:bucket:GetBucketStorage",
                   "obs:object:GetObject",
                   "obs:object:DeleteObject",
                   "obs:bucket:PutBucketPolicy",
                   "obs:object:ListMultipartUploadParts",
                   "obs:bucket:HeadBucket",
                   "obs:bucket:DeleteBucket",
                   "obs:object:AbortMultipartUpload",
                   "obs:bucket:GetEncryptionConfiguration",
                   "obs:bucket:CreateBucket",
                   "obs:bucket:DeleteBucketPolicy",
                   "obs:bucket:ListBucket",
                   "obs:object:PutObject",
                   "obs:bucket:PutEncryptionConfiguration"
               ]
           }
       ]
   }
   ```
   
   
5. 再创建一条自定义身份策略，策略名称填写为"SWR_EE_IAM_Policies"，策略名称不能填写其他值。策略配置方式"选择JSON视图"，策略内容复制粘贴如下内容，单击"确定"。
   
   ```
   {
       "Version": "1.1",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iam:users:getUser"
               ]
           }
       ]
   }
   ```
   
   
6. 在左侧导航窗格中，选择"委托"页签，单击"创建委托"。
7. 在创建委托页面，委托名称填写为"swr_ee_trust"，委托类型选择"云服务"，云服务选择"容器镜像服务"，最大会话持续时长选择"永久"，单击"完成"。
8. 创建成功后单击"立即授权"，勾选中[步骤3]、[步骤4]和[步骤5]创建的三条自定义身份策略SWR_EE_Policies、SWR_EE_OBS_Policies和SWR_EE_IAM_Policies，单击"下一步"，授权范围选择**"** **所有资源** **"**，单击"确定"。
9. 如需支持制品扫描功能，还需要在SWR_EE_Policies策略下增加以下权限： 
   ```
   hss:images:set
   hss:images:list
   hss:vuls:list
   hss:containers:list
   hss:containers:set
   swr:instance:createTempCredential
   swr:instance:list
   swr:repository:listRepositories
   swr:repository:listArtifacts
   swr:repository:downloadArtifact
   swr:repository:getTag
   ```
   ![](https://support.huaweicloud.com/bestpractice2-swr/public_sys-resources/caution_3.0-zh-cn.png)
   授权完成后需等待15-30分钟方可生效，请耐心等待！
   
   
 
