【已评审】新增安全代理方法用于判断文件是否存在、配置和启动网络接口

背景

为了提升内部各组件安全防护水平,防止恶意攻击。沙箱权限会进一步消减。去除权限后,web_backend组件需要安全代理提供判断文件是否存在的功能,用来判断是否支持java kvm功能;usb_entry组件需要安全代理提供拉起网口的功能,来保障近端网口的功能正常。

关联ISSUE

整体方案

web_backend组件使用安全代理提供的接口判断文件是否存在,用来判断是否支持java kvm功能;usb_entry需要安全代理提供启用网口的功能,来保障近端网口的功能正常。

评审点

①interface:bmc.kepler.Managers.Security.File下新增方法Access,用于检查当前进程对文件或目录的访问权限。

②资源path:/bmc/kepler/Managers/:Id/EthernetInterfaces下新增interface。并该interface下新增AddIpAddress方法,用于提供地址管理命令;新增SetLink方法,用于管理和修改网络接口的属性,比如启用网口。

详细描述

评审点1:新增安全代理方法:Access,用于检查当前进程对文件或目录的访问权限。

资源path:/bmc/kepler/Managers/:Id/Security/File

资源interface:bmc.kepler.Managers.Security.File

变化类型:新增方法

应用场景:用于检查当前进程对文件或目录的访问权限。(推荐方案一)

1. 方案一

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
Access 新增方法 BasicSetting sy Path(s):文件路径
Mode(y):待检查权限,见备注。
b Result:是否具有待检查的权限 ① 该代理方法用于检查当前进程对文件或目录的访问权限。
② Mode的取值范围为[0, 7],取值按bit位定义,含义如下。
  bit0为0:判断文件是否存在
  bit0为1:判断文件是否具有可执行权限
  bit1为1:判断文件是否可写
  bit2为1:判断文件是否可读

PS:比如mode的取值为6,6是0110,其中bit1和bit2为均1,则判断当前进程对文件是否可读写。

2. 方案二

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
Access 新增方法 BasicSetting sas Path(s):文件路径
Mode(as):待检查权限,见备注。
b Result:是否具有待检查的权限 ① 该代理方法用于检查当前进程对文件或目录的访问权限。
② Mode是字符串数组,数组中元素为枚举值[“F_OK”, “X_OK”, “W_OK”, “R_OK”],待检查权限为数组中元素的组合,含义如下。
  F_OK:判断文件是否存在
  X_OK:判断文件是否具有可执行权限
  W_OK:判断文件是否可写
  R_OK:判断文件是否可读

PS:比如mode的取值为[“R_OK”, “W_OK”],即判断当前进程对文件是否可读写。

3. 方案三

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
Access 新增方法 BasicSetting say Path(s):文件路径
Mode(ay):待检查权限,见备注。
b Result:是否具有待检查的权限 ① 该代理方法用于检查当前进程对文件或目录的访问权限。
② Mode是字符串数组,数组中元素为枚举值[0, 1, 2, 4],待检查权限为数组中元素的组合,含义如下。
  0:判断文件是否存在
  1:判断文件是否具有可执行权限
  2:判断文件是否可写
  4:判断文件是否可读

PS:比如mode的取值为[2, 4],即判断当前进程对文件是否可读写。


评审点2:在path:/bmc/kepler/Managers/:Id/EthernetInterfaces下新增interface:bmc.kepler.Managers.EthernetInterfaces.IPCommands;该interface下新增AddIpAddress方法,用于为一个网络接口添加IP地址;新增SetLink方法,管理和修改网络接口的属性,比如拉起网口

path/bmc/kepler/Managers/:Id/EthernetInterfaces

新增interface:当前有两个方案可选择(推荐方案一)
方案一bmc.kepler.Managers.EthernetInterfaces.IpCommandWrapper
方案二bmc.kepler.Managers.EthernetInterfaces.IPCommands

新增methodAddIpAddress

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
AddIpAddress 新增方法 SecurityMgmt sss IfName(s):网口名称
Version(s):IP版本,取值为[“IPv4”, “IPv6”, “IPv4AndIPv6”]
IfAddr(s):IP地址
NA NA 为一个网络接口添加IP地址

新增methodDeleteIpAddress

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
DeleteIpAddress 新增方法 SecurityMgmt sss IfName(s):网口名称
Version(s):IP版本,取值为[“IPv4”, “IPv6”, “IPv4AndIPv6”]
IfAddr(s):IP地址
NA NA 从网络接口删除一个IP地址

新增methodSetLink

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
SetLink 新增方法 SecurityMgmt sa{ss} IfName(s):网口名称
Params(a{ss}):取值见下方说明
NA NA 管理和修改网络接口的(链路层)属性,比如启用网口。

Params的说明

名称 签名 描述
OPTION s 要调用的操作,当前的枚举值为[“up”,“down”]

评审结论

一:评审点1:使用方案一,同意资源协作接口bmc.kepler.Managers.Security.File新增Access方法,具体如下:

资源path:/bmc/kepler/Managers/:Id/Security/File
资源interface:bmc.kepler.Managers.Security.File
变化类型:新增方法Access

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
Access 新增方法 BasicSetting sy Path:签名s,文件路径
Mode:签名y,待检查权限
b Result:是否具有待检查的权限 ① 该代理方法用于检查当前进程对文件或目录的访问权限。
② Mode的取值范围为[0, 7],含义如下:
0 - 判断文件是否存在
1 - 判断文件是否存在且具有可执行权限
2 - 判断文件是否存在且具有可写权限
3 - 判断文件是否存在且具有可写、可执行权限
4 - 判断文件是否存在且具有可读权限
5 - 判断文件是否存在且具有可读、可执行权限
6 - 判断文件是否存在且具有可读、可写权限
7 - 判断文件是否存在且具有可读、可写、可执行权限

二:评审点2:同意新增interface:bmc.kepler.Managers.EthernetInterfaces.IPCommands;并新增方法AddIpAddress、DeleteIpAddress 、SetLink,具体如下:

path/bmc/kepler/Managers/:Id/EthernetInterfaces
新增interfacebmc.kepler.Managers.EthernetInterfaces.IPCommands

新增methodAddIpAddress

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
AddIpAddress 新增方法 SecurityMgmt sss IfName:签名s,网口名称
Version:签名s,IP版本,取值为[“IPv4”, “IPv6”, “IPv4AndIPv6”]
IfAddr:签名s,IP地址
NA NA 为一个网络接口添加IP地址

新增methodDeleteIpAddress

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
DeleteIpAddress 新增方法 SecurityMgmt sss IfName:签名s,网口名称
Version:签名s,IP版本,取值为[“IPv4”, “IPv6”, “IPv4AndIPv6”]
IfAddr:签名s,IP地址
NA NA 从网络接口删除一个IP地址

新增methodSetLink

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
SetLink 新增方法 SecurityMgmt sa{ss} IfName:签名s,网口名称
Params:签名a{ss},网口link操作参数
NA NA 管理和修改网络接口的(链路层)属性,比如启用网口。

Params为字典结构,KV定义如下:

Key Value 描述
Option 取值范围[“up”,“down”] 网口Link的操作类型

遗留问题:

1、评审点2的方法权限需要重新确认
结论: 权限划分中的UserMgmt和SecurityMgmt类似,都是管理员默认有,操作员默认没有的权限,但是UserMgmt(用户管理的权限)控制的是用户有关的操作,因此使用SecurityMgmt权限。

  1. 接口名称建议增加备选:bmc.kepler.Managers.EthernetInterfaces.IpCommandWrapper;
  2. IpAddr建议用全称:IpAddress;
  3. ip命令动态参数较多,建议使用a{ss}签名承载参数的动态扩展;