全部產品
Search
文件中心

CloudOps Orchestration Service:補丁管理原理介紹

更新時間:Aug 10, 2024

該文檔會詳細介紹補丁管理的工作原理,以及如何掃描系統上的補丁狀態,安裝缺失的補丁等。

Linux

補丁管理支援的Linux系統包括 CentOS/Alibaba Cloud Linux/Debian/Ubuntu 等,不同OS使用不同的包管理工具,具體如下,不同包管理工具掃描、安裝系統補丁的原理不同。

OS

包管理工具

CentOS 7、Alibaba Cloud Linux 2、Red Hat Enterprise Linux 7

yum

CentOS Stream 9、Alibaba Cloud Linux 3、Red Hat Enterprise Linux 8/9、Anolis 8、AlmaLinux 8/9、Rocky Linux 8/9、Fedora 37/38/39

dnf

Ubuntu 16.04/18.04/20.04/22.04

apt

Debian 11/12

apt

sles 12、15/opensuse 15

zypper

補丁基準在yum/dnf 上的工作原理

CentOS、Alibaba Cloud Linux、Red Hat Enterprise Linux、Anolis等系統使用 yum/dnf 來管理軟體包,兩個軟體包管理都有更新通知的概念,在軟體倉庫中儲存著名為updateinfo.xml的檔案來儲存軟體的更新通知,更新通知只是修複特定問題的軟體包的集合。更新通知中的軟體包均被視為均為安全性軟體包,如果您將“是否包括非安全更新”設定為“否”,patch manager會要求可升級的新版本包在更新通知中。

updateinfo中的欄位說明:

名稱

描述

type

表示更新通知的類型,包括:

Security

Bugfix

Enhancement

Recommended

Newpackage

title

更新通知的標題

severity

更新通知的嚴重類型,包括:

Critical

Important

Moderate

Low

Unspecified

summary

更新通知的簡要描述

description

更新通知的詳細描述

references

有關更新通知參考資訊,可能包含 CVE、Bugzilla等資訊

pkglist

該更新通知相關聯的rpm包列表

補丁管理根據updateinfo中的更新通知按照補丁基準的規則進行過濾。以CentOS的公用基準為例,規則如下:

'PatchFilterGroup': [
    {
        'Values': [
            '*'
        ],
        'Key': 'Product'
    },
    {
        'Values': [
            'Security',
            'Bugfix'
        ],
        'Key':'Classification'
    },
    {
        'Values': [
            'Critical',
            'Important'
        ],
        'Key': 'Severity'
    }
]

即為只掃描/安裝類型為 Security和Bugfix,嚴重等級為Critical和Important的相關更新包,此工作流程等效於yum命令如下:

yum check-update --security --bugfix --secseverity=Critical,Important

等效於dnf命令如下:

dnf  check-update --security --bugfix --secseverity=Critical
dnf  check-update --security --bugfix --secseverity=Important

在使用者建立的自訂基準中,不選擇過濾補丁類型及嚴重程度時,等效的 yum及dnf命令如下:

yum check-update --security
dnf check-update --security

對於篩選出需要安裝的補丁包,補丁管理使用yum(update api) /dnf update 安裝補丁包,安裝了補丁包後,補丁管理會重啟執行個體,當您選擇的重啟選項為 "不重啟時" 則不會重啟。

注意:Alibaba Cloud Linux 2 支援安裝核心熱補丁,當您的執行個體開啟了熱補丁功能,補丁管理如果只是安裝了核心熱補丁,不會重啟執行個體。 關於更多 Alibaba cloud linux 2 核心熱補丁資訊請參考:核心熱補丁概述

補丁基準在apt上的工作原理

在Debian、Ubuntu系統上,補丁基準通過過濾deb包的Priority, Section屬性來決定選擇哪些補丁,Priority表示包的優先順序,用來表示包的重要性,Section 屬性用來表示包的分類。

補丁管理的掃描/安裝系統補丁的流程如下:

1 執行 apt update 重新整理軟體源倉庫包列表

2 使用補丁基準匹配過濾可升級包,如果您將“是否包括非安全更新”設定為“否”,patch manager會要求可升級的新版本包在 security源中。以下是各系統中的security倉庫源名稱

Debian Server 8: debian-security jessie
Debian Server 9: debian-security stretch
Debian Server 10: debian-security buster
Debian Server 11: debian-security bullseye
Debian Server 12: debian-security bookworm
Ubuntu Server 16.04 LTS: xenial-security
Ubuntu Server 18.04 LTS: bionic-security
Ubuntu Server 20.04 LTS: focal-security
Ubuntu Server 22.04 LTS: jammy-security

Debian及Ubuntu的公用基準,預設選擇優先順序為Required和Important的包:

'PatchFilterGroup': [
    {
        'Values': [
            '*'
        ],
        'Key': 'Product'
    },
    {
        'Values': [
            'Required',
            'Important'
        ],
        'Key': 'Severity'
}

此工作流程等效於執行以下步驟:

1 執行apt list --upgradable 命令列出所有可升級的包

2 使用apt list -a package-name 擷取該包的所有可升級的版本(版本號碼排序由高到低,高版本優先)

3 使用apt show package-name=={版本} ,檢查該包的可升級版本的優先順序,是否符合基準規則

4 檢查符合基準規則的版本的包是否在 security 源

對於篩選出需要待安裝的補丁包,補丁管理使用apt update api 安裝補丁包,安裝了補丁包後,補丁管理會重啟執行個體,當您選擇的重啟選項為 "不重啟" 時則不會重啟。

補丁基準在zypper上的工作原理

在sles/opensuse系統上, zypper 通過 patch 來管理系統補丁,您可以通過zypper list-patches來擷取適用於系統的補丁,補丁是修複一組特定軟體包的集合,它有以下屬性:

status

not needed 不需要

applied 已安裝

need 需要安裝

Category

補丁的類型

  • security:安全補丁,修複安全性漏洞和漏洞。

  • recommended:推薦補丁,提供對系統效能、功能或相容性的改進。

  • optional:可選補丁,提供額外的功能或修複非關鍵問題。

  • feature: 功能性補丁,增加新的操作或改進現有的功能

  • document:(文檔)

  • yast: YaST是openSUSE和SUSE Linux發行版中的一個系統管理工具

Severity

補丁的安全等級

  • low:低層級的問題或風險。

  • moderate:中等層級的問題或風險。

  • important:重要層級的問題或風險。

  • critical:臨界層級的問題或風險。

  • unspecified: 未定義的

Created On

該補丁建立的具體日期

zypper的補丁基準通過控制補丁的類型和嚴重性來過濾需要安裝的補丁:

"PatchFilterGroup": [
    {
        "Values": [
            "*"
        ],
        "Key": "Product"
    },
    {
        "Values": [
            "security",
            "recommended"
        ],
        "Key": "Classification"
    },
    {
        "Values": [
            "Critical",
            "Important",
            "Moderate"
        ],
        "Key": "Severity"
    }
],

將補丁中的類型為security和recommended,嚴重層級為Critical,Important,Moderate的包過濾出來,過濾出來的即為符合基準規則的補丁包。

Windows

Windows 系統補丁更新原理

當掃描或安裝補丁更新時,補丁管理會自動剔除已被其補丁列表中的後續更新取代的更新。因此,補丁管理只顯示最新更新,以供您安裝。例如,如果KB4556846替換KB4550961,僅限KB4556846作為補丁更新。

當補丁更新包之間存在依賴關係時,需要優先安裝依賴的更新,然後才可正常檢測並安裝目標更新。 例如,如果補丁KB5005076的安裝依賴補丁KB4566425,掃描時若補丁KB4566425未安裝則檢測不到補丁KB5005076, 需要安裝補丁KB4566425後才可以檢測並安裝補丁KB5005076。

注意:補丁管理目前僅支援Server2012R2、Server2016、Server2019、Server2022的系統補丁修複更新。