az networkcloud baremetalmachine run-data-extract
명령을 사용하여 운영 체제 미설치 컴퓨터 문제 해결
사용자가 온-프레미스 운영 체제 미설치 컴퓨터와 관련된 문제를 조사하고 해결해야 하는 상황이 있을 수 있습니다. Azure Operator Nexus는 az networkcloud baremetalmachine run-data-extract
를 통해 정해진 데이터 추출 명령 집합을 제공합니다. 이러한 명령을 사용하면 사용자가 운영 체제 미설치 컴퓨터에서 진단 데이터를 얻을 수 있습니다.
이 명령은 데이터 추출 결과를 포함하는 출력 파일을 생성합니다. 기본적으로 데이터는 Cluster Manager 스토리지 계정으로 전송됩니다. 사용자가 출력을 수신하기 위해 스토리지 계정에 액세스할 수 있는 스토리지 계정 및 ID를 사용하여 클러스터 리소스를 구성할 수 있는 미리 보기 메서드도 있습니다.
필수 조건
- 이 문서에서는 Azure 명령줄 인터페이스 및 명령줄 인터페이스 확장이
networkcloud
설치되어 있다고 가정합니다. 자세한 내용은 CLI 확장 설치 방법을 참조하세요. - 대상 베어 메탈 머신이 켜지고 준비되었습니다.
- 이러한 명령에 대한 구문은
az networkcloud
CLI의 0.3.0 이상 버전을 기반으로 합니다. - 클러스터 리소스에 대해 만든 클러스터 관리되는 리소스 그룹 이름(cluster_MRG)을 가져옵니다.
사용자 지정 스토리지 계정에 명령 출력 보내기
스토리지 리소스 만들기 및 구성
- 스토리지 계정을 만들거나 사용하려는 기존 스토리지 계정을 식별합니다. Azure Storage 계정 만들기를 참조 하세요.
- 스토리지 계정에 Blob Storage 컨테이너를 만듭니다. 컨테이너 만들기를 참조하세요.
- Run-data-extract 출력에 액세스해야 하는 사용자 및 관리 ID에 "Storage Blob 데이터 기여자" 역할을 할당합니다.
- Blob 데이터에 액세스하기 위한 Azure 역할 할당을 참조하세요. 또한 역할은 사용자 할당 관리 ID 또는 클러스터의 자체 시스템 할당 관리 ID에 할당되어야 합니다.
- 관리 ID에 대한 자세한 내용은 Azure 리소스에 대한 관리 ID를 참조하세요.
- 클러스터의 시스템 할당 ID를 사용하는 경우 액세스 권한을 부여하기 전에 시스템 할당 ID를 클러스터에 추가해야 합니다.
- 클러스터의 시스템 할당 ID에 역할을 할당할 때 "클러스터(운영자 Nexus)" 형식의 리소스를 선택해야 합니다.
스토리지 액세스에 사용자 할당 관리 ID를 사용하도록 클러스터 구성
이 명령을 사용하여 사용자 관리 스토리지 계정 및 사용자 할당 ID를 사용하여 클러스터를 만듭니다. 이 예제는 사용자 관리 스토리지를 추가하기 위해 관련 필드를 강조 표시하는 약어 명령입니다. 전체 클러스터 만들기 명령이 아닙니다.
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>"
이 명령을 사용하여 사용자가 제공한 스토리지 계정 및 사용자 할당 ID에 대한 기존 클러스터를 구성합니다. 필요한 경우 업데이트 명령을 사용하여 스토리지 계정 위치 및 ID를 변경할 수도 있습니다.
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>"
스토리지 액세스에 시스템 할당 관리 ID를 사용하도록 클러스터 구성
이 명령을 사용하여 사용자 관리 스토리지 계정 및 시스템 할당 ID를 사용하여 클러스터를 만듭니다. 이 예제는 사용자 관리 스토리지를 추가하기 위해 관련 필드를 강조 표시하는 약어 명령입니다. 전체 클러스터 만들기 명령이 아닙니다.
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>"
이 명령을 사용하여 사용자가 제공한 스토리지 계정에 대한 기존 클러스터를 구성하고 자체 시스템 할당 ID를 사용합니다. 업데이트 명령을 사용하여 스토리지 계정 위치를 변경할 수도 있습니다.
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>"
클러스터를 사용자 할당 ID에서 시스템 할당 ID로 변경하려면 먼저 다음 섹션의 명령을 사용하여 CommandOutputSettings를 지우고 이 명령을 사용하여 설정해야 합니다.
클러스터의 CommandOutputSettings 지우기
CommandOutputSettings를 지울 수 있으며 실행 데이터 추출 출력을 클러스터 관리자의 스토리지로 다시 전달합니다. 그러나 보안이 떨어지므로 권장되지 않으며 향후 릴리스에서 옵션이 제거될 예정입니다.
그러나 사용자 할당 ID에서 시스템 할당 ID로 전환하는 경우 CommandOutputSettings를 지워야 합니다.
이 명령을 사용하여 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}}'
관리 ID의 보안 주체 ID 보기
ID 리소스 ID는 ID 리소스에서 "JSON 보기"를 선택하여 찾을 수 있습니다. ID가 표시되는 패널의 맨 위에 있습니다. 컨테이너 URL은 컨테이너 리소스의 설정 -> 속성 탭에서 찾을 수 있습니다.
CLI를 사용하여 클러스터 내에서 ID 및 연결된 보안 주체 ID 데이터를 볼 수도 있습니다.
예시:
az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>
시스템 할당 ID 예제:
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
},
사용자 할당 ID 예제:
"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"
}
}
},
사용되지 않는 방법: Cluster Manager 스토리지 계정에 대한 액세스 확인
Important
Cluster Manager 스토리지 계정은 2025년 4월에 제거될 수 있습니다. 명령 출력에 현재 이 메서드를 사용하는 경우 사용자가 제공한 스토리지 계정을 사용하도록 변환하는 것이 좋습니다.
Cluster Manager 스토리지 메서드를 사용하는 경우 클러스터 관리자의 스토리지 계정에 액세스할 수 있는지 확인합니다.
- Azure Portal에서 클러스터 관리자의 스토리지 계정으로 이동합니다.
- 저장소 계정 세부정보의 왼쪽 탐색 메뉴에서 스토리지 브라우저를 선택합니다.
- 스토리지 브라우저 세부정보에서 BLOB 컨테이너를 선택합니다.
- 스토리지 계정에 액세스하는 동안
403 This request is not authorized to perform this operation.
이(가) 발생하는 경우 공용 IP 주소를 포함하도록 스토리지 계정의 방화벽 설정을 업데이트해야 합니다. - 클러스터 관리자 리소스에서 포털을 통해 지원 티켓을 만들어 액세스를 요청합니다. 액세스가 필요한 공용 IP 주소를 제공합니다.
run-data-extract 명령 실행
run data extract 명령은 하나 이상의 미리 정의된 스크립트를 실행하여 운영 체제 미설치 컴퓨터에서 데이터를 추출합니다.
Warning
Microsoft는 일반 텍스트 사용자 이름 및/또는 암호가 제공될 것으로 예상되는 운영자 Nexus API 호출을 제공하거나 지원하지 않습니다. 전송된 모든 값은 기록되며 노출된 비밀로 간주되며, 이는 회전 및 해지되어야 합니다. 비밀을 안전하게 사용하기 위한 Microsoft 문서화된 방법은 비밀을 Azure Key Vault에 저장하는 것입니다. 특정 질문이나 문제가 있는 경우 Azure Portal을 통해 요청을 제출합니다.
지원되는 명령의 현재 목록은 다음과 같습니다.
Dell 문제 해결을 위한 SupportAssist/TSR 컬렉션
명령 이름:hardware-support-data-collection
인수: 요청된 로그 유형SysInfo
- 시스템 정보TTYLog
- Storage TTYLog 데이터Debug
- 디버그 로그
MDE(엔드포인트용 Microsoft Defender) 에이전트 정보 수집
명령 이름:mde-agent-information
인수: 없음MDE 진단 지원 로그 수집
명령 이름:mde-support-diagnostics
인수: 없음Dell 하드웨어 롤업 상태 수집
명령 이름:hardware-rollup-status
인수: 없음클러스터 CVE 보고서 생성
명령 이름:cluster-cve-report
인수: 없음Helm 릴리스 수집
명령 이름:collect-helm-releases
인수: 없음출력 수집
systemctl status
명령 이름:platform-services-status
인수: 없음
명령 구문은 다음과 같습니다.
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>"
--commands
옵션에서 json 형식을 사용하여 여러 명령을 지정합니다. 각 command
는 명령과 인수를 지정합니다. 여러 인수가 있는 명령의 경우 arguments
매개 변수에 목록으로 제공합니다. --commands
구조체를 구성하는 방법에 대한 지침은 Azure CLI 약어를 참조하세요.
이러한 명령은 오래 실행될 수 있으므로 --limit-time-seconds
를 최소 600초(10분)로 설정하는 것이 좋습니다. Debug
옵션 또는 여러 추출 실행에는 10분 이상 걸릴 수 있습니다.
응답으로 작업은 비동기적으로 수행되고 HTTP 상태 코드 202를 반환합니다. 명령 완료를 추적하고 출력 파일을 보는 방법에 대한 자세한 내용은 출력 보기 섹션을 참조하세요.
하드웨어 지원 데이터 수집
이 예제에서는 hardware-support-data-collection
명령을 실행하고 Dell Server에서 SysInfo
TTYLog
로그를 가져옵니다. 스크립트는 지정된 운영 체제 미설치 컴퓨터에서 명령을 실행합니다 racadm supportassist collect
. 결과 tar.gz 파일에는 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
출력
====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
수집된 하드웨어 지원 파일 목록 예
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..]
MDE 에이전트 정보 수집
데이터는 mde-agent-information
명령을 사용하여 수집되고 /hostfs/tmp/runcommand/mde-agent-information.json
으로 JSON 형식이 지정됩니다. JSON 파일은 스토리지 계정에 있는 데이터 추출 zip 파일에서 찾을 수 있습니다. 스크립트는 지정된 운영 체제 미설치 컴퓨터에서 명령 시 mdatp
퀀스를 실행합니다.
이 예제에서는 인수 없이 mde-agent-information
명령을 실행합니다.
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
출력
====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
수집된 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
}
}
MDE 지원 진단 수집
mde-support-diagnostics
명령에서 수집된 데이터는 MDE 클라이언트 분석기 도구를 사용하여 mdatp
명령 및 관련 로그 파일의 정보를 묶습니다. 스토리지 계정 tgz
파일에는 .라는 zip
mde-support-diagnostics-<hostname>.zip
파일이 포함되어 있습니다. 필요한 경우 지원 팀이 문제 해결 및 근본 원인 분석을 위해 로그를 사용할 수 있도록 지원 요청과 함께 zip
을 전송해야 합니다.
이 예제에서는 인수 없이 mde-support-diagnostics
명령을 실행합니다.
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
출력
====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
실행 결과 파일을 다운로드한 후에는 분석을 위해 지원 파일의 압축을 풉니다.
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...]
하드웨어 롤업 상태
데이터는 hardware-rollup-status
명령을 사용하여 수집되고 /hostfs/tmp/runcommand/rollupStatus.json
으로 JSON 형식이 지정됩니다. JSON 파일은 스토리지 계정에 있는 데이터 추출 zip 파일에서 찾을 수 있습니다. 수집된 데이터는 컴퓨터 하위 시스템의 상태를 보여 줍니다.
이 예제에서는 인수 없이 hardware-rollup-status
명령을 실행합니다.
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
출력
====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
수집된 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..]
클러스터 CVE 보고서 생성
취약성 데이터는 cluster-cve-report
명령을 사용하여 수집되고 {year}-{month}-{day}-nexus-cluster-vulnerability-report.json
에 JSON 형식으로 지정됩니다. JSON 파일은 스토리지 계정에 있는 데이터 추출 zip 파일에서 찾을 수 있습니다. 수집된 데이터에는 클러스터의 컨테이너 이미지당 취약성 데이터가 포함됩니다.
이 예제에서는 인수 없이 cluster-cve-report
명령을 실행합니다.
참고 항목
대상 컴퓨터는 컨트롤 플레인 노드여야 합니다. 그렇지 않으면 작업이 실행되지 않습니다.
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
출력
====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
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"]
}
CVE 데이터 세부 정보
CVE 데이터는 24시간마다 또는 이미지를 참조하는 Kubernetes 리소스가 변경될 때 컨테이너 이미지별로 새로 고쳐집니다.
Helm 릴리스 수집
Helm 릴리스 데이터는 명령을 사용하여 collect-helm-releases
수집되고 json으로 형식이 지정됩니다 {year}-{month}-{day}-helm-releases.json
. JSON 파일은 스토리지 계정에 있는 데이터 추출 zip 파일에서 찾을 수 있습니다. 수집된 데이터에는 클러스터의 모든 Helm 릴리스 정보가 포함되며, 이 정보는 명령을 helm list
실행할 때 반환되는 표준 데이터로 구성됩니다.
이 예제에서는 인수 없이 collect-helm-releases
명령을 실행합니다.
참고 항목
대상 컴퓨터는 컨트롤 플레인 노드여야 합니다. 그렇지 않으면 작업이 실행되지 않습니다.
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
출력
====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
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"
]
}
Systemctl 상태 출력 수집
서비스 상태는 명령을 사용하여 수집됩니다 platform-services-status
. 출력은 일반 텍스트 형식이며 호스트의 서비스 상태와 찾은 각 서비스에 대한 개요를 systemctl status
반환합니다.
이 예제에서는 인수 없이 platform-services-status
명령을 실행합니다.
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
출력
====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..]
출력 보기
이 명령은 링크(클러스터 관리자 스토리지를 사용하는 경우) 또는 다른 명령(사용자가 제공한 스토리지를 사용하는 경우)을 제공하여 전체 출력을 다운로드합니다. tar.gz 파일에는 압축된 추출 명령 파일 출력도 포함되어 있습니다. 선택적 인수 --output-directory
에 디렉터리 경로를 지정하여 스토리지 BLOB에서 로컬 디렉터리로 출력 파일을 다운로드합니다.
Warning
인수를 --output-directory
사용하면 생성되는 새 파일과 이름이 같은 로컬 디렉터리의 모든 파일을 덮어씁니다.
참고 항목
네트워킹 또는 방화벽 제한으로 인해 스토리지 계정이 잠기고 403 This request is not authorized to perform this operation.
이 발생할 수 있습니다. 액세스를 확인하는 절차는 클러스터 관리자 스토리지 또는 사용자 관리 스토리지 섹션을 참조하세요.