Sdílet prostřednictvím


Ř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ě

  1. 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.
  2. V účtu úložiště vytvořte kontejner úložiště objektů blob. Viz Vytvoření kontejneru.
  3. 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.
    1. 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.
    2. Další informace o spravovaných identitách najdete v tématu Spravované identity pro prostředky Azure.
    3. 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.
    4. 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:

  1. Na webu Azure Portal přejděte do účtu úložiště Správce clusteru.
  2. V podrobnostech účtu úložiště vyberte v navigační nabídce na levé straně prohlížeč úložiště.
  3. V podrobnostech prohlížeče úložiště vyberte kontejnery objektů blob.
  4. 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.
  5. 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ů:

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>.zipsouboru .

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ě .