麒麟 ZYJ 服务器软件适配 参考示例

一、zyj 环境简介

1. ZYJ 概述

国产化 SMZYJ 是由国家 BM 主管部门鉴定并批准生产使用的国内自主开发的 整机 JM 国标设备,设备采用了自主设备基础硬件(飞腾、国科微等)、安全硬 件+自主固件(昆仑等)+自主 SM 专用操作系统(麒麟)的三层加密一体方式进 行整机生产。

麒麟 ZYJ 操作系统使用了国标架构,通过了 BM 等级认证,采用了三员分立+

软硬一体化认证的主机管控措施,内置操作系统内核、壳结构、服务及软件均通 过基线安全策略加固,可通过操作系统内核安全策略控制专用机进程,识别进程 动作,实现基线策略触发告警功能。

⚫ 管理用户采用三权分立系统,以分割管理权限。

⚫ 三合一软硬一体化设备实现了管控软件安装,硬件接口放行,文件输入 输出,端口放行等相关功能.

⚫ 加入审计追溯机制,强制保留用户使用踪迹。

⚫ 固件绑定安全卡进行加密硬件及相关部件监控,一旦硬件信息被更改及 损坏即有告警禁入等相关安全措施。

这些软硬一体化认证的整机安全机制保证了涉密设备的使用的安全性,从基 础架构、系统原理与交互机制上排除了泄密隐患和信息安全风险。

2. 背景

由于 ZYJ 的特殊安全机制,用户 SAAS 级产品迁移适配需要遵循 ZYJ 适配 迁移的规则,本文以常见 web 服务器软件 nginx 源码作为适配举例,将详细 介绍适配流程及重点注意事项。

3. 相关机制简介

KYSEC 机制和白名单(其中一种安全机制)

KYSEC 是基于 kysec 安全标记对执行程序、脚本文件、共享库、内核模块 进行保护的一种安全机制。除了系统默认集成的执行程序、脚本文件、共享 库、内核模块,任何外来的该 4 种文件,如拷贝、移动、下载、重新编译生 成等,都必须添加到麒麟安全管理工具的相应白名单列表中,才能执行调用。 并且 KYSEC 会对白名单列表中的文件进行保护,保护文件不被或限定修改、 移动、删除。

那么在 ZYJ 中,KYSEC 不能强制关闭。使用配置管理工具,进行签名并导 入安装包的过程,就是给软件打白名单标签的过程。配置管理工具本身限定 了软件的导入和安装方式,就是必须使用安全软介质通过图形配置管理软件 导入格式化安装包(deb、rpm)的形式进行安装。不能直接使用二进制安装 或编译安装,也不能使用命令行进行安装。 ZYJ 内不允许安装编译环境,那就要求开发者提前在其他通用操作系统环 境或开发板中做适配工作。

4. 开发板

开发板是麒麟软件为 ZYJ 各操作平台提供的开发适配专用版本,开发板 提供了与 ZYJ 内环境(内核、shell、服务、软件)等完全相同的原生环境, 并且去掉了相关的安全限制。用户可以使用开发板环境对应用进行开发、配 置仓库、补充依赖、打包、软件测试等适配工作。开发板可以安装在同架构 通用机型上也可以安装在 ZY 机型上。(注意:通用机型可以连接互联网、 公网;ZY 机型不允许连接互联网、公网!)

各平台开发板镜像地址:各整机厂商在整机出厂时会附带对应版本开发 盘。如未提供,请直接联系整机厂商或麒麟软件销售。

5. zyj 适配流程示意图

6. 准备工具介绍

二、适配过程

1. 安装开发盘镜像

准备好相关版本镜像使用刻录软件进行刻录至相关介质,作为镜像安装介质。这 里推荐 DVD-RW 光盘进行刻录安装。

ZYJ 安装方法:

第一步:开机---secadm 登录---F1 进入 bios---依次选择:安全管理→安全维护 →启动项管理开启/关闭,重启。如图

第二步,重启后,使用 root 登录---F1 进入 bios---更改启动项为光驱启动---F1 0 保存退出---重启后,以 root 用户身份登录,进入光盘引导。如图

第三步,开始加载光盘,加载完成后,(如需度量校验,请按照提示进行度 量校验)展示出安装欢迎界面,正常安装系统即可,如图

通用机型安装方法:

第一步:开机—按照各整机对应的 bios 菜单进入按钮,进入 bios---选择光盘 启动或 usb 存储介质启动,重启。 第二步:启动后,选择安装,根据提示进行安装即可。

2. 在开发板上进行软件编译以及安装、测试等

因 zyj 必须使用格式化安装包形式,并且不允许在 zyj 上直接执行编译动作, 需要先将软件在开发板系统中编译完成后再进行打包上传安装。

请主要关注编译安装过程中的重点步骤

准备相关安装包

一般 GCC、make 工具开发板系统自动预装。如缺失,请补充相关工具。

获取 nginx 主程序编译安装包及相关依赖。

⚫ 在 nginx 官网下载 nginx 主程序

⚫ 在软件源仓库获取已有依赖相关库或下载编译包。

重点步骤:重点文件安装目录规划

⚫ 自适配软件的安装目录 zyj 尽量统一为/opt/下,方便统一管理。

⚫ 后续打包时应与规划目录一一对应不能修改

⚫ 如需指定用户,以 root 为优先。(zyj 中 root 非全权限用户)

⚫ zyj 日志目录/var/log 为单独分区,分区满后会限制用户登录(可以删除)。 日志分区大小固定,不能扩容。在日志文件放置位置上请做好指定。

⚫ 规划示例:

本次 nginx 安装统一目录下的优点是打包时填写配置较为方便。

编译参数

nginx 源文件自带已生成的 configure 文件,相关支持参数可以支持指定位置安装。 且可以指定用户。

本地环境安装测试

第一步 配置软件源或离线安装依赖库(桌面和服务器不相同,如不了解 可咨询整机或联系麒麟销售)

第二步 解压源码包

tar xf nginx-1.12.2.tar.gz

cd nginx-1.12.2

第三步 重点步骤:注意指定目录,生成 makefile 文件

./configure --prefix=/opt/nginx-1.12.2 --user=root --group=root --with-http_ssl_module --with-http_stub_status_module

第四步 make #软件编译

第五步 make install #软件编译安装

重点步骤:验证测试程序,先让软件在开发板上可用

第六步

启动 nginx 服务,进入指定的安装目录找到启动文件

执行:/opt/nginx/sbin/nginx

第七步

利用浏览器访问测试或使用 curl 命令获取 80 端口

可以看到 nginx 的 web 欢迎页信息。如图:

第八步

测试配置环境变量,将启动命令简单化,不再使用绝对路径 export PATH=$PATH:/opt/nginx/sbin

测试关闭 nginx 

到这一步已可以验证在开发板上软件可用,接下来就是需要进行将软件打包,打 包完成后再迁移至 zyj 进行测试使用。

3. 软件打包注意事项

其实生成格式化安装包的方法是多种多样的,并且方法各异,只要掌握了其 中的的重点规则,了解相关文件的具体配置和用法,按照需求配置即可。

我们先来看下 zyj 不同平台的传统打包应用工具,以及注意事项:

4. 服务器打包方法(重点)

那么本次介绍的服务器传统打包方法是基于麒麟操作系统本身自带的 rpmbuild

ZYJ 软件适配参考示例 第 14

工具来进行实现的,主要是配置好 spec 文件。其他方式的打包方法如 fpm 或 c heckinstall 等等,可自行进行研究,本次不做详细介绍,后续整理好后会进行补 充。

三、ZYJ 已适配软件安装迁移

1. 安装工具介绍

zyj 安装软件必须使用使用配置管理工具,然后进行签名,导入安装包。

配置管理工具本身,限定了一个软件的导入和安装方式,就是必须使用安全介质 传输到系统内,通过图形配置管理软件导入这种格式化安装包,不能直接使用二 进制安装方式或者是编译的安装方式,也不能使用命令行进行安装。

2. zyj 软件安装过程

导入安装包至系统

将 U 盘插入专用机,以安全用户放行 U 盘,启动左下角程序中的【三合一管 理】工具,页面认证如图所示,然后注销使用 root 用户将需要安装的 nginx 软件包导出到桌面

四、一些注意事项

1. 多个文件不同安装路径 spec 编写方法

假如我们需要将多个编译安装包或文件打成一个 rpm 包进行同时安装,比如, 我们想使用 systemd 管理 nginx 的启动及开机自启等相关功能,需要将编写好的 的 service 文件导入到系统的 systemd 管理目录中,跟本次 nginx 主目录不是同一 个目录的情况。可通过增加 Source 定义来指定多个文件,通过增加 build 目录来 指定多个目录。

示例如下

2. jar 包打包时的注意事项

由于 jar 包本身就是压缩包,针对此类包,再 build 过程中如果执行了解压动作, 可能会对 jar 包本身造成破坏,导致不可用。所以如果需要导入 jar 包时,需要 去掉解压缩定义%prep 下的%setup -q 参数。并且加入 jar 包安装支持参数,避免jar 文件重新打包,需要添加%define __jar_repack 0 定义。

3. 两种情况都包括

如过两种情况都包括,既有 jar 包,又需要其他文件放入其他目录,且都是单文 件情况下,可以不使用 tar 工具将文件压缩,直接指定文件。

4. 保留软连接

如果软件包内存在软连接,请添加此定义,避免在打包过程中去除。 %define debug_package %{nil}

5. 目录及压缩包命名问题

如果命名不规范,报如下错误:

可添加此定义 %setup -n 软件目录名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/147585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity中Shader立方体纹理Cubemap

文章目录 前言一、什么是立方体纹理二、立方体纹理的生成方式1、使用6个面的生成方式2、使用单张图片的生成方式 三、Cubemap的采样方式四、在Unity中看一下Cubemap五、在Shader中,对立方体纹理进行采样使用1、我们在属性面板定义一个Cube类型的变量来存放立方体纹理…

TCP中发送数据的情况

发送窗口和接收窗口的本质,可以叫做“TCP 的生产者 - 消费者”模型,这个只是单个网络连接的数据传输。发送窗口相当于生产者,接收窗口相当于消费者。TCP必须考虑多个连接共享在有限的带宽上,兼顾效率和公平性的控制,而…

WPF Visual, UIElement, FrameworkElement, Control这些类的区别

在WPF (Windows Presentation Foundation) 中,Visual, UIElement, FrameworkElement, 和 Control 这些类是一个类层次结构,它们分别在 WPF 的 UI 元素和控件模型中提供了不同级别的功能。下面是这些类的详细介绍: Visual:这是所有…

GetKeyState获取键盘状态(原神水龙王转转转)

先上代码&#xff1a; #include<iostream> #include<Windows.h> int main(){std::cout << "按住鼠标侧键开始旋转&#xff0c;记得要以管理员身份运行&#xff01;\n";while(true){if(GetKeyState(VK_XBUTTON1) < 0){std::cout << "…

Linux三剑客:awk的实用案例

目录 实战案例 1、awk插入几个新字段 2、awk格式化空白 3、awk筛选IPv4地址 4、awk读取.ini配置文件中的某段 5 、使用awk根据某字段去重 6、awk次数统计 7、awk统计TCP连接状态数量 8、awk统计日志中各IP访问非200状态码的次数 9、awk统计独立IP 10、awk处理字段缺…

Redis学习笔记17:基于spring data redis及lua脚本批处理scan指令查询永久有效的key

Redis的KEYS和SCAN指令都可以用于在数据库中搜索匹配指定模式的键。然而&#xff0c;它们之间有一些关键的区别&#xff1b; KEYS指令会在整个数据库中阻塞地执行匹配操作&#xff0c;并返回匹配的键列表。如果数据库很大&#xff0c;或者匹配的键很多&#xff0c;将会对性能产…

LeetCode【4】寻找两个正序数组中位数

题目&#xff1a; 思路&#xff1a; https://blog.csdn.net/a1111116/article/details/115033098 代码&#xff1a; public double findMedianSortedArrays(int[] nums1, int[] nums2) {int[] ints Arrays.copyOf(nums1, nums1.length nums2.length);System.arraycopy(nums2…

Python学习笔记--Python关键字yield

原文:http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained 注:这是一篇 stackoverflow 上一个火爆帖子的译文 问题 Python 关键字 yield 的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self,…

【Unity】XML文件的解析和生成

目录 使用XPath路径语法解析 使用xml语法解析 XML文件的生成 XML文件是一种常用的数据交换格式&#xff0c;它以文本形式存储数据&#xff0c;并使用标签来描述数据。解析和生成XML文件是软件开发中常见的任务。 解析XML文件是指从XML文件中读取数据的过程。在.NET中&#…

10. Spring源码篇之BeanPostProcessor

简介 在Bean的创建过程中会有很多的后置处理器&#xff0c;例如实例化前、实例化后、初始化前、初始化后&#xff0c;属性填充等&#xff0c;这些都是通过BeanPostProcessor来实现的 那么既然每个Bean都有有这些生命周期&#xff0c;这些BeanPostProcessor肯定需要提前知道&a…

ClickHouse 语法优化规则

ClickHouse 的 SQL 优化规则是基于RBO(Rule Based Optimization)&#xff0c;下面是一些优化规则 1 准备测试用表 1&#xff09;上传官方的数据集 将visits_v1.tar和hits_v1.tar上传到虚拟机&#xff0c;解压到clickhouse数据路径下 // 解压到clickhouse数据路径 sudo tar -xvf…

图数据库Neo4J 中文分词查询及全文检索(建立全文索引)

Neo4j的全文索引是基于Lucene实现的&#xff0c;但是Lucene默认情况下只提供了基于英文的分词器&#xff0c;下篇文章我们在讨论中文分词器&#xff08;IK&#xff09;的引用&#xff0c;本篇默认基于英文分词来做。我们前边文章就举例说明过&#xff0c;比如我要搜索苹果公司&…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(五)

公共字段自动填充 1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3 步骤三 1.4 功能测试 1.1 问题分析 在前面我们已经完成了后台系统的员工管理功能和菜品分类功能的开发&#xff0c;在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修…

【JavaScript】fetch 处理流式数据,实现类 chatgpt 对话

本文只包含最基础的请求后端大佬给得对话接口&#xff0c;大部分模型的传参是差不多的&#xff0c;核心还是如何处理 fetch 获取的流数据 import { defineStore } from pinia; import { ElMessage } from element-plus;type Role system | user | assistant; export interfac…

社区分享|杭银消费金融基于MeterSphere开展接口自动化测试

杭银消费金融有限公司&#xff08;以下简称“杭银消费金融”&#xff09;成立于2015年12月&#xff0c;是经中国银保监会批准&#xff0c;由杭州银行作为主发起人&#xff0c;联合滴滴出行、中国银泰等企业组建的持牌消费金融机构&#xff0c;注册资本为25.61亿元。杭银消费金融…

Python武器库开发-flask篇之Get与Post(二十五)

flask篇之Get与Post(二十五) 在Flask中通过request对象请求相关的数据,在正常的网页请求的过程中&#xff0c;有两种请求的方式&#xff0c;Get和Post Get请求 我们现在来看看在Flask中是如何以Get方式得到我们想要的值的&#xff0c;通过request.args可以获取Get请求中的所…

深入理解网络协议:通信世界的基石

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今数字化时代&#xff0c;网络协议是连接世…

openGauss通过VIP实现的故障转移

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

机器学习笔记 - Ocr识别中的文本检测EAST网络概述

一、文本检测 文本检测简单来说就是找到图像中可以出现文本的区域。例如,请参见下图,其中在检测到的文本周围绘制了绿色边框。 在进行文本检测时,你可能会遇到两种情况 具有结构化文本的图像:这是指具有干净/均匀背景和常规字体的图像。文本大多密集,行结构正确,…

php连接sqlserver 安装sqlserver 驱动windows系统

第一步下载Windows 上的 Microsoft ODBC Driver for SQL Server ODBC 驱动程序 Microsoft ODBC Driver for SQL Server 直接下载安装即可&#xff0c;安装后可查看安装版本 第二步&#xff1a;下载php_sqlsrv 驱动 安装解压后&#xff0c;会有对应php版本的驱动文件&#xf…