主机迁移服务 SMS
Organizations服务中的服务控制策略(Service Control Policy,以下简称SCP)可以使用以下授权项元素设置访问控制策略。
SCP不直接进行授权,只划定权限边界。将SCP绑定到组织单元或者成员账号时,并没有直接对组织单元或成员账号授予操作权限,而是规定了成员账号或组织单元包含的成员账号的授权范围。
本章节介绍组织服务中SCP使用的元素,这些元素包含了操作(Action)、资源(Resource)和条件(Condition)。
如何使用这些元素编辑SCP自定义策略,请参考创建SCP。
操作(Action)
操作(Action)即为SCP中支持的授权项。
- “访问级别”列描述如何对操作进行分类(list、read和write等)。此分类可帮助您了解在SCP中相应操作对应的访问级别。
 - “资源类型”列指每个操作是否支持资源级权限。
    
- 资源类型支持通配符号*表示所有。如果此列没有值(-),则必须在SCP语句的Resource元素中指定所有资源类型(“*”)。
 - 如果该列包含资源类型,则必须在具有该操作的语句中指定该资源的URN。
 - 资源类型列中必需资源在表中用星号(*)标识,表示使用此操作必须指定该资源类型。
 
关于SMS定义的资源类型的详细信息请参见资源类型(Resource)。
 
- “条件键”列包括了可以在SCP语句的Condition元素中支持指定的键值。
    
- 如果该授权项资源类型列存在值,则表示条件键仅对列举的资源类型生效。
 - 如果该授权项资源类型列没有值(-),则表示条件键对整个授权项生效。
 - 如果此列条件键没有值(-),表示此操作不支持指定条件键。
 
关于SMS定义的条件键的详细信息请参见条件(Condition)。
 
您可以在SCP语句的Action元素中指定以下SMS的相关操作。
| 
        授权项  | 
      
        描述  | 
      
        访问级别  | 
      
        资源类型(*为必须)  | 
      
        条件键  | 
     
|---|---|---|---|---|
| 
        sms:template:list  | 
      
        授予查询模板列表权限  | 
      
        list  | 
      
        template  | 
      
        -  | 
     
| 
        sms:template:create  | 
      
        授予新增模板信息权限  | 
      
        write  | 
      
        template  | 
      
        -  | 
     
| 
        sms:template:batchDelete  | 
      
        授予批量删除指定ID的模板权限  | 
      
        write  | 
      
        template  | 
      
        -  | 
     
| 
        sms:template:get  | 
      
        授予查询指定ID模板信息权限  | 
      
        read  | 
      
        template  | 
      
        -  | 
     
| 
        sms:template:update  | 
      
        授予修改模板信息权限  | 
      
        write  | 
      
        template  | 
      
        -  | 
     
| 
        sms:template:getTargetPassword  | 
      
        授予查询指定ID的模板中的目的端服务器的密码权限  | 
      
        read  | 
      
        template  | 
      
        -  | 
     
| 
        sms:template:delete  | 
      
        授予删除指定ID的模板权限  | 
      
        write  | 
      
        template  | 
      
        -  | 
     
| 
        sms:server:listErrors  | 
      
        授予查询待迁移源端的所有错误权限  | 
      
        list  | 
      
        server  | 
      
        -  | 
     
| 
        sms:server:list  | 
      
        授予查询源端服务器列表权限  | 
      
        list  | 
      
        server  | 
      |
| 
        sms:server:register  | 
      
        授予上报源端服务器基本信息权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:batchDelete  | 
      
        授予批量删除源端服务器信息权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:get  | 
      
        授予查询指定ID的源端服务器权限  | 
      
        read  | 
      
        server  | 
      |
| 
        sms:server:update  | 
      
        授予修改指定ID的源端服务器名称权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:delete  | 
      
        授予删除指定ID的源端服务器信息权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:updateDiskInfo  | 
      
        授予更新磁盘信息权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:overview  | 
      
        获取服务器总览权限  | 
      
        read  | 
      
        server  | 
      
        -  | 
     
| 
        sms:server:updateState  | 
      
        授予更新任务对应源端复制状态权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:listTask  | 
      
        授予查询迁移任务列表权限  | 
      
        list  | 
      
        server  | 
      |
| 
        sms:server:createTask  | 
      
        授予创建迁移任务权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:batchDeleteTask  | 
      
        授予批量删除迁移任务权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:getTask  | 
      
        授予查询指定ID的迁移任务权限  | 
      
        read  | 
      
        server  | 
      |
| 
        sms:server:updateTask  | 
      
        授予更新指定ID的迁移任务权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:deleteTask  | 
      
        授予删除指定ID的迁移任务权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:manageTask  | 
      
        授予管理迁移任务权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:updateTaskProgress  | 
      
        授予上报数据迁移进度和速率权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:unlock  | 
      
        授予解锁指定任务的目的端服务器权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:collectLog  | 
      
        授予上传迁移任务的日志权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:getTaskPassphrase  | 
      
        授予查询指定任务ID的安全传输通道的证书passphrase权限  | 
      
        read  | 
      
        server  | 
      |
| 
        sms:server:checkNetwork  | 
      
        授予检查网卡安全组端口是否符合要求权限  | 
      
        read  | 
      
        server  | 
      
        -  | 
     
| 
        sms:server:getTaskSpeedLimit  | 
      
        授予查询任务限速规则权限  | 
      
        read  | 
      
        server  | 
      |
| 
        sms:server:updateTaskSpeedLimit  | 
      
        授予设置迁移限速规则权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:getCommand  | 
      
        授予获取服务端命令权限  | 
      
        read  | 
      
        server  | 
      |
| 
        sms:server:updateCommandResult  | 
      
        授予上报服务端命令执行结果权限  | 
      
        write  | 
      
        server  | 
      |
| 
        sms:server:getCert  | 
      
        授予获取SSL证书和私钥权限  | 
      
        read  | 
      
        server  | 
      |
| 
        sms:migproject:list  | 
      
        授予获取项目列表权限  | 
      
        list  | 
      
        migproject  | 
      
        -  | 
     
| 
        sms:migproject:create  | 
      
        授予新建迁移项目权限  | 
      
        write  | 
      
        migproject  | 
      
        -  | 
     
| 
        sms:migproject:get  | 
      
        授予查询指定ID迁移项目详情权限  | 
      
        read  | 
      
        migproject  | 
      
        -  | 
     
| 
        sms:migproject:update  | 
      
        授予更新迁移项目信息权限  | 
      
        write  | 
      
        migproject  | 
      
        -  | 
     
| 
        sms:migproject:delete  | 
      
        授予删除迁移项目权限  | 
      
        write  | 
      
        migproject  | 
      
        -  | 
     
| 
        sms:migproject:update  | 
      
        授予更新默认迁移项目权限  | 
      
        write  | 
      
        migproject  | 
      
        -  | 
     
| 
        sms::getConfig  | 
      
        授予获取Agent配置信息权限  | 
      
        read  | 
      
        -  | 
      
        -  | 
     
| 
        sms:server:updateNetworkCheckInfo  | 
      
        授予更新网络检测相关的信息权限  | 
      
        write  | 
      
        task  | 
      |
| 
        sms:server:getTaskConfig  | 
      
        授予查询任务配置权限  | 
      
        read  | 
      
        task  | 
      |
| 
        sms:server:updateTaskConfig  | 
      
        授予更新任务配置权限  | 
      
        write  | 
      
        task  | 
      
SMS的API通常对应着一个或多个授权项。表2展示了API与授权项的关系,以及该API需要依赖的授权项。
| 
        API  | 
      
        对应的授权项  | 
      
        依赖的授权项  | 
     
|---|---|---|
| 
        GET /v3/vm/templates  | 
      
        sms:template:list  | 
      
        -  | 
     
| 
        POST /v3/vm/templates  | 
      
        sms:template:create  | 
      
        -  | 
     
| 
        POST /v3/vm/templates/delete  | 
      
        sms:template:batchDelete  | 
      
        -  | 
     
| 
        GET /v3/vm/templates/{id}  | 
      
        sms:template:get  | 
      
        -  | 
     
| 
        PUT /v3/vm/templates/{id}  | 
      
        sms:template:update  | 
      
        -  | 
     
| 
        GET /v3/vm/templates/{id}/target-password  | 
      
        sms:template:getTargetPassword  | 
      
        -  | 
     
| 
        DELETE /v3/vm/templates/{id}  | 
      
        sms:template:delete  | 
      
        -  | 
     
| 
        GET /v3/errors  | 
      
        sms:server:listErrors  | 
      
        -  | 
     
| 
        GET /v3/sources  | 
      
        sms:server:list  | 
      
        -  | 
     
| 
        POST /v3/sources  | 
      
        sms:server:register  | 
      
        -  | 
     
| 
        POST /v3/sources/delete  | 
      
        sms:server:batchDelete  | 
      
       
  | 
     
| 
        GET /v3/sources/{source_id}  | 
      
        sms:server:get  | 
      
        -  | 
     
| 
        PUT /v3/sources/{source_id}  | 
      
        sms:server:update  | 
      
        -  | 
     
| 
        DELETE /v3/sources/{source_id}  | 
      
        sms:server:delete  | 
      
       
  | 
     
| 
        PUT /v3/sources/{source_id}/diskinfo  | 
      
        sms:server:updateDiskInfo  | 
      
        -  | 
     
| 
        GET /v3/sources/overview  | 
      
        sms:server:overview  | 
      
        -  | 
     
| 
        PUT /v3/sources/{source_id}/changestate  | 
      
        sms:server:updateState  | 
      
        -  | 
     
| 
        GET /v3/tasks  | 
      
        sms:server:listTask  | 
      
        -  | 
     
| 
        POST /v3/tasks  | 
      
        sms:server:createTask  | 
      
        -  | 
     
| 
        POST /v3/tasks/delete  | 
      
        sms:server:batchDeleteTask  | 
      
       
  | 
     
| 
        GET /v3/tasks/{task_id}  | 
      
        sms:server:getTask  | 
      
        -  | 
     
| 
        PUT /v3/tasks/{task_id}  | 
      
        sms:server:updateTask  | 
      
        -  | 
     
| 
        DELETE /v3/tasks/{task_id}  | 
      
        sms:server:deleteTask  | 
      
       
  | 
     
| 
        POST /v3/tasks/{task_id}/action  | 
      
        sms:server:manageTask  | 
      
        -  | 
     
| 
        PUT /v3/tasks/{task_id}/progress  | 
      
        sms:server:updateTaskProgress  | 
      
        -  | 
     
| 
        POST /v3/tasks/{task_id}/unlock  | 
      
        sms:server:unlock  | 
      
        -  | 
     
| 
        POST /v3/tasks/{task_id}/log  | 
      
        sms:server:collectLog  | 
      
        -  | 
     
| 
        GET /v3/tasks/{task_id}/passphrase  | 
      
        sms:server:getTaskPassphrase  | 
      
        -  | 
     
| 
        GET /v3/tasks/{t_project_id}/networkacl/{t_network_id}/check  | 
      
        sms:server:checkNetwork  | 
      
        -  | 
     
| 
        GET /v3/tasks/{task_id}/speed-limit  | 
      
        sms:server:getTaskSpeedLimit  | 
      
        -  | 
     
| 
        POST /v3/tasks/{task_id}/speed-limit  | 
      
        sms:server:updateTaskSpeedLimit  | 
      
        -  | 
     
| 
        GET /v3/sources/{server_id}/command  | 
      
        sms:server:getCommand  | 
      
        -  | 
     
| 
        POST /v3/sources/{server_id}/command_result  | 
      
        sms:server:updateCommandResult  | 
      
        -  | 
     
| 
        GET /v3/tasks/{task_id}/certkey  | 
      
        sms:server:getCert  | 
      
        -  | 
     
| 
        GET /v3/migprojects  | 
      
        sms:migproject:list  | 
      
        -  | 
     
| 
        POST /v3/migprojects  | 
      
        sms:migproject:create  | 
      
        -  | 
     
| 
        GET /v3/migprojects/{mig_project_id}  | 
      
        sms:migproject:get  | 
      
        -  | 
     
| 
        PUT /v3/migprojects/{mig_project_id}  | 
      
        sms:migproject:update  | 
      
        -  | 
     
| 
        DELETE /v3/migprojects/{mig_project_id}  | 
      
        sms:migproject:delete  | 
      
        -  | 
     
| 
        PUT /v3/migprojects/{mig_project_id}/default  | 
      
        sms:migproject:update  | 
      
        -  | 
     
| 
        GET /v3/config  | 
      
        sms::getConfig  | 
      
        -  | 
     
| 
        POST /v3/{task_id}/update-network-check-info  | 
      
        sms:server:updateNetworkCheckInfo  | 
      
        -  | 
     
| 
        POST /v3/tasks/{task_id}/configuration-setting  | 
      
        sms:server:updateTaskConfig  | 
      
        -  | 
     
资源类型(Resource)
资源类型(Resource)表示SCP所作用的资源。如表3中的某些操作指定了可以在该操作指定的资源类型,则必须在具有该操作的SCP语句中指定该资源的URN,SCP仅作用于此资源;如未指定,Resource默认为“*”,则SCP将应用到所有资源。您也可以在SCP中设置条件,从而指定资源类型。
SMS定义了以下可以在SCP的Resource元素中使用的资源类型。
| 
        资源类型  | 
      
        URN  | 
     
|---|---|
| 
        server  | 
      
        sms::<account-id>:server:*  | 
     
| 
        sms::<account-id>:server:<server-id>  | 
     |
| 
        Task  | 
      
        sms::<account-id>:task:*  | 
     
| 
        sms::<account-id>:task:<task-id>  | 
     |
| 
        template  | 
      
        sms::<account-id>:template:*  | 
     
| 
        sms::<account-id>:template:<template-id>  | 
     |
| 
        migproject  | 
      
        sms::<account-id>:migproject:*  | 
     
| 
        sms::<account-id>:migproject:<migproject-id>  |