
# 策略授权参考
本章节介绍SFS Turbo策略授权场景下支持的策略授权项。
#### 支持的授权项
策略包含系统策略和自定义策略，如果系统策略不满足授权要求，管理员可以创建自定义策略，并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应，授权项列表说明如下：
- 权限：允许或拒绝某项操作。
- 对应API接口：自定义策略实际调用的API接口。
- 授权项：自定义策略中支持的Action，在自定义策略中的Action中写入授权项，可以实现授权项对应的权限功能。
- 依赖的授权项：部分Action存在对其他Action的依赖，需要将依赖的Action同时写入授权项，才能实现对应的权限功能。
- IAM项目(Project)/企业项目(Enterprise Project)：自定义策略的授权范围，包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目，表示此授权项对应的自定义策略，可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目，不支持企业项目，表示仅能在IAM中给用户组授权并生效，如果在企业管理中授权，则该自定义策略不生效。管理员可以在授权项列表中查看授权项是否支持IAM项目或企业项目，"√"表示支持，"×"表示暂不支持。关于IAM项目与企业项目的区别，详情请参见：[IAM与企业管理的区别](https://support.huaweicloud.com/iam_faq/iam_01_0101.html)。
SFS Turbo的支持自定义策略授权项如下所示：
- 【示例】[生命周期管理]，包含SFS Turbo所有生命周期接口对应的授权项，如创建文件系统、查询单个文件系统详细信息、删除文件系统、获取文件系统列表、扩容文件系统等接口。
- 【示例】[连接管理]，包含连接管理接口对应的授权项，如修改文件系统绑定的安全组接口。
- 【示例】[共享标签]，包含共享标签接口对应的授权项，如创建共享标签、查询共享标签、删除共享标签、批量添加共享标签、查询租户所有共享的标签、通过标签查询文件系统列表等接口。
 
 #### 生命周期管理
| 权限           | 对应API接口                                                  | 授权项                          | 依赖的授权项                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 创建文件系统       | POST /v1/{project_id}/sfs-turbo/shares                   | sfsturbo:shares:createShare  | - 创建SFS Turbo实例时，需要vpc相关权限，包括校验vpc、子网、安全组，创建vip以及port，创建安全组规则等，需要增加授权项： - "vpc:\*:\*"    - 加密实例需要在项目上配置KMS Administrator权限  - 专属场景，需要增加授权项： - "dss:\*:get",  - "dss:\*:list",  - "dss:\*:count"     | √                                                  | √                                                           |
| 查询单个文件系统详细信息 | GET /v1/{project_id}/sfs-turbo/shares/{share_id}         | sfsturbo:shares:getShare     | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | √                                                  | √                                                           |
| 删除文件系统       | DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}      | sfsturbo:shares:deleteShare  | - 删除SFS Turbo实例时，需要vpc相关权限，包括删除vip以及port，删除安全组规则等，需要增加授权项： - "vpc:\*:\*"    - 如果是专属场景，需要增加授权项： - "dss:\*:get",  - "dss:\*:list",  - "dss:\*:count"                                                                                                                 | √                                                  | √                                                           |
| 获取文件系统列表     | GET /v1/{project_id}/sfs-turbo/shares/detail             | sfsturbo:shares:getAllShares | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | √                                                  | √                                                           |
| 扩容文件系统       | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/action | sfsturbo:shares:shareAction  | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | √                                                  | √                                                           |
   
 #### 连接管理
| 权限           | 对应API接口                                                  | 授权项                         | 依赖的授权项                                                                                                                                                                                                                                                                                    | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 修改文件系统绑定的安全组 | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/action | sfsturbo:shares:shareAction | 更改安全组需要安全组相关权限： - vpc:securityGroups:\*  - vpc:securityGroupRules:\*   | √                                               | √                                                           |
   
 #### 共享标签
| 权限           | 对应API接口                                                   | 授权项                         | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 创建共享标签       | POST /v1/{project_id}/sfs-turbo/{share_id}/tags           | sfsturbo:shares:addTag      | -      | √                                                 | √                                                           |
| 查询共享标签       | GET /v1/{project_id}/sfs-turbo/{share_id}/tags            | sfsturbo:shares:getTag      | -      | √                                                 | √                                                           |
| 删除共享标签       | DELETE /v1/{project_id}/sfs-turbo/{share_id}/tags/{key}   | sfsturbo:shares:deleteTag   | -      | √                                                 | √                                                           |
| 批量添加共享标签     | POST /v1/{project_id}/sfs-turbo/{share_id}/tags/action    | sfsturbo:shares:batchResTag | -      | √                                                 | √                                                           |
| 查询租户所有共享的标签  | GET /v1/{project_id}/sfs-turbo/tags                       | sfsturbo:shares:getAllTag   | -      | √                                                 | √                                                           |
| 通过标签查询文件系统列表 | POST /v1/{project_id}/sfs-turbo/resource_instances/action | sfsturbo:shares:getAllTag   | -      | √                                                 | √                                                           |
   
#### 名称管理
| 权限       | 对应API接口                                                  | 授权项                         | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 修改文件系统名称 | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/action | sfsturbo:shares:shareAction | -      | √                                               | √                                                         |
   
#### 文件系统管理
| 权限            | 对应API接口                                                                          | 授权项                               | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 创建文件系统异步任务    | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/{feature}/tasks             | sfsturbo:shares:createFsAsyncTask | -      | √                                                   | √                                                          |
| 获取文件系统异步任务列表  | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/{feature}/tasks              | sfsturbo:shares:listFsAsyncTasks  | -      | √                                                   | √                                                          |
| 获取文件系统异步任务详情  | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/{feature}/tasks/{task_id}    | sfsturbo:shares:showFsAsyncTask   | -      | √                                                   | √                                                          |
| 取消/删除文件系统异步任务 | DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/{feature}/tasks/{task_id} | sfsturbo:shares:deleteFsAsyncTask | -      | √                                                   | √                                                          |
| 获取已挂载的客户端ip信息 | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/action                         | sfsturbo:shares:shareAction       | -      | √                                                   | √                                                          |
| 配置hpc缓存型后端信息  | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/action                         | sfsturbo:shares:shareAction       | -      | √                                                   | √                                                          |
   
#### 存储联动管理
| 权限           | 对应API接口                                                                         | 授权项                                       | 依赖的授权项                       | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 绑定后端存储       | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/targets                       | sfsturbo:shares:createBackendTarget       | 用户需要额外配置OBS Administrator权限。 | √                                                 | √                                                           |
| 查询后端存储列表     | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/targets                        | sfsturbo:shares:listBackendTargets        | -                            | √                                                 | √                                                           |
| 获取后端存储详细信息   | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/targets/{target_id}            | sfsturbo:shares:showBackendTargetInfo     | -                            | √                                                 | √                                                           |
| 删除后端存储       | DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/targets/{target_id}         | sfsturbo:shares:deleteBackendTarget       | -                            | √                                                 | √                                                           |
| 更新后端存储属性     | PUT /v1/{project_id}/sfs-turbo/shares/{share_id}/targets/{target_id}/attributes | sfsturbo:shares:updateObsTargetAttributes | -                            | √                                                 | √                                                           |
| 更新后端存储自动同步策略 | PUT /v1/{project_id}/sfs-turbo/shares/{share_id}/targets/{target_id}/policy     | sfsturbo:shares:updateObsTargetPolicy     | -                            | √                                                 | √                                                           |
| 创建数据导入导出任务   | POST /v1/{project_id}/sfs-turbo/{share_id}/hpc-cache/task                       | sfsturbo:shares:createDataRepositoryTask  | -                            | √                                                 | √                                                           |
| 查询数据导入导出任务详情 | GET /v1/{project_id}/sfs-turbo/{share_id}/hpc-cache/task/{task_id}              | sfsturbo:shares:getDataRepositoryTask     | -                            | √                                                 | √                                                           |
| 查询数据导入导出任务列表 | GET /v1/{project_id}/sfs-turbo/{share_id}/hpc-cache/tasks                       | sfsturbo:shares:getAllDataRepositoryTasks | -                            | √                                                 | √                                                           |
| 删除数据导入导出任务   | DELETE /v1/{project_id}/sfs-turbo/{share_id}/hpc-cache/task/{task_id}           | sfsturbo:shares:deleteDataRepositoryTask  | -                            | √                                                 | √                                                           |
| 更新文件系统       | PUT /v1/{project_id}/sfs-turbo/shares/{share_id}                                | sfsturbo:shares:updateHpcShare            | -                            | √                                                 | √                                                           |
   
#### 目录管理
| 权限         | 对应API接口                                                          | 授权项                              | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 创建目标文件夹配额  | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/dir-quota   | sfsturbo:shares:createFsDirQuota | -      | √                                                   | √                                                             |
| 更新目标文件夹配额  | PUT /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/dir-quota    | sfsturbo:shares:updateFsDirQuota | -      | √                                                   | √                                                             |
| 查询目标文件夹配额  | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/dir-quota    | sfsturbo:shares:showFsDirQuota   | -      | √                                                   | √                                                             |
| 删除目标文件夹配额  | DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/dir-quota | sfsturbo:shares:deleteFsDirQuota | -      | √                                                   | √                                                             |
| 创建目录       | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/dir         | sfsturbo:shares:createFsDir      | -      | √                                                   | √                                                             |
| 查询目录是否存在   | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/dir          | sfsturbo:shares:showFsDir        | -      | √                                                   | √                                                             |
| 删除文件系统目录   | DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/dir       | sfsturbo:shares:deleteFsDir      | -      | √                                                   | √                                                             |
| 查询目录资源使用情况 | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/dir-usage    | sfsturbo:shares:showFsDirQuota   | -      | √                                                   | √                                                             |
   
#### 权限管理
| 权限             | 对应API接口                                                                        | 授权项                                         | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 加入AD域          | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/active-directory-domain   | sfsturbo:shares:addActiveDirectoryDomain    | -      | √                                                  | √                                                          |
| 查询AD域配置        | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/active-directory-domain    | sfsturbo:shares:showActiveDirectoryDomain   | -      | √                                                  | √                                                          |
| 修改AD域配置        | PUT /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/active-directory-domain    | sfsturbo:shares:updateActiveDirectoryDomain | -      | √                                                  | √                                                          |
| 退出AD域          | DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/active-directory-domain | sfsturbo:shares:deleteActiveDirectoryDomain | -      | √                                                  | √                                                          |
| 创建权限规则         | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/perm-rules                | sfsturbo:shares:createPermRule              | -      | √                                                  | √                                                          |
| 查询文件系统的权限规则列表  | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/perm-rules                 | sfsturbo:shares:listPermRules               | -      | √                                                  | √                                                          |
| 查询文件系统的某一个权限规则 | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/perm-rules/{rule_id}       | sfsturbo:shares:showPermRule                | -      | √                                                  | √                                                          |
| 修改权限规则         | PUT /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/perm-rules/{rule_id}       | sfsturbo:shares:updatePermRule              | -      | √                                                  | √                                                          |
| 删除权限规则         | DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/perm-rules/{rule_id}    | sfsturbo:shares:deletePermRule              | -      | √                                                  | √                                                          |
| 创建并绑定LDAP配置    | POST /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/ldap                      | sfsturbo:shares:createLdap                  | -      | √                                                  | √                                                          |
| 查询LDAP的配置      | GET /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/ldap                       | sfsturbo:shares:showLdap                    | -      | √                                                  | √                                                          |
| 修改LDAP的配置      | PUT /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/ldap                       | sfsturbo:shares:updateLdap                  | -      | √                                                  | √                                                          |
| 删除LDAP的配置      | DELETE /v1/{project_id}/sfs-turbo/shares/{share_id}/fs/ldap                    | sfsturbo:shares:deleteLdap                  | -      | √                                                  | √                                                          |
   
#### 任务管理
| 权限         | 对应API接口                                      | 授权项                    | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 查询job的状态详情 | GET /v1/{project_id}/sfs-turbo/jobs/{job_id} | sfsturbo:shares:getJob | -      | √                                                 | √                                                            |
   
#### 运营管理
| 权限                 | 对应API接口                                                              | 授权项                              | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 修改文件系统计费模式由按需转为包周期 | POST /v2/{project_id}/sfs-turbo/shares/{share_id}/change-charge-mode | sfsturbo:shares:changeChargeMode | -      | √                                                  | √                                                              |
   
#### 查询文件系统类型和配额
| 权限          | 对应API接口                                    | 授权项                        | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 查询文件系统类型和配额 | GET /v1/{project_id}/sfs-turbo/share-types | sfsturbo:shares:getFlavors | -      | √                                                  | √                                                             |
   
#### Console引用
| 权限              | 对应API接口   | 授权项                            | 依赖的授权项 | IAM项目 (Project) | 企业项目 (Enterprise Project) |
|:---|:---|:---|:---|:---|:---|
| 查询sfs turbo配额   | Console引用 | sfsturbo:shares:getQuota       | -      | √                                                 | √                                                            |
| 获取可用区信息         | Console引用 | sfsturbo:shares:getAZInfo      | -      | √                                                 | √                                                            |
| 获取sfs turbo规格信息 | Console引用 | sfsturbo:shares:getFlavors     | -      | √                                                 | √                                                            |
| 检查文件系统名称        | Console引用 | sfsturbo:shares:checkShareName | -      | √                                                 | √                                                            |
   
