背景
当前用于删除逻辑盘的web rest接口的操作类型为DELETE,存在安全隐患,客户希望用POST操作替代。
关联ISSUE
[需求]: REST接口delete操作整改-rackmount-AtomGit | GitCode
整体方案
删除原来用于“删除逻辑盘”的delete操作,在uri “/UI/Rest/System/Storage/:storageid/Volumes”下实现用于“删除逻辑盘”的Post操作。
| 业务 | ACTION | 原始URI | 整改类型 | 新URI |
|---|---|---|---|---|
| 查询逻辑盘信息 | GET | /UI/Rest/System/Storage/:controllerid/Volumes/:volumeid | 不调整 | |
| 设置逻辑盘信息 | PATCH | /UI/Rest/System/Storage/:controllerid/Volumes/:volumeid | 不调整 | |
| 创建逻辑盘 | POST | /UI/Rest/System/Storage/:storageid/Volumes | 新增属性 | 属性名RequestMethod,支持删除操作 属性名VolumeIds,当RequestMethod为DELETE时支持设置 |
| 删除逻辑盘 | DELETE | /UI/Rest/System/Storage/:controllerid/Volumes/:volumeid | 整改URI | 增加url使用条件,当AllowHttpDelete为False时无法访问,为True则可以访问 |
详细描述
评审点4:通用硬件接口整改
相关接口:
(1)查询逻辑盘信息:/UI/Rest/System/Storage/:controllerid/Volumes/:volumeid(Get操作)
(2)设置逻辑盘信息:/UI/Rest/System/Storage/:controllerid/Volumes/:volumeid(Patch操作)
(3)创建逻辑盘:/UI/Rest/System/Storage/:storageid/Volumes(Post操作)
(4)删除逻辑盘:/UI/Rest/System/Storage/:controllerid/Volumes/:volumeid(Delete操作)
1、 变更用于“删除逻辑盘”的WebRest接口Delete操作
资源URI (已有):/UI/Rest/System/Storage/:controllerid/Volumes/:volumeid
变化类型 :变更应用场景
操作类型 :Delete
应用场景 :删除逻辑盘
操作权限 :BasicSetting
输入参数 :无
说明:该接口DELETE操作是否支持依赖于资源协作接口bmc.kepler.Managers.WebService下的AllowHttpDelete 属性:
1)无法获取AllowHttpDelete 属性(社区新版本配套旧版本SDK场景),或AllowHttpDelete 属性值为true时,支持DELETE操作。
2)AllowHttpDelete 属性值为false时,不支持DELETE操作。
2、变更用于“创建逻辑盘”的WebRest接口
资源URI(已有):/UI/Rest/System/Storage/:storageid/Volumes
变化类型:新增输入参数
操作类型:Post
应用场景:用于创建和删除逻辑盘(删除功能与原uri /UI/Rest/System/Storage/:controllerid/Volumes/:volumeid下的Delete操作一致,创建功能与原/UI/Rest/System/Storage/:storageid/Volumes下的功能一致)
操作权限:BasicSetting
输入参数:
参数变更:
| 属性 | 数据类型 | 属性说明 | 取值范围 | 约束 |
|---|---|---|---|---|
| VolumeIds(新增) | Array(string) | 要删除的逻辑盘Id数组 | 数组元素(要删除的逻辑盘Id)的取值范围为字符串 | 当RequestMethod为“POST”时为不可选,当RequestMethod为“DELETE”时为必选 |
| RequestMethod(新增) | string | 操作类型,当取值为“POST”时,实现创建逻辑盘功能;当取值为“DELETE”时,实现删除逻辑盘功能 | 枚举值:“POST”、“DELETE”,默认值为“POST”。 | 可选 |
| Drives(已有) | Array(number) | 物理盘Id数组 | 数组元素(物理盘Id)的取值范围为number | 当RequestMethod为“POST”时为必选,当RequestMethod为“DELETE”时不可选 |
| VolumeRaidLevel(已有) | string | RAID级别 | 枚举值:“RAID0”, “RAID1”,“RAID5”, “RAID6”, “RAID10”,“RAID50”,“RAID60”, “RAID1(ADM)”,“RAID10(ADM)”,“RAID1Triple”,“RAID10Triple” | 当RequestMethod为“POST”时为必选,当RequestMethod为“DELETE”时不可选 |
ReqBody请求体示例:
创建逻辑盘:
{
"RequestMethod": "POST",
"Drives": [0, 1],
"VolumeRaidLevel": "RAID0"
}
删除逻辑盘:
{
"RequestMethod": "DELETE",
"VolumeIds": [“LogicalDrive238”]
}
遗留问题
1、