diff --git a/docs/zh/docs/SysCare/figures/0305d96b7799b1c57e3ca2658121c554.png b/docs/zh/docs/SysCare/figures/0305d96b7799b1c57e3ca2658121c554.png new file mode 100644 index 0000000000000000000000000000000000000000..31b9ed2b3ff51791e02ad0a58a1ac018cca4ca9f Binary files /dev/null and b/docs/zh/docs/SysCare/figures/0305d96b7799b1c57e3ca2658121c554.png differ diff --git a/docs/zh/docs/SysCare/figures/145996c4a7b04f28c284a5fe7f33c5c4.png b/docs/zh/docs/SysCare/figures/145996c4a7b04f28c284a5fe7f33c5c4.png new file mode 100644 index 0000000000000000000000000000000000000000..768f80101adb1d6dfef6a94fc465c78bfdec5f33 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/145996c4a7b04f28c284a5fe7f33c5c4.png differ diff --git a/docs/zh/docs/SysCare/figures/207c44e89d924e3e05855998f018a056.jpeg b/docs/zh/docs/SysCare/figures/207c44e89d924e3e05855998f018a056.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a4844b4e37966a7e2b22058c8051e3e099b2658b Binary files /dev/null and b/docs/zh/docs/SysCare/figures/207c44e89d924e3e05855998f018a056.jpeg differ diff --git a/docs/zh/docs/SysCare/figures/28e032e979f8d874af8d3c91a5ab689d.png b/docs/zh/docs/SysCare/figures/28e032e979f8d874af8d3c91a5ab689d.png new file mode 100644 index 0000000000000000000000000000000000000000..29c689cff68a108798af0b8227a96ddc1956e277 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/28e032e979f8d874af8d3c91a5ab689d.png differ diff --git a/docs/zh/docs/SysCare/figures/300f80d34a52f59c3e47dc50a90d0733.jpeg b/docs/zh/docs/SysCare/figures/300f80d34a52f59c3e47dc50a90d0733.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b43cfb72833068b19bf3ba2c899bdaa1d5f8736f Binary files /dev/null and b/docs/zh/docs/SysCare/figures/300f80d34a52f59c3e47dc50a90d0733.jpeg differ diff --git a/docs/zh/docs/SysCare/figures/373414b9151546df0aeaeaf095a12d7e.png b/docs/zh/docs/SysCare/figures/373414b9151546df0aeaeaf095a12d7e.png new file mode 100644 index 0000000000000000000000000000000000000000..12d2379b8b315705ef3f59e11603609791ad2b37 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/373414b9151546df0aeaeaf095a12d7e.png differ diff --git a/docs/zh/docs/SysCare/figures/57c3ba080a5690815c9faf62a869f62b.png b/docs/zh/docs/SysCare/figures/57c3ba080a5690815c9faf62a869f62b.png new file mode 100644 index 0000000000000000000000000000000000000000..5d35d07cc2928304792805d042d063a9a5741901 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/57c3ba080a5690815c9faf62a869f62b.png differ diff --git a/docs/zh/docs/SysCare/figures/587d0fc879ba67e61aa52a7cf6607c95.png b/docs/zh/docs/SysCare/figures/587d0fc879ba67e61aa52a7cf6607c95.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f044c02e1bef450a0de873c7c4063f531b7cb2 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/587d0fc879ba67e61aa52a7cf6607c95.png differ diff --git a/docs/zh/docs/SysCare/figures/70e13ca528e1ba6c573c37ea52556f36.png b/docs/zh/docs/SysCare/figures/70e13ca528e1ba6c573c37ea52556f36.png new file mode 100644 index 0000000000000000000000000000000000000000..3134500b93f0aa93afb66f21a9c31978834dc231 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/70e13ca528e1ba6c573c37ea52556f36.png differ diff --git a/docs/zh/docs/SysCare/figures/8b3f4a68c97d6c89bb682bc4315cd3a8.png b/docs/zh/docs/SysCare/figures/8b3f4a68c97d6c89bb682bc4315cd3a8.png new file mode 100644 index 0000000000000000000000000000000000000000..47378c0f8d5fa82721a7936bbffe1468f792e5a6 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/8b3f4a68c97d6c89bb682bc4315cd3a8.png differ diff --git a/docs/zh/docs/SysCare/figures/937cfdab07fdcfdfe302530c93db1b99.png b/docs/zh/docs/SysCare/figures/937cfdab07fdcfdfe302530c93db1b99.png new file mode 100644 index 0000000000000000000000000000000000000000..50773a2fb4080702df9317739f68c84769371e0e Binary files /dev/null and b/docs/zh/docs/SysCare/figures/937cfdab07fdcfdfe302530c93db1b99.png differ diff --git a/docs/zh/docs/SysCare/figures/a0537354956ea7a76d73e7dba94d9649.png b/docs/zh/docs/SysCare/figures/a0537354956ea7a76d73e7dba94d9649.png new file mode 100644 index 0000000000000000000000000000000000000000..eccfda494979ab523b52bcb7d508e5bb80c3d832 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/a0537354956ea7a76d73e7dba94d9649.png differ diff --git a/docs/zh/docs/SysCare/figures/a8cb99c0489aa3526506f4830da14559.png b/docs/zh/docs/SysCare/figures/a8cb99c0489aa3526506f4830da14559.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b4ef053590578da02da42d727df8067ad5670d Binary files /dev/null and b/docs/zh/docs/SysCare/figures/a8cb99c0489aa3526506f4830da14559.png differ diff --git a/docs/zh/docs/SysCare/figures/bf08be9dac7a3f3e0ffd66374901abab.png b/docs/zh/docs/SysCare/figures/bf08be9dac7a3f3e0ffd66374901abab.png new file mode 100644 index 0000000000000000000000000000000000000000..df0104f8a2c14b4fdbbd6d5bdb85d5491a973bb6 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/bf08be9dac7a3f3e0ffd66374901abab.png differ diff --git a/docs/zh/docs/SysCare/figures/e242da01bdbbb298d879fb9af70a95af.png b/docs/zh/docs/SysCare/figures/e242da01bdbbb298d879fb9af70a95af.png new file mode 100644 index 0000000000000000000000000000000000000000..26a4a2836dccbd0e306b2f4a49e1c3d592ceaa47 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/e242da01bdbbb298d879fb9af70a95af.png differ diff --git a/docs/zh/docs/SysCare/figures/e4abadd8dfea382d409d372ecf158102.png b/docs/zh/docs/SysCare/figures/e4abadd8dfea382d409d372ecf158102.png new file mode 100644 index 0000000000000000000000000000000000000000..2c659e497d11f0725b4f7f9b849af94e6f044f2b Binary files /dev/null and b/docs/zh/docs/SysCare/figures/e4abadd8dfea382d409d372ecf158102.png differ diff --git a/docs/zh/docs/SysCare/figures/ea035c0e075023f4c03299f3bf548e45.png b/docs/zh/docs/SysCare/figures/ea035c0e075023f4c03299f3bf548e45.png new file mode 100644 index 0000000000000000000000000000000000000000..127cb311b25267134be0881e8323f35422adbe19 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/ea035c0e075023f4c03299f3bf548e45.png differ diff --git a/docs/zh/docs/SysCare/figures/ed7fdc3de85b92d7032584abfb89816a.png b/docs/zh/docs/SysCare/figures/ed7fdc3de85b92d7032584abfb89816a.png new file mode 100644 index 0000000000000000000000000000000000000000..b6df1f342344c0b26c3cc9bb9f44781890862d6f Binary files /dev/null and b/docs/zh/docs/SysCare/figures/ed7fdc3de85b92d7032584abfb89816a.png differ diff --git a/docs/zh/docs/SysCare/figures/managerone.png b/docs/zh/docs/SysCare/figures/managerone.png new file mode 100644 index 0000000000000000000000000000000000000000..e618fa6483257af9dc84e5c860d90f93571949a2 Binary files /dev/null and b/docs/zh/docs/SysCare/figures/managerone.png differ diff --git "a/docs/zh/docs/SysCare/figures/\345\217\257\344\277\241\345\220\257\345\212\250\346\226\271\346\241\210.png" "b/docs/zh/docs/SysCare/figures/\345\217\257\344\277\241\345\220\257\345\212\250\346\226\271\346\241\210.png" new file mode 100644 index 0000000000000000000000000000000000000000..3350e5eadc5d887f5da9368adfb4fee8cba92c65 Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\345\217\257\344\277\241\345\220\257\345\212\250\346\226\271\346\241\210.png" differ diff --git "a/docs/zh/docs/SysCare/figures/\345\220\257\345\212\250\346\226\271\346\241\210.png" "b/docs/zh/docs/SysCare/figures/\345\220\257\345\212\250\346\226\271\346\241\210.png" new file mode 100644 index 0000000000000000000000000000000000000000..6b7e5189a7851af98c1889649d8d3905b077d735 Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\345\220\257\345\212\250\346\226\271\346\241\210.png" differ diff --git "a/docs/zh/docs/SysCare/figures/\345\255\220\345\234\272\346\231\257.png" "b/docs/zh/docs/SysCare/figures/\345\255\220\345\234\272\346\231\257.png" new file mode 100644 index 0000000000000000000000000000000000000000..1b7d746590f0126515342ac6a214197e4c7869ed Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\345\255\220\345\234\272\346\231\257.png" differ diff --git "a/docs/zh/docs/SysCare/figures/\345\256\214\346\225\264\346\200\247\344\277\235\346\212\244.png" "b/docs/zh/docs/SysCare/figures/\345\256\214\346\225\264\346\200\247\344\277\235\346\212\244.png" new file mode 100644 index 0000000000000000000000000000000000000000..162535e3059ed41c2706cff6952378960111983c Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\345\256\214\346\225\264\346\200\247\344\277\235\346\212\244.png" differ diff --git "a/docs/zh/docs/SysCare/figures/\347\263\273\347\273\237\351\203\250\347\275\262.png" "b/docs/zh/docs/SysCare/figures/\347\263\273\347\273\237\351\203\250\347\275\262.png" new file mode 100644 index 0000000000000000000000000000000000000000..e9f4b1e6244c60e1dd8e6d180d8574f2d5d9b835 Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\347\263\273\347\273\237\351\203\250\347\275\262.png" differ diff --git "a/docs/zh/docs/SysCare/figures/\350\257\201\344\271\246\346\233\277\346\215\242.png" "b/docs/zh/docs/SysCare/figures/\350\257\201\344\271\246\346\233\277\346\215\242.png" new file mode 100644 index 0000000000000000000000000000000000000000..9e5e1666cf8fefdbf62ab4a52dfa119cb64ecb49 Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\350\257\201\344\271\246\346\233\277\346\215\242.png" differ diff --git "a/docs/zh/docs/SysCare/figures/\350\257\201\344\271\246\346\263\250\345\206\214.png" "b/docs/zh/docs/SysCare/figures/\350\257\201\344\271\246\346\263\250\345\206\214.png" new file mode 100644 index 0000000000000000000000000000000000000000..c2d8544e645df709ee7dab4d87007793682590c1 Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\350\257\201\344\271\246\346\263\250\345\206\214.png" differ diff --git "a/docs/zh/docs/SysCare/figures/\350\275\257\344\273\266\345\217\221\345\270\203.png" "b/docs/zh/docs/SysCare/figures/\350\275\257\344\273\266\345\217\221\345\270\203.png" new file mode 100644 index 0000000000000000000000000000000000000000..20e494a7b2d165fba98ed3e7a2ed784f19b52470 Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\350\275\257\344\273\266\345\217\221\345\270\203.png" differ diff --git "a/docs/zh/docs/SysCare/figures/\350\275\257\344\273\266\346\236\204\345\273\272.png" "b/docs/zh/docs/SysCare/figures/\350\275\257\344\273\266\346\236\204\345\273\272.png" new file mode 100644 index 0000000000000000000000000000000000000000..fa7cf8ba5227d511f3c9e239eb166a031de48248 Binary files /dev/null and "b/docs/zh/docs/SysCare/figures/\350\275\257\344\273\266\346\236\204\345\273\272.png" differ diff --git "a/docs/zh/docs/SysCare/openEuler-2203-LTS-SP1-Syscare\347\203\255\346\234\215\345\212\241\347\211\271\346\200\247DT\346\265\213\350\257\225\346\212\245\345\221\212v1.0.md" "b/docs/zh/docs/SysCare/openEuler-2203-LTS-SP1-Syscare\347\203\255\346\234\215\345\212\241\347\211\271\346\200\247DT\346\265\213\350\257\225\346\212\245\345\221\212v1.0.md" new file mode 100644 index 0000000000000000000000000000000000000000..f04315fe0b7720e0a05cd1181bcec1c478207ecc --- /dev/null +++ "b/docs/zh/docs/SysCare/openEuler-2203-LTS-SP1-Syscare\347\203\255\346\234\215\345\212\241\347\211\271\346\200\247DT\346\265\213\350\257\225\346\212\245\345\221\212v1.0.md" @@ -0,0 +1,174 @@ +# 关键结论 + +- **测试策略: 根据如下几方面进行:** + - **针对syscare能够正常编译、安装、使用,进行测试;** + - **针对用户态热补丁、内核热补丁的制作、应用、反激活等进行功能验证,测试结果满足要求;** + +# 被测需求列表 + +| IR编号 | SR编号 | AR编号 | AR描述 | +| ---- | ---- | ---- | ---- | +| | | | | +| | | | | +| | | | | + +# 模块简介 + +### Syscare + +syscare命令作为syscare功能的总入口cli + +### syscare-build + +syscare-build 是syscare的补丁制作工具,支持用户态热补丁、内核热补丁制作 + +### upatch-tool + +upatch-tool 提供用户态热补丁的制作、管理接口,有upatch.ko实现热补丁实际功能 + +# 功能测试 + +## 自验环境信息 + +X86虚拟机一台: + +硬件配置:32CPU 16G内存(非独占) + +操作系统:openEuler-22.03-LTS 执行yum update更新到最新版本 + +软件信息:依赖rust \>= 1.60.0 (使用openEuler-22.03-LTS-Next的rust版本即可) + +Kernel = 5.10.0-60.66.0.91.oe2203.x86_64 + +## 安装syscare + +Syscare 版本:由于openEuler-22.03-LTS-SP1分支尚未拉出,使用master分支 + +1\. git clone https://gitee.com/openeuler/syscare.git + +2\. cd syscare + +3\. mkdir tmp + +4\. cd tmp + +5\. cmake .. + +6\. make + +7\. sudo make install + +## 编译依赖ko + +由于kernel尚未合入内核修改(已检视通过,未合入,未出版本)需要手动打入patch,编译内核。 + +1. kernel 修改 + 1. yumdown yumdownloader --source kernel + 2. rpm -I kernel-xxxxx.src.rpm + 3. 到rpmbuild/SPEC目录下执行 rpmbuild -bp –nodeps kernel.spec + 4. 到rpmbuild/BUILD/kernel-5.10/linux-xxxxx目录下 + 5. patch -p1 \< syscare源码目录/upatch/kmod/kernel-patch/0001-uprobe-add-UPROBE_ALTER_PC-flag-for-uprobe-handlers.patch + 6. make openeuler_defconfig + 7. make -j16 KERNELRELEASE=\`uname -r\` + 8. make modules_install KERNELRELEASE=\`uname -r\` + 9. make install KERNELRELEASE=\`uname -r\` + 10. reboot +2. 编译ko + 1. 到syscare源码目录/upatch/kmod/ 执行 make kernel=\~/ rpmbuild/BUILD/kernel-5.10.0/linux-xxxxxxx.x86_64/ +3. 插入ko insmod upatch.ko + +## 测试内核热补丁 + +### 补丁制作 + +下载内核src和debuginfo包,src包之前已经下载过了,debuginfo包:yumdownloader --debuginfo kernel + +准备patch文件:version.patch 修改了/proc/version的显示 + +制作内核热补丁: + +syscare build --name kernel-1 --source ./kernel-5.10.0-60.66.0.91.oe2203.src.rpm --debuginfo kernel-debuginfo-5.10.0-60.66.0.91.oe2203.x86_64.rpm version1.patch + +执行成功 + +![](media/57c3ba080a5690815c9faf62a869f62b.png) + +生成文件: + +kernel-5.10.0-60.66.0.91.oe2203.patched.kernel_1.1.c15c1a6a.src.rpm + +patch-kernel-5.10.0-60.66.0.91.oe2203-kernel-1-1-c15c1a6a.x86_64.rpm + +### 测试功能: + +1. 安装补丁 + + sudo rpm -ivh patch-kernel-5.10.0-60.66.0.91.oe2203-kernel-1-1-c15c1a6a.x86_64.rpm + + ![](media/937cfdab07fdcfdfe302530c93db1b99.png) + +2. 应用并激活补丁 + + sudo syscare apply kernel-1 + + ![](media/8b3f4a68c97d6c89bb682bc4315cd3a8.png) + +3. 反激活补丁 + + ![](media/a0537354956ea7a76d73e7dba94d9649.png) + +## 测试用户态热补丁 + +以CVE-2021-32675为例,使用CVE-2021-32675修复之前的版本作为基线,制作出rpm + +redis-6.2.5-1.x86_64.rpm + +redis-6.2.5-1.src.rpm + +redis-debuginfo-6.2.5-1.x86_64.rpm + +### 补丁制作 + +syscare build --name redis-1 --source redis-6.2.5-1.src.rpm --debuginfo redis-debuginfo-6.2.5-1.x86_64.rpm --target-elfname redis-server 0001-Prevent-unauthenticated-client-from-easily-consuming.patch + +![](media/145996c4a7b04f28c284a5fe7f33c5c4.png) + +生成patch-redis-6.2.5-1-redis-1-1-31fc7544.x86_64.rpm redis-6.2.5-1.patched.redis_1.1.31fc7544.src.rpm + +### 测试功能 + +安装补丁 + +sudo rpm -ivh patch-redis-6.2.5-1-redis-1-1-31fc7544.x86_64.rpm + +启动redis-server + +sudo redis-server ./redis.conf & + +激活前测试功能: + +![](media/70e13ca528e1ba6c573c37ea52556f36.png) + +激活补丁 + +![](media/587d0fc879ba67e61aa52a7cf6607c95.png) + +测试功能 + +![](media/e4abadd8dfea382d409d372ecf158102.png) + +CVE漏洞已修复 + +反激活补丁 + +![](media/373414b9151546df0aeaeaf095a12d7e.png) + +![](media/a8cb99c0489aa3526506f4830da14559.png) + +# 关键交付件归档 + +| 项目 | 状态 | 备注 | +| --- | --- | --- | +| | | | +| | | | +| | | | diff --git "a/docs/zh/docs/SysCare/syscare\347\224\250\346\210\267\344\275\277\347\224\250\346\211\213\345\206\214v2.0.md" "b/docs/zh/docs/SysCare/syscare\347\224\250\346\210\267\344\275\277\347\224\250\346\211\213\345\206\214v2.0.md" new file mode 100644 index 0000000000000000000000000000000000000000..9b89bb3c0974f0838bdb39abf639f27e26e37ce4 --- /dev/null +++ "b/docs/zh/docs/SysCare/syscare\347\224\250\346\210\267\344\275\277\347\224\250\346\211\213\345\206\214v2.0.md" @@ -0,0 +1,297 @@ +SysCare用户使用手册 + +# SysCare安装 + +## 安装依赖 + +```shell +yum install -y kernel-source-`uname -r` kernel-debuginfo-`uname -r` kernel-devel-`uname -r` +yum install -y elfutils-libelf-devel openssl-devel dwarves python3-devel rpm-build bison cmake make gcc g++ rust cargo +``` + +## 源码编译安装syscare + +1\. git clone https://gitee.com/openeuler/syscare.git + +2\. cd syscare + +3\. mkdir tmp + +4\. cd tmp + +5\. cmake .. + +6\. make + +7\. make install + +## repo安装syscare + +1.rpm -ivh syscare-.rpm + +## 卸载syscare + +1.dnf/yum remove syscare + +# SysCare cli使用 + +## 补丁制作 + +```shell +syscare-build --name redis_cve_2021_32675 \ + --source redis-6.2.5-1.src.rpm \ + --debuginfo redis-debuginfo-6.2.5-1.x86_64.rpm \ + --target-elfname redis-server \ + --summary CVE-2021-32675 \ + 0001-Prevent-unauthenticated-client-from-easily-consuming.patch + +``` + +具体参数释义见“3.3 命令行参数” + +## 补丁管理 + +patch-name为补丁/补丁包名称,显示ok则补丁相应操作成功 + +1. 补丁安装 + +syscare apply patch-name + +1. 补丁激活: + +syscare active patch-name + +1. 补丁去激活: + +syscarae deactive patch-name + +1. 补丁卸载/移除: + +syscare remove patch-name + +补丁只有在deactive的状态才能移除 + +1. 补丁状态查询: + +syscare status patch-name + +1. 查询syscare所有补丁: + +syscare patch list + +# 补丁制作模块 + +## 源码编译 + +cd syscare/build + +cargo build + +## 补丁制作 + +Syscare 补丁制作工具 + +syscare build为纯CLI工具,提供从RPM包生成热补丁包的功能,补丁包以RPM包的形式封装维护,支持制作内核热补及用户态热补丁。 + +## 命令行参数 + +```shell +Usage: syscare build [OPTIONS] --name --source --debuginfo ... + +Arguments:... Patch file(s) + +Options: + -n, --name Patch name + --version Patch version [default: 1] + --description Patch description [default: None] + --target-name Patch target name + -t, --target-elfname Patch target executable name + --target-version Patch target version + --target-release Patch target release + --target-license Patch target license + -s, --source source package + -d, --debuginfo Debuginfo package + --workdir Working directory [default: .] + -o, --output Generated patch output directory [default: .] + --kjobs Kernel make jobs [default: 32] + --skip-compiler-check Skip compiler version check (not recommended) + -h, --help Print help information +``` + +必要参数: + +| **字段名称** | **字段描述** | +| ---------------- | ------------------- | +| --name | 补丁名称 | +| --source | 目标软件源码包 | +| --debuginfo | 目标软件调试信息包 | +| --target-elfname | 目标软件可执行文件名(内核补丁可忽略) | +| | 补丁列表 | + +示例: + +```shell +syscare-build \ + --name CVE-2021-32675 \ + --source redis-6.2.5-1.src.rpm \ + --debuginfo redis-debuginfo-6.2.5-1.x86_64.rpm \ + --target-elfname redis-server \ + --output output \ + 0001-Prevent-unauthenticated-client-from-easily-consuming.patch +``` + +## 输出 + +- 补丁包:包含syscare热补丁的二进制及元信息,用于热补丁安装。 +- 补丁源码包:包含目标软件源码及新增补丁,用于新版本热补丁制作。 + +命名规则: + +- 补丁包:patch-目标软件全名-补丁名称-补丁版本-补丁release.架构名.rpm +- 补丁源码包:目标软件全名.patched.补丁名称.补丁版本.补丁release.src.rpm + +## 补丁信息 + +补丁元信息中包含以下字段: + +| **字段名称** | **字段描述** | +| ----------- | ----------- | +| name | 补丁名称 | +| type | 补丁类型 | +| target | 目标软件名 | +| elf_name | 目标软件可执行文件名称 | +| license | 目标软件许可证 | +| version | 补丁版本 | +| release | 补丁Release | +| description | 补丁描述 | + +示例: + +```shell +Collecting patch info +------------------------------ +name: CVE-2021-32675 +type: UserPatch +target: redis-6.2.5-1 +elf_name: redis-server +license: BSD and MIT +version: 1 +release: 31fc7544 +description: None + +patch list: +0001-Prevent-unauthenticated-client-from-easily-consuming.patch 31fc7544 +------------------------------ + +``` + +补丁安装位置: + +/usr/lib/syscare/patches/目标软件名/补丁名 + +## 补丁制作流程 + +1. 准备补丁目标软件源码包(source rpm)及软件调试信息包(debuginfo rpm) + + 示例: + + ```shell + + yumdownloader kernel --source + + yumdownloader kernel-debuginfo + ``` + +2. 确认满足对应软件编译依赖 + + 示例: + + ```shell + dnf install make gcc bison flex openssl-devel dwarves python3-devel elfutils-libelf-devel + ``` + +3. 执行syscare build命令 + + 示例: + + ```shell + syscare-build \ + --name kernel_version \ + --source kernel-5.10.0-60.66.0.91.oe2203.src.rpm \ + --debuginfo kernel-debuginfo-5.10.0-60.66.0.91.oe2203.x86_64.rpm \ + --output output \ + 001-kernel-patch-test.patch + + ``` + + 补丁制作过程将会在由--workdir参数所指定的目录中(默认为当前目录)创建以syscare-build开头的临时文件夹,用于存放临时文件及编译日志。 + + 示例: + + ```shell + dev@openeuler-dev:[~]$ ls -l syscare-build.111602/ + total 100 + -rw-r--r--. 1 dev dev 92303 Nov 12 00:00 build.log + drwxr-xr-x. 6 dev dev 4096 Nov 12 00:00 package + drwxr-xr-x. 4 dev dev 4096 Nov 12 00:00 patch + ``` + + 编译日志将会生成在临时文件夹中,名称为build.log + + ```shell + dev@openeuler-dev:[~]$ cat syscare-build.111602/build.log | less + ... + ``` + + 若补丁制作成功,将不会保留该临时文件夹。 + +4. 检查编译结果 + + 示例: + + ```shell + dev@openeuler-dev:[~]$ ls -l + total 189680 + -rw-r--r--. 1 dev dev 194218767 Nov 12 00:00 kernel-5.10.0-60.66.0.91.oe2203.patched.kernel_version.1.c15c1a6a.src.rpm + -rw-r--r--. 1 dev dev 10937 Nov 12 00:00 patch-kernel-5.10.0-60.66.0.91.oe2203-kernel_version-1-c15c1a6a.x86_64.rpm + ``` + + 其中 + + patch-kernel-5.10.0-60.66.0.91.oe2203-kernel_version-1-c15c1a6a.x86_64.rpm为补丁包 + + kernel-5.10.0-60.66.0.91.oe2203.patched.kernel_version.1.c15c1a6a.src.rpm为二进制包 + +## 错误处理 + +如果出现错误,请参考编译日志: + +错误示例: + +```shell +... +Building patch, this may take a while +ERROR: Process '/usr/libexec/syscare/upatch-build' exited unsuccessfully, exit_code=255 +``` + +# 约束限制 + +## 版本约束 + +内核版本:本期syscare仅支持openEuler22.03 LTS sp1 + +## 应用约束 + +用户态补丁当前仅支持:redis、nginx、mysql + +Ps:当前对LINE宏的处理需要对每个软件进行适配,当前仅考虑适配redis、nginx、mysql,其他未适配的软件可能会造成patch的size过大(后续会考虑引入参数支持用户自行适配) + +## 语言约束 + +原理上补丁制作在object file一级进行比较,与编程语言无关,当前仅测试了c语言 + +## 其他 + +1. 暂不支持交叉编译 +2. 补丁管理操作需要root权限 +3. 使用的debug信息格式必须为dwarf,且不支持g3等级的调式信息 diff --git "a/docs/zh/docs/SysCare/syscare\347\263\273\347\273\237\350\256\276\350\256\241\350\257\264\346\230\216\344\271\246v2.0.md" "b/docs/zh/docs/SysCare/syscare\347\263\273\347\273\237\350\256\276\350\256\241\350\257\264\346\230\216\344\271\246v2.0.md" new file mode 100644 index 0000000000000000000000000000000000000000..c692cc544d8b1afca69b7c20ab14d5b9cbbbdd25 --- /dev/null +++ "b/docs/zh/docs/SysCare/syscare\347\263\273\347\273\237\350\256\276\350\256\241\350\257\264\346\230\216\344\271\246v2.0.md" @@ -0,0 +1,1590 @@ +# 简介 + +        针对云场景、集群管理场景下操作系统装机数量庞大,并且没有便捷的系统热修复能力的场景,提供一整套的操作系统热服务,包括内核热补丁、用户态热补丁能力,同时提供一键式热补丁制作功能,提供便捷的热补丁管理能力。 + +        本系统提供一整套操作系统热服务,可以独立提供补丁制作和管理能力,也可以作为openEuler或其他发行版的服务对外提供。 + +# 系统设计方案概述 + +        syscare系统整体目标是提供整套的操作系统热服务,保障操作系统整体以及基础组件可以在用户不感知、业务不中断的情况下,在线修复各种故障和漏洞。整个系统包含的功能包括补丁制作工具链和补丁管理,包含的技术包括用户态热补丁和内核热补丁(基于现有内核热补丁能力)。 + +null + +        补丁制作工具链:包括一键式补丁制作工具,基于软件包的src.rpm或源码加patch的方式,一键制作出补丁包,补丁包使用rpm格式。该功能可以集成到openEuler流水线,在线制作热补丁并发布到openEuler repo中。使用rpm包格式,使得热补丁可以在repo中统一管理,可是使用rpm安装。 + +        补丁管理:提供综合的补丁管理框架,提供补丁安装、补丁激活、补丁去激活、补丁卸载等功能,并可以保障热补丁在系统重启后自动生效。同时补丁管理功能还需要进行补丁的版本管理,识别版本的冲突或者依赖,保证系统使用最新、完整功能的热补丁。 +        内核热补丁:使用社区原有的内核热补丁能力,不在当前syscare维护范围,syscare支持内核热补丁的补丁制作、管理。 + +        用户态热补丁:全新设计的用户态热补丁能力,基于改进的uprobe机制,针对系统中的用户态ELF文件的热补丁功能,可以支持用户态可执行文件和动态库,无需监控进程拉起。注意本版本支持的功能范围,见下文功能规格设计。 + +## 设计约束 + +1. 本版本内核热补丁功能支持x86_64、arm64架构,用户态热补丁只支持x86_64版本; + +## License约束 + +1. syscare部分组件基于开源构建,需要遵循开源协议要求,包括GPL,履行开源义务 + +## 性能约束 + +1. syscare运行占用系统资源:与补丁大小有关 + +## 可靠性(可选) + +1. 热补丁安装、激活、卸载过程中都不应该影响业务,保持业务运行正常。 + +## 安全性/韧性/隐私保护 + +1. 补丁制作工具链,使用普通用户权限,使用过程中不会进行提权 + +2. 补丁管理、内核热补丁、用户态热补丁等组件都需要root权限执行 + +## 易用性 + +## 可服务性 + +## 兼容性 + +## 对操作系统的依赖(可选) + +## 对数据库的依赖(可选) + +## 对网管平台和网管组件的依赖(可选) + +## 对外部系统的依赖(可选) + +## 出口管制需求的设计 + +不涉及 + +## 其它(可选) + +# 系统功能性规格设计 + +## 产品规格设计 + +1. 产品包括哪些组件,不同组件在什么环境安装、什么环境使用 + +2. 一键式补丁制作工具链:支持一键式从src.rpm和patch文件制作出热补丁包功能,补丁制作时间取决于系统配置和实际编译过程,要求src.rpm和编译正常,patch本身可制作热补丁,系统支持内核热补丁。 + +3. 补丁管理: + + 包含一个CLI工具syscare-patch-manage用于热补丁管理,安装运行在客户目标环境,可对本地补丁包进行下列维护操作:补丁安装、补丁卸载、补丁加载、补丁使能/激活、补丁去使能/激活、查看本地补丁列表、查询补丁详细信息。 + +4. 热补丁限制及使用范围: + +5. 暂不支持交叉编译。 + +6. 补丁制作依赖如下工具:kpatch-build、rpmbuild、rpm + +7. 补丁管理操作需要root权限 + +8. 用户态热补丁: + + 1. 使用的debug信息格式必须为dwarf,且不支持g3等级的调式信息 + 2. 原理上补丁制作在object file一级进行比较,与编程语言无关,本期仅支持c语言 + 3. 对LINE宏的处理需要对每个软件进行适配,本期仅考虑适配redis/nginx/mysql,其他未适配的软件可能会造成patch的size过大(后续会考虑引入参数支持用户自行适配) + +## 内部功能规格设计 + +### syscare整体设计 + +        讲一下syscare当前版本的整体框架,包含组件,组件之间的关系,都包含哪些命令、分别属于哪些rpm包等,相互之间的交互关系等。 + +        syscare当前版本框架: + + + +        syscare主要包含四个部分:热补丁制作工具链、热补丁管理、内核态热补丁、用户态热补丁 + +### 补丁制作工具链功能规格设计 + +        补丁制作工具:syscare-patch-build + +        syscare-patch-build为CLI工具,提供从源码或源码RPM包生成热补丁包功能,支持内核、内核模块(ko)、以及用户态应用的热补丁制作,补丁包以RPM包形式封装维护。 + +          输入参数: + +```shell +syscare-patch-build [OPTIONS] --name --source-path ... +Arguments: + ... Patch file(s) + +Options: + -n, --name Patch name + --version Patch version [default: 1] + --description Patch description [default: None] + --target-name Patch target name + -t, --target-elfname Patch target executable name + --target-version Patch target version + --target-release Patch target release + --target-license Patch target license + -s, --source source package + -d, --debuginfo Debuginfo package + --workdir Working directory [default: .] + -o, --output Generated patch output directory [default: .] + --kjobs Kernel make jobs [default: 32] + --skip-compiler-check Skip compiler version check (not recommended) + -h, --help Print help information + + +``` + +用户输入: + +1. 目标源码或源码包 +2. 调试信息或debuginfo包 +3. 补丁patch文件 + +补丁包制作时间取决于系统配置和实际编译打包速度 + +约束限制: + +1. 若--source为源码rpm,此源码包必须经过编译验证; + +2. 生成用户态补丁需提供参数--debug-info, --build-entry; + +3. patch文件与提供的源码/源码包不冲突; + +4. 暂不支持交叉编译。 + +5. 依赖如下工具:kpatch-build、upatch-build、rpmbuild、rpm + + 示例: + +6. 生成内核热补丁 + + ```shell + syscare-patch-build + --name test + --source ./linux-5.10.0-60.61.0.88.oe2203.x86_64.src.rpm + ./*.patch + ``` + +7. 生成内核模块热补丁 + + ```shell + syscare-patch-build + --name test + --source ./linux-5.10.0-60.61.0.88.oe2203.x86_64.src.rpm + --kmod-dir ./some_ko/src + --ktarget ko_name + ./*.patch + ``` + +8. 生成用户态热补丁: + + ```shell + syscare-patch-build + --name test + --source ./some_target/src + --debug-info ./some_target/debug-info + --build-entry ./some_target/build/build.sh + ./target/patches/*. + ``` + +输出: + +1. 已打补丁的源码包:目标软件名-版本号-release号.patched.补丁名称.补丁版本号.src.rpm +2. 热补丁二进制包:目标软件全名-patch-补丁名称-补丁版本号-补丁release号.架构.rpm + +主要流程: + +1. CLI参数检查 +2. 创建临时工作目录 +3. 收集补丁信息(版本号,补丁文件列表) +4. 生成补丁源码包 +5. 生成热补丁 +6. 根据补丁信息生成热补丁SPEC文件 +7. 调用rpmbuild生成源码包及补丁包 + +基本功能设计: + +1. 补丁信息收集 + + + +2. 生成热补丁源码包 + + + +3. 生成热补丁二进制包 + + + +### 补丁管理功能规格设计 + +补丁管理工具 + +        syscare-patch-manage为CLI工具,提供补丁包安装、补丁包卸载、补丁加载、补丁卸载、补丁使能、补丁去使能功能。 + +输入参数: + +```shell +Usage: syscare [] + +Command: + apply Apply patch into the running kernel or process + active Activate patch into the running kernel or process + deactive Deactive patch + remove Remove the patch in kernel or process + list Query local patched list + -h, --help Show this help message + + build Build patch, more details: +Usage: syscare build [OPTIONS] --name --source --debuginfo ... + +Arguments: + ... Patch file(s) + +Options: + -n, --name Patch name + --version Patch version [default: 1] + --summary Patch summary [default: "syscare patch"] + --target-name Patch target name + -t, --target-elfname Patch target executable name + --target-version Patch target version + --target-release Patch target release + --target-license source package + -d, --debuginfo Debuginfo package + --workdir Working directory [default: .] + -o, --output Generated patch output directory [default: .] + --kjobs Kernel make jobs [default: 32] + --skip-compiler-check Skip compiler version check (not recommended) + -h, --help Print help information + + +``` + +补丁包格式: + +```shell +Collecting patch info +------------------------------ +name: CVE-2021-32675 +type: UserPatch +target: redis-6.2.5-1 +elf_name: redis-server +license: BSD and MIT +version: 1 +release: 31fc7544 +description: None + +patch list: +0001-Prevent-unauthenticated-client-from-easily-consuming.patch 31fc7544 + +``` + +补丁包安装目录:/usr/lib/syscare/patches/\${补丁名称} + +```shell +[root@dev-host ~]# ll /usr/lib/syscare/patches/test +total 24 +-rw-r--r--. 1 root root 106 Nov 3 04:49 patch_info +-rw-r--r--. 1 root root 14992 Nov 3 04:49 patch_file.ko +-rw-r--r--. 1 root root 14992 Nov 3 04:49 patch_file.upatch +``` + +功能设计: + +补丁加载:syscare apply patch-name + +内核态:调用 insmod \${patch_name}.ko + +用户态:upatch-tool apply \${patch_name} -c \${config_file} + +补丁卸载:syscare remove patch-name + +内核态:调用rmod \${patch_name} + +用户态:upatch-tool remove \${patch_name} + +补丁使能/激活:syscare active patch-name + +内核态:向/sys/kernel/livepatch/\${patch_name}/enabled文件写入1 + +用户态:upatch-tool active \${patch_name} -p \${pid} (pid为0时代表全局) + +补丁去使能/激活:syscare deactive patch-name + +内核态:向/sys/kernel/livepatch/\${patch_name}/enabled文件写入0 + +用户态:upatch-tool deactive \${patch_name} -p \${pid} (pid为0时代表全局) + +查看本地补丁列表:syscare patch list + +遍历/usr/lib/syscare/patches下所有文件夹 + +约束限制: + +1. 补丁管理操作需要root权限 + +### 用户态热补丁功能规格设计 + +功能设计包括以下部分: + +1. 补丁制作 + +3\. 补丁管理 + +4.2.4.1 补丁制作(upatch-build) + +补丁制作,是指通过用户输入的,针对特定源码的diff文件,生成对应二进制文件的补丁文件。 + +这一功能将由upatch提供的工具upatch-build完成。 + +upatch-build接受的参数包括: + +```shell +./upatch-build +usage: upatch-build [options] + patchN Input patchfile(s) + -h, --help how this help message + -s, --debugsource Specify source directory + -b, --buildfile Specify build file, in source dir + -i, --debuginfo Specify debug info file for binary file + -c, --compiler Specify compiler, default + -o, --output Specify output folder +``` + +参数含义分别为: + +\ --\> 需要操作的patch list + +debugsource --\> 构建所使用的源码目录 + +buildfile --\> 构建脚本入口 + +debuginfo --\> 需要进行补丁操作的binary的debug information(dwarf格式) + +compiler --\> 构建所使用的编译器 + +output --\> 结果的生成目录 + +编译器路径默认为\`whereis gcc\`的结果 + +output路径默认为当前路径 + +buildfile必须由用户显示提供 + + + +upatch-build工作流程: + +1\. 将compiler path通过ioctl注册给hack gcc(由kmod提供,用于控制编译过程) + +2\. 第一次运行buildfile指定的构建脚本 + +3\. 打入补丁 + +4\. 第二次运行buildfile指定的构建脚本 + +5\. 通过create-diff,比较两次构建过程中的差异,生成对应的patch.o + +6\. 将所有相关的patch.o链接到一起,生成最终的patch + + + +#### 补丁打入及安全策略和补丁管理(upatch-tool) + +upatch提供工具upatch-tool对补丁进行管理,支持的命令包括: + +upatch-tool show \ --\> 用于查看生成的补丁文件的元信息,包括补丁版本,函数变化,对应的binary等等 + +upatch-tool apply \ -c \ --\> 打入补丁,config文件包括:1. 最久尝试时间。 2. 进程筛选 3. 补丁打入策略(当前仅支持per-thread - per-function 模型,全量补丁) + +upatch-tool remove \ --\> 移除补丁 + +upatch-tool deactive \ -p \ --\> 无效化补丁,补丁仍留在内存上下文 + +upatch-tool active \ -p \ --\> 激活补丁 + +upatch-tool status \ --\> 查询当前系统中应用该补丁的进程 + +补丁打入的过程: + +1. 对地址空间内的线程进行栈分析 +2. 根据栈分析的结果,按照预置好的安全策略,寻找合适的时机 +3. 若目标函数不来自shared libray,修改函数的第一条指令为jmp xxx + +否则,修改GOT表格,后续的调用将直接进入patched function。 + +#### 使用范围及限制 + +1\. 使用的debug信息格式必须为dwarf,且不支持g3等级的调式信息 + +2\. 当前对LINE宏的处理需要对每个软件进行适配,当前仅考虑适配redis,其他未适配的软件可能会造成patch的size过大(后续会考虑引入参数支持用户自行适配) + +3\. 由于所有的管理都不通过ptrace,对应的管理动作只有在changed function被调用时才会及时触发,不会立即生效。 + +4\. 原理上补丁制作在object file一级进行比较,与编程语言无关,当前仅测试了c语言。 + +### 内核热补丁功能规格设计 + +## 其他分类规格设计 + +# 系统非功能性需求设计(暂不涉及) + +## 系统可靠性/可用性/Function Safety需求设计 + +### 可靠性系统指标设计 + +#### 可靠性建模预计 + +#### 系统可靠性系统FMEA分析 + +#### 其它可靠性设计指标 + +### Safety系统指标设计 + +#### Safety失效率预计 + +#### FMEDA分析 (注意FMEDA只针对安全功能硬件的分析) + +#### CCA共因分析 + +#### 功能安全度量指标 + +### 冗余设计 + +### 故障管理设计 + +### 过载控制设计 + +*过载控制是指系统在超过额定规格的负荷下,通过减少发出的业务量或控制接受的业务量,在保证一定优先级的前提下保证一定的业务接通率的控制过程。过载控制设计时主要基于业务流量模型和拥塞资源设计合理的检测算法和控制算法,对于高倍数大并发量的过载场景,还需要特别设计丢弃算法。* + +*过载控制通常的设计原则包括动态限流、弹性扩缩容、先负载均衡后流控、尽早控制、优先级保障、优雅降级设计等:* + +1. 动态限流:根据系统资源消耗情况动态调整流控门限; +2. 弹性扩缩容:云环境中,自动检测系统资源利用率,自动进行添加或删除资源; +3. 先负载均衡后流控:负荷均衡是预防系统过载的一种重要手段,只有先保证负荷分担才能保证整个系统的效率最大化; +4. 尽早控制:系统过载时,应尽可能在业务流程处理前端或业务处理较早的处理模块(网元/单板/芯片等)或底层协议层次上控制业务接入,避免中间控制带来不必要的性能消耗; +5. 优先级保障:系统过载时保证高优先级的业务能够优先获得资源,优先得到处理,从而保证社会效益最大化; +6. 优雅降级设计:非核心业务降级、核心功能放通、体验降级等。 + +【修改点-继承IPD10.0适配】*过载控制常见的设计模式包括队列优先级、过载推迟运维、弹性伸缩、过载限流等,详细参考公司可信设计模式库(可信设计模式\>可靠可用设计模式\>过载控制):http://3ms.huawei.com/km/groups/3942332/home?l=zh-cn\#category=8219757。* + +### 升级不中断业务设计 + +*软件升级不中断业务是指软件升级期间业务数据中断时间用户无感知,已经建立的业务连接不中断,正在建立的业务可丢弃,新业务能够在10秒内接入。NFV、云化、虚拟化场景下还包括灰度升级、蓝绿升级、金丝雀升级。* + +*灰度升级也称灰度发布,是在大规模分布式系统下,为了避免出现批次升级导致大规模故障造成恢复时间过长的问题。* + +*蓝绿升级是为了验证系统的某个改进是否达到设计期望,在现网部署新版本,分配两组类似的用户,测试新的优化是否符合要求。* + +*金丝雀升级也称金丝雀验证,是为了验证大规模分布式系统在一些外部环境异常、流量异常等极限场景下的系统可靠性设计方案的有效性。* + +*软件升级不中断业务通常的设计原则包括硬件支持热拔插、软件新老版本数据、消息、接口兼容。* + +【修改点-继承IPD10.0适配】*软件升级不中断业务常见的设计模式包括协议保活升级、主备双平面升级、灰度升级不中断业务等。详细参考公司可信设计模式库(可信设计模式\>可靠可用设计模式\>升级不中断业务):http://3ms.huawei.com/km/groups/3942332/home?l=zh-cn\#category=8219759等。* + +*云化产品软件升级相关设计模式包括蓝绿部署、灰度发布、数据异步异构迁移、非兼容多版本共存等,详细参考公司可信设计模式库(可信设计模式\>云化可信设计模式\>自动化运维)部分:http://3ms.huawei.com/km/groups/3942332/home?l=zh-cn\#category=8214575。* + +### 人因差错设计 + +*所有高危操作、删除类操作都应该考虑人因差错,防止误操作导致的问题。通常考虑如下几个方面:* + +1. 删除、破坏性修改需要提供高危提示以及二次确认,页面焦点默认“取消”。用户可见接口(cli以及web页面)都需要考虑,包括开源组件提供的命令接口; + +2. 批量、全选等操作需要明确显示出选择的数量,并能够取消之前选择; + +3. 对重启节点操作需要提前检查是否影响客户VM运行,给出明确提示建议操作; + +4. 所有高危操作需要记录审计日志; + +5. 对系统进行部署方式调整时,需要考虑部件之间的业务依赖关系防止循环依赖,特别需要针对全局上下电、部件替换、扩容等流程进行分析; + +6. 预防配置错误、预防硬件误操作、操作执行前的系统检查和操作错误后的快速回退。 + + *人因差错通常的设计原则包括:* + +7. 角色约束:通过权限控制设计预防对不同角色的配置范围进行约束,避免越权配置导致错误; + +8. 查改分离:通过产品界面设计将配置界面分层分级,查看与修改分离等降低人为配置失误风险; + +9. 配置校验:通过配置生效机制设计确保在配置生效前进行必要的校验,避免错误配置生效; + +10. 备份恢复:通过配置数据备份与恢复设计确保在出现配置错误时能够快速恢复到正确的配置数据状态。 + + *功能安全领域将人这一要素作为系统一部分,需要考虑在安全控制中人的最佳作用(直接控制/人可以监控系统/人可作为自动控制系统的备份/和自动系统通过某种合作都参与控制),要确认人在环的系统中,人本身的局限性导致的人与任务的不匹配性。* + + *功能安全领域人因失效要从认知层面的误解(弄错)、错误的记忆规则(记错)以及规则执行错误(疏漏)三个层次来分析考虑如何规避人因差错,如果系统的设计目标是让人负责控制系统的安全,那么人工控制器必须有足够灵活性去处理不期望的和不安全的行为,而不是被不恰当的控制选择所限制,要满足以下3个原则:* +- *冗余通道设计:提供多个物理装置和逻辑路径,确保单一的硬件失效或者软件失效不能妨碍人工控制器采取措施,采用唯一的方式把系统从非安全状态转换到安全状态。* +- *增量控制设计:把人工控制器控制决策过程拆解为一套严格执行的步骤,使得人工控制器在操作的同时,有能力观察系统、获取反馈以测试决策所用假设和模型的有效性。同时系统设计时要为人工控制器提供补偿措施,允许修改或终止以前的控制措施,保证人工控制器有充分的时间来思考做出正确的决策。* +- *容错设计:系统设计时要帮助人工控制器监控其行为并从错误中修复;提供人工控制器采取措施及其影响的反馈(即输入确认),以免这些措施是因疏忽大意发出的;允许从错误的措施中恢复,系统应该提供控制选择,如补偿或者反向恢复措施,在负面后果发生前有足够的时间采取恢复措施。* + +### 故障预测预防设计 + +*故障预测预防技术是一种有效的主动故障处理技术,通过分析系统当前的状态,如节点渐变性故障状态判断系统即将发生故障,是基于系统亚健康症状预测系统故障的技术。故障预测预防一般会提供:* + +1. 设备或系统的实时健康指数; +2. 早期异常发现和问题分类; +3. 预估的剩余寿命值; +4. 推荐维护操作进而完成自愈; +5. 故障预测方法的评判标准。 + +*故障预测预防通常的设计原则包括:* + +1. 机理模型:基于故障机理模型的故障预测,被预测对象系统的数学模型已知,可以用来评估部件剩余寿命等; +2. 数据驱动:基于数据驱动的故障预测,包含统计分析方法和机器学习方法; +3. 混合技术:采用混合上述方法的故障预测。 + +### 硬件容错设计 + +【修改点-继承IPD10.0适配】 *纯软件的产品,或基于通用硬件的产品(融合视频、DME等),可裁剪本章节* + +*硬件容错通过硬件、软件提供硬件容错能力,以提高硬件可靠性包括:* + +1. 全部容错功能由硬件实现,冗余、故障检测和故障恢复等均由硬件实现; +2. 容错功能用软件的方法实现,硬件提供冗余资源和故障检测,软件实现故障恢复策略、算法等。 + +*硬件容错的基础是硬件冗余及硬件故障检测、故障隔离和故障自愈。* + +*硬件容错通常应用在CPU、内存、FLASH等器件。* + +## 系统安全/隐私/韧性需求设计 + +### 系统安全可信设计目标 + +*华为XXX产品/解决方案版本***安全总体目标是:** + +- *1、***例如本版本要求达到CC EAL4+安全性的要求。** + +- *2* + +- *3* + + *华为XXX产品/解决方案版本***韧性总体目标是:** + +- *1、。* + +- *2* + +- *3* + +### 安全/韧性/隐私系统设计 + +*根据前面可信架构设计说明书中输出的安全架构视图,分为8个安全维度来阐述系统整体的***安全/隐私/韧性***应该要做到什么程度,系统关键安全方案的设计规格是什么,每一个关键安全方案的概要设计,*【修改点-继承IPD10.1适配+补全可信设计模式库描述】*可以参考经典的安全/韧性设计模式来指导设计方案模型输出。安全韧性隐私相关的设计模式库(可信设计模式\>安全韧性设计模式:*[*http://3ms.huawei.com/km/groups/3942332/home?l=zh-cn\#category=8211691*](http://3ms.huawei.com/km/groups/3942332/home?l=zh-cn#category=8211691)*,公司可信设计模式库在持续优化中,以链接中最新架构/设计模式为准)。* + +*系统安全设计模式参考下表(安全部署没有设计模式):* + +| 分类 | 描述 | 模式描述 | 模式库内路径 | +| --------- | ----------------------------------------- | ---------------------------------------------- | ---------------------- | +| 安全增强型基础 | 常见的系统设计模式,在一些安全性要求较高的场景,有着更为安全地增强设计 | 包含安全的分布式发布订阅、安全服务总线、安全管道和过滤器、黑板、安全经纪人、安全适配器等模式 | 安全韧性设计模式\>安全增强基础类模式 | +| 安全认证和访问控制 | 包括身份管理、身份认证、访问控制鉴权等安全技术维度。确保用户对系统的访问都是合法的 | 包含4大类20多种设计模式:身份管理、身份认证、进程访问控制以及Web访问控制. | 安全韧性设计模式\>安全认证和访问控制类模式 | +| 安全隔离 | 通过将系统的各数据资源互相隔离的手段,保证各数据资源合法访问的安全性 | 比如执行域模式、分层操作系统结构模式等 | 安全韧性设计模式\>安全隔离类模式 | +| 安全检测与防护 | 通过各种检测技术及时发现系统是否遭受攻击入侵,检测分析结果快速做出防护和响应。 | 比如基于签名的入侵检测系统模式、基于行为的入侵检测系统模式、抽象入侵检测系统等模式 | 安全韧性设计模式\>安全检测与防护类模式 | +| 数据保护 | 通过密码学算法加解密手段来保证数据存储和传输的安全性 | 数据传输保护包括传输层安全虚拟专用网模式、IPSec虚拟专用网等模式;存储保护部分待完善 | 安全韧性设计模式\>数据保护类模式 | +| 系统可信保护类 | 可信保护包含安全启动、可信启动、静态度量等方面的模式 | 比如执行域模式、受控执行域模式等 | 安全韧性设计模式\>系统可信保护类模式 | +| 安全管理类 | 安全管理包含系统的日志审计、防篡改、安全升级方面。 | 包括安全日志和审计等模式 | 安全韧性设计模式\>安全管理类模式 | + +*系统韧性设计模式包括基于用户和实体行为的异常和威胁检测、 预定义的组件交互隔离、 信任链、 配置数据完整性校验和恢复、 零信任架构、 多数据源裁决、 动态异构冗余、 Mission相关性的划分等。详细模式参考*[http://3ms.huawei.com/km/groups/3942332/home?l=zh-cn\#category=8423815](http://3ms.huawei.com/km/groups/3942332/home?l=zh-cn#category=8423815)。 + +*系统隐私设计模式如下表所示,详细参考*[*http://3ms.huawei.com/km/groups/3942332/blogs/details/8257111?l=zh-cn*](http://3ms.huawei.com/km/groups/3942332/blogs/details/8257111?l=zh-cn)*:* + +| **模式名称** | **类别** | **业务场景** | +| -------------- | --------- | ---------------------- | +| 洋葱路由 | 隐藏 | 匿名Web浏览器、匿名消息传递、安全移动通信 | +| 基于属性的凭证 | 隐藏、最小化 | 身份管理 | +| 同态加密 | 抽象化 | 数据分析 | +| 汇聚网关 | 抽象化、隐藏、分离 | 智能电网 | +| 数据泄露通知模式 | 控制 | 一般数据泄露反应 | +| K匿名 | 抽象化 | 数据发布、密码管理器 | +| 假名身份 | 隐藏 | 身份管理 | +| 加噪度量混淆 | 隐藏、最小化 | 智能电网 | +| 使用哑数据 | 抽象化、隐藏 | 基于位置的服务 | +| | | 匿名通信 | +| | | 网络搜索 | +| 差分隐私 | 抽象化 | 数据发布 | +| 隐私保护数据挖掘(PPDM) | 抽象化、隐藏 | 数据挖掘 | +| 合法同意 | 控制 | 获取同意 | +| 隐私看板 | 控制、通知 | 隐私政策 | +| 环境通知 | 通知 | 用户界面、移动应用 | +| 防跟踪 | 抽象化、隐藏 | Web浏览器 | +| (动态)位置粒度 | 抽象化、最小化 | 位置隐私 | +| 安全多方计算(MPC) | 抽象化 | 数据挖掘 | +| 在线状态主动广播 | 控制 | 位置隐私、移动应用 | +| 异步通知 | 通知 | 移动应用、基于位置的服务 | +| 回报 | 控制 | 移动应用、社交网络应用 | + +*【修改点 结束】* + +*对于关键安全特性(数字证书管理、密钥管理、发布签名&构建签名、帐号和口令管理、安全启动&可信度量、堆栈保护&防漏洞利用、安全隔离与权限最小化等),需遵从公司发布的关键安全特性实现标准、安全设计规范要求完成设计,避免因设计不合理引入风险。(关键安全特性实现标准:http://w3.huawei.com/ipd/tsl/\#!tsl_new/standard/standard.html?standardId=161671)* + +*注意:这里完成系统级全局性的关键安全方案设计,不是所有安全功能方案,由系统工程师进行甄别和选择在系统设计阶段需要重点完成的关键安全方案概要设计。特性自身的安全详细设计在特性设计说明书中体现。* + +#### 身份及访问控制设计 + +*说明在业务流程中,如何考虑系统用户的身份认证和访问控制管理,比如如何认证系统用户身份、人机/机机账户及口令的管理、用户对系统的访问控制模型等等。* + +##### 设计思想 + +概要描述说明本方案采取的设计思路、设计原则。 + +##### 功能介绍 + +概要描述本方案基本的系统功能,可以消减系统中哪些对应的威胁,以及在系统中具备的技术控制点 + +*例如,系统身份及访问控制设计应该考虑但不限于以下这些技术控制点:* + +| *人机账户集中管理* | *系统首次登录运行时,支持强制设置帐户口令* | +| ---------- | ----------------------------------------------------------------------------------------------------------------------- | +| | *SSO服务器支持与LDAP SERVER的对接* | +| | *集中IAM支持与LDAP SERVER的对接* | +| | *产品的Web界面需支持SSO的能力* | +| | *在没有SSO支持的登录场景下(即非Web的场景),产品需要支持直接对接华为或者第三方提供的IAM/数据库,以实现对管理员账户的集中管理* | +| | *实现对人机系统账号的集中管理* | +| | *需要提供批量修改产品的人机系统账号的密码的能力* | +| | *产品的人机系统账号的集中管理方案应该提供特权用户以及特定操作的MFA的能力* | +| | *产品要能够触发针对特定敏感操作的二次认证的能力* | +| *机机账户集中管理* | *应用系统的人机、机机帐号解耦,用于程序间通信的机机帐号不能作为系统维护的人机帐号* | +| *数字证书管理* | *产品及平台使用的预置证书必须向公司PKI系统申请颁发,并且该证书仅用于产品发货预置。* | +| | *产品预安装方案中,须明确每台设备预置不同的设备证书,不允许设备共享设备证书或公私钥对。* | +| | *产品软件包内不允许包含任何与证书有关的数据,包括私钥、公钥证书;用于软件完整性校验的公钥证书除外(注:具体场景及例外参考《身份和访问管理安全设计规范》)。* | +| | *产品须提供数字证书替换功能,可通过网管统一替换或开发独立的证书管理模块进行替换。* | +| | *产品在使用数字证书实现机机间身份认证的场景下,必须验证对端证书的有效性,必选验证项包括对端证书是否由受信CA签发、是否在有效期内、是否被吊销,如验证的证书失效须禁止通信、记录日志并告警;人机间身份认证场景下,验证的证书失效须提示风险。* | +| | *产品须提供数字证书即将过期的告警功能,证书告警级别、证书即将过期告警的时间与实际业务影响程度相匹配;同时可以通过网管或巡检工具实现告警。* | + +##### 功能实现原理和行为描述 + +描述功能实现的原理/方案,以及如何通过各逻辑元素(功能模块)的动态交互,以实现本功能(包括附属的非功能需求)。 + +*【写作样例示意】***HCS统一证书管理设计(样例)** + +###### *使用场景分析* + +*HCS解决方案各部件证书数量达180个以上,证书替换方式不统一,有的提供web替换,有的只能命令行替换,有的根本不支持替换。要替换所有证书耗时耗力,容易出错。* + +*HCS解决方案提供一个统一的证书管理方案,由MangeOne实现证书管理,向CA证书服务器申请证书,实现各部件的证书在线自动替换。FusionGuard对接ManageOne的证书管理, 对FusionGuard的内部证书实现在线统一替换。* + +###### *总体方案* + +** + +*ManageOne实现一个证书管理模块,北向对接CMC和客户CA进行证书在线申请,南向对接各部件实现部件证书注册和下发替换。* + +*FusionGuard通过公共的SCC OM实现证书管理,北向注册FusionGuard所有安全服务的证书,同时接收ManageOne证书管理模块下发的证书,根据证书用途名区分安全服务的证书,并对证书进行替换。* + +###### *概要方案设计* + +1. *证书注册* + + ** + + *SCC OM实现FusionGuard的证书管理功能,各安全服务器的证书信息由SCC OM向ManageOne注册。* + + *SCC OM在首次注册时需要调用证书管理的部件注册接口并带上完整的参数,此后如果注册信息发生变化,则需要调用注册接口并带上完整的参数。需要定时(24小时)调用部件注册接口来保活,此时不需要带body。* + + *初始化时,SCC OM应向证书管理注册一次,如果注册失败(有可能ManageOne还没有准备就绪),则需按一定时间重试2次?。* + +2. *证书替换* + + ** + + *运维管理员在ManageOne的证书管理界面选择FusionGuard的证书,手工触发证书替换,后台通过CMC向CA在线申请证书,后台拿到证书进行格式转换,通过Restful接口把证书下发给SCC OM,具体替换工作由SCC OM完成。* + + ** + + *运行主干描述* + + *SCC OM从ManageOne收到要替换的证书,先检查证书的格式符合情况,检查与现有证书是否一致;* + + *各个需要证书替换的节点都需要安装agent,agent跟SCC OM通信,完整证书替换工作;* + + *SCC OM创建证书替换任务,后台任务根据证书名称找到需要替换的节点,调用各个节点的替换证书接口依次进行替换,并记录日志。每个节点在单独的位置也进行日志记录。循环过程中,单个节点失败不影响整个证书替换的总体任务,但失败信息要记录到任务状态说明中,失败节点数目/总体节点数目,失败节点IP,具体原因可查询告警信息提示。* + + *运行分支描述* + + *证书不是PEM格式,返回错误,错误码:errorcode,证书格式不是PEM格式。* + + *证书与现有证书相同,返回错误,错误码:errocode,替换目标证书与现有证书相同。* + + *如果单个节点证书替换失败,整个证书的节点回退。证书替换失败,需要上报告警到OC,信息说明失败原因;并将目标证书还原为现有证书;* + +3. *证书替换状态更新* + + *证书替换完,有两种结果:成功,失败。如果失败,需要回退到原来的证书状态。SCC OM调用MangeOne的证书替换状态更新接口 “PUT /rest/unify-cert/component/cert/status”,通知ManageOne。* + +4. *证书替换状态查询* + + *批量证书替换需要一定的时间,运维人员触发替换动作后,可以在MangeOne的证书管理界面查看各部件的证书替换状态,ManageOne调用SCC OM注册的查询接口:“PUT /v1/{region_id}/certificate-om/ checkStatus”。* + +5. *证书替换完成通知* + + *Console用的IAM客户端证书的替换,是由IAM证书替换触发的,SCC OM收到这个证书时,只存放到对应节点目录下,并不重启服务生效,需要等IAM证书替换完成,ManageOne通知SCC OM。如果通知证书替换成功,Console 节点的tomcat重启,IAM客户端证书生效;如果通知替换失败,Console节点目录下的IAM客户端证书要恢复为老的证书。* + +6. *预置证书* + + *FusionGuard各部件的预置证书都采用自签名的证书,需要向公司申请,统一采用IT产品线CA签发的证书。* + + *公司PKI证书申请网站:*[*http://hwpki.huawei.com/pki/\#!jalor/workflow/template/startProcessForm.html?processKey=applyCert&code=SSL*](http://hwpki.huawei.com/pki/#!jalor/workflow/template/startProcessForm.html?processKey=applyCert&code=SSL) + +#### 系统可信保护设计 + +说明在业务流程中,如何考虑系统的可信保护,包括内层签名、安全启动、可信启动等系统的完整性保护机制,比如软件发布签名与部署验签、软件构建签名与部署验签,系统启动的安全启动、度量启动&远程证明、系统运行时的完整性保护机制防篡改能力等等,具体涉及和实施方法可参考《软件完整性保护指导》(http: )。 + +##### 设计思想 + +概要描述说明本方案采取的设计思路、设计原则。 + +##### 功能介绍 + +概要描述本方案基本的系统功能,可以消减系统中哪些对应的威胁,以及在系统中具备的技术控制点 + +*例如,系统可信保护设计应该考虑但不限于以下这些技术控制点:* + +| 软件发布-部署完整性保护 | 软件发布签名,具备硬件级安全的秘钥管理,管理公私钥对,私钥签名,公钥验证。私钥不出硬件,达到硬件级安全保护。 | +| ------------ |:----------------------------------------------------------------------------------- | +| | 发布签名验证,基于PKI体系发放证书,证书链可逐级验证,最终验签名。 | +| 软件构建-部署完整性保护 | 软件构建签名,具备硬件级安全的秘钥管理,管理公私钥对,私钥签名,公钥验证。私钥不出硬件,达到硬件级安全保护。 | +| | 构建签名验证,基于PKI体系发放证书,证书链可逐级验证,最终验签名。 | +| 计算平台具备可信启动能力 | 核心可信度量根(CRTM)需要由硬件保护或者被硬件安全校验 | +| | 启动链上各关键组件必须被上一级实体在加载之前进行度量并扩展到可信存储实体(如TPM芯片) | +| | 可信平台状态可以通过远程证明机制进行评估 | +| 计算平台具备安全启动能力 | 计算平台安全启动的信任根(RoT)必须由硬件安全机制保护 | +| | 各级固件/软件均必须具备数字签名能力,数字签名格式符合密码安全红线的要求 | +| | 除安全启动基本能力之外,还必须满足高可用性,平台韧性的能力(例如备份启动能力,自主修复能力,防止拒绝服务攻击的能力) | +| | 数字签名体系的镜像签名具备密钥分级能力以及吊销能力,即根秘钥被HSM保护,不用于任何业务签名用途,代码签名,时间戳签名使用不同的密钥,不同层级的代码使用不同的密钥签名 | + +##### 功能实现原理和行为描述 + +描述功能实现的原理/方案,以及如何通过各逻辑元素(功能模块)的动态交互,以实现本功能(包括附属的非功能需求)。 + +*1.软件发布-部署完整性保护* + +*软件从软件提供方(Software provider)发布到软件使用方(Software comsumer)接收时整包完整性保护,确保软件整包在接收时不被篡改,即被接收的软件整包与发布的软件整包完全一致,没有被修改。 + +1)触发条件及对象: + +a)软件包被软件使用方接收时,在安装部署、升级补丁之前触发。 + +*b)现网作业工程师接收软件包,采用人工或借助工具、系统对软件包进行完整性验证,验证不通过不进行部署;在线系统接收软件包,对软件包进行完整性验证,验证不通过不进行安装部署、升级补丁工作。* + +*2)使用时间及频度:* + +*a)软件安装;b)软件升级;c)软件打补丁。* + +*3)依赖条件:* + +*a)软件包发布时包含数字签名及签名的证书或公钥信息以支撑完整性验证;* + +*b)软件包在接收时、部署前进行完整性验证,通过人工、工具或者系统进行验证,具备基础软件且完整性验证的系统,实现自动验证。* + +*4)子场景:* + +*a)人工触发部署场景:现场作业人员接收到软件包,通过人工方式触发部署软件包,包括使用目标系统命令行或Web UI进行部署、使用部署工具进行部署、使用管理系统进行部署等,在部署前通过人工、工具或系统验证软件包完整性。 如:运营商设备部署场景、企业设备部署场景等* + +*b)系统自动部署场景:系统接收到软件包,基于策略、事件或外部命令自动触发部署软件包,部署过程自动化完成,无需人工参与。在部署前通过系统自动验证软件包完整性。如:终端设备自动化升级场景、云服务自动化部署场景等。* + +*客户侧软件发布完整性验证方案:* + + + +1. *发布系统在软件发布评审通过后进行发布签名,由签名代理将待签名软件摘要发给签名中心,由签名中心进行签名。* + +2. *签名中心对待签名对象进行签名,并将签名文件返回发布系统。* + +3. *发布系统收到签名文件,连通发布的软件一起归档,形成签名的软件包。* + +4. *分发系统从发布仓获取签名的软件包进行分发,这里对分发系统不做发布签名验证的要求,分发系统是否需要做发布签名验证取决于可服务性软件可追溯需求,这里不做要求。* + +5. *操作支撑系统,即目标系统的运维运营支撑系统或部署工具,从软件仓获取已签名软件包、证书/公钥,并在部署前使用签名中心提供的签名证书对已签名软件包进行验证。* + +6. *在目标系统无操作支撑系统支持的场景,由工程师Engineer使用发布签名验证工具对已签名软件包进行验证。* + +7. *目标系统加载软件包进行部署。这里目标系统可选对软件包进行验证。* + + *2.软件构建-部署完整性保护* + + *软件从软件提供方(Software provider)构建到软件使用方(Software comsumer)部署的过程中做完整性保护,确保软件在这过程中不被篡改,部署的软件与构建的软件完全一致。* + + + + *1)触发条件及对象:* + + *a)软件包在现场部署时触发,包括安装、升级、补丁过程中触发进行完整性验证。* + + *b)接收软件包之后,进行安装、升级和补丁过程中,采用人工、工具或系统对构建的制品包进行完整性验证,验证不通过不进行部署。* + + *2)使用时间及频度:* + + *a)软件安装;b)软件升级;c)软件打补丁。* + + *3)依赖条件:* + + *a)制品包构建时包含数字签名及签名的证书或公钥信息以支撑构建完整性验证;* + + *4)子场景:* + + *a)人工触发部署场景:现场作业人员接收到软件包后,通过人工方式触发部署软件包,包括使用目标系统命令行或Web UI进行部署、使用部署工具进行部署、使用管理系统进行部署等,在部署是系统自动验证制品包完整性。 如:运营商设备部署场景、企业设备部署场景等* + + *b)系统自动部署场景:系统接收到软件包后,基于策略、事件或外部命令自动触发部署软件包,部署过程自动化完成,无需人工参与。在部署时系统自动验证制品包完整性。如:终端设备自动化升级场景、云服务自动化部署场景等。* + + *客户侧软件构建-部署完整性保护方案如下:* + + + +8. *构建系统在构建完成后将对制品进行构建签名,由签名代理将制品摘要传给签名中心;* + +9. *签名中心对制品摘要进行签名,并将签名文件返回给构建系统;* + +10. *构建系统将已签名的制品,包含制品和签名文件,归档到制品仓。* + +11. *发布系统在发布评审前,从制品仓取出已签名的制品,并对其进行构建签名验证,确保其完整没有被篡改,如果验证不通过,不进行发布评审。* + +12. *已签名的制品到目标系统后,目标系统在部署前对制品进行构建签名验证。* + + *3.软件启动完整性保护* + +*软件使用方启动软件(系统)过程中,需要做完整性验证,确保软件系统安全启动或可信启动,启动的制品包与构建的制品包保持一致,没有被篡改。* + + + +1)触发条件及对象: + +a)软件包在启动时触发,进行完整性验证的启动,两种方式启动:安全启动和可信启动。 + +*2)使用时间及频度:* + +*a)系统首次启动,b)系统重新启动。* + +*3)依赖条件:* + +*a)制品包构建时包含数字签名及签名的证书或公钥信息以支撑启动完整性验证;* + +*b)安全启动或可信启动需要有个可信根,基于可信根进行逐级进行启动验证;* + +*c)可信启动需要有远程证明服务器来支持启动的可信情况。* + +*4)子场景:* + +*a)嵌入式设备:基于RTOS的嵌入式设备* + +*b)云化产品:基于服务器或者云平台的产品或管控系统* + +*c)云服务:基于云的云服务产品。* + +*安全启动方案如下:* + + + +1. *安全启动制品构建,在软件包构建时构建满足安全启动要求的软件制品,即安全启动的软件制品需要内置公钥、签名,调用签名代理获取公钥、数字签名,一便逐渐进行安全启动的验证。* +2. *安全启动制品构建过程,对获取公钥、数字签名进行响应,返回相应的公钥和数字签名;* +3. *安全启动制品构建完成相应制品的构建生成制品包,在对制品包进行构建签名。* +4. *构建签名对制品包进行处理,提前制品包摘要,提交给签名代理进行;* +5. *签名中心对制品包进行构建签名,返回签名文件;* +6. *构建系统处理签名文件并和制品包一起构成已签名的制品包存储在制品仓;* +7. *生产制造系统烧写安全启动制品包,包括“eFuse”、“BSBC”、“Firmware”等;* +8. *目标系统安全安全启动规则逐级验证、启动。* + +*可信启动方案如下:* + +*UC3客户侧软件启动完整性验证-可信启动和UC7制造侧软件启动-可信启动的整体方案如下:* + + + +1. *生产制造装配工具扫描安全启动/可信启动所需的制品;* +2. *目标系统逐级启动并度量下级的;* +3. *目标系统将度量数据写入TPM;* +4. *远程证明服务器挑战目标系统的可信情况;* +5. *远程证明Client调用TPM数据并返回给SA Server;* +6. *远程证明服务接受远程证明Client的度量数据并进行* + +#### 安全隔离设计 + +*说明在业务流程中,如何考虑系统安全隔离的安全需求,包括产品应将不同风险的平面进行网络隔离、进程权限最小化、OS账号权限最小化、是否要应用容器/虚拟机将系统应用进行隔离等等。* + +##### 设计思想 + +概要描述说明本方案采取的设计思路、设计原则。 + +##### 功能介绍 + +概要描述本方案基本的系统功能,可以消减系统中哪些对应的威胁,以及在系统中具备的技术控制点 + +*例如,安全隔离设计应该考虑但不限于以下这些技术控制点:* + +| *产品应将不同风险的平面进行网络隔离* | *产品支持不同业务平面的网络流量的默认安全隔离* | +| ------------------- | ---------------------------------------------------------------------------------------- | +| | *不同功能的网络服务,需要使用不同进程进行承载,并具有不同的UID* | +| | *不同风险等级的功能模块承载在不同进程上* | +| | *网络服务进程只能有网络特权,其他特权需求部分应通过不同的进程实现* | +| | *网络服务进程只能归属于一个平面,不能同时在多个平面提供(只作流量转发,不对流量进行处理的接口除外)* | +| | *处理敏感数据的进程应该采用强保护机制,使这部分进程不能被其他进程轻易访问,如采用TEE、SGX等Enclave技术* | +| | *对于外部用户输入可作为代码执行的进程,须采用强度较高的安全隔离机制(如SELinux、沙箱、容器)* | +| *进程权限最小化* | *除管理面的进程之外,其他平面的进程均不能使用root权限运行* | +| | *提供网络服务的进程不能在整个生命周期内一直使用最高权限(UID为0)进行运行(可以通过setuid降权)* | +| | *在进程使用capability提权时,必须逐条声明权限,且能说明权限的合理性;进程只能具有其所明确主张(需要提供特权主张和声明文档材料)的特权,任何未主张特权均禁止使用* | +| *OS账号权限最小化* | *对于传统的嵌入式设备,不能具有shell功能* | +| | *系统中只有root账号的UID为0* | +| | *所有远程访问均不可直接使用root账号* | +| | *特权操作只允许通过sudo方式完成* | +| | *Sudo配置不能直接赋与root用户的All权限(Low), 且提权到root执行的脚本(含嵌套调用的脚本)和命令的owner只能为root ,其他用户和用户组不能有写权限* | + +##### 功能实现原理和行为描述 + +描述功能实现的原理/方案,以及如何通过各逻辑元素(功能模块)的动态交互,以实现本功能(包括附属的非功能需求)。 + +#### 数据保护设计 + +*说明在业务流程中,如何考虑数据保护的功能需求,包括不同平面的数据需要在传输和存储的状态进行隔离、静态数据加密、数据传输保护、是否引入密钥管理机制等等。* + +##### 设计思想 + +概要描述说明本方案采取的设计思路、设计原则。 + +##### 功能介绍 + +概要描述本方案基本的系统功能,可以消减系统中哪些对应的威胁,以及在系统中具备的技术控制点 + +*例如,数据保护设计应该考虑但不限于以下这些技术控制点:* + +| *不同平面的数据需要在传输和存储的状态进行隔离* | *不同平面的数据有不同的权限隔离* | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| | *不同平面的数据有不同的名字空间隔离* | +| | *支持基于ABAC的数据访问控制* | +| *静态数据加密* | *支持文件粒度的静态数据加密* | +| | *支持文件系统的静态数据加密* | +| | *支持块存储的静态数据加密* | +| | *支持存储服务数据加密* | +| | *支持加密态数据迁移* | +| *数据传输保护* | *数据传输的双方具备身份认证能力,并具默认使能* | +| | *对于传输的数据具备完整性保护能力,并在传输关键数据时使能* | +| | *对于传输的数据具备加密能力,并在传输敏感数据或跨物理机器边界时使能* | +| | *采用组件化/服务化的通信框架,并在通信框架中集成安全能力* | +| *密钥管理* | *密钥体系结构应设计至少三层密钥,如:根密钥+主密钥+工作密钥。* | +| | *必须使用可解耦的密钥管理组件或服务,在密钥管理组件或服务内实现密钥的分层管理及密钥产生、存储、更新、销毁等功能。* | +| | *基于硬件保护根密钥,根密钥只能在硬件内部使用,不能从外部获取;当无硬件支持时,由密钥管理组件或服务对根密钥进行保护,根密钥仅限密钥管理组件/服务内存储/使用,须保证在密钥管理组件/服务外无法执行查看根密钥。* | +| | *密钥管理组件或服务必须至少支持:自动产生/自动派生主密钥和工作密钥的功能,导入主密钥和工作密钥的功能,删除主密钥和工作密钥的功能,对根密钥、主密钥以及工作密钥的访问具备访问控制机制;应还需支持:自动更新主密钥和工作密钥的功能,更新周期可配置的功能,管理员可手动触发更新主密钥和工作密钥的功能,新旧密钥共存机制。* | +| | *产品须实现:配置主密钥和工作密钥自动更新周期的功能,导入主密钥和工作密钥的功能,管理员可手动触发更新主密钥和工作密钥的功能,对于加密数据量很大等场景使用新旧密钥共存机制。* | +| | *在密钥管理组件/服务外,主密钥和工作密钥不能明文持久化存储。* | +| | *密钥信息(包括密钥、密钥材料)在网络中传输是须提供机密性、完整性保护。* | +| | *密钥明文在内存中使用完后应立即销毁。* | +| | *禁止软件安装包或固件中存在密钥。* | + +##### 功能实现原理和行为描述 + +描述功能实现的原理/方案,以及如何通过各逻辑元素(功能模块)的动态交互,以实现本功能(包括附属的非功能需求)。 + +#### 韧性(含安全检测响应)设计 + +*说明在业务流程中,如何考虑韧性(含安全检测响应)的功能需求,包括系统对攻击检测能力、快速的响应和恢复能力、是否能抵御拒绝服务攻击DDOS、是否有服务优先级的要求、以及在资源分配方面是否有优先分配的能力、在业务被攻击受损时确保系统基本业务功能仍然可用,不会完全不可用,确保可以通过最小系统来逐步恢复业务的能力、如果关键数据被破坏后业务能自动感知并能进行恢复的能力、等等。* + +##### 设计思想 + +概要描述说明本方案采取的设计思路、设计原则。 + +##### 功能介绍 + +概要描述本方案基本的系统功能,可以消减系统中哪些对应的威胁,以及在系统中具备的技术控制点 + +*例如,韧性(含安全检测响应)设计应该考虑但不限于以下这些技术控制点:* + +| *攻击检测能力:从网络、系统、应用、内容等维度具备攻击检测甚至预测能力* | *网络层攻击检测-对恶意流量、畸形报文等网络攻击可进行记录、告警和拦截* | +| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | +| | *入侵检测和溯源-能够对主机或容器级别的入侵等具有检测能力且可记录入侵的漏洞和攻击路径等信息* | +| *态势感知能力:从系统中持续采集数据,并结合完全情报进行综合分析,从而得到系统整体的安全态势,并以整合的图表等进行展现* | *异常行为检测:持续监测系统中各个实体和用户的行为,通过对行为的时间、频率、目的的维度进行综合分析,结合预定义的正常或异常行为模型,发现系统中异常的用户行为和实体行为* | +| | *对系统内部各方采集的运行数据、行为数据、安全事件数据进行综合分析,发现系统面临的威胁并评估风险。* | +| | *对接外部安全情报源,结合系统的运行数据进行分析和学习,提升对系统安全态势的感知能力,并进行系统安全威胁的预测。* | +| | *持续根据数据分析或态势感知输出,基于策略自动执行响应动作,动态调整系统的安全韧性能力。* | +| *N-Version编程和多路决策* | *对同一个请求同时在多个功能相同但实现方式不同的子系统中运行,通过对各个子系统的输出进行比较,决策最终的输出,并可判断出哪路系统可能已被入侵,并触发进一步的控制行为* | +| *快速的响应和恢复能力* | *热补丁* | +| | *远程补丁升级能力* | +| | *OS、DB等三方件解耦,可实现三方补丁独立安装* | +| | *支持恢复出厂默认设置* | +| | *支撑安全编排,安全策略自动调度* | +| | *自动风险评级* | +| | *取证及上报* | +| *功能降级设计,产品对于部分比较重要的功能,需要设计降级能力,以备在正常功能被攻击受损时,运行在降低模式下,以确保基本功能可用* | *系统应对所有功能的健康度进行监控,以感知功能受损信息* | +| | *降级设计能起到抑制攻击的作用(牺牲部分功能和性能来抑制攻击)* | +| | *降级之后的功能不受正在发生攻击的影响* | +| | *降级之后仍然能完成最基本的功能* | +| *功能隔离设计,当系统的某个功能受到攻击并导致了攻击者能进一步攻击的影响时,系统能将该功能进行隔离(这里关闭该功能,完全隔离,该功能模块不能再与其他任务模块进行通信)* | *系统能检测到该功能被攻击,并且攻击者可能通过该功能进行进一步的攻击* | +| | *系统能将该功能模块进行完全的安全隔离,使该功能无权限访问其他任何资源* | +| | *该功能的所有数据应该保存以便进行安全调查分析* | +| *功能异构备份设计,即对于某个非常生要的业务功能进行异构的备份设计,当主功能存在漏洞变得不可用或是被隔离时,可以启用这个异构的功能模块进行替换,以支撑基本业务的连续性* | *备用的功能模块必须是异构的设计(完全不同的代码和设计逻辑)以确保主备功能模块不会相同的漏洞* | +| | *备用功能与主功有模块之间必须进行权限隔离,当主功能被攻击后,不会影响到备用功能* | +| | *备用功能完全具备主功能的能力,并可以以负载均衡的方式与主功能同时运行* | +| *产品需要有最小系统设计,通过最小系统来确保产品在受到攻击的情况下不会完全变得不可用,确保可以通过最小系统来逐步恢复业务* | *最小系统应包括启动以及网络能力,在运行时不提供网络服务* | +| | *最小系统在产品出厂时植入,在运行过程中不能修改* | +| | *最小系统运行时,其它所有被攻击模块应处于非活动状态(攻击被冻结)* | +| | *最小系统应有操作和修改其它业务的功能和权限,但其它业务功能没有权限操作最小系统* | +| *产品需要考虑关键数据被破坏后的恢复能力,确保关键数据被破坏后业务能自动感知并能进行恢复* | *关键数据应包括管理平台与控制平台中影响系统基本功能正常运行的数据* | +| | *除关键数据的备份模块外,关键数据只有在系统失效模式下才能被访问* | +| | *关键数据有同步和更新机制* | +| *使用欺骗技术:欺骗攻击者对仿冒的对象进行访问或攻击,从而争取防御动作生效时间,或暴露入侵行为,收集攻击者的方法、技术、策略,对攻击者进行精准画像* | *在数据中加入“水印”、信标、正常情况不会使用的数据等陷阱,当攻击者盗取或访问这些数据时即被暴露,甚至会对攻击者进行反击或跟踪* | +| | *部署蜜罐系统,将可疑流量引流到蜜罐系统中,进行监控和分析* | +| | *对系统的输出,包括环境输出(电磁场、电流、功率、声波等)进行数据混淆处理(加密、掩码、散列、数据差分、随机化时延、随机化环境输出、等值环境输出等),避免外部从系统输出窃取或感知到系统计算方式,甚至数据(如侧信道攻击)。* | +| | *部署诱饵,吸引攻击火力,争取响应时间* | +| *多样性系统构建:在系统架构、设计中构建多样性支持,并在系统实施中使用多样性的组件。多样性可增加攻击者的攻击难度,并且在系统被攻击后可有效防止攻击者横向移动,或隔离攻击影响* | *架构多样性:使用不同架构的OS实现数据存储或服务、使用多种协议、同一服务/组件采用不同架构或软件栈实现的实例、同一功能采用不同算法实现的实例等。系统需要提供支持上述多样性的集成框架。* | +| | *设计多样性:模拟数字混合设计、软硬件混合设计* | +| | *合成多样性:使用多种编译器构建组件或服务,并随机部署* | +| | *数据多样性:采用多种数据数字化方法、采用多个数据源* | +| | *路径多样性:采用多种信道,多种通讯协议;多服务路由、多数据路由* | +| | *供应链多样性:使用来自不同供应商的关键组件* | +| *非持续性设计:降低攻击者可进行攻击活动的时间窗* | *非持续性信息:关键数据使用时动态生成,而不缓存或存储;高价值数据离线存储* | +| | *非持续性服务:基于时间或基于不活动来终止会话、定期或随机重启服务或OS、定期或随机重建服务及运行环境;按需供给服务(比如Serverless方式)* | +| | *非持续性连接:使用短连接或基于时间或活动情况断开连接;使用SDN定期调整网络结构;* | +| *不可预测设计:增加系统的随机性,增加攻击难度* | *定期或随机时间调整系统组件/服务的多样性组成结构,需要系统提供异构多样性支持框架* | +| | *随机信道跳跃* | +| | *随机化响应时延,增加攻击者猜测系统结构的难度* | +| | *随机执行安全措施,增加攻击者绕过安全防御措施的难度。比如随机检查会话的身份凭证。* | +| *系统安全韧性能力的适配和优化* | *实现安全韧性数据分析和学习子系统,对安全韧性措施的执行效果和安全数据进行综合分析,对系统安全韧性措施进行动态增强,或对系统架构进行动态调整以增强系统安全韧性能力,以防止已发生的攻击或入侵再次发生,或者保护预测的威胁不被攻击。* | + +##### 功能实现原理和行为描述 + +描述功能实现的原理/方案,以及如何通过各逻辑元素(功能模块)的动态交互,以实现本功能(包括附属的非功能需求)。 + +#### 安全管理设计 + +*说明在业务流程中,如何考虑安全管理的功能需求,包括对日志审计的事件覆盖范围,审计数据的存储位置(集中式/分布式),安全事件的自动分析和告警等等* + +##### 设计思想 + +概要描述说明本方案采取的设计思路、设计原则。 + +##### 功能介绍 + +概要描述本方案基本的系统功能,可以消减系统中哪些对应的威胁,以及在系统中具备的技术控制点 + +*例如,安全管理设计应该考虑但不限于以下这些技术控制点:* + +| *具备独立的审计信息收集能力,审计内容完备无遗漏* | *独立的审计数据管理功能(如独立模块/进程/服务等),对外提供接口调用功能(如API等)* | +| ------------------------- | ---------------------------------------------------------------------- | +| | *审计数据与其他数据隔离,独立存储(如独立文件/数据库等)* | +| | *审计数据支持定期备份* | +| | *审计数据所记录的范围应包括但不限于:操作日志,运行日志,安全日志* | +| | *审计数据格式统一/标准化,具备防抵赖能力(日志内容包含关键信息,如开始时间、结束时间、操作员、IP地址、操作类型、操作结果、时间级别等)* | +| | *记录对审计数据的审计过程/记录* | +| *审计数据具备完整性保护机制* | *审计数据的记录、转储等操作落地完整性保护技术(如数字签名、安全时间戳、可信任第三方证明,KSI无钥签名等)* | +| | *任何人包括应用系统管理员都没有修改、删除日志的权限(除非删除物理介质)* | +| | *只有管理员身份的用户具有日志管理的操作权限,例如日志的转储,备份,日志管理策略调整等* | +| | *只有具有系统管理员的用户才默认拥有查询日志的权限,默认生成的非管理员用户没有日志查询的权限* | +| | *只有授权用户才可查询日志* | +| | *安全日志只有安全管理员才能查看* | +| *安全日志* | *支持检测系统所需日志的及时上报* | +| | *日志内容必须满足安全大数据分析系统的需求* | +| | *日志覆盖全面* | +| | *日志本地存储的安全防护* | + +##### 功能实现原理和行为描述 + +描述功能实现的原理/方案,以及如何通过各逻辑元素(功能模块)的动态交互,以实现本功能(包括附属的非功能需求)。 + +#### 安全部署设计 + +*说明在业务流程中,如何考虑安全部署的功能需求,包括系统安全加固、网络组网部署方面的安全要求等等。* + +##### 设计思想 + +概要描述说明本方案采取的设计思路、设计原则。 + +##### 功能介绍 + +概要描述本方案基本的系统功能,可以消减系统中哪些对应的威胁,以及在系统中具备的技术控制点 + +*例如,安全部署设计应该考虑但不限于以下这些技术控制点:* + +| *系统安全加固* | *对于系统中的重要目录必须根据存储目的不同进行分区隔离* | +| --------- | ----------------------------------------- | +| | *对外接、日志存储分区进行访问控制* | +| | *对系统中不使用的端口及不安全的协议端口进行限制* | +| | *对应用服务绑定地址进行严格限制,不可随意绑定通用地址(如0.0.0.0)* | +| | *系统中不应安装不安全的网络协议和服务(如:FTP/RSH/Talk/TFTP)* | +| *漏洞防利用技术* | *使用数据执行保护技术(如:DEP等)构建漏洞攻击防护能力* | +| | *使用ASLR技术(地址空间布局随机化)增强漏洞攻击防护能力* | +| | *使用KASLR技术增强操作系统内核的漏洞攻击防护能力* | +| | *使用CFI(控制流完整性)技术增强对代码重用攻击的防护能力* | +| | *使用UBSan(运行时未定义行为)技术增强对整数溢出漏洞的防护能力* | +| | *具有对cache侧信道类攻击进行消减或防护的能力* | + +##### 功能实现原理和行为描述 + +描述功能实现的原理/方案,以及如何通过各逻辑元素(功能模块)的动态交互,以实现本功能(包括附属的非功能需求)。 + +#### 隐私保护设计 + +*说明在业务流程中,如何考虑隐私保护的功能需求,包括隐私在各地域的合法合规、隐私保护相关声明、数据脱敏、匿名性的需求。例如匿名:匿名到哪个层次,对系统匿名还是对外部其它用户匿名等相关隐私数据保护要求、是否跨欧盟地区EEA传输个人数据等等。* + +##### 设计思想 + +概要描述说明本方案采取的设计思路、设计原则。 + +##### 功能介绍 + +概要描述本方案基本的系统功能,可以消减系统中哪些对应的威胁,以及在系统中具备的技术控制点 + +##### 功能实现原理和行为描述 + +描述功能实现的原理/方案,以及如何通过各逻辑元素(功能模块)的动态交互,以实现本功能(包括附属的非功能需求)。 + +#### 漏洞修补方案设计 + +*针对内外部测试团队发现的自研漏洞,若因设计不当引入的,需在新版本的设计阶段给出明确的方案并在本说明中描述。* + +*针对当前版本、以及所使用的平台/组件/库、开源及第三方软件的漏洞制定漏洞修补方案,,可以通过IT承载,也可以按附件《漏洞修补需求与修补方案清单.xlsx》输出漏洞的修补方案,针对特殊场景下无法及时修补的漏洞,需提供专项分析,详细描述原因及影响,确保产品推荐部署场景风险可控。* + +附:《漏洞修补需求与修补方案清单》 + +## 系统生命周期需求设计(DFLC) + +1. 产品系统生命周期设计 + +*需要明确定义整个系统的功能边界、特性范围、系统生命周期(EOX期限、运行寿命等)。明确整个系统在产品中的位置、边界以及与周边配套系统的关联关系。系统的生命周期需要匹配产品的生命周期。* + +*从生命周期设计维度审视系统,包含但不限于:整机生命周期、单板生命周期、器件生命周期、组件生命周期(包括第三方、开源组件)。系统各部分的生命周期指标分解需要从整个产品分解到各系统维度。下面就是各系统的差异化DFLC要求在子章节分析。* + +1. 整机生命周期设计指标 + +*按照公司DFLC基线要求,各类产品需要根据各自的类型要求,满足生命周期设计的要求(电信Telecom类,N=10;IT硬件类N=5等),先分解出整机系统生命周期设计指标,非整机部分的生命周期需要与对应的整机匹配。* + +*整机生命周期设计原则:一代整机系统架构支持两代产品演进。(代际的定义参见《华为公司ICT基础设施产品生命周期管理总纲6.0(试行版)-20190418》)* + +*具体设计指标参考如下:* + +1. *整机部件(易损部件除外)设计寿命不短于向客户承诺的产品服务年限(如通常情况下:CT10年,IT5年)如基站DBS3900和DBS5900。* +2. *易损部件设计成FRU(现场可更换单元)。如:风扇盒。* + 1. 单板生命周期设计 + +*单板按照产品POD+N生命周期要求分解到单板必须满足N年的使用寿命(服务连续性),具体指标参考《华为公司DFLC需求基线》以及产品实际需求。需要从单板类型(基带、主控、RRU等)、单板与软件版本配套关系、单板EOX时间规划匹配产品生命周期。* + +*单板生命周期设计原则:单板通过系统兼容设计、资源预留满足产品生命周期要求。* + +*单板生命周期设计指标:* + +1. *单板支持X年配套升级, N-X年解耦配套升级。(如无线产品版本生命周期规划每年一个版本,每个版本3.5年生命周期,因此按照7年配套升级,3年解耦配套升级设计。)* +2. *单板EOX指标:* + +![](media/0161f2c26c49db5180b688db932339fa.png) + +1. 单板兼容性设计 + +*从系统设计上满足板级备件替代关系的新一代单板必须兼容上一代老单板,包括后向兼容对外互操作、特性规格、外观尺寸、外部接口兼容。* + +1. 单板硬件资源预留能力: + +*资源预留:针对新硬件单板,确定资源预留对象,并使用产品经验公式,计算得出该硬件预留资源,输出《资源预留数据表》规格要求。针对存量硬件,基于上版本的《资源预留数据表》,审视占用资源的变化趋势,必要时修订相关的硬件预留资源。如涉及关键硬件或软件组件资源变化,必须通过需求传递给下游环节。* + +1. 器件生命周期设计 + +*系统关键器件生命周期必须与单板生命周期匹配,满足单板N年的使用寿命(服务连续性)要求,器件停产时间晚于单板EOM时间。根据不同类型的器件明确器件的供应期限、供应厂家数量、寿命要求并与单板生命周期完全匹配。如果无法匹配单板生命周期需要考虑设计为FRU部件。* + +1. IC类器件选型及供应期 + +*IC类器件选型要求:IC类器件供应期≥5年,停产时间与单板EOP时间匹配,避免导致器件储备或改板。对于同一编码多厂家供应,至少≥1家满足要求。* + +1. 存储类器件寿命设计 + +*存储类器件设计要求:有擦写次数限制的存储类器件FLASH/E2PROM/CF卡等,软件保证服务年限内擦写次数的使用要求(如CT类产品10年,IT类产品5年),支持记录擦写次数和预警。例如:FLASH擦写次数10万次,单板要求10年,系统设计擦写次数满足芯片和单板要求,支持提前预警。* + +1. 易损件寿命设计要求 + +*易损件指产品在正常使用 (运转) 过程中容易损坏和在规定期间必须更换的零部件。* + +*设计原则:系统设计寿命和产品单板EOS不匹配的器件或芯片,设计上需要隔离或冗余设计,风扇/电池类/机械硬盘/光模块/固态硬盘/防尘网易损件优选支持产品可靠性POD+N年要求,对于无法满足要求的,要支持可更换(FRU)并在产品资料中进行说明。例如:风扇无法满足10年所有场景要求,产品设计要支持风扇框可更换。* + +1. 网管生命周期设计 + +*网管系统的软硬件生命周期需要匹配产品生命周期,具备独立升级能力。要求明确生命周期内的产品-网管配套关系,网管是否有可替代的产品配套产品。* + +1. 客户界面软件可替换单元的识别与定义 +2. *要明确定义客户界面可见的软件可替换单元,如特性、单板软件、安全补丁、基础包、license、插件、微服务、软件组件、外购件等,需要明确三方件、开源件是否定义成独立可更新对象。* +3. *定义独立可更新对象的可更新范围、能力,包含升级方式、安装、卸载、激活方式等,如组件独立升级、多组件联合升级或随产品升级。* + 1. 硬件模块生命周期匹配单板生命周期 + +*选用较新的下层硬件模块,硬件模块生命周期内及时更新下层硬件模块以确保与单板生命周期匹配,在产品版本生命周期内可及时解决安全漏洞。* + +## 性能 + +例如: + +业务性能:产品提供的业务性能要求 + +设备性能:产品的配置、容量、处理能力等性能指标 + +网络类性能:网络能力指标,如接口吞吐量、网络连接能力 + +## 可服务性 + +本章节描述全局性的可服务性需求,可从以下方面进行描述: + +质量检查(质检)需求:产品开局阶段,工程验收质量检查标准及验收项的需求。 + +运维巡检需求:产品通过巡检对网络设备进行主动维护,巡检功能包括配置数据正确性、设备运行状态等多方面的检查,描述产品运维巡检功能及检查项的需求。 + +一键式故障数据采集需求:产品提供一键式远程故障信息收集能力,能够一次性快速、准确的收集告警、日志、系统故障等定位信息,描述产品一键式远程故障定位信息收集功能的需求。 + +其他可服务性需求如备件(帮助GTS工程师查询可以替换的单板,或帮助行销销售可替代板件的能力)、CEAS(获取设备机框和单板的信息,生成设备信息,输入公司客户设备档案系统的能力)、升级等…… + +例如: + +生产预安装:指将能够在公司完成的安装提前在生产发货前完成,包括但不限于单板/模块、内部线缆、版本定制、License文件生产预安装,以及软件类的操作系统、数据库、双机软件等。使一线安装的工作简单再简单,提升交付效率,降低对安装人员的技能要求 + +硬件安装基础工时:指某典型配置的产品在各种条件具备的前提下,由符合既定技能要求的工程师按既定的资料和质量要求,一次性的完成从开箱验货到机柜上电之间标准工序所花的所有工时;不包括路途和管理工时。降低硬件安装工时,提升硬件安装效率,降低服务成本,支撑GTS降低合作外包价格。牵引研发人员从设计方案上提升产品的可安装性能力。 + +远程集中调测:指软调人员不用去现场,可以远程集中完成基础数据配置、业务调测、软件质量检查(包括版本补丁的确认)工作。节省软调进站的路途工时和费用,提高工程交付效率,支撑GTS降低合作外包价格 + +远程集中升级/打补丁效率:指在客户允许的时间维护窗口内,可完成升级/打补丁操作的网元数量。提升升级效率,降低服务成本 + +一键式升级/打补丁:指进行完必要的参数设置后,仅执行一个操作就完成整个软件的升级,在后续的执行升级/打补丁过程中,用户只需要监控度,不需要进行任何干预(过程中不需要用户进行任何操作,包括确认操作);在失败的情况下,无需任何参数配置,仅执行一个操作就可完成整个软件的回退,在整个回退过程只需要监控进度,不需要进行任何干预。降低升级对操作人员的技能要求 + +License安装及维护效率:实现License文件的远程批量安装、失效License文件,并能够远程查询网元License状态、License授权及使用情况,例如:通过网管或工具实现远程安装及维护,以提升License操作效率,降低服务成本。 + +License可验收:安装License文件后,能呈现出客户购买特性及License授权状态,以支持软件及License在客户界面的验收。 + +单故障告警数符合率:指对系统注入故障后,产生的告警数小于规定值的故障数量占整个注入故障数量的比值。用于减少设备产生的无效告警,降低用户无效的派单数,提高监控效率。 + +告警帮助有效性:指通过告警资料或联机帮助中提供的STEP-BY-STEP处理步骤,能准确将告警消除的告警数量与所有告警数量的比值。方便用户自行解决告警,减少GTS工作量 + +远程数据配置:数据配置的手段上,可以远程配置。在数据配置过程上,简单、高效、少错。具体方式包括GUI配置、批量配置、场景化标准配置、完善配置校验、检查等能力。提升配置效率、降低对人员技能的要求、防止配置人因差错并降低配置错误对网络的影响。 + +远程巡检:可远程完成设备巡检;提高巡检项目自动化比例;巡检设备批量化;自动分析提示隐患、问题原因和解决建议;跨版本巡检。提升巡检效率、降低巡检人力需求、快速准确发现设备隐患并形成解决办法。 + +电子标签能力具备:指可更换单元(FRU,不限于主控板、业务板、机框/背板、机柜、电源(含外购/监控)、风扇(含外购/监控)、光模块(含外购)、辅助类板(环境监控/告警监控/时钟/AUX等)等部件)能将拉手条上标签信息电子化,并能够远程采集。能通过各产品线网管进行管理的IT外购设备(小型机/存储/服务器等),同样要能实现标签电子化,并能远程采集。不需要到现场去手抄FRU或IT外购设备的条码,节省进站成本,提升采集效率 + +全球化设计: + +全球化设计:可支持全球应用,明确需要在哪些特定市场应用 + +软件类全球化:指可支持多语言输入输出、多语言界面、时区夏令时和区域特性,无需修改代码,即能支撑各语言版本 + +外购件类全球化需求:外购件语言、格式、文化习惯方面的要求 + +法律法规全球化需求:在软件的本地化过程中应支持当地标准,且确保不违背当地法规 + +硬件类全球化需求:工业外观设计要求 + +资料类全球化需求:资料语言、格式、文化习惯方面的要求 + +解决方案配套:为实现业务功能需要的多网元配套 + +整机功耗、电源参数、重量、尺寸等技术参数 + +## 可测试性 + +可测试性需求分析方法可采用:交叉矩阵、用户场景方法、分层分段分面方法、规格FDA、故障树、FMEA分析等。 + +针对系统的运行场景,结合可信个设计需求及韧性设计原则,开展可信的可测试分析 + +参考资料清单: + +参考1:DFT质量属性标准V2.0分解分配要求 + +参考2:可测试性需求分析指导书V1.0 + +参考3: 可测试性需求分析模板 + +参考4:各产品线可测试性需求基线 + +针对系统的运行场景,结合可信设计需求及韧性设计,开展可信测试分析 + +## 开放性 + +## 可定制性 + +## 可采购性 + +在产品的规划、开发设计、量产发货全生命周期阶段,全面考虑物料的选型认证和应用风险,通过物料优选、归一化设计、兼容/替代设计、产品/物料成本管理、生命周期管理等活动,提升外购软硬件/合作产品的可采购性(供应柔性和连续性好、成本具有相对竞争优势、质量符合相关要求等),使产品具有持续的竞争力。 + +可以通过分析友商相对应产品物料选型方案,分析物料行业趋势,分析公司内同类标杆产品或者继承性产品物料选型设计,为本产品物料选型、重用设计、演进设计需求提供参考。 + +## 可供应性 + +可供应性需求要考虑以下方面,如: + +标准配置:产品可销售选项按标准配置设计,标准配置设计要满足产品扩容演进的需求。 + +模块化:产品模块设计满足标准化/平台化要求,满足不同产品的极限应用场景需求。 + +延迟制造能力:产品设计需要满足延迟制造的需求,进一步降低库存,缩短交付时间。 + +简免工勘:产品设计考虑简免工勘的需求 + +生产加工-PCBA:PCBA的器件编码种类数、贴片器件总数、插装器件总数、特殊设备工艺数,以及生产环境的要求(如ESD要求、环保要求) + +生产加工-装配:装配容易、简洁,且对单板装配时间、模块装配时间、整机装配时间的要求,工序路线、制造工序简洁化、归一化,以及拆卸返修容易 + +生产测试需求:单板、模块、整机系统的故障定位准确性、简易性,更多使用内嵌测试,且单板、模块、整机的测试时间短 + +包装物流需求:包装尺寸、带板运输、二次配货、包装材料复用、装卸、运输、分货等 + +全球本地供应:产品的设计要从全球化角度分析,模块、单板、机柜与辅料的供应要考虑区域化落地。最终满足高效、准确的交付需求。 + +软件快速交付:软件自动化交付,license控制要求,包括License要控制的资源和功能清单,版本升级兼容要求,安装维护设计要求,以及界面设计要求。 + +兼容性:产品设计与实现满足前向兼容、后续演进等需求 + +SBOM:产品销售项及其步长、量纲等 + +生命周期:对产品使用寿命、升级周期的要求 + +行销工具:产品配置报价工具、答标工具、网络设计工具等的要求 + +销售渠道:对销售渠道的要求 + +交付能力:客户对产品交付方面的要求:交付提前期、批量供货能力 + +生产计划需求:配置简化、版本切换、BOM层次等 + +标准工程WBS/OP/工时基线:工程WBS对网络部署活动进行逐级分解,归纳和定义了网络部署的全部工作范围;OP定义了对应交付范围的操作活动程序。工时基线定义了每个活动的工时要求 + +标准工程采购ITEM/SOW:工程采购ITEM定义了工程服务采购包,从而指导与支撑工程采购业务活动,它以量纲作为工程量颗粒度;其对应的SOW完成对每条Item的交付活动范围的定义 + +用户产品文档需求:产品附属资料。产品文档即随机资料 + +营销资料需求:营销销售过程需要的资料。白皮书、解决方案资料和路标、产品软件和硬件特性的详细知识 + +版本文档需求:某一软件版本或补丁的所有信息要求 + +第三方文档需求:外购件、OEM-IN、OEM-OUT对资料的要求 + +其他需求…… + +## 可制造性 + +## 可伸缩性/可扩展性性 + +## 节能减排 + +## 易用性 + +## 易学习性 + +## 其它需求 + +### 成本 + +例如: + +销售毛利率:销售毛利率 + +制造毛利率:制造毛利率 + +总成本:产品总体成本要求 + +产品制造成本:主设备料本、制造费用、包装材料成本等 + +专利许可费:由于使用专利引起的费用分摊 + +配套件成本:面向交付的配套件成本 + +物流成本:运输成本、仓储成本 + +服务成本:与工程、维护、培训、项目外购件相关的成本 + +处置成本:回收处理成本 + +### License + +*描述此系统需求对应的License需求,主要考虑如下:* + +*License控制方式及策略:基于License需求清单,进一步明确各特性(License控制项)的License控制方式及策略。控制方式包含License类型(按资源或开关),单位(与销售量纲对应,例如:用户数)等。控制策略包含License文件非法、产品名称不匹配、版本不匹配、ESN不匹配、文件失效、超期、过载、容载、付费机制等策略。License控制需要和销售匹配。例如:* + +| *控制项名称* | *类型* | *单位* | *文件非法* | *产品名不匹配* | *版本不匹配* | *ESN不匹配* | *文件失效* | *超期* | *过载* | *容灾* | +| ------- | ---- | ----- | -------- | -------- | ---------------- | ---------------- | ---------------- | ------- | ------ | -------------------- | +| *在线用户数* | *资源* | *每用户* | *最小配置运行* | *最小配置运行* | *60天缓冲期后按最小配置运行* | *60天缓冲期后按最小配置运行* | *60天缓冲期后按最小配置运行* | *业务不可用* | *限制接入* | *3次X7天容灾,容灾后按最大配置运行* | +| | | | | | | | | | | | + +*License兼容性:版本升级后,尽量保证License控制项兼容,若存在License控制项不兼容(例如:License控制项的控制类型(资源或开关、单位(量纲)改变,或License控制项合并、拆分),需考虑License兼容性需求,例如:R1版本采用用户数控制,由于市场策略改变,R2版本采用话务量,现网版本升级,如何把R1版本客户购买的用户数转换为话务量。* + +*License可服务性:含生产预安装License、License安装及维护效率、License可验收,在“可服务性”章节描述,这里不单独描述。* + +*License可供应性:新建、扩容、升级、ESN变更、网络调整等场景下的License快速交付需求,在“可供应性需求说明书”的“软件与License”章节描述,这里不单独描述。* + +*License需求需遵循《华为公司License业务规则》、《华为公司License业务管理规定》、《License控制规范》。* + +### 资料 + +分析结果: + +1、基于用户任务的产品信息内容需求 + +2、基于用户角色的产品信息交付和获取需求 + +3、信息内容、表达格式、交付和获取改进需求 + +4、本产品集合已交付的产品信息用户关注度定量分析 + +5、本产品集合已交付的产品信息用户获取习惯定量分析 + +6、基于产品的重用关系表,随产品迭代分析因版本变化导致的信息内容变化需求 + +7、对已有的信息模型优化需求(可选,随需优化) + +此外,信息架构师也应关注如下需求: + +资料类全球化需求:资料语言、格式、文化习惯方面的要求 + +培训资料需求:培训客户、服务工程师需要的资料要求 + +服务交付类资料需求:与服务交付相关的资料、工程师资料的目标 + +资料开发需求:资料同源开发、更新及在线帮助接口 + +其他特殊文档需求:指部分客户特殊要求提供的一些文档。 + +### 其它 + +描述其它暂未分类但必须加以跟踪的需求。 + +# 词汇表 + +| **词汇表** | | +| ---------------------------- | -------------------------------------- | +| **名称** | **描述** | +| *Device(网元设备)* | *网元设备* | +| *CollectorItem(采集项)* | *要到设备上采集的指标项* | +| *FrameInfo(机框版位信息)* | *机框版位信息* | +| *OfflineCollectFile(离线采集文件)* | *采集工具可以基于用户提供的命令、结果文件进行离线采集,并生成采集结果数据* | +| *DataFile(采集导出文件)* | *采集结果导出的zip格式文件* | +| *License* | *License* | +| *Log(日志)* | *日志文件* | +| *工程* | *工程文件* | +| *拓扑* | *网络拓扑* | +| *信息模型* | *存储网络数据(包括链路、拓扑等信息)* | +| *局点档案报告* | *包含局点的网络拓扑信息等* | +| *链路* | *网元端口间连接* | +| *存量信息数据* | *采集数据,用于拓扑分析* | +| *数据库* | *存储采集分析数据* | +| *局点名解析规则* | *用于从设备名称解析局点名称,划分子网用* | +| *子网* | *将网元分类的概念* | +| *接口* | | + +# 其它说明 + +# 参考资料清单 + +参考资料清单: + +请罗列本文档所参考的有关参考文献和相关文档,格式如下: + +作者+书名(或杂志、文献、文档)+出版社(或期号、卷号、公司文档编号)+出版日期+起止页码 + +# + +# 附录A:本系统需遵循的外部标准 + +描述产品需要遵循的外部标准,例如: + +接口兼容性:说明本版本相对于本产品以前的版本,接口在兼容性方面的变化。 + +行业管理类准入:行业管理类准入测试 + +国际认证类准入:国际认证类准入测试 + +业界行业认证:业界某一行业的认证 + +区域市场准入:目标市场及国家的市场准入原则、测试机构和测试流程 + +外部标准不遵从说明:本产品的设计不遵从或不完全遵从哪些企业内部标准规范。需详细说明不遵从的情况和原因以及可能造成的影响。 + +# 附录B:本系统需遵循的内部标准规范 + +描述产品需要遵循的企业内部标准和技术规范,下面罗列了需重点关注的部分内部标准规范,详细可查阅公司标准规范库和业界标准: + +1. 系统设计规范 +2. 软硬件解耦规范 +3. … + 1. 硬件设计规范 +4. 印制板(业务单板)外形尺寸规范 +5. 单板电压规范 +6. … + 1. 软件设计规范 +7. License文件规范 +8. 编程规范 +9. … + 1. 整机设计规范 +10. 整机结构件选型规范 +11. 整机电缆组件选型规范 +12. 机电部件与上位机通信协议规范 +13. 工程安装结构件设计规范 +14. 包装设计规范 +15. … + 1. 原理图、PCB工艺设计规范 +16. 电路图绘制规范 +17. PCB工艺设计规范 +18. … + 1. 可靠性设计规范 +19. 器件降额规范 +20. 内存管理可靠性规范 +21. … + 1. 可服务性设计规范 +22. 华为公司电子标签规范 +23. 华为公司告警定义规范 +24. … + 1. 可测试性设计规范 +25. 单板可测试性设计规范 +26. 单板硬件电源可测性设计规范 +27. … + 1. 网络安全设计规范 +28. WEB应用安全开发规范 +29. Web安全测试规范 +30. … + +内部标准规范不遵从说明:本产品的设计不遵从或不完全遵从哪些企业内部标准规范。需详细说明不遵从的情况和原因以及可能造成的影响。 + +可信架构设计原则 + +产品领域可信实施策略 + +# 附录C:需求分解分配表 + +描述系统的全部需求清单。 + +# 附录D:信息需求 + +可以承载在IDP平台上,或需求分解分配表里。 + +# 附录E:可信设计参考 + +### 可信设计模式 + +*该章节列举已有成熟的可信设计模式,可供可信方案设计过程中参考使用* + +*备注:要从产品架构可信设计原则中提炼可信设计模式全集库,供特性设计使用。* + +| | | | | | +| --- | --- | --- | --- | --- | +| | | | | | +| | | | | | + +### 可信技术货架 + +*本章节提供产品的可信技术货架,供特性可信设计过程中参考使用。* + +### SecDesign威胁分析系统 + +*基于公司统一的Low Level威胁分析系统SecDesign,进行威胁分析,绘制Low Level数据流图。* + +*系统连接:https://rnd-tmt.huawei.com/tmt-portal/home/welcome* + +*操作指导可以参考:*[*http://3ms.huawei.com/hi/group/3800483/wiki_5395973.html*](http://3ms.huawei.com/hi/group/3800483/wiki_5395973.html) *中《*[*ASTRIDE_Low_Level威胁分析培训*](http://3ms.huawei.com/hi/group/2034125/file_11060035.html)*》。* + +*针对特性整体从安全威胁维度(欺骗、篡改、抵赖、信息泄露、拒绝服务、权限提升、隐私),对外部/处理过程、数据流、数据存储进行威胁分析,并制定削减措施。* + +![](media/31d0f7751682c612d11fe21d03b82c03.png) + +# 附录: PDMC文控记录(IPD10.0及以后版本) + +| 版本 | 拟制/修订人 | 拟制/修订日期 | 修订内容及理由 | +| ----- | ------------------------------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 02.00 | 周熠 00342873 | 2019/10/30 | 1、根据可信系统设计变革专题优化相关内容。本模板基于《系统设计说明书模板(特性迭代-OO)》,将第4章更改为系统规格的设计,将原安全、可靠性设计章节扩展成安全/隐私/韧性、可靠/易用/safety,形成《系统设计说明书模板》。 3、本模板整合删除了《安全性设计说明书模板》、《可靠性设计说明书模板》、《系统功能设计说明书模板》的内容。 | +| 02.10 | 李怀林00255143 | 2020/5/11 | 根据漏洞端到端管理变革专题梳理结果,模板中增加“5.2.2.9漏洞修补方案设计” 章节 | +| 02.20 | 郭巧云00592341 | 2020/10/10 | 根据可信发布与部署-发布签名+构建签名+安全启动特性落IPD流程CR: 增加 5.2.2.2.2中的设计,增加发布签名&验证、构建签名&验证;增加 5.2.2.2.3中增加3个特性的功能实现原理和行为描述。 | +| | 李志强00274602 | 2020/10/12 | 根据数字证书要求融入IPD流程CR: 5.2.2.1.2节中增加“证书管理技术控制点”,如产品须提供数字证书替换功能及即将过期的告警功能。 | +| 02.21 | chenhaiping 00340041;zhouyi 00342873 | 2021/12/03 | 增加 功能设计建议考虑专业领域设计规则,分配需求中涉及到专业领域设计规则,建议建立关联关系,具体参考《专业领域全量需求E2E可追溯工程方法》(条件必选,“安全功能规范产品白名单”必选)。 非功能设计建议考虑专业领域设计规则,分配需求中涉及到专业领域设计规则,建议建立关联关系,具体参考《专业领域全量需求E2E可追溯工程方法》(条件必选,“安全功能规范产品白名单”必选)。 | +| | chenhaiping 00340041;zhouyi 00342873 | 2021/12/03 | 增加单板硬件资源预留设计要求,增加完成产品配套关系树基线要求 | +| | chenhaiping 00340041;zhouyi 00342873 | 2021/12/03 | 优化描述,针对若因设计不当引入的自研漏洞,需在新版本的设计阶段给出明确的方案。其他开源三方漏洞可以通过IT承载 | + +计算产品线模板适配文控记录(IPD 11.0及以后) + +详见: + +https://open.codehub.huawei.com/OpenQianJiang/GitDoc/IPD-SE/pl-sed-templates/files?ref=CPL&filePath=PUBLISH.md&isFile=true + +或 + + + +#