Résoudre les problèmes de machine nue à l’aide de la commande az networkcloud baremetalmachine run-data-extract

Il existe des situations où un utilisateur doit investiguer et résoudre les problèmes liés à une machine physique (matériel nu) locale. Azure Operator Nexus fournit un ensemble prescrit de commandes d’extraction de données via az networkcloud baremetalmachine run-data-extract. Ces commandes permettent aux utilisateurs d’obtenir des données de diagnostic à partir d’une machine nue.

La commande produit un fichier de sortie contenant les résultats de l’extraction de données. Par défaut, les données sont envoyées au compte de stockage du Gestionnaire de cluster. Il existe également une méthode en préversion où les utilisateurs peuvent configurer la ressource de cluster avec un compte de stockage et une identité ayant accès au compte de stockage pour recevoir la sortie.

Prérequis

  • Cet article suppose que l’interface de ligne de commande Azure et l’extension d’interface de ligne de commande networkcloud sont installées. Pour plus d’informations, consultez Comment installer des extensions CLI.
  • La machine physique (matériel nu) cible est allumée et prête.
  • La syntaxe de ces commandes est basée sur la version 0.3.0+ de l’interface CLI az networkcloud.
  • Obtenez le nom du groupe de ressources managées du cluster (cluster_MRG) que vous avez créé pour la ressource de cluster.

Vérifier l’accès au compte de stockage du Gestionnaire de cluster

Remarque

La méthode de sortie du compte de stockage du Gestionnaire de cluster sera déconseillée à l’avenir, une fois l’intégration du cluster aux services approuvés effectuée, et l’option de stockage géré par l’utilisateur entièrement prise en charge.

Si vous utilisez la méthode de stockage du Gestionnaire de cluster, vérifiez que vous avez accès au compte de stockage du Gestionnaire de cluster :

  1. Dans le portail Azure, accédez au compte de stockage du Gestionnaire de cluster.
  2. Dans les détails du compte de stockage, sélectionnez Navigateur de stockage à partir du menu de navigation sur le côté gauche.
  3. Dans les détails du navigateur de stockage, sélectionnez Conteneurs d’objets blob.
  4. Si vous rencontrez une erreur 403 This request is not authorized to perform this operation. lors de l’accès au compte de stockage, c’est que les paramètres de pare-feu du compte de stockage doivent être mis à jour de façon à inclure l’adresse IP publique.
  5. Demandez l’accès en créant un ticket de support via le portail sur la ressource Gestionnaire de cluster. Fournissez l’adresse IP publique qui nécessite un accès.

PRÉVERSION : Envoyer la sortie d’une commande à un compte de stockage spécifié par l’utilisateur

Important

Notez que cette méthode de spécification d’un compte de stockage utilisateur pour la sortie d’une commande est en préversion. Cette méthode doit être utilisée uniquement avec les comptes de stockage utilisateur pour lesquels le pare-feu n’est pas activé. Si votre environnement nécessite l’activation du pare-feu du compte de stockage, utilisez la méthode de sortie existante du Gestionnaire de cluster.

Créer et configurer des ressources de stockage

  1. Créez un compte de stockage, ou identifiez un compte de stockage existant à utiliser. Consultez Créer un compte Stockage Azure.
  2. Créez un conteneur de stockage d’objets blob dans le compte de stockage. Consultez Créer un conteneur.
  3. Attribuez le rôle « Contributeur aux données Blob du stockage » aux utilisateurs et aux identités managées qui ont besoin d’accéder à la sortie de l’extraction de données.
    1. Consultez Attribuer un rôle Azure pour l’accès aux données d’objet blob. Le rôle doit également être attribué à une identité managée affectée par l’utilisateur, ou à la propre identité managée affectée par le système du cluster.
    2. Pour plus d’informations sur les identités managées, consultez Identités managées pour les ressources Azure.
    3. Si vous utilisez l’identité affectée par le système du cluster, l’identité affectée par le système doit être ajoutée au cluster pour que l’accès puisse lui être octroyé.
    4. Quand vous attribuez un rôle à l’identité affectée par le système du cluster, veillez à sélectionner la ressource avec le type « Cluster (Operator Nexus) ».

Configurer le cluster afin d’utiliser une identité managée affectée par l’utilisateur pour l’accès au stockage

Utilisez cette commande pour créer un cluster avec un compte de stockage géré par l’utilisateur et une identité affectée par l’utilisateur. Notez que cet exemple est une commande abrégée qui met simplement en évidence les champs pertinents pour l’ajout du stockage géré par l’utilisateur. Il ne s’agit pas de la commande complète de création de cluster.

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

Utilisez cette commande afin de configurer un cluster existant pour un compte de stockage fourni par l’utilisateur et une identité affectée par l’utilisateur. La commande de mise à jour peut également être utilisée pour changer l’emplacement et l’identité du compte de stockage si nécessaire.

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

Configurer le cluster afin d’utiliser une identité managée affectée par le système pour l’accès au stockage

Utilisez cette commande pour créer un cluster avec un compte de stockage géré par l’utilisateur et une identité affectée par le système. Notez que cet exemple est une commande abrégée qui met simplement en évidence les champs pertinents pour l’ajout du stockage géré par l’utilisateur. Il ne s’agit pas de la commande complète de création de cluster.

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

Utilisez cette commande afin de configurer un cluster existant pour un compte de stockage fourni par l’utilisateur, et d’utiliser sa propre identité affectée par le système. La commande de mise à jour peut également être utilisée pour changer l’emplacement du compte de stockage.

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

Pour faire passer le cluster d’une identité affectée par l’utilisateur à une identité affectée par le système, vous devez d’abord effacer CommandOutputSettings à l’aide de la commande de la section suivante, puis le définir en utilisant cette commande.

Effacer CommandOutputSettings du cluster

Vous pouvez effacer CommandOutputSettings pour rediriger la sortie de l’extraction de données vers le stockage du Gestionnaire de cluster. Toutefois, cette façon de procéder n’est pas recommandée, car elle est moins sécurisée, et l’option sera supprimée dans une prochaine version.

Toutefois, vous devez effacer CommandOutputSettings si vous passez d’une identité affectée par l’utilisateur à une identité affectée par le système.

Utilisez cette commande pour effacer 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}}'

Voir l’ID de principal de l’identité managée

Vous trouverez l’ID de la ressource d’identité en sélectionnant « Vue JSON » sur la ressource d’identité. L’ID se trouve en haut du panneau qui s’affiche. L’URL du conteneur se trouve sous l’onglet Paramètres -> Propriétés de la ressource de conteneur.

L’interface CLI peut également être utilisée pour voir l’identité et les données d’ID de principal associées au sein du cluster.

Exemple :

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

Exemple d’identité affectée par le système :

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

Exemple d’identité affectée par l’utilisateur :

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

Exécuter Run Command

La commande run data extract exécute un ou plusieurs scripts prédéfinis pour extraire des données d’une machine nue.

Avertissement

Microsoft ne fournit ni ne prend en charge les appels d’API Operator Nexus qui nécessitent que le nom d’utilisateur et/ou le mot de passe en clair soient fournis. Notez que les valeurs envoyées sont journalisées et considérées comme des secrets exposés, qui doivent donc être permutés et révoqués. La méthode documentée par Microsoft pour utiliser des secrets en toute sécurité consiste à les stocker dans un coffre Azure Key Vault. Si vous avez des questions ou des préoccupations spécifiques, envoyez une demande via le portail Azure.

Liste actuelle des commandes prises en charge

Syntaxe de la commande :

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

Spécifiez plusieurs commandes au format json dans l’option --commands. Chaque command spécifie la commande et les arguments. Pour une commande avec plusieurs arguments, fournissez-les sous forme de liste au paramètre arguments. Consultez Syntaxe raccourcie de l’interface Azure CLI pour obtenir des instructions sur la construction de la structure --commands.

L’exécution de ces commandes peut être longue, c’est pourquoi la recommandation est de définir --limit-time-seconds sur au moins 600 secondes (10 minutes). L’option Debug ou l’exécution de plusieurs extraits risquent de prendre plus de 10 minutes.

Dans la réponse, l’opération a lieu de manière asynchrone et retourne un code d’état HTTP de 202. Consultez la section Affichage de la sortie pour plus de détails sur la façon de suivre la complétion des commandes et d’afficher le fichier de sortie.

Collecte de données de support matériel

Cet exemple exécute la commande hardware-support-data-collection et obtient les journaux SysInfo et TTYLog du serveur Dell. Le script exécute une commande racadm supportassist collect sur la machine physique (matériel nu) désignée. Le fichier tar.gz résultant contient les sorties du fichier de commande d’extraction compressé dans 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

Sortie de hardware-support-data-collection

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

Liste d’exemples de fichiers de support matériel collectés

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

Collecter les informations de l’agent MDE

Les données sont collectées avec la commande mde-agent-information et converties au format JSON en /hostfs/tmp/runcommand/mde-agent-information.json. Le fichier JSON se trouve dans le fichier zip d’extraction de données situé dans le compte de stockage. Le script exécute une séquence de commandes mdatp sur la machine physique (matériel nu) désignée.

Cet exemple exécute la commande mde-agent-information sans argument.

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "cluster_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"mde-agent-information"}]' \
  --limit-time-seconds 600

Sortie de mde-agent-information

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

Exemple d’objet JSON collecté

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

Collecter les diagnostics de support MDE

Les données collectées de la commande mde-support-diagnostics utilisent l’outil MDE Client Analyzer pour regrouper les informations des commandes mdatp et des fichiers journaux appropriés. Le fichier tgz du compte de stockage contient un fichier zip nommé mde-support-diagnostics-<hostname>.zip. Le zip doit être envoyé avec toutes les demandes de support afin de vous assurer que les équipes de support peuvent utiliser les journaux pour la résolution des problèmes et l’analyse de la cause racine, si nécessaire.

Cet exemple exécute la commande mde-support-diagnostics sans argument.

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "cluster_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"mde-support-diagnostics"}]' \
  --limit-time-seconds 600

Sortie de mde-support-diagnostics

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

Une fois que vous avez téléchargé le fichier de résultat d’exécution, vous pouvez décompresser les fichiers de support à des fins d’analyse.

Exemple de liste d’informations collectées par l’outil 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...]

État du cumul matériel

Les données sont collectées avec la commande hardware-rollup-status et converties au format JSON en /hostfs/tmp/runcommand/rollupStatus.json. Le fichier JSON se trouve dans le fichier zip d’extraction de données situé dans le compte de stockage. Les données collectées indiquent l’intégrité des sous-systèmes de la machine.

Cet exemple exécute la commande hardware-rollup-status sans argument.

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "clusete_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"hardware-rollup-status"}]' \
  --limit-time-seconds 600

Sortie de hardware-rollup-status

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

Exemple de JSON collecté

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

Générer un rapport CVE de cluster

Les données de vulnérabilité sont collectées avec la commande cluster-cve-report et converties au format JSON en {year}-{month}-{day}-nexus-cluster-vulnerability-report.json. Le fichier JSON se trouve dans le fichier zip d’extraction de données situé dans le compte de stockage. Les données collectées incluent les données de vulnérabilité par image conteneur dans le cluster.

Cet exemple exécute la commande cluster-cve-report sans argument.

Remarque

L’ordinateur cible doit être un nœud de plan de contrôle. Sinon, l’action n’est pas exécutée.

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "cluster_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"cluster-cve-report"}]' \
  --limit-time-seconds 600

Sortie de cluster-cve-report

====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 de rapport 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"]
}

Détails des données CVE

Les données CVE sont actualisées par image conteneur toutes les 24 heures, ou en cas de changement de la ressource Kubernetes référençant l’image.

Visualisation de la sortie

La commande fournit un lien (si vous utilisez le stockage du Gestionnaire de cluster) ou une autre commande (si vous utilisez le stockage fourni par l’utilisateur) pour télécharger la sortie complète. Le fichier tar.gz contient aussi les sorties du fichier de commande d’extraction compressé. Téléchargez le fichier de sortie à partir du blob de stockage dans un répertoire local en spécifiant le chemin du répertoire dans l’argument facultatif --output-directory.

Avertissement

L’utilisation de l’argument --output-directory remplace tous les fichiers du répertoire local qui portent le même nom que les fichiers créés.

Remarque

Le compte de stockage peut être verrouillé et entraîner une erreur 403 This request is not authorized to perform this operation. en raison de restrictions du réseau ou du pare-feu. Consultez les sections relatives au stockage du Gestionnaire de cluster ou au stockage géré par l’utilisateur pour connaître les procédures de vérification de l’accès.