Consulta da lista de vulnerabilidades
Função
Essa API é usada para consultar a lista de vulnerabilidades detectadas.
Método de chamada
Para obter detalhes, consulte Chamada de APIs.
URI
GET /v5/{project_id}/vulnerability/vulnerabilities
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
project_id |
Sim |
String |
ID do projeto Mínimo: 1 Máximo: 256 |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
enterprise_project_id |
Não |
String |
ID do projeto empresarial. O valor 0 indica o projeto empresarial padrão. Para consultar todos os projetos empresariais, defina este parâmetro como all_granted_eps. Padrão: 0 Mínimo: 0 Máximo: 256 |
type |
Não |
String |
Tipo de vulnerabilidade. As opções são as seguintes: -linux_vul: vulnerabilidade do Linux -windows_vul: vulnerabilidade do Windows -web_cms: vulnerabilidade de Web-CMS -app_vul: vulnerabilidade de aplicação Mínimo: 0 Máximo: 32 |
vul_id |
Não |
String |
ID de vulnerabilidade Mínimo: 0 Máximo: 256 |
vul_name |
Não |
String |
Nome de vulnerabilidade Mínimo: 0 Máximo: 256 |
limit |
Não |
Integer |
Número de registros exibidos em cada página Mínimo: 0 Máximo: 200 Padrão: 10 |
offset |
Não |
Integer |
Deslocamento, que especifica a posição inicial do registro a ser retornado. O valor deve ser um número não menor que 0. O valor padrão é 0. Mínimo: 0 Máximo: 2000000 Padrão: 0 |
repair_priority |
Não |
String |
Prioridade de correção: Critical, High, Medium, Low Mínimo: 1 Máximo: 10 |
handle_status |
Não |
String |
Status de manipulação. As opções são as seguintes: -unhandled -handled Padrão: unhandled Mínimo: 1 Máximo: 32 |
cve_id |
Não |
String |
ID de vulnerabilidade Mínimo: 0 Máximo: 32 |
label_list |
Não |
String |
Tag de vulnerabilidade Mínimo: 0 Máximo: 128 |
status |
Não |
String |
Status da vulnerabilidade Mínimo: 0 Máximo: 32 |
asset_value |
Não |
String |
Importância do ativo: important, common, test Mínimo: 0 Máximo: 32 |
group_name |
Não |
String |
Nome do grupo de servidores Mínimo: 0 Máximo: 256 |
Parâmetros de solicitação
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
X-Auth-Token |
Sim |
String |
Token do usuário. Ele pode ser obtido chamando a API do IAM usada para obter um token de usuário. O valor de X-Subject-Token no cabeçalho da resposta é um token. Mínimo: 1 Máximo: 32768 |
Parâmetros de resposta
Código de status: 200
Parâmetro |
Tipo |
Descrição |
---|---|---|
total_num |
Long |
Número total de vulnerabilidades de software Mínimo: 0 Máximo: 2147483647 |
data_list |
Array of VulInfo objects |
Lista de vulnerabilidades de software Comprimento da matriz: 0–2147483647 |
Parâmetro |
Tipo |
Descrição |
---|---|---|
vul_name |
String |
Nome de vulnerabilidade Mínimo: 0 Máximo: 256 |
vul_id |
String |
ID de vulnerabilidade Mínimo: 0 Máximo: 64 |
label_list |
Array of strings |
Tag de vulnerabilidade Mínimo: 0 Máximo: 65534 Comprimento da matriz: 0–2147483647 |
repair_necessity |
String |
Necessidade de reparo
Mínimo: 0 Máximo: 64 |
severity_level |
String |
Gravidade
Mínimo: 0 Máximo: 64 |
host_num |
Integer |
Número de servidores afetados Mínimo: 0 Máximo: 2147483647 |
unhandle_host_num |
Integer |
Número de servidores não processados, excluindo servidores ignorados e corrigidos Mínimo: 0 Máximo: 2147483647 |
scan_time |
Long |
Última verificação, em ms. Mínimo: 0 Máximo: 9223372036854775807 |
solution_detail |
String |
Guia de correção de vulnerabilidades Mínimo: 0 Máximo: 65534 |
url |
String |
URL de vulnerabilidade Mínimo: 0 Máximo: 2083 |
description |
String |
Descrição da vulnerabilidade Mínimo: 0 Máximo: 65534 |
type |
String |
Tipo de vulnerabilidade. As opções são as seguintes: -linux_vul: vulnerabilidade do Linux -windows_vul: vulnerabilidade do Windows -web_cms: vulnerabilidade de Web-CMS -app_vul: vulnerabilidade de aplicação Mínimo: 0 Máximo: 128 |
host_id_list |
Array of strings |
Listas de servidores que podem lidar com a vulnerabilidade Mínimo: 0 Máximo: 128 Comprimento da matriz: 0–2147483647 |
cve_list |
Array of cve_list objects |
Lista de CVE Comprimento da matriz: 1–10000 |
patch_url |
String |
Endereço do patch Mínimo: 0 Máximo: 512 |
repair_priority |
String |
Prioridade de correção: Critical, High, Medium, Low Mínimo: 1 Máximo: 32 |
hosts_num |
VulnerabilityHostNumberInfo object |
Servidor afetado |
repair_success_num |
Integer |
Número de reparos bem-sucedidos Mínimo: 0 Máximo: 1000000 |
fixed_num |
Long |
Número de reparos Mínimo: 0 Máximo: 1000000 |
ignored_num |
Long |
Número de itens ignorados Mínimo: 0 Máximo: 1000000 |
verify_num |
Integer |
Número de verificações Mínimo: 0 Máximo: 1000000 |
repair_priority_list |
Array of RepairPriorityListInfo objects |
Prioridade de correção. O número de servidores correspondentes a cada prioridade de correção. Comprimento da matriz: 0–4 |
Parâmetro |
Tipo |
Descrição |
---|---|---|
cve_id |
String |
ID de CVE Mínimo: 1 Máximo: 32 |
cvss |
Float |
Pontuação de CVSS Mínimo: 0 Máximo: 10 |
Exemplo de solicitações
Consultar os 10 primeiros registros na lista de vulnerabilidades cujo project_id é 2b31ed520xxxxxxebedb6e57xxxxxxxx.
GET https://{endpoint}/v5/2b31ed520xxxxxxebedb6e57xxxxxxxx/vulnerability/vulnerabilities?offset=0&limit=10
Exemplo de respostas
Código de status: 200
Lista de vulnerabilidades
{ "total_num" : 1, "data_list" : [ { "description" : "It was discovered that FreeType did not correctly handle certain malformed font files. If a user were tricked into using a specially crafted font file, a remote attacker could cause FreeType to crash, or possibly execute arbitrary code.", "host_id_list" : [ "caa958ad-a481-4d46-b51e-6861b8864515" ], "host_num" : 1, "scan_time" : 1661752185836, "severity_level" : "Critical", "repair_necessity" : "Critical", "solution_detail" : "To upgrade the affected software", "type" : "linux_vul", "unhandle_host_num" : 0, "url" : "https://ubuntu.com/security/CVE-2022-27405", "vul_id" : "USN-5528-1", "vul_name" : "USN-5528-1: FreeType vulnerabilities", "repair_priority_list" : [ { "repair_priority" : "Critical", "host_num" : 0 }, { "repair_priority" : "High", "host_num" : 0 }, { "repair_priority" : "Medium", "host_num" : 1 }, { "repair_priority" : "Low", "host_num" : 0 } ] } ] }
Código de amostra do SDK
O código de amostra do SDK é o seguinte.
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.hss.v5.region.HssRegion; import com.huaweicloud.sdk.hss.v5.*; import com.huaweicloud.sdk.hss.v5.model.*; public class ListVulnerabilitiesSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); HssClient client = HssClient.newBuilder() .withCredential(auth) .withRegion(HssRegion.valueOf("<YOUR REGION>")) .build(); ListVulnerabilitiesRequest request = new ListVulnerabilitiesRequest(); request.withEnterpriseProjectId("<enterprise_project_id>"); request.withType("<type>"); request.withVulId("<vul_id>"); request.withVulName("<vul_name>"); request.withLimit(<limit>); request.withOffset(<offset>); request.withRepairPriority("<repair_priority>"); request.withHandleStatus("<handle_status>"); request.withCveId("<cve_id>"); request.withLabelList("<label_list>"); request.withStatus("<status>"); request.withAssetValue("<asset_value>"); request.withGroupName("<group_name>"); try { ListVulnerabilitiesResponse response = client.listVulnerabilities(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# coding: utf-8 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkhss.v5.region.hss_region import HssRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkhss.v5 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = __import__('os').getenv("CLOUD_SDK_AK") sk = __import__('os').getenv("CLOUD_SDK_SK") credentials = BasicCredentials(ak, sk) \ client = HssClient.new_builder() \ .with_credentials(credentials) \ .with_region(HssRegion.value_of("<YOUR REGION>")) \ .build() try: request = ListVulnerabilitiesRequest() request.enterprise_project_id = "<enterprise_project_id>" request.type = "<type>" request.vul_id = "<vul_id>" request.vul_name = "<vul_name>" request.limit = <limit> request.offset = <offset> request.repair_priority = "<repair_priority>" request.handle_status = "<handle_status>" request.cve_id = "<cve_id>" request.label_list = "<label_list>" request.status = "<status>" request.asset_value = "<asset_value>" request.group_name = "<group_name>" response = client.list_vulnerabilities(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" hss "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/hss/v5" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/hss/v5/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/hss/v5/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := hss.NewHssClient( hss.HssClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.ListVulnerabilitiesRequest{} enterpriseProjectIdRequest:= "<enterprise_project_id>" request.EnterpriseProjectId = &enterpriseProjectIdRequest typeRequest:= "<type>" request.Type = &typeRequest vulIdRequest:= "<vul_id>" request.VulId = &vulIdRequest vulNameRequest:= "<vul_name>" request.VulName = &vulNameRequest limitRequest:= int32(<limit>) request.Limit = &limitRequest offsetRequest:= int32(<offset>) request.Offset = &offsetRequest repairPriorityRequest:= "<repair_priority>" request.RepairPriority = &repairPriorityRequest handleStatusRequest:= "<handle_status>" request.HandleStatus = &handleStatusRequest cveIdRequest:= "<cve_id>" request.CveId = &cveIdRequest labelListRequest:= "<label_list>" request.LabelList = &labelListRequest statusRequest:= "<status>" request.Status = &statusRequest assetValueRequest:= "<asset_value>" request.AssetValue = &assetValueRequest groupNameRequest:= "<group_name>" request.GroupName = &groupNameRequest response, err := client.ListVulnerabilities(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
Mais
Para obter o código de amostra do SDK de mais linguagens de programação, consulte a guia Código de amostra no API Explorer. O código de amostra do SDK pode ser gerado automaticamente.
Códigos de status
Código de status |
Descrição |
---|---|
200 |
Lista de vulnerabilidades |
Códigos de erro
Consulte Códigos de erro.