【已评审】资源协作接口新增压缩/解压缩操作方法

背景

为了提升内部各组件安全防护水平,防止恶意攻击。沙箱权限会进一步消减。去除权限后,account组件需要安全代理提供压缩、解压缩用户目录的功能;

关联ISSUE

[缺陷]: 保留用户数据恢复出场设置,用户数据恢复失败 - openUBMC/account - AtomGit | GitCode

整体方案

capability_proxy提供压缩、解压缩方法,结合配置的白名单,供沙箱内低权限进程代理使用。

使用案例:

  • 在BMC配置备份与恢复时:account在调用压缩代理方法,压缩用户目录(/data/trust/home);account调用解压缩方法,从(/data/trust/opt/bmc/home.tar.gz)压缩文件解压缩用户目录

评审点

interface:bmc.kepler.Managers.Security.File下新增方法Tar,用于压缩、解压缩文件。

详细描述

评审点1:新增安全代理方法:Tar方法,执行tar命令

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

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

变化类型:新增方法

应用场景:压缩、解压缩用户目录。

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
Tar 新增方法 BasicSetting ssssas Mode(s): 压缩、解压缩
Options(s):压缩、解压缩参数
Archive(s):压缩文件路径
WorkDir(s):压缩时代表工作目录,解压缩时代表文件输出目录
Files(as):操作文件或者目录
NA NA 1. Mode为字符串,支持如下取值:
①Compress:压缩
②Decompress:解压缩
不在取值范围内报错PropertyValueNotInList
2. Options参数支持如下取值:
①z:使用gzip格式
②j:使用bzip2格式
不在取值范围内报错PropertyValueNotInList
3.不传Files时代表直接操作工作目录或者压缩文件输出路径
4.当前Files仅支持传入文件路径不超过1个

使用示例:
Tar("Compress", "z", "/data/trust/opt/bmc/home.tar.gz", "/data/trust",["home"])
实际执行命令:
tar -czf /data/trust/opt/bmc/home.tar.gz -C /data/trust home

备注:

(1)白名单机制:当前该函数支持如下白名单的操作,可以按需扩展,不在白名单内报错PropertyValueNotInList

白名单取值范围如下:

  1. 压缩场景下(Mode取值为Compress时):
    Archive取值范围:[“/data/trust/opt/bmc/”, “”]

    WorkDir取值范围:[“/data/trust”]
    Files取值范围:[“home”]

  2. 解压场景下(Mode取值为Decompress时):

    Archive取值范围:[“/data/trust/opt/bmc/”, “/dev/shm/upgrade”]

    WorkDir取值范围:[“/dev/shm”, “/dev/shm/upgrade”]

    Files取值范围:[ ]

(2)解压文件限制:解压缩文件大小限制为20M以内,总数量限制在100个以内,超过范围时报错:PropertyValueNotInAllowedRange

评审结论

同意资源协作接口bmc.kepler.Managers.Security.File新增Tar方法,具体如下

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

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

变化类型:新增方法

应用场景:压缩、解压缩用户目录。

方法名称 变化类型 权限 请求签名 请求参数 响应签名 响应体 备注
Tar 新增方法 BasicSetting ssssas Mode(s): 压缩、解压缩
Options(s):压缩、解压缩参数
Archive(s):压缩文件路径
WorkDir(s):压缩时代表工作目录,解压缩时代表文件输出目录
Files(as):操作文件或者目录
NA NA 1. Mode支持取值:
①Compress:压缩
②Decompress:解压缩
不在取值范围内报错PropertyValueNotInList
2. Options参数支持如下取值:
①z:使用gzip格式
②j:使用bzip2格式
不在取值范围内报错PropertyValueNotInList
3.不传Files时代表直接操作工作目录或者压缩文件输出路径
4.当前Files仅支持传入文件路径不超过1个

遗留问题

1、补充解压规格限制,从白名单读取
结论:
1)压缩场景下(Mode取值为Compress时):

Archive取值范围:[“/data/trust/opt/bmc/”, “”]
WorkDir取值范围:[“/data/trust”]
Files取值范围:[“home”]

2)解压场景下(Mode取值为Decompress时):

Archive取值范围:[“/data/trust/opt/bmc/”, “/dev/shm/upgrade”]
WorkDir取值范围:[“/dev/shm”, “/dev/shm/upgrade”]