Consulta dos servidores afetados por uma vulnerabilidade
Função
Esta API é usada para consultar os servidores afetados por uma vulnerabilidade.
Método de chamada
Para obter detalhes, consulte Chamada de APIs.
URI
GET /v5/{project_id}/vulnerability/hosts
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. Para consultar todos os projetos empresariais, defina este parâmetro como all_granted_eps. Mínimo: 0 Máximo: 128 |
vul_id |
Sim |
String |
ID de vulnerabilidade Mínimo: 0 Máximo: 64 |
type |
Sim |
String |
Tipo de vulnerabilidade
Mínimo: 0 Máximo: 64 |
host_name |
Não |
String |
Nome do servidor afetado Mínimo: 0 Máximo: 256 |
host_ip |
Não |
String |
Endereço IP do servidor afetado Mínimo: 0 Máximo: 128 |
status |
Não |
String |
Status da vulnerabilidade.
Mínimo: 0 Máximo: 128 |
limit |
Não |
Integer |
Número de registros em cada página Mínimo: 10 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 |
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 |
handle_status |
Não |
String |
Status de manipulação. As opções são as seguintes: -unhandled -handled Mínimo: 1 Máximo: 32 |
severity_level |
Não |
String |
Nível de risco. O valor pode ser Critical, High, Medium ou Low. Mínimo: 0 Máximo: 32 |
is_affect_business |
Não |
Boolean |
Indica se os serviços são afetados. O valor pode ser y ou n. |
repair_priority |
Não |
String |
Prioridade de correção. As opções são as seguintes:
Mínimo: 1 Máximo: 10 |
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 |
Integer |
Número de servidores afetados Mínimo: 0 Máximo: 10000 |
data_list |
Array of VulHostInfo objects |
Lista de ECSs afetados Comprimento da matriz: 1–10000 |
Parâmetro |
Tipo |
Descrição |
---|---|---|
host_id |
String |
ID do servidor afetado pela vulnerabilidade Mínimo: 1 Máximo: 128 |
severity_level |
String |
Nível de risco.
Mínimo: 1 Máximo: 128 |
host_name |
String |
Nome do servidor afetado Mínimo: 1 Máximo: 256 |
host_ip |
String |
Endereço IP do servidor afetado Mínimo: 1 Máximo: 256 |
agent_id |
String |
ID do agente correspondente ao servidor Mínimo: 1 Máximo: 128 |
version |
String |
A versão da cota vinculada ao servidor Mínimo: 1 Máximo: 128 |
cve_num |
Integer |
CVEs de vulnerabilidade Mínimo: 0 Máximo: 10000 |
cve_id_list |
Array of strings |
A lista de IDs de CVE correspondente à vulnerabilidade Mínimo: 1 Máximo: 64 Comprimento da matriz: 1–10000 |
status |
String |
Status da vulnerabilidade.
Mínimo: 1 Máximo: 128 |
repair_cmd |
String |
Linha de comando a ser executada para corrigir a vulnerabilidade (este campo está disponível apenas para vulnerabilidades do Linux). Mínimo: 1 Máximo: 256 |
app_path |
String |
Caminho do software de aplicação (este campo está disponível apenas para vulnerabilidades de aplicação). Mínimo: 1 Máximo: 512 |
region_name |
String |
Região Mínimo: 0 Máximo: 128 |
public_ip |
String |
Endereço IP público do servidor Mínimo: 0 Máximo: 128 |
private_ip |
String |
Endereço IP privado de servidor Mínimo: 0 Máximo: 128 |
group_id |
String |
ID do grupo de servidores Mínimo: 0 Máximo: 128 |
group_name |
String |
Nome do grupo de servidores Mínimo: 0 Máximo: 256 |
os_type |
String |
Sistema operacional (SO) Mínimo: 0 Máximo: 32 |
asset_value |
String |
Importância de ativo. As opções são as seguintes:
Mínimo: 0 Máximo: 32 |
is_affect_business |
Boolean |
Se os serviços são afetados |
first_scan_time |
Long |
Hora da primeira verificação Mínimo: 0 Máximo: 9223372036854775807 |
scan_time |
Long |
Tempo de verificação, em ms. Mínimo: 0 Máximo: 9223372036854775807 |
support_restore |
Boolean |
Indica se os dados podem ser revertidos para o backup criado quando a vulnerabilidade foi corrigida. |
disabled_operate_types |
Array of disabled_operate_types objects |
Lista de tipos de operação de vulnerabilidades que não podem ser executadas no servidor atual. Comprimento da matriz: 1–10000 |
repair_priority |
String |
Prioridade de correção. As opções são as seguintes:
Mínimo: 1 Máximo: 10 |
Parâmetro |
Tipo |
Descrição |
---|---|---|
operate_type |
String |
Tipo de operação.
Mínimo: 1 Máximo: 64 |
reason |
String |
Indica o motivo pelo qual a operação não pode ser executada. Mínimo: 0 Máximo: 512 |
Exemplo de solicitações
Consultar os 10 primeiros registros na lista de servidores com vulnerabilidade EulerOS-SA-2021-1894.
GET https://{endpoint}/v5/2b31ed520xxxxxxebedb6e57xxxxxxxx/vulnerability/hosts?vul_id=EulerOS-SA-2021-1894&offset=0&limit=10
Exemplo de respostas
Código de status: 200
Lista de informações do host Vul
{ "total_num" : 1, "data_list" : [ { "host_id" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "severity_level" : "Low", "host_name" : "ecs", "host_ip" : "xxx.xxx.xxx.xxx", "agent_id" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "version" : "hss.version.enterprise", "cve_num" : 1, "cve_id_list" : [ "CVE-2022-1664" ], "status" : "vul_status_ignored", "repair_cmd" : "zypper update update-alternatives", "app_path" : "/root/apache-tomcat-8.5.15/bin/bootstrap.jar", "support_restore" : true, "disabled_operate_types" : [ { "operate_type" : "immediate_repair", "reason" : "The kernel vulnerability of CCE container node cannot be automatically fixed." } ], "repair_priority" : "Critical" } ] }
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 59 |
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 ListVulHostsSolution { 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(); ListVulHostsRequest request = new ListVulHostsRequest(); request.withEnterpriseProjectId("<enterprise_project_id>"); request.withVulId("<vul_id>"); request.withType("<type>"); request.withHostName("<host_name>"); request.withHostIp("<host_ip>"); request.withStatus("<status>"); request.withLimit(<limit>); request.withOffset(<offset>); request.withAssetValue("<asset_value>"); request.withGroupName("<group_name>"); request.withHandleStatus("<handle_status>"); request.withSeverityLevel("<severity_level>"); request.withIsAffectBusiness(<is_affect_business>); request.withRepairPriority("<repair_priority>"); try { ListVulHostsResponse response = client.listVulHosts(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 43 |
# 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 = ListVulHostsRequest() request.enterprise_project_id = "<enterprise_project_id>" request.vul_id = "<vul_id>" request.type = "<type>" request.host_name = "<host_name>" request.host_ip = "<host_ip>" request.status = "<status>" request.limit = <limit> request.offset = <offset> request.asset_value = "<asset_value>" request.group_name = "<group_name>" request.handle_status = "<handle_status>" request.severity_level = "<severity_level>" request.is_affect_business = <IsAffectBusiness> request.repair_priority = "<repair_priority>" response = client.list_vul_hosts(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.ListVulHostsRequest{} enterpriseProjectIdRequest:= "<enterprise_project_id>" request.EnterpriseProjectId = &enterpriseProjectIdRequest request.VulId = "<vul_id>" request.Type = "<type>" hostNameRequest:= "<host_name>" request.HostName = &hostNameRequest hostIpRequest:= "<host_ip>" request.HostIp = &hostIpRequest statusRequest:= "<status>" request.Status = &statusRequest limitRequest:= int32(<limit>) request.Limit = &limitRequest offsetRequest:= int32(<offset>) request.Offset = &offsetRequest assetValueRequest:= "<asset_value>" request.AssetValue = &assetValueRequest groupNameRequest:= "<group_name>" request.GroupName = &groupNameRequest handleStatusRequest:= "<handle_status>" request.HandleStatus = &handleStatusRequest severityLevelRequest:= "<severity_level>" request.SeverityLevel = &severityLevelRequest isAffectBusinessRequest:= <is_affect_business> request.IsAffectBusiness = &isAffectBusinessRequest repairPriorityRequest:= "<repair_priority>" request.RepairPriority = &repairPriorityRequest response, err := client.ListVulHosts(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 informações do host Vul |
Códigos de erro
Consulte Códigos de erro.