Řešení potíží s holou počítačí pomocí az networkcloud baremetalmachine run-data-extract
příkazu
Můžou nastat situace, kdy uživatel potřebuje prozkoumat a vyřešit problémy s místním holým počítačem. Azure Operator Nexus poskytuje předepsané sady příkazů extrakce dat prostřednictvím az networkcloud baremetalmachine run-data-extract
. Tyto příkazy umožňují uživatelům získat diagnostická data z holého počítače.
Příkaz vytvoří výstupní soubor obsahující výsledky extrakce dat. Ve výchozím nastavení se data odesílají do účtu úložiště Správce clusteru. K dispozici je také metoda Preview, ve které můžou uživatelé nakonfigurovat prostředek clusteru s účtem úložiště a identitou, která má přístup k účtu úložiště, aby získali výstup.
Požadavky
- Tento článek předpokládá, že je nainstalované rozhraní příkazového řádku Azure a rozšíření rozhraní příkazového
networkcloud
řádku. Další informace naleznete v tématu Instalace rozšíření rozhraní příkazového řádku. - Cílový holý stroj je zapnutý a připravený.
- Syntaxe těchto příkazů je založená na verzi rozhraní příkazového
az networkcloud
řádku verze 0.3.0 nebo novější. - Získejte název spravované skupiny prostředků clusteru (cluster_MRG), který jste vytvořili pro prostředek clusteru.
Odeslání výstupu příkazu uživateli zadanému účtu úložiště
Vytvoření a konfigurace prostředků úložiště
- Vytvořte účet úložiště nebo identifikujte existující účet úložiště, který chcete použít. Viz Vytvoření účtu úložiště Azure.
- V účtu úložiště vytvořte kontejner úložiště objektů blob. Viz Vytvoření kontejneru.
- Přiřaďte roli Přispěvatel dat objektů blob úložiště uživatelům a spravovaným identitám, které potřebují přístup k výstupu extrakce run-data.
- Viz Přiřazení role Azure pro přístup k datům objektů blob. Tato role musí být také přiřazena spravované identitě přiřazené uživatelem nebo vlastní spravované identitě přiřazené systémem clusteru.
- Další informace o spravovaných identitách najdete v tématu Spravované identity pro prostředky Azure.
- Pokud používáte identitu přiřazenou systémem clusteru, musí se do clusteru přidat identita přiřazená systémem, aby bylo možné udělit přístup.
- Při přiřazování role k identitě přiřazené systémem clusteru se ujistěte, že jste vybrali prostředek s typem Cluster (Operátor Nexus).
Konfigurace clusteru pro použití spravované identity přiřazené uživatelem pro přístup k úložišti
Tento příkaz použijte k vytvoření clusteru s účtem úložiště spravovaným uživatelem a identitou přiřazenou uživatelem. Všimněte si, že tento příklad je zkrácený příkaz, který jenom zvýrazní pole relevantní pro přidání úložiště spravovaného uživatelem. Nejedná se o příkaz pro vytvoření celého clusteru.
az networkcloud cluster create --name "<cluster-name>" \
--resource-group "<cluster-resource-group>" \
...
--mi-user-assigned "<user-assigned-identity-resource-id>" \
--command-output-settings identity-type="UserAssignedIdentity" \
identity-resource-id="<user-assigned-identity-resource-id>" \
container-url="<container-url>" \
...
--subscription "<subscription>"
Tento příkaz použijte ke konfiguraci existujícího clusteru pro uživatelem zadaný účet úložiště a identitu přiřazenou uživatelem. Příkaz update se dá použít také ke změně umístění účtu úložiště a identity v případě potřeby.
az networkcloud cluster update --name "<cluster-name>" \
--resource-group "<cluster-resource-group>" \
--mi-user-assigned "<user-assigned-identity-resource-id>" \
--command-output-settings identity-type="UserAssignedIdentity" \
identity-resource-id="<user-assigned-identity-resource-id>" \
container-url="<container-url>" \
--subscription "<subscription>"
Konfigurace clusteru pro použití spravované identity přiřazené systémem pro přístup k úložišti
Tento příkaz použijte k vytvoření clusteru s účtem úložiště spravovaným uživatelem a identitou přiřazenou systémem. Všimněte si, že tento příklad je zkrácený příkaz, který jenom zvýrazní pole relevantní pro přidání úložiště spravovaného uživatelem. Nejedná se o příkaz pro vytvoření celého clusteru.
az networkcloud cluster create --name "<cluster-name>" \
--resource-group "<cluster-resource-group>" \
...
--mi-system-assigned true \
--command-output-settings identity-type="SystemAssignedIdentity" \
container-url="<container-url>" \
...
--subscription "<subscription>"
Tento příkaz použijte ke konfiguraci existujícího clusteru pro účet úložiště poskytnutého uživatelem a k používání vlastní identity přiřazené systémem. Příkaz update se dá použít také ke změně umístění účtu úložiště.
az networkcloud cluster update --name "<cluster-name>" \
--resource-group "<cluster-resource-group>" \
--mi-system-assigned true \
--command-output-settings identity-type="SystemAssignedIdentity" \
container-url="<container-url>" \
--subscription "<subscription>"
Pokud chcete změnit cluster z identity přiřazené uživatelem na identitu přiřazenou systémem, musí být commandOutputSettings nejprve vymazán pomocí příkazu v další části a pak nastavit pomocí tohoto příkazu.
Vymazání commandOutputSettings clusteru
CommandOutputSettings je možné vymazat a směrovat výstup run-data-extract zpět do úložiště správce clusteru. Nedoporučuje se ale, protože je méně zabezpečená a v budoucí verzi se tato možnost odebere.
Příkaz CommandOutputSettings ale musí být vymazán, pokud přechází z identity přiřazené uživatelem na identitu přiřazenou systémem.
Pomocí tohoto příkazu vymažte CommandOutputSettings:
az rest --method patch \
--url "https://management.azure.com/subscriptions/<subscription>/resourceGroups/<cluster-resource-group>/providers/Microsoft.NetworkCloud/clusters/<cluster-name>?api-version=2024-08-01-preview" \
--body '{"properties": {"commandOutputSettings":null}}'
Zobrazení ID objektu zabezpečení pro spravovanou identitu
ID prostředku identity najdete tak, že u prostředku identity vyberete zobrazení JSON. ID je v horní části zobrazeného panelu. Adresu URL kontejneru najdete na kartě Nastavení –> Vlastnosti prostředku kontejneru.
Rozhraní příkazového řádku se dá použít také k zobrazení identity a přidružených dat ID objektu zabezpečení v rámci clusteru.
Příklad:
az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>
Příklad identity přiřazené systémem:
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
},
Příklad identity přiřazené uživatelem:
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"principalId": "bbbbbbbb-cccc-dddd-2222-333333333333"
}
}
},
ZASTARALÁ METODA: Ověření přístupu k účtu úložiště Správce clusteru
Důležité
Účet úložiště Správce clusteru je cílem odebrání nejpozději v dubnu 2025. Pokud dnes používáte tuto metodu pro výstup příkazu, zvažte převod na použití účtu úložiště poskytnutého uživatelem.
Pokud používáte metodu úložiště Správce clusteru, ověřte, že máte přístup k účtu úložiště Správce clusteru:
- Na webu Azure Portal přejděte do účtu úložiště Správce clusteru.
- V podrobnostech účtu úložiště vyberte v navigační nabídce na levé straně prohlížeč úložiště.
- V podrobnostech prohlížeče úložiště vyberte kontejnery objektů blob.
- Pokud při přístupu k účtu úložiště narazíte
403 This request is not authorized to perform this operation.
, je potřeba aktualizovat nastavení brány firewall účtu úložiště tak, aby zahrnovalo veřejnou IP adresu. - Požádejte o přístup vytvořením lístku podpory prostřednictvím portálu v prostředku Správce clusteru. Zadejte veřejnou IP adresu, která vyžaduje přístup.
Spuštění příkazu run-data-extract
Příkaz pro extrakci dat spustí jeden nebo více předdefinovaných skriptů, které extrahují data z holého počítače.
Upozorňující
Microsoft neposkytuje ani nepodporuje žádná volání rozhraní API pro operátory Nexus, která očekávají zadání uživatelského jména nebo hesla ve formátu prostého textu. Všimněte si, že se zaprotokolují všechny odeslané hodnoty a považují se za vystavené tajné kódy, které by se měly otočit a odvolat. Dokumentovanou metodou Microsoftu pro bezpečné použití tajných kódů je jejich uložení ve službě Azure Key Vault. Pokud máte konkrétní dotazy nebo pochybnosti, odešlete žádost prostřednictvím webu Azure Portal.
Aktuální seznam podporovaných příkazů:
Řešení potíží s nástrojem SupportAssist/TSR pro řešení potíží
Název příkazu:hardware-support-data-collection
Argumenty: Typ požadovaných protokolůSysInfo
- Informace o systémuTTYLog
– Data TTYLogu úložištěDebug
– ladění protokolů
Shromažďování informací o agentech MDE (Microsoft Defender for Endpoints)
Název příkazu:mde-agent-information
Argumenty: ŽádnéShromažďování protokolů podpory diagnostiky MDE
Název příkazu:mde-support-diagnostics
Argumenty: ŽádnéShromáždění stavu kumulativní aktualizace hardwaru Dell
Název příkazu:hardware-rollup-status
Argumenty: ŽádnéGenerování sestavy CVE clusteru
Název příkazu:cluster-cve-report
Argumenty: ŽádnéShromažďování verzí Helmu
Název příkazu:collect-helm-releases
Argumenty: ŽádnéShromáždit
systemctl status
výstup
Název příkazu:platform-services-status
Argumenty: Žádné
Syntaxe příkazu je:
az networkcloud baremetalmachine run-data-extract --name "<machine-name>" \
--resource-group "<cluster_MRG>" \
--subscription "<subscription>" \
--commands '[{"arguments":["<arg1>","<arg2>"],"command":"<command1>"}]' \
--limit-time-seconds "<timeout>"
Zadejte více příkazů pomocí formátu JSON v --commands
možnosti. Každý command
určuje příkaz a argumenty. Pro příkaz s více argumenty zadejte jako seznam parametru arguments
. Pokyny k vytvoření struktury najdete v --commands
stručné dokumentaci k Azure CLI.
Tyto příkazy můžou být dlouhotrvající, takže doporučujeme nastavit --limit-time-seconds
alespoň 600 sekund (10 minut). Možnost Debug
nebo spuštění více extrakcí může trvat déle než 10 minut.
V odpovědi operace provádí asynchronně a vrátí stavový kód HTTP 202. Podrobnosti o tom, jak sledovat dokončování příkazů a zobrazit výstupní soubor, najdete v části Zobrazení výstupu.
Shromažďování dat podpory hardwaru
Tento příklad spustí hardware-support-data-collection
příkaz a získá SysInfo
protokoly TTYLog
ze serveru Dell. Skript spustí racadm supportassist collect
příkaz na určeném holých počítačích. Výsledný soubor tar.gz obsahuje výstupy příkazu zip extract v hardware-support-data-<timestamp>.zip
souboru .
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"arguments":["SysInfo", "TTYLog"],"command":"hardware-support-data-collection"}]' \
--limit-time-seconds 600
hardware-support-data-collection
Výstup
====Action Command Output====
Executing hardware-support-data-collection command
Getting following hardware support logs: SysInfo,TTYLog
Job JID_814372800396 is running, waiting for it to complete ...
Job JID_814372800396 Completed.
---------------------------- JOB -------------------------
[Job ID=JID_814372800396]
Job Name=SupportAssist Collection
Status=Completed
Scheduled Start Time=[Not Applicable]
Expiration Time=[Not Applicable]
Actual Start Time=[Thu, 13 Apr 2023 20:54:40]
Actual Completion Time=[Thu, 13 Apr 2023 20:59:51]
Message=[SRV088: The SupportAssist Collection Operation is completed successfully.]
Percent Complete=[100]
----------------------------------------------------------
Deleting Job JID_814372800396
Collection successfully exported to /hostfs/tmp/runcommand/hardware-support-data-2023-04-13T21:00:01.zip
================================
Script execution result can be found in storage account:
https://cm2p9bctvhxnst.blob.core.windows.net/bmm-run-command-output/dd84df50-7b02-4d10-a2be-46782cbf4eef-action-bmmdataextcmd.tar.gz?se=2023-04-14T01%3A00%3A15Zandsig=ZJcsNoBzvOkUNL0IQ3XGtbJSaZxYqmtd%2BM6rmxDFqXE%3Dandsp=randspr=httpsandsr=bandst=2023-04-13T21%3A00%3A15Zandsv=2019-12-12
Příklad seznamu souborů podpory hardwaru shromážděných
Archive: TSR20240227164024_FM56PK3.pl.zip
creating: tsr/hardware/
creating: tsr/hardware/spd/
creating: tsr/hardware/sysinfo/
creating: tsr/hardware/sysinfo/inventory/
inflating: tsr/hardware/sysinfo/inventory/sysinfo_CIM_BIOSAttribute.xml
inflating: tsr/hardware/sysinfo/inventory/sysinfo_CIM_Sensor.xml
inflating: tsr/hardware/sysinfo/inventory/sysinfo_DCIM_View.xml
inflating: tsr/hardware/sysinfo/inventory/sysinfo_DCIM_SoftwareIdentity.xml
inflating: tsr/hardware/sysinfo/inventory/sysinfo_CIM_Capabilities.xml
inflating: tsr/hardware/sysinfo/inventory/sysinfo_CIM_StatisticalData.xml
creating: tsr/hardware/sysinfo/lcfiles/
inflating: tsr/hardware/sysinfo/lcfiles/lclog_0.xml.gz
inflating: tsr/hardware/sysinfo/lcfiles/curr_lclog.xml
creating: tsr/hardware/psu/
creating: tsr/hardware/idracstateinfo/
inflating: tsr/hardware/idracstateinfo/avc.log
extracting: tsr/hardware/idracstateinfo/avc.log.persistent.1
[..snip..]
Shromažďování informací o agentech MDE
Data se shromažďují pomocí mde-agent-information
příkazu a formátují se jako JSON do /hostfs/tmp/runcommand/mde-agent-information.json
. Soubor JSON se nachází v souboru ZIP extrahování dat umístěném v účtu úložiště. Skript spustí posloupnost mdatp
příkazů na určeném holých počítačích.
Tento příklad spustí mde-agent-information
příkaz bez argumentů.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"command":"mde-agent-information"}]' \
--limit-time-seconds 600
mde-agent-information
Výstup
====Action Command Output====
Executing mde-agent-information command
MDE agent is running, proceeding with data extract
Getting MDE agent information for bareMetalMachine
Writing to /hostfs/tmp/runcommand
================================
Script execution result can be found in storage account:
https://cmzhnh6bdsfsdwpbst.blob.core.windows.net/bmm-run-command-output/f5962f18-2228-450b-8cf7-cb8344fdss63b0-action-bmmdataextcmd.tar.gz?se=2023-07-26T19%3A07%3A22Z&sig=X9K3VoNWRFP78OKqFjvYoxubp65BbNTq%2BGnlHclI9Og%3D&sp=r&spr=https&sr=b&st=2023-07-26T15%3A07%3A22Z&sv=2019-12-12
Příklad shromážděného objektu JSON
{
"diagnosticInformation": {
"realTimeProtectionStats": $real_time_protection_stats,
"eventProviderStats": $event_provider_stats
},
"mdeDefinitions": $mde_definitions,
"generalHealth": $general_health,
"mdeConfiguration": $mde_config,
"scanList": $scan_list,
"threatInformation": {
"list": $threat_info_list,
"quarantineList": $threat_info_quarantine_list
}
}
Shromažďování diagnostiky podpory MDE
Data shromážděná z mde-support-diagnostics
příkazu používají nástroj MDE Client Analyzer k seskupování informací z mdatp
příkazů a relevantních souborů protokolu. Soubor účtu tgz
úložiště obsahuje soubor s zip
názvem mde-support-diagnostics-<hostname>.zip
. Měly zip
by se odeslat spolu s žádostmi o podporu, aby v případě potřeby mohly podpůrné týmy používat protokoly pro řešení potíží a analýzu původní příčiny.
Tento příklad spustí mde-support-diagnostics
příkaz bez argumentů.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"command":"mde-support-diagnostics"}]' \
--limit-time-seconds 600
mde-support-diagnostics
Výstup
====Action Command Output====
Executing mde-support-diagnostics command
[2024-01-23 16:07:37.588][INFO] XMDEClientAnalyzer Version: 1.3.2
[2024-01-23 16:07:38.367][INFO] Top Command output: [/tmp/top_output_2024_01_23_16_07_37mel0nue0.txt]
[2024-01-23 16:07:38.367][INFO] Top Command Summary: [/tmp/top_summary_2024_01_23_16_07_370zh7dkqn.txt]
[2024-01-23 16:07:38.367][INFO] Top Command Outliers: [/tmp/top_outlier_2024_01_23_16_07_37aypcfidh.txt]
[2024-01-23 16:07:38.368][INFO] [MDE Diagnostic]
[2024-01-23 16:07:38.368][INFO] Collecting MDE Diagnostic
[2024-01-23 16:07:38.613][WARNING] mde is not running
[2024-01-23 16:07:41.343][INFO] [SLEEP] [3sec] waiting for agent to create diagnostic package
[2024-01-23 16:07:44.347][INFO] diagnostic package path: /var/opt/microsoft/mdatp/wdavdiag/5b1edef9-3b2a-45c1-a45d-9e7e4b6b869e.zip
[2024-01-23 16:07:44.347][INFO] Successfully created MDE diagnostic zip
[2024-01-23 16:07:44.348][INFO] Adding mde_diagnostic.zip to report directory
[2024-01-23 16:07:44.348][INFO] Collecting MDE Health
[...snip...]
================================
Script execution result can be found in storage account:
https://cmmj627vvrzkst.blob.core.windows.net/bmm-run-command-output/7c5557b9-b6b6-a4a4-97ea-752c38918ded-action-bmmdataextcmd.tar.gz?se=2024-01-23T20%3A11%3A32Z&sig=9h20XlZO87J7fCr0S1234xcyu%2Fl%2BVuaDh1BE0J6Yfl8%3D&sp=r&spr=https&sr=b&st=2024-01-23T16%3A11%3A32Z&sv=2019-12-12
Po stažení souboru výsledků provádění je možné soubory podpory pro analýzu rozbalit.
Příklad seznamu informací shromážděných analyzátorem klienta MDE
Archive: mde-support-diagnostics-rack1compute02.zip
inflating: mde_diagnostic.zip
inflating: process_information.txt
inflating: auditd_info.txt
inflating: auditd_log_analysis.txt
inflating: auditd_logs.zip
inflating: ebpf_kernel_config.txt
inflating: ebpf_enabled_func.txt
inflating: ebpf_syscalls.zip
inflating: ebpf_raw_syscalls.zip
inflating: messagess.zip
inflating: conflicting_processes_information.txt
[...snip...]
Stav kumulativní aktualizace hardwaru
Data se shromažďují pomocí hardware-rollup-status
příkazu a formátují se jako JSON do /hostfs/tmp/runcommand/rollupStatus.json
. Soubor JSON se nachází v souboru ZIP extrahování dat umístěném v účtu úložiště. Shromážděná data ukazují stav subsystémů počítačů.
Tento příklad spustí hardware-rollup-status
příkaz bez argumentů.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "clusete_MRG" \
--subscription "subscription" \
--commands '[{"command":"hardware-rollup-status"}]' \
--limit-time-seconds 600
hardware-rollup-status
Výstup
====Action Command Output====
Executing hardware-rollup-status command
Getting rollup status logs for b37dev03a1c002
Writing to /hostfs/tmp/runcommand
================================
Script execution result can be found in storage account:
https://cmkfjft8twwpst.blob.core.windows.net/bmm-run-command-output/20b217b5-ea38-4394-9db1-21a0d392eff0-action-bmmdataextcmd.tar.gz?se=2023-09-19T18%3A47%3A17Z&sig=ZJcsNoBzvOkUNL0IQ3XGtbJSaZxYqmtd%3D&sp=r&spr=https&sr=b&st=2023-09-19T14%3A47%3A17Z&sv=2019-12-12
Příklad shromážděných JSON
{
"@odata.context" : "/redfish/v1/$metadata#DellRollupStatusCollection.DellRollupStatusCollection",
"@odata.id" : "/redfish/v1/Systems/System.Embedded.1/Oem/Dell/DellRollupStatus",
"@odata.type" : "#DellRollupStatusCollection.DellRollupStatusCollection",
"Description" : "A collection of DellRollupStatus resource",
"Members" :
[
{
"@odata.context" : "/redfish/v1/$metadata#DellRollupStatus.DellRollupStatus",
"@odata.id" : "/redfish/v1/Systems/System.Embedded.1/Oem/Dell/DellRollupStatus/iDRAC.Embedded.1_0x23_SubSystem.1_0x23_Current",
"@odata.type" : "#DellRollupStatus.v1_0_0.DellRollupStatus",
"CollectionName" : "CurrentRollupStatus",
"Description" : "Represents the subcomponent roll-up statuses.",
"Id" : "iDRAC.Embedded.1_0x23_SubSystem.1_0x23_Current",
"InstanceID" : "iDRAC.Embedded.1#SubSystem.1#Current",
"Name" : "DellRollupStatus",
"RollupStatus" : "Ok",
"SubSystem" : "Current"
},
{
"@odata.context" : "/redfish/v1/$metadata#DellRollupStatus.DellRollupStatus",
"@odata.id" : "/redfish/v1/Systems/System.Embedded.1/Oem/Dell/DellRollupStatus/iDRAC.Embedded.1_0x23_SubSystem.1_0x23_Voltage",
"@odata.type" : "#DellRollupStatus.v1_0_0.DellRollupStatus",
"CollectionName" : "VoltageRollupStatus",
"Description" : "Represents the subcomponent roll-up statuses.",
"Id" : "iDRAC.Embedded.1_0x23_SubSystem.1_0x23_Voltage",
"InstanceID" : "iDRAC.Embedded.1#SubSystem.1#Voltage",
"Name" : "DellRollupStatus",
"RollupStatus" : "Ok",
"SubSystem" : "Voltage"
},
[..snip..]
Generování sestavy CVE clusteru
Data ohrožení zabezpečení se shromažďují pomocí cluster-cve-report
příkazu a formátují se jako JSON do {year}-{month}-{day}-nexus-cluster-vulnerability-report.json
. Soubor JSON se nachází v souboru ZIP extrahování dat umístěném v účtu úložiště. Shromážděná data zahrnují data ohrožení zabezpečení na image kontejneru v clusteru.
Tento příklad spustí cluster-cve-report
příkaz bez argumentů.
Poznámka:
Cílový počítač musí být uzel řídicí roviny nebo se akce nespustí.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"command":"cluster-cve-report"}]' \
--limit-time-seconds 600
cluster-cve-report
Výstup
====Action Command Output====
Nexus cluster vulnerability report saved.
================================
Script execution result can be found in storage account:
https://cmkfjft8twwpst.blob.core.windows.net/bmm-run-command-output/20b217b5-ea38-4394-9db1-21a0d392eff0-action-bmmdataextcmd.tar.gz?se=2023-09-19T18%3A47%3A17Z&sig=ZJcsNoBzvOkUNL0IQ3XGtbJSaZxYqmtd%3D&sp=r&spr=https&sr=b&st=2023-09-19T14%3A47%3A17Z&sv=2019-12-12
Schéma sestavy CVE
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Vulnerability Report",
"type": "object",
"properties": {
"metadata": {
"type": "object",
"properties": {
"dateRetrieved": {
"type": "string",
"format": "date-time",
"description": "The date and time when the data was retrieved."
},
"platform": {
"type": "string",
"description": "The name of the platform."
},
"resource": {
"type": "string",
"description": "The name of the resource."
},
"runtimeVersion": {
"type": "string",
"description": "The version of the runtime."
},
"managementVersion": {
"type": "string",
"description": "The version of the management software."
},
"vulnerabilitySummary": {
"type": "object",
"properties": {
"criticalCount": {
"type": "integer",
"description": "Number of critical vulnerabilities."
},
"highCount": {
"type": "integer",
"description": "Number of high severity vulnerabilities."
},
"mediumCount": {
"type": "integer",
"description": "Number of medium severity vulnerabilities."
},
"lowCount": {
"type": "integer",
"description": "Number of low severity vulnerabilities."
},
"noneCount": {
"type": "integer",
"description": "Number of vulnerabilities with no severity."
},
"unknownCount": {
"type": "integer",
"description": "Number of vulnerabilities with unknown severity."
}
},
"required": ["criticalCount", "highCount", "mediumCount", "lowCount", "noneCount", "unknownCount"]
}
},
"required": ["dateRetrieved", "platform", "resource", "runtimeVersion", "managementVersion", "vulnerabilitySummary"]
},
"containers": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"namespace": {
"type": "string",
"description": "The namespace of the container."
},
"digest": {
"type": "string",
"description": "The digest of the container image."
},
"os": {
"type": "object",
"properties": {
"family": {
"type": "string",
"description": "The family of the operating system."
}
},
"required": ["family"]
},
"summary": {
"type": "object",
"properties": {
"criticalCount": {
"type": "integer",
"description": "Number of critical vulnerabilities in this container."
},
"highCount": {
"type": "integer",
"description": "Number of high severity vulnerabilities in this container."
},
"lowCount": {
"type": "integer",
"description": "Number of low severity vulnerabilities in this container."
},
"mediumCount": {
"type": "integer",
"description": "Number of medium severity vulnerabilities in this container."
},
"noneCount": {
"type": "integer",
"description": "Number of vulnerabilities with no severity in this container."
},
"unknownCount": {
"type": "integer",
"description": "Number of vulnerabilities with unknown severity in this container."
}
},
"required": ["criticalCount", "highCount", "lowCount", "mediumCount", "noneCount", "unknownCount"]
},
"vulnerabilities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Title of the vulnerability."
},
"vulnerabilityID": {
"type": "string",
"description": "Identifier of the vulnerability."
},
"fixedVersion": {
"type": "string",
"description": "The version in which the vulnerability is fixed."
},
"installedVersion": {
"type": "string",
"description": "The currently installed version."
},
"referenceLink": {
"type": "string",
"format": "uri",
"description": "Link to the vulnerability details."
},
"publishedDate": {
"type": "string",
"format": "date-time",
"description": "The date when the vulnerability was published."
},
"score": {
"type": "number",
"description": "The CVSS score of the vulnerability."
},
"severity": {
"type": "string",
"description": "The severity level of the vulnerability."
},
"resource": {
"type": "string",
"description": "The resource affected by the vulnerability."
},
"target": {
"type": "string",
"description": "The target of the vulnerability."
},
"packageType": {
"type": "string",
"description": "The type of the package."
},
"exploitAvailable": {
"type": "boolean",
"description": "Indicates if an exploit is available for the vulnerability."
}
},
"required": ["title", "vulnerabilityID", "fixedVersion", "installedVersion", "referenceLink", "publishedDate", "score", "severity", "resource", "target", "packageType", "exploitAvailable"]
}
}
},
"required": ["namespace", "digest", "os", "summary", "vulnerabilities"]
}
}
}
},
"required": ["metadata", "containers"]
}
Podrobnosti o datech CVE
Data CVE se aktualizují na image kontejneru každých 24 hodin nebo když dojde ke změně prostředku Kubernetes odkazujícího na image.
Shromažďování verzí Helmu
Data verze Helm se shromažďují pomocí collect-helm-releases
příkazu a formátují se jako json do {year}-{month}-{day}-helm-releases.json
. Soubor JSON se nachází v souboru ZIP extrahování dat umístěném v účtu úložiště. Shromážděná data zahrnují všechny informace o verzi helmu z clusteru, které se skládají ze standardních dat vrácených při spuštění příkazu helm list
.
Tento příklad spustí collect-helm-releases
příkaz bez argumentů.
Poznámka:
Cílový počítač musí být uzel řídicí roviny nebo se akce nespustí.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"command":"collect-helm-releases"}]' \
--limit-time-seconds 600
collect-helm-releases
Výstup
====Action Command Output====
Helm releases report saved.
================================
Script execution result can be found in storage account:
https://cmcr5xp3mbn7st.blob.core.windows.net/bmm-run-command-output/a29dcbdb-5524-4172-8b55-88e0e5ec93ff-action-bmmdataextcmd.tar.gz?se=2024-10-30T02%3A09%3A54Z&sig=v6cjiIDBP9viEijs%2B%2BwJDrHIAbLEmuiVmCEEDHEi%2FEc%3D&sp=r&spr=https&sr=b&st=2024-10-29T22%3A09%3A54Z&sv=2023-11-03
Schéma verze Helm
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"metadata": {
"type": "object",
"properties": {
"dateRetrieved": {
"type": "string"
},
"platform": {
"type": "string"
},
"resource": {
"type": "string"
},
"clusterId": {
"type": "string"
},
"runtimeVersion": {
"type": "string"
},
"managementVersion": {
"type": "string"
}
},
"required": [
"clusterId",
"dateRetrieved",
"managementVersion",
"platform",
"resource",
"runtimeVersion"
]
},
"helmReleases": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"namespace": {
"type": "string"
},
"revision": {
"type": "string"
},
"updated": {
"type": "string"
},
"status": {
"type": "string"
},
"chart": {
"type": "string"
},
"app_version": {
"type": "string"
}
},
"required": [
"app_version",
"chart",
"name",
"namespace",
"revision",
"status",
"updated"
]
}
}
},
"required": [
"helmReleases",
"metadata"
]
}
Shromažďování výstupu stavu systemctl
Stav služby se shromažďuje pomocí platform-services-status
příkazu. Výstup je ve formátu prostého textu a vrátí přehled stavu služeb na hostiteli a systemctl status
pro každou nalezenou službu.
Tento příklad spustí platform-services-status
příkaz bez argumentů.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "clusete_MRG" \
--subscription "subscription" \
--commands '[{"command":"platform-services-status"}]' \
--limit-time-seconds 600
--output-directory "/path/to/local/directory"
platform-services-status
Výstup
====Action Command Output====
UNIT LOAD ACTIVE SUB DESCRIPTION
aods-infra-vf-config.service not-found inactive dead aods-infra-vf-config.service
aods-pnic-config-infra.service not-found inactive dead aods-pnic-config-infra.service
aods-pnic-config-workload.service not-found inactive dead aods-pnic-config-workload.service
arc-unenroll-file-semaphore.service loaded active exited Arc-unenrollment upon shutdown service
atop-rotate.service loaded inactive dead Restart atop daemon to rotate logs
atop.service loaded active running Atop advanced performance monitor
atopacct.service loaded active running Atop process accounting daemon
audit.service loaded inactive dead Audit service
auditd.service loaded active running Security Auditing Service
azurelinux-sysinfo.service loaded inactive dead Azure Linux Sysinfo Service
blk-availability.service loaded inactive dead Availability of block devices
[..snip..]
-------
● arc-unenroll-file-semaphore.service - Arc-unenrollment upon shutdown service
Loaded: loaded (/etc/systemd/system/arc-unenroll-file-semaphore.service; enabled; vendor preset: enabled)
Active: active (exited) since Tue 2024-11-12 06:33:40 UTC; 11h ago
Main PID: 11663 (code=exited, status=0/SUCCESS)
CPU: 5ms
Nov 12 06:33:39 rack1compute01 systemd[1]: Starting Arc-unenrollment upon shutdown service...
Nov 12 06:33:40 rack1compute01 systemd[1]: Finished Arc-unenrollment upon shutdown service.
-------
○ atop-rotate.service - Restart atop daemon to rotate logs
Loaded: loaded (/usr/lib/systemd/system/atop-rotate.service; static)
Active: inactive (dead)
TriggeredBy: ● atop-rotate.timer
[..snip..]
Zobrazení výstupu
Příkaz poskytuje odkaz (pokud používáte úložiště správce clusteru) nebo jiný příkaz (pokud používáte úložiště poskytnuté uživatelem) ke stažení úplného výstupu. Soubor tar.gz obsahuje také výstupy zkomprimovaného příkazu extrakce souboru. Stáhněte výstupní soubor z objektu blob úložiště do místního adresáře zadáním cesty k adresáři v volitelném argumentu --output-directory
.
Upozorňující
Použití argumentu --output-directory
přepíše všechny soubory v místním adresáři, které mají stejný název jako nově vytvořené soubory.
Poznámka:
Účet úložiště může být uzamčený 403 This request is not authorized to perform this operation.
kvůli omezením sítí nebo brány firewall. Pokyny k ověření přístupu najdete v částech úložiště správce clusteru nebo uživatelem spravovaného úložiště .