一、背景
当我们去选择容器镜像的时候,有时候发看到很多分支,其中有带着 ubi 的关键字。
这个时候不要急,容我慢慢道来,看完之后你应该就会有个合适的选择。
二、什么是 UBI?
UBI,英文全称:Red Hat Universal Base Images,即红帽通用基础映像。
红帽通用基础映像 (UBI) 是符合 OCI 标准、基于容器的操作系统映像,具有可自由再分发的互补运行时语言和软件包。与以前的基础映像一样,它们是由 Red Hat Enterprise Linux (RHEL) 的一部分构建的。您可以在红帽容器目录中找到 UBI 镜像,也可以在 Docker HUB 找到它们。
UBI 旨在成为在容器中开发的云原生和 Web 应用程序用例的基础。由于映像是可自由再分发的,因此您可以使用 UBI 构建容器化应用程序,将其推送到注册表服务器,轻松与他人共享,然后将其部署在非红帽平台上。由于该应用基于红帽企业 Linux 构建,因此您可以确信红帽的 UBI 可靠、安全且性能卓越。
由于 Docker 的特点,所以也同样的,它们可以在任何地方构建和部署。
三、它还有哪些配置或特点可供选择
- 标准版:提供必要的运行时和 YUM 存储库,用于构建、部署和共享基于 UBI 的容器。
- 迷你版:仅提供基于 Linux 的轻量级 Red Hat Enterprise 映像所需的基本功能。
- 多服务版:专为容器映像而设计,通过包括 systemd 来运行多个应用程序服务。
- 微型版:为边缘计算和其他远程应用提供最小的 UBl 占用空间。
3.1、标准版的主要特点
(1)统一 OpenSSL 加密堆栈,广泛应用于各种需要保护数据安全和隐私的场景,如网络通信、数据存储、身份认证等。它是许多应用程序和系统的重要安全组件。
(2)完整的 YUM 堆栈,提供了一个完整的软件包管理和分发解决方案,可以大大简化Linux系统的软件管理和部署过程。它不仅方便了终端用户安装和升级软件,也为系统管理员提供了一种集中管理和分发软件的方式,提高了系统的可维护性和稳定性。
(3)包含基础且实用的操作系统工具,比如 tar、gzip、vi 等等。
3.2、迷你版的主要特点
(1)最小化预装内容集:它只包含了运行容器化应用程序所必需的基本组件和库,如:
- 基本的Linux操作系统文件和目录结构。
- 必要的系统库和工具,如 glibc、bash、coreutils 等。
- 包管理器,如 yum 或 microdnf,用于安装和管理额外的软件包。
- 一些基本的网络和安全工具,如 openssh、openssl 等。
(2)没有 SUID 二进制可执行文件。
(3)最小化的包管理器(安装、更新和删除)
3.3、多服务版的主要特点
(1)在同一容器中并行运行 mysql 和 httpd。
(2)systemd 在容器启动时运行。
(3)可在构建时启用服务。
四、扩展知识
4.1、OpenSSL
OpenSSL是一个广泛使用的开源加密库,提供了各种加密算法和安全协议的实现,如SSL/TLS、散列函数、对称和非对称加密等。它是许多应用程序和系统的重要组成部分,用于保护网络通信和数据的安全。
在这里表示将不同的加密功能和组件整合到一个统一的框架或接口中。这样可以提供一致的API和使用方式,简化了开发人员的工作,并提高了代码的可维护性和可移植性。
它通常用于以下场景:
安全通信 | 实现安全的网络通信协议,如HTTPS、SSL/TLS等,保护数据在网络传输过程中的机密性和完整性。 |
数据加密 | 对敏感数据进行加密存储或传输,防止未经授权的访问和泄露。 |
数字签名 | 使用数字签名算法对数据进行签名和验证,确保数据的真实性和不可否认性。 |
密钥管理 | 生成、存储和管理加密密钥,如对称密钥、非对称密钥对等。 |
安全协议实现 | 为其他应用程序和系统提供安全协议的实现,如VPN、SSL/TLS库等。 |
4.2、YUM
YUM 是一个在 Red Hat 及其衍生发行版(如 CentOS、Fedora 等)上广泛使用的软件包管理器。它简化了软件的安装、升级、删除和管理过程,通过解析软件包之间的依赖关系,自动下载和安装所需的软件包及其依赖项。
通常包括以下组件:
- YUM客户端:运行在终端用户的系统上,用于从YUM仓库中查询、下载和安装软件包
- YUM仓库:存储了大量的RPM(Red Hat Package Manager)软件包,并提供了元数据文件,用于描述软件包之间的依赖关系和其他信息。
- 创建工具:用于创建和维护YUM仓库的工具,如createrepo,用于生成仓库的元数据文件。
- 同步工具:用于在不同的YUM仓库之间同步软件包和元数据,确保仓库的一致性和可用性。
- Web服务器:用于托管YUM仓库,让客户端能够通过网络访问和下载软件包。
- 安全工具:用于对YUM仓库进行安全管理,如签名验证、访问控制等,确保软件包的真实性和完整性。
4.3、SUID
SUID 是一种特殊的文件权限,它允许用户以文件所有者的身份和权限来执行该文件。当一个可执行文件的 SUID 位被设置时,任何用户在执行该文件时,都会临时获得文件所有者的权限。这种机制通常用于允许普通用户执行某些需要更高权限的操作,如 passwd 命令修改用户密码。
然而,SUID 也带来了一定的安全风险。如果一个 SUID 程序存在漏洞,攻击者就可能利用这个漏洞,以文件所有者(通常是root)的权限执行恶意操作,从而危及系统的安全。
在实际应用中,不考虑使用 SUID 通常有以下几种情况:
- 安全加固的系统:在一些对安全性要求很高的系统中,如军事、金融、政府等领域,管理员会尽量避免使用SUID程序,以减少系统的攻击面。
- 容器环境:在容器化部署中,由于容器通常以非特权用户运行,且有自己独立的文件系统和用户空间,因此通常不需要SUID程序。许多容器基础镜像,如Alpine Linux,默认就不包含SUID程序。
- 安全基线和合规性要求:一些安全基线和合规性标准,如CIS(Center for Internet Security)基准,会建议禁用不必要的SUID程序,以满足安全最佳实践和合规性要求。
以上反映了一种以最小权限原则为基础的安全策略,通过去除不必要的SUID程序,减少了系统的潜在安全风险,提高了系统的安全性和可控性。
4.4、边缘计算
边缘计算是一种分布式计算模型,它将计算、数据存储和网络服务等资源部署在靠近数据源或用户的网络边缘。与传统的云计算模型不同,边缘计算强调在数据产生或需要处理的地方进行计算和处理,而不是将所有数据传输到中心化的云端。
边缘计算通过将计算资源下沉到网络边缘,更接近数据源和用户,提供了低延迟、高效率、安全可靠的分布式计算模型,正在成为物联网、人工智能等新兴技术的重要使能者。