华为云用户手册

  • 使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址并启用推送X号码状态功能,并确保提供的地址能够正常处理 隐私保护通话 平台发送的通知消息。 注:若需单独接收X号码状态通知,需填写X号码状态接收地址。若呼叫状态接收地址和X号码状态接收地址都填写了,隐私保护通话平台会向呼叫状态接收地址推送呼叫事件通知,向X号码状态接收地址推送X号码状态通知。 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。
  • 接口示例 接口示例仅供参考,请以实际消息为准。 请求示例 POST /notify HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx { "appKey":"****", "smsEvent":{"smsIdentifier":"********", "notificationMode":"Notify", "calling":"+86138****0001", "virtualNumber":"+86138****0000", "event":"Text SMS ", "timeStamp":"2020-12-23T09:06:16.450Z", "extInfo":{"extParas":[{"key":"splitNum","value":"0"},{"key":"direction","value":"2"}]}, "sendResult":2 } } 响应示例 请求为Notify模式时 HTTP/1.1 200 OK
  • 请求参数 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为WSSE realm="SDP",profile="UsernameToken",type="Appkey"。 X-WSSE 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表3。 表3 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表4 请求Body参数说明 参数名称 是否必选 参数类型 说明 appKey 是 String(1-32) 隐私保护通话应用的APP_Key。 smsEvent 是 SMSEventInfoType 短信状态事件。 表5 SMSEventInfoType定义 参数名称 是否必选 参数类型 说明 smsIdentifier 是 String(1-64) 短信唯一标识。 若用户发送的是长短信,隐私保护通话平台会将长短信的多个分片合并为一个通知上报。 notificationMode 是 String(1-8) 通知模式: Notify:通知模式。 calling 否 String(1-32) 真实发送方号码。 号码为全局号码格式(包含国家码),比如+86138****7021。 called 否 String(1-32) 真实接收方号码。 仅在隐私保护通话平台转发短信成功后携带。 号码为全局号码格式(包含国家码),比如+86138****7022。 virtualNumber 否 String(1-32) X号码。 号码为全局号码格式(包含国家码),比如+86138****0001。 event 是 String(1-16) 短信状态事件。 TextSMS:文本短信 timeStamp 是 String(1-32) 短信事件发生的系统时间戳,UTC时间。 格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 其中SSS是毫秒,“T”和“Z”为固定字符。 extInfo 是 ExtensionInfoType 拓展信息。 subscriptionId 否 String(1-64) 绑定ID。 smsContent 否 String(1-2000) 用户发送的短信内容。 请参考如何设置才能收到短信内容?开通该功能。 sendResult 是 Integer 发送结果。 0:成功 1:因用户账户冻结,发送失败。 2:因绑定关系不存在,发送失败。 3:因X号码被暂停,发送失败。 4:非商用APP,发送失败。 5:因系统内部错误,发送失败。 8:黑名单管控,发送失败。 9:部分发送成功。 10:全部发送失败。 11:X号码不支持短信能力。 12:短信内容不包含特征关键词。 13:短信内容包含禁止词汇。 areaCode 否 String(0-32) 隐私保护号码(X号码)的城市码。 说明: 使用该参数的场景请联系华为云客服获取。 userData 否 String(1-256) 用户附属信息。 说明: 使用该参数的场景请联系华为云客服获取。 表6 ExtensionInfoType定义 参数名称 是否必选 参数类型 说明 extParas 是 JsonArray 扩展信息(Key-Value)列表。 格式如下: "extParas": [{"key": "splitNum","value": "value1"},{"key": "direction","value": "value2"}] Key、Value取值分别不能超过32个字节。 “key”取值为“splitNum”时表示实际短信发送成功数量,即长短信拆分后的短信数量。value1表示“splitNum”的取值。 “key”取值为“direction”时表示短信发送方向。value2表示“direction”取值,含义如下: 0:B发送短信给A。 1:A发送短信给B。 2:异常场景无法获取发送方向。
  • 响应参数 客户服务器接收到隐私保护通话平台的呼叫事件通知后,根据不同的模式返回不同响应消息。 Notify模式 返回无消息体的200响应。 消息样例 HTTP/1.1 200 OK Block模式 响应必须参照表10携带消息体,返回对呼叫事件的处理操作。 表10 响应消息参数说明 参数名称 是否必选 参数类型 说明 operation 否 String(1-32) 用于指示平台的呼叫操作。取值范围如下: connect:接续被叫通话。 close:结束本次呼叫。 connectInfo 否 ApiConnectInfo 指示平台接续被叫通话的参数列表。 当operation取值为connect时携带。 closeInfo 否 ApiCloseInfo 指示平台结束会话的参数列表。 当operation取值为close时携带。 表11 ApiConnectInfo定义 参数名称 是否必选 参数类型 说明 displayCalleeNum 否 String(4-31) 被叫端的来显号码,填写为真实主叫号码或呼叫使用的X号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 不携带该参数时,默认显示本次呼叫的X号码。 说明: 由于运营商管控,当前平台要求该参数必须设置为呼叫使用的X号码,否则呼叫会被运营商拦截。 若想使用应用下申请的其他X号码作为外显号码,请联系华为云客服。 calleeNum 是 String(4-31) 真实被叫号码。 填写为全局号码格式。 手机号码格式为国家码(如+86)+手机号码(11位数字的手机号码,如138****0001),填写为"+86138****0001"。 固话号码为国家码(如+86)+不带前置0的区号(如755)+本地固话号码(7或8位数字的固话号码,以实际号码为准,如28****01),填写为"+8675528****01"。 maxDuration 否 Integer 设置允许本次通话进行的最长时间,单位:分钟,通话时间从接通被叫的时刻开始计算。 取值范围:0~1440 0:系统不主动结束通话,由主被叫双方结束通话。 1~1440:当通话时长达到此配置值,系统主动结束通话。 不携带时,参数值默认为0。 waitVoice 否 String(0-128) 设置个性化通话前等待音,即主叫听到的回铃音。填写为放音文件名,可在放音文件管理页面查看。 不携带该参数时主叫会听到真实被叫的回铃音。 recordFlag 否 String(枚举) 是否需要针对本次通话录音。 false:表示不录音 true:表示录音。 该参数仅当客户添加应用时申请开通了录音功能才有效。 如果不携带该参数,系统默认不录音。 recordHintTone 否 String(0-128) 此参数仅在recordFlag为true时有效。 此字段用于设置录音提示音,填写为放音文件名,可在放音文件管理页面查看。 说明: 因隐私协议及运营商管控,录音的呼叫必须携带该参数,否则呼叫会被运营商拦截。 lastMinVoice 否 String(0-128) 设置通话剩余最后一分钟时的提示音,填写为放音文件名,可在放音文件管理页面查看。 当maxDuration字段设置为非0时此参数有效。 不携带该参数表示通话剩余最后一分钟时不放音。 calleeHintVoice 否 String(0-128) 该参数用于设置被叫提示音,即通话接通后优先向被叫用户播放提示音。填写为放音文件名,可在放音文件管理页面查看。 不携带该参数表示不优先向被叫用户播放提示音。 userData 否 String(0-256) 用户自定义数据,会在该次通话的后续状态报告和话单中原样返回。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 当X模式callin事件响应中的userData包含中文时,平台会终止呼叫接续。 表12 ApiCloseInfo定义 参数名称 是否必选 参数类型 说明 closeHintTone 否 String(1-128) 设置挂机提示音,即主叫被挂机前听到的提示音。 填写为放音文件名,可在放音文件管理页面查看。 不携带该参数时系统挂机前不放音。 userData 否 String(1-256) 用户自定义数据,会在该次通话的后续状态报告和话单中原样返回。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 说明: 当X模式callin事件响应中的userData包含中文时,平台会终止呼叫接续。 消息样例 接续被叫通话 HTTP/1.1 200 OK Content-Type: application/JSON;charset=UTF-8 Content-Length: xx {"operation":"connect", "connectInfo":{"calleeNum":"+86156****6201","maxDuration":0,"waitVoice":"waitVoice.wav","recordFlag":"true","recordHintTone":"recordHintTone.wav","userData":"testuserdate"}} 结束本次呼叫 HTTP/1.1 200 OK Content-Type: application/JSON;charset=UTF-8 Content-Length: xx {"operation":"close", "closeInfo":{"closeHintTone":"closeHintTone.wav","userData":"testuserdate"}}
  • 请求参数 X模式中,任意用户呼叫隐私号码X,隐私保护通话平台接收到呼叫后,根据客户服务器返回的绑定关系转接或挂断呼叫。 注:以下流程和接口示例以A用户呼叫X,企业服务器返回被叫号码B,B用户接听为例,流程和接口示例仅供参考,请以实际消息为准。 图1 X模式业务流程 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为WSSE realm="SDP",profile="UsernameToken",type="Appkey"。 X-WSSE 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表3。 表3 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表4 请求Body参数说明 参数名称 是否必选 参数类型 说明 eventType 是 String(枚举) 该参数标识通知的事件类型。 取值范围如下: callin:呼入事件 callout:呼出事件 alerting:振铃事件 answer:应答事件 disconnect:挂机事件 statusInfo 否 CallStatusInfo 呼叫状态事件的信息。 当eventType参数为callin、callout、alerting、answer、disconnect时携带。 callin:呼入事件 callout:呼出事件 alerting:振铃事件 answer:应答事件 disconnect:挂机事件 CallStatusInfo定义 表5 callin:呼入事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 呼入事件的主叫号码为A号码。 called 否 String(1-32) 被叫号码。 说明: 呼入事件的被叫号码为X号码。 notifyMode 否 String(1-32) 通知模式,仅X模式场景携带。 取值范围如下: Notify:通知模式,客户收到通知后返回HTTP状态码为200的空消息即可。 Block:控制模式,客户需按照接口说明返回响应参数。 不携带该参数时,通知模式为Notify。 接口示例 POST /status HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx {"eventType":"callin","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:18","caller":"+86138****0021","called":"+86138****0022","notifyMode":"Block"}} 注:客户若收到Block模式的事件通知,需按照接口说明返回响应参数,指示对呼叫事件的处理操作(接口说明见Block模式)。此处以客户服务器回复接续被叫号码B为例。 HTTP/1.1 200 Content-Length: xx {"connectInfo":{"lastMinVoice":"lastMinVoice001.wav","userData":"d77b5e3cbd234159af401d63f559f896","displayCalleeNum":"+86138****0022","recordFlag":true,"calleeNum":"+86138****7021","maxDuration":0,"recordHintTone":"recordHintTone001.wav","waitVoice":"waitVoice001.wav"},"operation":"connect","userData":"d77b5e3cbd234159af401d63f559f896"} 表6 callout:呼出事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 呼出事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: 呼出事件的被叫号码为B号码。 subscriptionId 否 String(1-64) 绑定ID。 userData 否 String(1-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 接口示例 POST /status HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx {"eventType":"callout","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:20","caller":"+86138****0022","called":"+86138****7021","userData":"d77b5e3cbd234159af401d63f559f896","subscriptionId":"********"}} 表7 alerting:振铃事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 振铃事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: 振铃事件的被叫号码为B号码。 subscriptionId 否 String(1-64) 绑定ID。 接口示例 POST /status HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx {"eventType":"alerting","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:21","caller":"+86138****0022","called":"+86138****7021","userData":"d77b5e3cbd234159af401d63f559f896","subscriptionId":"********"}} 表8 answer:应答事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 应答事件的主叫号码为X号码。 called 否 String(1-32) 被叫号码。 说明: 应答事件的被叫号码为B号码。 subscriptionId 否 String(1-64) 绑定ID。 接口示例 POST /status HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx {"eventType":"answer","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:22","caller":"+86138****0022","called":"+86138****7021","userData":"d77b5e3cbd234159af401d63f559f896","subscriptionId":"********"}} 表9 disconnect:挂机事件 参数名称 是否必选 参数类型 说明 timestamp 是 String(1-128) 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间(+8小时为北京时间)格式,即为“yyyy-MM-dd HH:mm:ss”。 userData 否 String(1-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 sessionId 是 String(1-256) 唯一指定一条通话链路的标识ID。 caller 否 String(1-32) 主叫号码。 号码为全局号码格式(包含国家码),如+86138****0021。 说明: 此处返回号码非真实主被叫号码,真实主被叫号码请以fee事件中的返回值为准。 called 否 String(1-32) 被叫号码。 说明: 此处返回号码非真实主被叫号码,真实主被叫号码请以fee事件中的返回值为准。 stateCode 否 Integer 通话挂机的原因值,仅当eventType为disconnect时携带。 取值范围及表示的含义请参考通话挂机原因值说明。 stateDesc 否 String(1-128) 通话挂机的原因值的描述,仅当eventType为disconnect时携带。 subscriptionId 否 String(1-64) 绑定ID。 callRelDirection 否 Integer 主被叫通话结束后的挂机方向。 1:主叫主动挂机 2:被叫主动挂机 说明: 使用该参数的场景请联系华为云客服获取。 接口示例 POST /status HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx {"eventType":"disconnect","statusInfo":{"sessionId":"1201_7767_4294967295_20190103031118@callenabler246.huaweicaas.com","timestamp":"2019-01-03 03:11:42","caller":"+86138****0022","called":"+86138****7021","userData":"d77b5e3cbd234159af401d63f559f896","stateCode":0,"stateDesc":"The user releases the call.","subscriptionId":"********"}}
  • 使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 如果需要单独接收呼入事件(callin),需联系客服,提供呼入事件状态接收地址。 若需要使用X模式自定义放音,需要提前在放音文件管理页面上传并等待审核通过。 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。 注意事项 若平台给客户推送呼叫事件通知(不包括callin事件以外的其他呼叫事件)后未收到成功响应,视为推送失败,平台会重新推送呼叫事件通知,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? X模式支持单次通话进行的最长时间(收到callin事件后,返回对呼叫事件的处理操作时设置maxDuration参数),到期后系统自动挂断通话。 若要使用录音功能,需要完成以下两个步骤: 修改X模式应用,“是否开通录音”选择“是”。 返回对呼叫事件的处理操作时设置“recordFlag”为“true”。 若要使用短信功能,需要完成以下两个步骤: 修改X模式应用,“是否开通短信”选择“是”; 订购用于X模式应用的号码时,“是否需要短信功能”选择“是”。
  • 请求参数 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为WSSE realm="SDP",profile="UsernameToken",type="Appkey"。 X-WSSE 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表3。 表3 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表4 请求Body参数说明 参数名称 是否必选 参数类型 说明 eventType 是 String(枚举) 该参数标识通知的事件类型。 取值范围如下: fee:话单事件 feeLst 否 FeeInfo[1-50] 呼叫话单事件的信息,参数取值为列表,最大50条。 当eventType参数为fee时携带。 表5 FeeInfo定义 参数名称 是否必须 参数类型 描述 direction 是 Integer (0-1) 通话的呼叫方向。 固定取值为1。 spId 是 String(1-32) 客户的云服务账号。 appKey 是 String(1-128) 隐私保护通话应用的app_key。 icid 否 String(1-64) 呼叫记录的唯一标识。 bindNum 是 String(1-32) 隐私保护号码,号码为全局号码格式(包含国家码),比如+86138****0021。 sessionId 是 String(1-256) 通话链路的唯一标识。 callerNum 是 String(1-32) 主叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第一路呼叫的主叫号码。 说明: 第一路呼叫为A拨打X号码,callerNum为A号码。 calleeNum 是 String(1-128) 被叫号码,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第一路呼叫的被叫号码。 说明: 第一路呼叫为A拨打X号码,calleeNum为X号码。 fwdDisplayNum 否 String(1-32) 转接呼叫时的显示号,号码为全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的主显号码。 说明: 第二路呼叫为X拨打B号码,fwdDisplayNum为X号码。 fwdDstNum 否 String(1-32) 转接呼叫时的转接号码。号码仅支持全局号码格式(包含国家码),比如+86138****0021。 当呼叫场景经过转接时,此参数对应第二路呼叫的被叫号码。 说明: 第二路呼叫为X拨打B号码,fwdDstNum为B号码。 callInTime 是 String(1-128) 呼入的开始时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdStartTime 否 String(1-128) 转接呼叫操作的开始时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdAlertingTime 否 String(1-128) 转接呼叫操作后的振铃时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdAnswerTime 否 String(1-128) 转接呼叫操作后的应答时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 callEndTime 是 String(1-128) 呼叫结束时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 fwdUnaswRsn 否 Integer 转接呼叫操作失败的Q850原因值。详细说明参见Q850原因值说明。 failTime 否 String(1-128) 呼入、呼出的失败时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 ulFailReason 否 Integer 通话失败的拆线点。详细说明参见呼叫拆线点说明。 sipStatusCode 否 Integer 呼入、呼出的失败SIP状态码。 recordFlag 否 Integer (0-1) 该字段用于录音标识,参数值范围如: 0:表示未录音 1:表示有录音 recordStartTime 否 String(1-128) 录音开始时间。 该参数为UTC时间(+8小时为北京时间),时间格式为“yyyy-MM-dd HH:mm:ss”。 recordObjectName 否 String(1-128) 录音文件名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordBucketName 否 String(1-128) 录音文件名所在的目录名。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 recordDomain 否 String(1-256) 存放录音文件的 域名 。 说明: 参数值为空时,请访问“recordFileDownloadUrl”参数携带的录音文件下载地址下载录音文件。 serviceType 否 String(1-32) 携带呼叫的业务类型信息,取值范围: 004:AXB模式或X模式 hostName 否 String(1-128) 该参数用于标识话单生成的服务器设备对应的主机名。 subscriptionId 否 String(1-64) 绑定ID。 notifyMode 否 String(1-32) 该参数仅在X模式场景携带,固定取值为Block,用于标识该话单为X模式话单。 callOutUnaswRsn 否 Integer Initcall的呼出失败的Q850原因值。 详细说明参见Q850原因值说明。 说明: 预留参数,无需关注。 ttsPlayTimes 否 integer 应用 TTS 功能时,使用TTS的总次数。 说明: 预留参数,无需关注。 ttsTransDuration 否 integer 应用TTS功能时,TTS Server进行TTS转换的总时长。单位为秒。 说明: 预留参数,无需关注。 mptyId 否 String(1-128) 该参数作为预留字段,用于标识Enabler服务器上一条多方通话的链路。 该参数仅在多方通话场景生效。 说明: 预留参数,无需关注。 voiceCheckType 否 Integer(枚举) 录音质检类型,取值如下: Null:无质检 0:无录音质检,表示API指示不录音(即recordFlag取值为false)时进行的质检 1:有录音质检,表示API指示要录音(即recordFlag取值为true)时进行的质检 recordFileDownloadUrl 否 String(1-1024) 录音文件下载地址,可通过该URL在浏览器中下载录音文件。 说明: 使用该参数的场景请联系华为云客服获取。 areaCode 否 String(0-32) 隐私保护号码(X号码)的城市码。 说明: 使用该参数的场景请联系华为云客服获取。 callRelDirection 否 Integer 主被叫通话结束后的挂机方向。 1:主叫主动挂机 2:被叫主动挂机 说明: 使用该参数的场景请联系华为云客服获取。 callDuration 否 Integer 呼叫的通话时长,单位为秒。 说明: 使用该参数的场景请联系华为云客服获取。 userData 否 String(0-256) 用户附属信息。 当客户在该接口Block模式响应参数中携带了“userData”时,对应呼叫后续的通知消息中都会携带此参数。 接口示例 POST /fee HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx {"eventType":"fee","feeLst":[{"direction":1,"spId":"********","appKey":"********","icid":"e01ed0af24040eab7ba27a1c441f91641.3663053204.1117803.14","bindNum":"+86138****0022","sessionId":"1200_366_0_20161228102743@callenabler.home1.com","subscriptionId":"********","callerNum":"+86138****0021","calleeNum":"+86138****0022","fwdDisplayNum":"+86138****0022","fwdDstNum":"+86138****7021","callInTime":"2019-01-03 03:11:18","fwdStartTime":"2019-01-03 03:11:20","fwdAlertingTime":"2019-01-03 03:11:21","fwdAnswerTime":"2019-01-03 03:11:22","callEndTime":"2019-01-03 03:11:42","fwdUnaswRsn":0,"ulFailReason":0,"sipStatusCode":0,"callOutUnaswRsn":0,"recordFlag":1,"recordStartTime":"2019-01-03 03:11:22","recordDomain":"****.com","recordBucketName":"****","recordObjectName":"****.wav","ttsPlayTimes":0,"ttsTransDuration":0,"mptyId":"********","serviceType":"004","hostName":"callenabler246.huaweicaas.com","userData":"d77b5e3cbd234159af401d63f559f896","notifyMode":"Block"}]}
  • 使用说明 前提条件 客户添加应用时需设置呼叫话单接收地址,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 注意事项 若平台给客户推送话单后未收到成功响应,视为推送失败,平台会重新推送话单,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。 若没有收到平台推送请参考收不到呼叫事件和话单通知如何处理? 使用限制 业务平台推送话单信息给开发者应用,仅支持POST方式。
  • 请求参数 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为WSSE realm="SDP",profile="UsernameToken",type="Appkey"。 X-WSSE 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表3。 表3 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表4 请求Body参数说明 参数名称 是否必选 参数类型 说明 eventType 是 String(枚举) 该参数标识通知的事件类型。 取值范围如下: numStatus:X号码状态变化 numInfo 否 numInfo [1-100] X号码状态变化事件的信息,参数取值为列表,最大100条。 当eventType参数为numStatus时携带。 表5 numInfo定义 参数名称 是否必须 参数类型 说明 number 是 String 状态变化的X号码。 status 是 String 号码状态。 5:正常 9:暂停 10:不可用 11:冻结绑定 说明: 各号码状态对业务的影响如下: 正常:无影响。 暂停&不可用:绑定、呼叫和短信都不可用。 冻结绑定:号码不可新增绑定关系,但已存在的绑定关系的呼叫和短信业务不受影响。 cause 否 String 号码不可用原因。仅status为不可用时携带。 1:号码已删除 2:欠费 3:停机 5:X号码被运营商限呼 6:X号码限呼恢复 7:X号码开通了无条件前转业务 8:X号码开通了无应答前转业务 9:X号码开通了被叫忙前转业务 接口示例 POST /Xnumber/status HTTP/1.1 Content-Length: 94 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" {"eventType":"numStatus","numInfo":[{"number":"+86156****0000","status":"9"}]}
  • 使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址并启用推送X号码状态功能,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 注:若需单独接收X号码状态通知,需填写X号码状态接收地址。若呼叫状态接收地址和X号码状态接收地址都填写了,隐私保护通话平台会向呼叫状态接收地址推送呼叫事件通知,向X号码状态接收地址推送X号码状态通知。 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。
  • 使用说明 前提条件 客户添加应用时需设置呼叫状态接收地址并启用推送X号码状态功能,并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。 注:若需单独接收X号码状态通知,需填写X号码状态接收地址。若呼叫状态接收地址和X号码状态接收地址都填写了,隐私保护通话平台会向呼叫状态接收地址推送呼叫事件通知,向X号码状态接收地址推送X号码状态通知。 使用限制 业务平台推送呼叫状态给开发者应用,仅支持POST方式。
  • 请求参数 表2 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为WSSE realm="SDP",profile="UsernameToken",type="Appkey"。 X-WSSE 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表3。 表3 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表4 请求Body参数说明 参数名称 是否必选 参数类型 说明 eventType 是 String(枚举) 该参数标识通知的事件类型。 取值范围如下: numStatus:X号码状态变化 numInfo 否 numInfo [1-100] X号码状态变化事件的信息,参数取值为列表,最大100条。 当eventType参数为numStatus时携带。 表5 numInfo定义 参数名称 是否必须 参数类型 说明 number 是 String 状态变化的X号码。 status 是 String 号码状态。 5:正常 9:暂停 10:不可用 11:冻结绑定 说明: 各号码状态对业务的影响如下: 正常:无影响。 暂停&不可用:绑定、呼叫和短信都不可用。 冻结绑定:号码不可新增绑定关系,但已存在的绑定关系的呼叫和短信业务不受影响。 cause 否 String 号码不可用原因。仅status为不可用时携带。 1:号码已删除 2:欠费 3:停机 5:X号码被运营商限呼 6:X号码限呼恢复 7:X号码开通了无条件前转业务 8:X号码开通了无应答前转业务 9:X号码开通了被叫忙前转业务 接口示例 POST /Xnumber/status HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: WSSE realm="SDP",profile="UsernameToken",type="Appkey" x-wsse: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx {"eventType":"numStatus","numInfo":[{"number":"+86156****0000","status":"9"}]}
  • 主机扫描权限异常如何处理? 当使用主机扫描功能遇到如下报错时, CodeArts Inspector.00050001: The user role has no permission to access the interface. User: AAA:user:BBB is not authorized to perform: kms:cmk:decryptData. 需登录AAA账号,检查BBB用户是否含有kms:cmk:decryptData权限。 如果没有kms:cmk:decryptData权限,可参考 IAM 指导文档手动添加相应的权限再进行互通性测试。 父主题: 主机扫描类
  • 如何确认目的主机是否支持公钥认证登录和root登录? 执行如下命令查看配置文件是否开启公钥认证和root登录: egrep 'PubkeyAuthentication|PermitRootLogin' /etc/ssh/sshd_config 若出现如下回显则表示开启了公钥认证方式。 PubkeyAuthentication yes 若出现如下回显则表示允许root登录。 PermitRootLogin yes 父主题: 主机扫描类
  • 如何生成私钥和私钥密码? 当主机扫描通过密钥的方式来登录目的主机时,会涉及到私钥和私钥密码的填写。 私钥和私钥密码的生成方式如下: 在目的主机上执行ssh-keygen命令生成公钥和私钥,按照提示信息输入生成密钥的文件路径,并输入2次私钥密码。 执行ls命令可查看在设置的文件路径下生成的公钥和私钥文件。 将公钥配到目的主机的sshd服务认证配置里面,然后执行systemctl restart sshd命令重启ssh服务。 执行cat命令查看私钥文件内容,并将私钥内容进行复制,拷贝至“授权信息管理”页面的私钥文本框中,并输入私钥密码。 到此,源主机就有了私钥,目的主机就有了公钥,源主机发起连接请求到目的主机时,目的主机会随机发送一个字符串给源主机,源主机利用私钥加密该字符串,然后发送给目的主机,目的主机利用公钥解密该字符串,如果和发送时匹配,则认证通过。 父主题: 主机扫描类
  • 使用跳板机扫描内网主机和直接扫描公网主机,在扫描能力方面有什么区别? 使用跳板机扫描内网主机和直接扫描公网主机,在扫描能力方面区别如表1所示。 表1 扫描能力差异介绍 扫描能力 通过公网IP直接扫描公网主机 通过跳板机扫描内网主机 操作系统安全补丁扫描 支持 支持 远程服务/协议 漏洞扫描 支持 不支持 说明: 远程服务/协议类漏洞的扫描依赖于扫描器与被测目标的相关端口直接交互,因此不能通过跳板机完成测试验证。 操作系统安全配置扫描 支持 支持 Web中间件安全配置扫描 支持 支持 等保合规扫描 支持 支持 父主题: 主机扫描类
  • 开启基于HTTP的WinRM服务 以Windows系统管理员身份运行PowerShell。 执行如下命令查看基于HTTP的WinRM是否开启。 winrm enumerate winrm/config/listener 如果存在报错信息,则表示WinRM服务未开启,请执行3。 如果不存在报错信息,则表示WinRM服务已开启,请执行4。 执行如下命令开启WinRM,选择y完成设置。 winrm quickconfig 配置Auth。 执行如下命令查看Auth信息。 winrm get winrm/config/service/auth 执行如下命令修改“Basic”的值为“true”。 当返回值中“Basic”为“true”时,无需执行该步骤。 winrm set winrm/config/service/auth '@{Basic="true"}' 配置加密方式为允许非加密。 执行如下命令查看Service信息。 winrm get winrm/config/service 当返回值中“AllowUnencrypted”为“false”时,请执行5.b。 执行如下命令修改“AllowUnencrypted”的值为“true”。 winrm set winrm/config/service '@{AllowUnencrypted="true"}' 执行如下命令检查基于HTTP的WinRM服务是否开启成功。 winrm e winrm/config/listener 查看返回值,输出结果有HTTP的“Listener”且“Enabled”为“true”,则为开启状态。
  • 开启基于HTTPS的WinRM服务 基于HTTPS的WinRM只支持Windows Server 2016及以上版本。 以Windows系统管理员身份运行PowerShell。 执行如下命令查看基于HTTPS的WinRM是否开启。 winrm e winrm/config/listener 输出结果有HTTPS的“Listener”且“Enabled”为“true”,则为开启状态。如果未开启,则请直接执行4。 校验WinRM是否使用用户名密码验证及使用的证书是否正确。 执行如下命令查看是否使用用户名密码验证。 执行如下命令查看Auth信息。 winrm get winrm/config/service/auth 执行如下命令修改“Basic”的值为“true”。 当返回值中“Basic”为“true”时,无需执行该步骤。 winrm set winrm/config/service/auth '@{Basic="true"}' 执行如下命令校验WinRM使用的证书是否正确。 ls Cert:\LocalMachine\My\ 如果有输出,且“Thumbprint”与2的Thumbprint对应,“CN”名与主机名对应,则基于HTTPS的WinRM已配置完成。 如果不满足上面任意一条则请直接执行5替换HTTPS WinRM使用的证书。 以Windows系统管理员身份运行cmd,并执行如下命令创建基于HTTPS的WinRM服务。 该步中需要使用CN与主机名相同的证书,如果不同,请先执行5.a生成证书。 winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Port="5986" ;Hostname="" ;CertificateThumbprint=""} 执行成功结果如上图。其中,“Port”为监听端口(建议不做更改),“CertificateThumbprint”为证书的Thumbprint,“Hostname”为主机名,可通过在PowerShell中输入如下命令获取: hostname 可再通过2~3验证HTTPS WinRM配置是否正确。 替换HTTPS WinRM使用证书。 生成CN与主机名相同的自签名证书。 在PowerShell中输入如下命令创建证书: $params = @{ Type = 'SSLServerAuthentication' Subject = 'CN=' TextExtension = @( '2.5.29.37={text}1.3.6.1.5.5.7.3.1' ) KeyAlgorithm = 'RSA' KeyLength = 2048 CertStoreLocation = 'Cert:\LocalMachine\My\' } New-SelfSignedCertificate @params 其中,除“Subject”的值外,其他值请和上述命令保持一致,“Subject”值的格式为“CN=hostname”,hostname的获取见4。 生成成功会输出证书的Subject和Thumbprint。 执行如下命令替换证书。 Set-WSManInstance -ResourceURI winrm/config/Listener -SelectorSet @{Address="*"; Transport="HTTPS"} -ValueSet @{CertificateThumbprint=""} 其中,“CertificateThumbprint”为证书的Thumbprint,可再通过2~3验证HTTPS WinRM配置是否正确。
  • 为什么安装了最新kernel后,仍报出系统存在低版本kernel漏洞未修复? 使用yum update kernel将kernel更新至最新版本后,漏洞管理服务扫描EulerOS仍报出大量kernel漏洞。这种情况不属于漏洞管理服务工具误报,而是由于升级kernel之后未及时重启并使用最新版本的kernel运行。kernel升级到最新版本后未重启并运行,实际上仍然使用未升级前的kernel扫描系统,所以漏洞仍然存在。 执行 如下命令可以查看当前系统安装了哪些版本的 kernel。 rpm -qa | grep kernel 执行如下命令可以查看当前系统实际使用的是什么版本的kernel。 uname -a 上面例子中就是实际使用的是低版本的存在大量CVE漏洞的kernel,因此使用漏洞管理服务扫描仍会报kernel存在CVE-2020-0465等漏洞。 此案例对于使用了CentOS、EulerOS、Red Hat、SUSE的用户均适用。 此外还有某些情况下,用户使用的yum源并不是操作系统官方最新的源,也即yum源中没有操作系统最新的安全补丁,此种情况下也可能报出kernel漏洞未修复的问题。此种情况下需要更新yum源为操作系统官方源或者向操作系统提供方寻求安全补丁的支持。总之,需要基于漏洞管理服务扫描报告中的“修复建议”中的installed version和fixed version的内容,进行分析和修复。 父主题: 主机扫描类
  • 主机互通性测试异常如何处理? 通过互通性测试可以测试待扫描的主机与扫描环境的连通性是否正常。 主机互通性测试不同异常提示的处理方法如下: 目标机或跳板机的SSH服务未开启,无法登录,请开启SSH服务。 目标机或跳板机的SSH服务连接超时,请确认网络是否可连通或是否有防火墙阻隔。 待扫描的主机或跳板机的IP地址网络不通,解决办法请参见如何解决主机不能访问?。 目标机或跳板机的系统账户密码错误,认证失败,请确认授权信息是否正确。 主机授权信息中用户密码不正确,解决办法请参见配置Linux主机授权。 目标机或跳板机的系统账户密钥错误,认证失败,请确认授权信息是否正确。 主机授权信息中用户密钥不正确,解决办法请参见配置Linux主机授权。 目标机的系统账户登录成功但权限不足,无法得到最完整、准确的扫描结果,请确认是否增加系统账户的权限。 主机授权信息中root权限加固场景下,用户密码不正确,解决办法请参见配置普通用户和sudo提权用户漏洞扫描失败案例。 Windows系统暂不支持互通性测试,请使用Linux系统主机进行互通性测试。 父主题: 主机扫描类
  • 如何配置跳板机进行内网扫描? 使用跳板机进行内网扫描的网络示意图如图1所示。 图1 网络示意图 创建主机扫描任务,IP地址栏填写目标主机的内网IP。 添加跳板机配置。 配置的跳板机“公网IP”需与被测目标机的内网环境互通。 添加跳板机后,还需在该跳板机的ssh配置文件“/etc/ssh/sshd_config”中添加:AllowTcpForwarding yes,用于支持SSH授权登录转发。修改配置后需重启sshd服务。 父主题: 主机扫描类
  • 配置普通用户和sudo提权用户漏洞扫描操作案例 默认情况下,Linux系统没有将普通用户列入到sudoer列表中(普通用户 is not in the sudoers file. This incident will be reported.): 登录系统并切换到root权限。 输入#vi /etc/sudoers,就会打开sudoers配置文件。 在配置文件末尾添加:普通用户名 ALL=(ALL:ALL) ALL,输入 :wq! ,保存修改。 使用漏洞管理服务的sudo提权扫描功能时,认证凭据输入位置的“普通用户密码”和“sudo密码”请保持一致,均为“普通用户”的密码。 对于在“/etc/sudoers”中配置了“Defaults targetpw”的操作系统,需要输入root密码才能提权执行命令,因此建议暂时先将“Defaults targetpw”相关配置注释掉,扫描完成后再恢复原配置。 扫描完成后,请还原配置。 父主题: 主机扫描类
  • 漏洞管理服务可以扫描本地的物理服务器吗? 漏洞管理服务可以扫描本地的物理服务器。若需要扫描本地的物理服务器,需要满足以下条件。 本地网络可通外网。 本地物理服务器为Linux操作系统,且满足以下版本要求: EulerOS:支持的最低系统版本为EulerOS 2.2。 CentOS:支持的最低系统版本为CentOS 6.5。 RedHat:支持的最低系统版本为Red Hat Enterprise Linux 6.10。 Ubuntu:支持的最低系统版本为Ubuntu 16.04 server。 SUSE:支持的最低系统版本为SUSE Enterprise 11 SP4。 OpenSUSE:支持的最低系统版本为OpenSUSE 13.2。 Debian:支持的最低系统版本为Debian 8.2.0。 Kylin OS:支持的系统版本为Kylin OS V10 SP1。 统信UOS:支持的系统版本为统信UOS V20。 Huawei Cloud EulerOS:支持的系统版本为HCE 2.0。 openEuler:支持的系统版本为openEuler 20.03。 可以远程登录到本地物理服务器。 本地物理服务器满足以上条件后,可以在漏洞管理服务界面通过添加跳板机的方式,使用漏洞管理服务扫描本地的物理服务器。 有关物理服务器使用漏洞管理服务的详细介绍,请参见物理服务器可以使用漏洞管理服务吗?。 父主题: 主机扫描类
  • 漏洞管理服务的扫描IP有哪些? 如果您的网站设置了防火墙或其他安全策略,将导致漏洞管理服务的扫描IP被当成恶意攻击者而误拦截。因此,在使用漏洞管理服务前,请您将以下扫描IP添加至网站访问的白名单中: 119.3.232.114,119.3.237.223,124.70.102.147,121.36.13.144,124.70.109.117,139.9.114.20,119.3.176.1,121.37.207.185,116.205.135.49,110.41.36.44,139.9.57.171,139.9.1.44,121.37.200.40 漏洞管理服务会模拟客户端使用随机端口连接被测试设备,建议放通来自漏洞管理服务这些ip的全量端口。 父主题: 产品咨询类
  • 漏洞管理服务支持多个账号共享使用吗? 漏洞管理服务支持多个账号或多个IAM用户共享使用,说明如下: 多个账号共享使用 例如,您通过注册华为云创建了2个账号(“domain1”和“domain2”),如果您将“domain1”的权限委托给“domain2”,则“domain2”可以使用“domain1”的漏洞管理服务。 有关委托管理的详细操作,请参见创建委托。 多个IAM用户共享使用 例如,您通过注册华为云创建了1个账号(“domain1”),且由“domain1”账号在IAM中创建了2个IAM用户(“sub-user1a”和“sub-user1b”),如果您授权了“sub-user1b”用户漏洞管理服务的权限策略,则“sub-user1b”用户可以使用“sub-user1a”用户的漏洞管理服务。 有关漏洞管理服务权限管理的详细操作,请参见创建用户并授权使用漏洞管理服务。 父主题: 产品咨询类
  • 漏洞管理服务从哪些漏洞源获得已知漏洞信息? 漏洞管理服务的已知漏洞信息来源主要为各操作系统厂商的安全公告、NVD公开漏洞库等。漏洞信息来源及修复建议中可能会包含一些公网域名,主要提供用户漏洞的官方参考链接,便于用户参考,具体如下所示: en.wikipedia.org、wiki.debian.org、lkml.iu.edu、www.huaweicloud.com、github.com、lists.apache.org、spring.io、oval.mitre.org、usn.ubuntu.com、ubuntu.com、lists.suse.com、bugzilla.suse.com、www.suse.com、lists.centos.org、access.redhat.com、bugzilla.redhat.com、lists.debian.org、salsa.debian.org、security-tracker.debian.org、bugs.debian.org、packages.debian.org、developer.huaweicloud.com、api.msrc.microsoft.com、support.microsoft.com、portal.msrc.microsoft.com、lists.fedoraproject.org、bodhi.fedoraproject.org、www.kylinos.cn、repo.huaweicloud.com、src.uniontech.com、nvd.nist.gov、git.launchpad.net、people.ubuntu.com、cve.mitre.org、secdb.alpinelinux.org、cve.mitre.org、www.hweuleros.com等公网域名。 父主题: 产品咨询类
  • 漏洞管理服务与HSS、WAF有什么区别? 漏洞管理服务支持主机和Web漏洞扫描,从攻击者的视角扫描漏洞,提供详细的漏洞分析报告,并针对不同类型的漏洞提供专业可靠的修复建议。HSS是提升主机整体安全性的服务,通过安装在主机上的Agent守护主机安全,全面识别并管理主机中的信息资产。漏洞管理服务中的主机漏扫和HSS的区别如下: 漏洞管理服务功能:远程 漏洞扫描工具 ,不用部署在主机上,包括Web漏洞扫描、操作系统漏洞扫描、资产及内容合规检测、安全配置基线检查。从类似黑盒的外部视角,对目标主机网站等进行扫描,发现暴露在外的安全风险。 HSS功能:终端主机安全防护工具,部署在主机上,包括资产管理、漏洞管理、基线检查、入侵检测、程序运行认证、文件完整性校验、安全运营、网页防篡改等功能,注重的是运行在主机上的业务的安全防护。 WAF是对网站业务流量进行多维度检测和防护,降低数据被篡改、失窃的风险。 华为云提供的漏洞管理服务、HSS服务、WAF服务,帮助您全面从网站、主机、Web应用等层面防御风险和威胁,提升系统安全指数。建议三个服务搭配使用。 表1 漏洞管理服务、HSS、WAF的区别 服务名称 所属分类 防护对象 功能差异 漏洞管理服务(CodeArts Inspector) 应用安全、主机安全 提升网站、主机整体安全性。 多元漏洞检测 网页内容检测 网站健康检测 基线合规检测 主机漏洞扫描 企业主机安全 (HSS) 主机安全 提升主机整体安全性。 资产管理 漏洞管理 入侵检测 基线检查 网页防篡改 Web应用防火墙 (WAF) 应用安全 保护Web应用程序的可用性、安全性。 Web基础防护 CC攻击防护 精准访问防护 父主题: 产品咨询类
  • Apache Log4j2漏洞检测相关问题 网站漏洞扫描 和主机扫描是否支持Apache Log4j2漏洞检测?检测原理有何不同? 答:网站漏洞扫描和主机扫描支持Apache Log4j2漏洞检测,但检测原理不同。网站漏洞扫描的检测原理是基于漏洞POC验证,如果没有攻击入口或路径,或已经开启了Web应用防火墙等防护措施,则无法扫出来;主机扫描的检测原理是登录操作系统之后探测JAR包版本,匹配是否在受影响的版本范围之内,相对高效。 建议有条件的话,使用网站漏洞扫描和主机扫描远程扫描,若发现问题请尽快按处置办法进行操作。 Apache Log4j2漏洞之前能扫出来,后来扫不出来,不稳定是什么原因? 答:只要扫出来过Apache Log4j2漏洞,建议马上排查相应网站或主机,尽快按处置办法进行操作。 后面扫不出来的原因,可能是网站已修复,或已通过Web应用防火墙等防护措施解决,另外由于该漏洞POC验证相对复杂,涉及较多网络交互,网络环境因素如安全组策略加固等变动,也可能导致漏洞不能稳定扫出来,但建议客户还是尽快排查处置,彻底规避风险。 哪些版本支持Apache Log4j2漏洞检测? 答:当前包括基础版(可免费开通)在内的所有版本均支持,但由于基础版规格有较多限制,如不支持主机漏洞扫描、Web漏洞扫描的扫描时长和次数受限,可能存在扫描不全面的问题。建议有条件的话,根据业务需求购买专业版及以上版本进行全面扫描。 不同版本规格说明请参见服务版本。 父主题: 产品咨询类
  • 网站cookie值发生变化时,如何进行网站漏洞扫描? 当某个网站挂载多个子网站,且需要对这些网站都进行漏洞扫描(使用cookie登录方式)时,如果您从网站主入口登录后,再进入其他子网站,网站的cookie值可能会发生改变。对于cookie值发生改变的子网站,您需要为这些子网站单独完成扫描任务的创建。 您也可采用共用cookie方式,来避免cookie值发生变化。被扫描站点的多个页面之间,是否会共用cookie,取决您的web站点是否支持此功能。 有关设置网站cookie登录方式的详细操作,请参见网站登录设置。 有关创建扫描任务的详细操作,请参见创建扫描任务。 父主题: 网站扫描类
  • 配置主机授权时,必须使用加密密钥吗? 在创建SSH授权登录(Linux主机)时,为了保护主机登录密码或密钥安全,请您必须使用加密密钥,以避免登录密码或密钥明文存储和泄露风险。 您可以选择已有的加密密钥,如果没有可选的加密密钥,请单击“创建密钥”,创建漏洞管理服务专用的默认主密钥。 有关配置主机授权的详细操作,请参见如何对Linux主机进行授权?。 您也可以在 数据加密 服务的以下区域创建密钥: 华北-北京一 华南-广州 华东-上海二 有关创建密钥的详细操作,请参见创建密钥。 使用数据加密服务需要单独计费,详细的服务资费和费率标准,请参见价格详情。 父主题: 主机扫描类
共100000条