Solucionar problemas de máquinas bare metal usando o az networkcloud baremetalmachine run-data-extract comando

Pode haver situações em que um usuário precise investigar e resolver problemas com uma máquina bare metal local. O Azure Operator Nexus fornece um conjunto prescrito de comandos de extração de dados por meio az networkcloud baremetalmachine run-data-extractdo . Esses comandos permitem que os usuários obtenham dados de diagnóstico de uma máquina bare metal.

O comando produz um arquivo de saída contendo os resultados da extração de dados. Por padrão, os dados são enviados para a conta de armazenamento do Gerenciador de Clusters. Há também um método de visualização onde os usuários podem configurar o recurso de cluster com uma conta de armazenamento e identidade que tem acesso à conta de armazenamento para receber a saída.

Pré-requisitos

  • Este artigo pressupõe que a interface de linha de comando do Azure e a extensão de interface de linha de networkcloud comando estejam instaladas. Para obter mais informações, consulte Como instalar extensões CLI.
  • A máquina bare metal alvo está ligada e pronta.
  • A sintaxe para esses comandos é baseada na versão 0.3.0+ da az networkcloud CLI.
  • Obtenha o nome do grupo de Recursos Gerenciados por Cluster (cluster_MRG) que você criou para o recurso de Cluster.

Verificar o acesso à conta de armazenamento do Cluster Manager

Nota

O método de saída da conta de armazenamento do Gerenciador de Cluster será preterido no futuro assim que a integração do cluster aos Serviços Confiáveis estiver concluída e a opção de armazenamento gerenciado pelo usuário for totalmente suportada.

Se estiver usando o método de armazenamento do Gerenciador de Clusters, verifique se você tem acesso à conta de armazenamento do Gerenciador de Clusters:

  1. No portal do Azure, navegue até a conta de Armazenamento do Gerenciador de Clusters.
  2. Nos detalhes da conta de armazenamento, selecione Navegador de armazenamento no menu de navegação do lado esquerdo.
  3. Nos detalhes do navegador de armazenamento, selecione em Contêineres de Blob.
  4. Se você encontrar um 403 This request is not authorized to perform this operation. ao acessar a conta de armazenamento, as configurações de firewall da conta de armazenamento precisam ser atualizadas para incluir o endereço IP público.
  5. Solicite acesso criando um tíquete de suporte via Portal no recurso Gerenciador de Cluster. Forneça o endereço IP público que requer acesso.

PREVIEW: Enviar saída de comando para uma conta de armazenamento especificada pelo usuário

Importante

Observe que esse método de especificar uma conta de armazenamento do usuário para a saída do comando está em visualização. Esse método só deve ser usado com contas de armazenamento de usuário que não tenham firewall habilitado. Se o seu ambiente exigir que o firewall da conta de armazenamento esteja habilitado, use o método de saída existente do Gerenciador de Clusters.

Criar e configurar recursos de armazenamento

  1. Crie uma conta de armazenamento ou identifique uma conta de armazenamento existente que você deseja usar. Consulte Criar uma conta de armazenamento do Azure.
  2. Crie um contêiner de armazenamento de blob na conta de armazenamento. Consulte Criar um contêiner.
  3. Atribua a função "Storage Blob Data Contributor" a usuários e identidades gerenciadas que precisam de acesso à saída run-data-extract.
    1. Veja Atribuir uma função do Azure para acesso aos dados de blobs. A função também deve ser atribuída a uma identidade gerenciada atribuída pelo usuário ou à própria identidade gerenciada atribuída ao sistema do cluster.
    2. Para obter mais informações sobre identidades gerenciadas, consulte Identidades gerenciadas para recursos do Azure.
    3. Se estiver usando a identidade atribuída ao sistema do Cluster, a identidade atribuída ao sistema precisará ser adicionada ao cluster antes que possa receber acesso.
    4. Ao atribuir uma função à identidade atribuída ao sistema do cluster, certifique-se de selecionar o recurso com o tipo "Cluster (Operator Nexus)".

Configurar o cluster para usar uma identidade gerenciada atribuída pelo usuário para acesso ao armazenamento

Use este comando para criar um cluster com uma conta de armazenamento gerenciado pelo usuário e identidade atribuída pelo usuário. Observe que este exemplo é um comando abreviado que apenas destaca os campos pertinentes para adicionar o armazenamento gerenciado pelo usuário. Não é o comando full cluster create.

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>"

Use este comando para configurar um cluster existente para uma conta de armazenamento fornecida pelo usuário e identidade atribuída pelo usuário. O comando update também pode ser usado para alterar o local e a identidade da conta de armazenamento, se necessário.

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>"

Configurar o cluster para usar uma identidade gerenciada atribuída ao sistema para acesso ao armazenamento

Use este comando para criar um cluster com uma conta de armazenamento gerenciado pelo usuário e uma identidade atribuída ao sistema. Observe que este exemplo é um comando abreviado que apenas destaca os campos pertinentes para adicionar o armazenamento gerenciado pelo usuário. Não é o comando full cluster create.

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>"

Use este comando para configurar um cluster existente para uma conta de armazenamento fornecida pelo usuário e para usar sua própria identidade atribuída ao sistema. O comando update também pode ser usado para alterar o local da conta de armazenamento.

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>"

Para alterar o cluster de uma identidade atribuída pelo usuário para uma identidade atribuída pelo sistema, o CommandOutputSettings deve primeiro ser limpo usando o comando na próxima seção e, em seguida, definido usando esse comando.

Limpe CommandOutputSettings do cluster

O CommandOutputSettings pode ser limpo, direcionando a saída run-data-extract de volta para o armazenamento do gerenciador de cluster. No entanto, não é recomendado, pois é menos seguro, e a opção será removida em uma versão futura.

No entanto, o CommandOutputSettings precisa ser limpo se mudar de uma identidade atribuída pelo usuário para uma identidade atribuída pelo sistema.

Use este comando para limpar o 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}}'

Exibir o ID principal da identidade gerenciada

O ID do recurso de identidade pode ser encontrado selecionando "Visualização JSON" no recurso de identidade; o ID está na parte superior do painel que aparece. A URL do contêiner pode ser encontrada na guia Configurações -> Propriedades do recurso de contêiner.

A CLI também pode ser usada para exibir a identidade e os dados de ID principal associados dentro do cluster.

Exemplo:

az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>

Exemplo de identidade atribuída ao sistema:

    "identity": {
        "principalId": "2cb564c1-b4e5-4c71-bbc1-6ae259aa5f87",
        "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
        "type": "SystemAssigned"
    },

Exemplo de identidade atribuída pelo usuário:

    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
                "clientId": "e67dd610-99cf-4853-9fa0-d236b214e984",
                "principalId": "8e6d23d6-bb6b-4cf3-a00f-4cd640ab1a24"
            }
        }
    },

Executar um comando de execução

O comando run data extract executa um ou mais scripts predefinidos para extrair dados de uma máquina bare metal.

Aviso

A Microsoft não fornece nem oferece suporte a chamadas de API do Operator Nexus que esperam que o nome de usuário e/ou senha de texto simples sejam fornecidos. Por favor, note que todos os valores enviados serão registrados e são considerados segredos expostos, que devem ser alternados e revogados. O método documentado da Microsoft para usar segredos com segurança é armazená-los em um Cofre de Chaves do Azure, se você tiver dúvidas ou preocupações específicas, envie uma solicitação por meio do Portal do Azure.

A lista atual de comandos suportados são

A sintaxe do comando é:

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>"

Especifique vários comandos usando o formato json na --commands opção. Cada command um especifica comandos e argumentos. Para um comando com vários argumentos, forneça como uma lista para o arguments parâmetro. Consulte Taquigrafia da CLI do Azure para obter instruções sobre como construir a --commands estrutura.

Esses comandos podem ser de longa execução, então a recomendação é definir --limit-time-seconds para pelo menos 600 segundos (10 minutos). A Debug opção ou a execução de várias extrações pode levar mais de 10 minutos.

Na resposta, a operação é executada de forma assíncrona e retorna um código de status HTTP de 202. Consulte a seção Exibindo a saída para obter detalhes sobre como acompanhar a conclusão do comando e exibir o arquivo de saída.

Recolha de Dados de Suporte de Hardware

Este exemplo executa o hardware-support-data-collection comando e obtém SysInfo e TTYLog registra no servidor Dell. O script executa um racadm supportassist collect comando na máquina bare metal designada. O arquivo tar.gz resultante contém as saídas do arquivo de comando de extração compactado em hardware-support-data-<timestamp>.zip.

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 Realização

====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

Exemplo de lista de arquivos de suporte de hardware coletados

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

Coletar informações do agente MDE

Os dados são coletados com o mde-agent-information comando e formatados como JSON para /hostfs/tmp/runcommand/mde-agent-information.json. O arquivo JSON é encontrado no arquivo zip de extração de dados localizado na conta de armazenamento. O script executa uma sequência de mdatp comandos na máquina bare metal designada.

Este exemplo executa o mde-agent-information comando sem argumentos.

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 Realização

====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

Exemplo de objeto JSON coletado

{
  "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
    }
}

Coletar diagnósticos de suporte MDE

Os dados coletados do mde-support-diagnostics comando usam a ferramenta MDE Client Analyzer para agrupar informações de comandos e arquivos de mdatp log relevantes. O arquivo de conta tgz de armazenamento contém um zip arquivo chamado mde-support-diagnostics-<hostname>.zip. O zip deve ser enviado junto com quaisquer solicitações de suporte para garantir que as equipes de suporte possam usar os logs para solução de problemas e análise de causa raiz, se necessário.

Este exemplo executa o mde-support-diagnostics comando sem argumentos.

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 Realização

====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

Depois de baixar o arquivo de resultado da execução, os arquivos de suporte podem ser descompactados para análise.

Exemplo de lista de informações coletadas pelo MDE Client Analyzer

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

Status do pacote cumulativo de hardware

Os dados são coletados com o hardware-rollup-status comando e formatados como JSON para /hostfs/tmp/runcommand/rollupStatus.json. O arquivo JSON é encontrado no arquivo zip de extração de dados localizado na conta de armazenamento. Os dados coletados mostram a integridade dos subsistemas da máquina.

Este exemplo executa o hardware-rollup-status comando sem argumentos.

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 Realização

====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

Exemplo JSON coletado

{
	"@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..]

Gerar relatório CVE de cluster

Os dados de vulnerabilidade são coletados com o cluster-cve-report comando e formatados como JSON para {year}-{month}-{day}-nexus-cluster-vulnerability-report.json. O arquivo JSON é encontrado no arquivo zip de extração de dados localizado na conta de armazenamento. Os dados coletados incluem dados de vulnerabilidade por imagem de contêiner no cluster.

Este exemplo executa o cluster-cve-report comando sem argumentos.

Nota

A máquina de destino deve ser um nó do plano de controle ou a ação não será executada.

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 Realização

====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

Esquema de relatório 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"]
}

Detalhes dos dados CVE

Os dados CVE são atualizados por imagem de contêiner a cada 24 horas ou quando há uma alteração no recurso do Kubernetes fazendo referência à imagem.

Visualizando a saída

O comando fornece um link (se estiver usando o armazenamento do gerenciador de cluster) ou outro comando (se estiver usando o armazenamento fornecido pelo usuário) para baixar a saída completa. O arquivo tar.gz também contém as saídas do arquivo de comando de extração compactada. Baixe o arquivo de saída do blob de armazenamento para um diretório local especificando o caminho do diretório no argumento --output-directoryopcional .

Aviso

O uso do --output-directory argumento substituirá todos os arquivos no diretório local que tenham o mesmo nome dos novos arquivos que estão sendo criados.

Nota

A conta de armazenamento pode ser bloqueada, resultando em 403 This request is not authorized to perform this operation. devido a restrições de rede ou firewall. Consulte as seções Armazenamento do gerenciador de cluster ou Armazenamento gerenciado pelo usuário para obter os procedimentos para verificar o acesso.