在本指南中,您將使用 Azure 原則,根據適用於 Linux 的 Azure 安全性基準稽核測試虛擬機器 (VM)。
具體來說,您將:
- 建立空白 資源群組
- 將稽核 原則 指派給空的資源群組
- 在資源群組中建立 VM,並觀察稽核結果
提示
- 如果您想要嘗試目前處於預覽狀態的 稽核和設定 (補救) 體驗,而不是僅限稽核體驗,請參閱 快速入門:使用測試機器設定 Linux 的 Azure 安全性基準
- 如需適用於 Linux 的 Azure 安全性基準的背景,包括,請參閱 Linux 的 Azure 安全性基準是什麼?。
先決條件
在嘗試本文中的步驟之前:
您將需要 Azure 帳戶來建立資源群組、原則指派和虛擬機器。 如果您沒有 Azure 帳戶,您可以 建立免費試用。
選擇存取 Azure 環境的方式,例如:
- EASY:Azure Cloud Shell 位於 https://shell.azure.com
- 或:使用您自己的工作站和殼層環境,並安裝並登入 Azure CLI
- 或:使用 Azure 入口網站 https://portal.azure.com
請確定您已登入所需的 Azure 測試環境
您可以使用
az account show來查看目前的內容。 若要登入或變更內容,請使用az account login。
步驟 1:建立資源群組
提示
使用「美國東部」(eastus)作為本文中範例位置是任意的。 您可以選擇任何可用的 Azure 位置。
az group create --name my-demo-rg --location eastus
步驟 2:將原則指派給空的測試資源群組
# Note this example is from a bash shell. Other shells may require different handling of special characters and variables
RG_ID=$(az group show --resource-group my-demo-rg --query id --output tsv)
az policy assignment create --policy "fc9b3da7-8347-4380-8e70-0a0361d8dedd" --display-name "Linux machines should meet requirements for the Azure compute security baseline" --scope "$RG_ID"
步驟 3:建立測試 VM 並準備機器設定
建立具有系統指派身分識別的Linux VM
az vm create --name my-demo-vm-01 --resource-group my-demo-rg --image Ubuntu2204 --assign-identity [system] --size Standard_B2s提示
通常會收到類似 「尚未提供存取權...」的警示,。 Azure 機器組態只需要電腦 受控識別,而不是任何特定的資源存取權。
安裝計算機設定代理程式,作為 Azure VM 擴充功能
az vm extension set --resource-group my-demo-rg --vm-name my-demo-vm-01 --name ConfigurationForLinux --publisher Microsoft.GuestConfiguration --enable-auto-upgrade
提示
本指南中手動執行受控識別和機器設定擴充功能步驟,以減少等候和減少內容變更。 大規模而言,可以使用部署 必要條件來在虛擬機器內建原則計劃上啟用客體組態原則 來滿足這些需求。
第 4 步:繼續前休息一下
現在會自動執行數個步驟。 這些步驟可能需要幾分鐘的時間。 因此,請至少等候 15 分鐘,然後再繼續進行。
第 5 步:觀察結果
下列範例示範如何取得:
- 依合規性狀態計算的計算機計數(適用於生產規模,您可能會有數千部機器)
- 每個機器的合規性狀態清單
- 具有合規性狀態和辨識項的基準規則詳細清單(也稱為 原因)
提示
預期會看到紅色 不符合規範的 結果如下。 僅限稽核的使用案例是探索現有系統與 Azure 安全性基準之間的差異。
下列 Azure CLI 範例來自 bash 環境。 若要使用另一個殼層環境,您可能需要調整行尾行為、引號規則、字元逸出等範例。
依合規性狀態的電腦計數:
QUERY=' // Returns one record per observed compliance status bucket, with machine counts for each guestconfigurationresources | where name contains "AzureLinuxBaseline" | extend ["> ComplianceStatus"] = tostring(properties.complianceStatus) | summarize MachineCount = count() by ["> ComplianceStatus"]' az graph query --graph-query "$QUERY" --query data --output yamlc每個機器的合規性狀態清單:
QUERY=' // returns one record per machine, with status guestconfigurationresources | where name contains "AzureLinuxBaseline" | project ["> Machine"] = split(properties.targetResourceId,"/")[-1], ComplianceStatus = properties.complianceStatus, LastComplianceCheck = properties.lastComplianceStatusChecked' az graph query --graph-query "$QUERY" --query data --output yamlc每個基準規則的詳細清單,其中包含合規性狀態和辨識項(也稱為 原因):
QUERY=' // Returns one record per baseline rule (around 200 per machine) with status for each GuestConfigurationResources | where name contains "AzureLinuxBaseline" | project Report = properties.latestAssignmentReport, Machine = split(properties.targetResourceId,"/")[-1], LastComplianceCheck=properties.lastComplianceStatusChecked | mv-expand Report.resources | project ["> Machine"] = Machine, ["> Rule"] = Report_resources.resourceId, RuleComplianceStatus = Report_resources.complianceStatus, RuleComplianceReason = Report_resources.reasons[0].phrase, LastComplianceCheck' az graph query --graph-query "$QUERY" --query data --output yamlc
包含該視頻是為了給人一種工作流程的整體感覺。 如需查詢詳細資料,請參閱本文中的文字。
選擇性:新增更多測試機器以體驗調整規模
在本文中,原則已指派給資源群組,該群組一開始是空的,然後取得一個 VM。 雖然這示範了系統端對端運作,但它無法提供具有機器清單等的大規模作業感。
請考慮手動或透過自動化,將更多測試機器新增至資源群組。 這些機器可以是 Azure VM 或已啟用 Arc 的機器。 當您看到這些機器符合規範(或甚至失敗)時,您可以更敏銳地大規模運作 Azure 安全性基準。
清除資源
若要避免持續產生費用,請考慮刪除本文中使用的資源群組。 例如,Azure CLI 命令會 az group delete --name "my-demo-rg"。
相關內容
- 若要提供意見反應,請討論功能要求等聯繫人:linux_sec_config_mgmt@service.microsoft.com
- 閱讀 Ignite 2024 上宣佈的 啟動部落格