Azure Linux 体系结构概述

Azure Linux 是基于 Fedora 生态系统构建的Microsoft维护的 Linux 分发版,针对Azure进行了优化。 本文介绍 Azure Linux 的结构、默认包含的内容,以及它有意划定的边界。

Note

Azure Linux 4.0 现在位于 preview 中,严格限制为评估和测试目的。 它不适合生产用途。

Azure Linux 如何与 Fedora 相关

Azure Linux 派生自 Fedora 并使用基于 RPM 的打包生态系统。 你将获得对 dnf5、Fedora 构建工具(mockfedpkgkojikiwi)以及现代编译器工具链的熟悉体验——所有这些都跟踪上游 Fedora。 在这一基础之上,Microsoft 还提供了 Azure 专属的安全加固、定制内核,以及适用于云工作负载的托管生命周期管理。

该内核版本为 6.18 LTS,并集成了 Hyper-V 来宾驱动程序、针对 Azure 的性能调优,以及经过 Azure 各 VM SKU 验证的安全加固。

分层体系结构

Azure Linux 使用分层模型。 每个层都基于下面的层,从基础硬件和固件到顶部的工作负载。

显示 Azure Linux 分层架构图的屏幕截图。

内核层

定制的 Azure Linux 内核包含 Hyper-V 来宾驱动程序、安全加固补丁,以及针对 Azure 基础设施进行调优的性能优化。 您可以选择长期支持(LTS)内核以获得稳定性,或选择硬件支持增强(HWE)内核以获得对新硬件和 GPU 的支持。 有关详细信息,请参阅 发布节奏和生命周期

核心 OS 层

此层提供最小的根文件系统: systemd 用于服务管理、 glibc 作为 C 运行时,以及用于加密的 OpenSSL。 这些是第 1 层组件,这意味着在主版本生存期内,它们处于版本锁定状态,并且仅接收安全后移植。 这样,应用程序二进制接口(ABI)稳定且行为可预测。

用户空间包层

语言运行时(Python、Go、Rust、Node.js)、容器工具和应用程序依赖项都位于此处。 一级软件包为保证稳定性而被锁定。 第 2 层包按可预测的节奏进行更新。 有关详细信息,请参阅 发布节奏和生命周期

工作负荷层

Azure服务和应用程序在此处运行。 无论是在 AKS、Azure VM 还是容器映像上运行,Azure Linux 都提供相同的操作系统基础、软件包集和行为。

平台范围

Azure Linux 专为Azure云工作负载而设计。 尽管 Azure Linux 开放源代码,但Microsoft支持和生命周期承诺仅适用于Azure方案。

下表概述了 Azure Linux 上支持和不支持的内容:

Area 支持 不支持
架构 x86-64 (v2 最小值), ARMv8 (64 位) 32 位体系结构
环境 Azure VM、AKS、容器映像 ISO 映像,本地,多云,IoT,边缘设备
User interface(用户界面) 基于文本的控制台,SSH 图形桌面环境,GUI 安装程序
虚拟化 KVM 客户机,Hyper-V Xen
外围硬件 连接到 Azure 的存储、网络和 GPU 蓝牙、Wi-Fi、打印机、音频/视频、机器人
受信任的平台 TPM 2.0 TPM 1.x
语言支持 全球区域设置支持可用 并非所有语言包都包含在基础映像中

每个 Azure Linux 映像都包含 waagentcloud-init。 这些组件是Azure集成所必需的,必须始终存在。

存储库结构

Azure Linux 在多个单独的存储库中提供包。 了解包来自哪个存储库有助于你推理可支持性、现成可用的内容以及选择加入的内容。 有关日常包管理信息,请参阅 包管理

网络默认值

Azure Linux 附带了针对Azure VM、AKS 节点和容器工作负载优化的网络堆栈。 大多数工作负荷都可以使用默认值,而无需更改。

下表汇总了 Azure Linux 中的默认网络组件,以及在特定场景下如果需要替代这些默认组件时可用的备选项:

组分 默认 备选方案 备注
网络管理器 systemd‑networkd + cloud-init NetworkManager (可用,不默认) systemd-networkd 是Azure VM 和容器方案的默认方案。
防火墙 firewalld N/A 默认启用,并采用“拒绝入站、允许出站”策略。
防火墙后端 nftables iptables (旧版,可用) nftables 是 iptables 的新式替换项。 提供对 iptables 旧版的支持,但并非默认选项。
IPv6 协议 已启用并加固 N/A 已对 IPv4 和 IPv6 均应用严格的 sysctl 加固。

存储默认值

Azure Linux 的存储默认设置已针对连接到 Azure 的磁盘以及每个 Azure VM 底层的 Hyper-V 虚拟机监控程序进行了优化。 选择文件系统、启动加载程序和时钟源,以便预测性能和与Azure平台功能(如快照和托管磁盘)的兼容性。

下表汇总了 Azure Linux 中的默认存储设置,以及在特定场景下需要替代这些默认设置时可用的选项:

Setting 默认 Alternatives
文件系统 ext4 xfs、btrfs
启动 GRUB2 启动加载程序 N/A
时钟 Hyper-V PTP 时钟源 N/A
NVMe 针对 Azure 附加存储调整的超时设置 N/A

安全体系结构

Azure Linux 在每一层都经过加固,从内核一直到供应链。 以下部分介绍默认启用的安全控制。 有关详细信息,请参阅 安全性和合规性

强制访问控制

强制访问控制(MAC)将进程限制在其实际所需的访问权限范围内,即使它们以 root 身份运行也是如此。

Azure Linux 4.0 预览版以强制模式启用 SELinux 作为其 MAC(强制访问控制)框架。

安全启动

安全启动可确保仅运行已签名的引导加载程序和内核。 内核锁定可保护正在运行的内核,并禁用在运行时加载不受信任的内核模块。

Note

Azure Linux 4.0 现已进入预览阶段,其组件尚未获得用于安全启动的签名。

内核和系统加固

内核和用户空间在构建时采用了缓解机制,使漏洞利用代码更难编写,即使利用成功,其影响也更容易被遏制。

下表总结了 linux Azure 中的内核和系统强化功能:

Capability Description
ASLR 已启用强地址空间布局随机化。
堆栈保护 应用于所有包的编译器级堆栈保护。
系统调用限制 默认 seccomp 配置文件和系统调用过滤。
最小基础映像 通过最小包集减少攻击面。

Cryptography

Azure Linux 集中加密策略,以便算法和密钥大小在 OpenSSL、GnuTLS、NSS 和 OpenSSH 之间保持一致。

下表总结了 linux Azure 中的加密设置:

Setting Value
Fips FIPS 140-3 认证是必需的。
加密策略 Fedora 加密策略已被采用,以确保算法选择的一致性。
后量子 ML-KEM 计划,符合 Fedora 和 RHEL 路线图。

日志记录和审核

下表汇总了 Azure Linux 中的日志记录和审核设置:

Setting Value
审核守护程序 已启用 auditd。
日记存储 持久日记存储。