华为云用户手册

  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Content-Type 是 String 内容类型 缺省值:application/json;charset=utf8 表4 请求Body参数 参数 是否必选 参数类型 描述 host_ids 是 Array of strings host_id列表 policy_id 是 String 策略ID(目标企业项目下的策略ID) certificate_id 否 String 证书ID(目标企业项目下的证书ID)
  • 响应示例 状态码: 200 请求成功 { "id" : "97e4d35f375f4736a21cccfad77613eb", "policyid" : "38ff0cb9a10e4d5293c642bc0350fa6d", "timestamp" : 1650533191385, "description" : "demo", "status" : 1, "url" : "/demo", "category" : "cookie", "index" : "demo1" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 规则id policyid String 策略id timestamp Long 创建规则的时间,格式为13位毫秒时间戳 description String 规则描述,可选参数,设置该规则的备注信息。 status Integer 规则状态,0:关闭,1:开启 url String 隐私屏蔽规则防护的url,需要填写标准的url格式,例如/admin/xxx或者/admin/,以""号结尾代表路径前缀 category String 屏蔽字段 Params:请求参数 Cookie:根据Cookie区分的Web访问者 Header:自定义HTTP首部 Form:表单参数 index String 屏蔽字段名 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的帐号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的名称,如“cn-north-4”,您可以从地区和终端节点获取,对应地区和终端节点页面的“区域”字段的值。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token作用域为某个帐号下所有资源或帐号的某个project下的资源,详细定义请参见获取用户Token。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 URI-scheme: 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint: 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点获取。 例如IAM服务在“华北-北京四”区域的Endpoint为“iam.cn-north-4.myhuaweicloud.com”。 resource-path: 资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string: 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,同一个服务的Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见AK/SK认证。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 GET:请求服务器返回指定资源。 PUT:请求服务器更新指定资源。 POST:请求服务器新增资源或执行特殊操作。 DELETE:请求服务器删除指定资源,如删除对象等。 HEAD:请求服务器资源头部。 PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
  • 请求示例 在项目id为project_id和防护策略id为policy_id的防护策略下创建全局白名单(原误报屏蔽)规则。防护域名为we.test.418lab.cn,条件为url中包含”x.x.x.x“,描述为”demo“,需要屏蔽的规则id为091004 POST https://{Endpoint}/v1/{project_id}/waf/policy/{policy_id}/ignore?enterprise_project_id=0 { "domain" : [ "we.test.418lab.cn" ], "conditions" : [ { "category" : "url", "logic_operation" : "contain", "contents" : [ "x.x.x.x" ], "index" : null } ], "mode" : 1, "description" : "demo", "rule" : "091004" }
  • 响应示例 状态码: 200 OK { "id" : "a57f20ced01e4e0d8bea8e7c49eea254", "policyid" : "f385eceedf7c4c34a4d1def19eafbe85", "timestamp" : 1650522310447, "description" : "demo", "status" : 1, "rule" : "091004", "mode" : 1, "conditions" : [ { "category" : "url", "contents" : [ "x.x.x.x" ], "logic_operation" : "contain" } ], "domain" : [ "we.test.418lab.cn" ] }
  • 基本概念 帐号 用户注册时的帐号,帐号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于帐号是付费主体,为了确保帐号安全,建议您不要直接使用帐号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由帐号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看帐号ID和用户ID。通常在调用API的鉴权过程中,您需要用到帐号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 父主题: 使用前必读
  • 响应示例 状态码: 200 OK { "id" : "5d43af25404341058d5ab17b7ba78b56", "policyid" : "38ff0cb9a10e4d5293c642bc0350fa6d", "name" : "demo", "timestamp" : 1650531872900, "description" : "demo", "status" : 1, "addr" : "x.x.x.x", "white" : 0 }
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 id String 规则id name String 黑白名单规则名称 policyid String 策略id addr String 黑白名单ip地址,需要输入标准的ip地址或地址段,例如:42.123.120.66或42.123.120.0/16 white Integer 防护动作: 0 拦截 1 放行 2 仅记录 ip_group Ip_group object Ip地址组 status Integer 规则状态,0:关闭,1:开启 description String 规则描述 timestamp Long 创建规则的时间戳,13位毫秒时间戳 表6 Ip_group 参数 参数类型 描述 id String Ip地址组id,在新增Ip地址组时系统自动生成的唯一标识 name String Ip地址组名 size Long Ip地址组中包含Ip/Ip段的数量 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求示例 在项目id为project_id,防护策略id为policy_id的防护策略下创建黑白名单规则,规则名称为"demo",防护动作为"拦截",描述为‘demo”,黑白名单ip地址为“x.x.x.x”。 POST https://{Endpoint}/v1/{project_id}/waf/policy/{policy_id}/whiteblackip?enterprise_project_id=0 { "name" : "demo", "white" : 0, "description" : "demo", "addr" : "x.x.x.x" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 引用表id name String 引用表名称 type String 引用表类型 description String 引用表描述 values Array of strings 引用表的值 producer Integer 引用表来源: 1:表示来源于用户手动创建 2:表示来源于智能访问控制自动创建 timestamp Long 创建规则的时间,格式为13位毫秒时间戳 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 instances Array of instanceInfo objects instances 表6 instanceInfo 参数 参数类型 描述 id String 引擎实例ID name String 引擎实例名称 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求示例 在项目id为project_id的项目中创建WAF独享引擎实例,WAF独享引擎实例的收费模式为按需收费,需要创建独享引擎的局点为“region-01-4”,创建独享引擎的可用区为“region-01-4a”,独享引擎CPU架构为“x86”,独享引擎名称前缀为“demo”,独享引擎版本规格为企业版,独享引擎E CS 规格为 "c3ne.2xlarge.2",独享引擎所在VPC的ID为"d7b6a5ff-6c53-4cd4-9d57-f20ee8753056",独享引擎所在VPC内的子网ID为“e59ccd18-7e15-4588-b689-04b856f4e78b”,独享引擎需要绑定的安全组ID为“09b156a2-f0f0-41fd-9891-60e594601cfd”,数量为一个,是 资源租户类。 POST https://{endpoint}/v1/{project_id}/premium-waf/instance { "chargemode" : 30, "region" : "region-01-4", "available_zone" : "region-01-4a", "arch" : "x86", "instancename" : "demo", "specification" : "waf.instance.enterprise", "cpu_flavor" : "c3ne.2xlarge.2", "vpc_id" : "d7b6a5ff-6c53-4cd4-9d57-f20ee8753056", "subnet_id" : "e59ccd18-7e15-4588-b689-04b856f4e78b", "security_group" : [ "09b156a2-f0f0-41fd-9891-60e594601cfd" ], "count" : 1, "res_tenant" : true }
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Content-Type 是 String 内容类型 缺省值:application/json;charset=utf8 表4 请求Body参数 参数 是否必选 参数类型 描述 chargemode 否 Integer 收费模式,当前仅支持按需收费(30) region 是 String 需要创建独享引擎的局点,例如:北京四(cn-north-4) available_zone 是 String 需要创建独享引擎的可用区,例如:北京四可用区1(cn-north-4a) arch 是 String 独享引擎CPU架构,例如:x86与arm instancename 是 String 独享引擎名称前缀 specification 是 String 独享引擎版本规格 企业版:waf.instance.enterprise 专业版:waf.instance.professional cpu_flavor 是 String 独享引擎ECS规格,实例规格。具体支持的规格以waf控制台上支持的规格为准。 vpc_id 是 String 独享引擎所在VPC的ID subnet_id 是 String 独享引擎所在VPC内的子网ID security_group 是 Array of strings 独享引擎需要绑定的安全组ID count 是 Integer 申请的独享引擎数量 res_tenant 否 Boolean 是否为资源租户类,默认值为false。 true: 资源租户类 false: 普通租户类
  • 响应示例 状态码: 200 OK { "id" : "38ff0cb9a10e4d5293c642bc0350fa6d", "name" : "demo", "level" : 2, "action" : { "category" : "log" }, "options" : { "webattack" : true, "common" : true, "crawler" : true, "crawler_engine" : false, "crawler_scanner" : true, "crawler_script" : false, "crawler_other" : false, "webshell" : false, "cc" : true, "custom" : true, "whiteblackip" : true, "geoip" : true, "ignore" : true, "privacy" : true, "antitamper" : true, "antileakage" : false, "bot_enable" : true, "modulex_enabled" : false }, "hosts" : [ ], "extend" : { }, "timestamp" : 1650529538732, "full_detection" : false, "bind_host" : [ ] }
  • 请求示例 更新项目id为project_id,防护策略id为policy_id,规则id为rule_id的的JS脚本反爬虫规则,更新JS脚本反爬虫规则类型为排除防护路径。 PUT https://{Endpoint}/v1/{project_id}/waf/policy/{policy_id}/anticrawler? { "anticrawler_type" : "anticrawler_except_url" }
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 anticrawler_type String JS脚本反爬虫规则类型,指定防护路径:anticrawler_specific_url 排除防护路径:anticrawler_except_url 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Content-Type 是 String 内容类型 缺省值:application/json;charset=utf8 表4 请求Body参数 参数 是否必选 参数类型 描述 anticrawler_type 是 String JS脚本反爬虫规则类型,指定防护路径:anticrawler_specific_url 排除防护路径:anticrawler_except_url
  • 响应示例 状态码: 200 请求成功 { "id" : "e5d9032d8da64d169269175c3e4c2849", "name" : "demo", "type" : "url", "values" : [ "/124" ], "timestamp" : 1650524684892, "description" : "demo", "producer" : 1 }
  • 请求示例 在项目id为project_id的项目中创建引用表,引用表名称为“demo”,引用表类型为“url”,值为“/124”,描述为“demo”。 POST https://{Endpoint}/v1/{project_id}/waf/valuelist?enterprise_project_id=0 { "name" : "demo", "type" : "url", "values" : [ "/124" ], "description" : "demo" }
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Content-Type 是 String 内容类型 缺省值:application/json;charset=utf8 表4 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 引用表名称,只能由数字、字母、中划线、下划线和英文句点组成,长度不能超过64 最小长度:2 最大长度:64 type 是 String 引用表类型,参见枚举列表 最小长度:2 最大长度:32 枚举值: url params ip cookie referer user-agent header response_code response_header response_body values 是 Array of strings 引用表的值 description 否 String 引用表描述,最长128字符 最小长度:0 最大长度:128
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 id String 引用表id name String 引用表名称 type String 引用表类型 description String 引用表描述 timestamp Long 引用表时间戳 values Array of strings 引用表的值 producer Integer 引用表来源: 1:表示来源于用户手动创建 2:表示来源于智能访问控制自动创建 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 [数组元素] Array of StatisticsTimelineItem objects 安全总览的Qps时间线统计数据 表5 StatisticsTimelineItem 参数 参数类型 描述 key String 键值,包括请求总量(AC CES S)、Bot攻击防护(CRAWLER)、攻击总量(ATTACK)、Web基础防护(WEB_ATTACK)、精准防护(PRECISE)、CC攻击防护(CC) timeline Array of TimeLineItem objects 对应键值的时间线统计数据 表6 TimeLineItem 参数 参数类型 描述 time Long 时间点 num Integer time对应时间点与前一时间点间隔内的统计数值。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 401 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
  • 请求示例 查询项目id为project_id,时间从2022-04-21 00:00:00到2022-04-21 14:35:36的安全统计qps次数。 GET https://{Endpoint}/v1/{project_id}/waf/overviews/qps/timeline?enterprise_project_id=0&from=1650470400196&to=1650522936196
  • 响应示例 状态码: 200 ok [ { "key" : "ACCESS", "timeline" : [ { "time" : 1650470400000, "num" : 0 } ] }, { "key" : "PRECISE", "timeline" : [ { "time" : 1650470400000, "num" : 0 } ] }, { "key" : "CRAWLER", "timeline" : [ { "time" : 1650470400000, "num" : 0 } ] }, { "key" : "CC", "timeline" : [ { "time" : 1650470400000, "num" : 0 } ] }, { "key" : "ATTACK", "timeline" : [ { "time" : 1650470400000, "num" : 0 } ] }, { "key" : "WEB_ATTACK", "timeline" : [ { "time" : 1650470400000, "num" : 0 } ] } ]
  • 响应示例 状态码: 200 请求成功 { "id" : "62169e2fc4e64148b775ec01b24a1947", "name" : "demo", "level" : 2, "action" : { "category" : "log", "modulex_category" : "log" }, "options" : { "webattack" : true, "common" : true, "crawler" : true, "crawler_engine" : false, "crawler_scanner" : true, "crawler_script" : false, "crawler_other" : false, "webshell" : false, "cc" : true, "custom" : true, "precise" : false, "whiteblackip" : true, "geoip" : true, "ignore" : true, "privacy" : true, "antitamper" : true, "anticrawler" : false, "antileakage" : false, "followed_action" : false, "bot_enable" : true, "modulex_enabled" : false }, "hosts" : [ ], "extend" : { }, "timestamp" : 1649316510603, "full_detection" : false, "bind_host" : [ ] }
  • 请求示例 在项目id为project_id和防护策略id为policy_id的防护策略下创建cc规则,规则的名称test55,限速模式为ip限速,限制频率为10,限速周期为60秒,请求次数限制到达后采取的防护动作为人机验证,cc规则防护模式为高级,cc规则防护规则限速条件的字段类型是URL包含“/url”,没有子字段,不开启全局计数 POST https://{Endpoint}/v1/{project_id}/waf/policy/{policy_id}/cc? { "description" : "", "name" : "test55", "tag_type" : "ip", "limit_num" : 10, "limit_period" : 60, "action" : { "category" : "captcha" }, "mode" : 1, "domain_aggregation" : false, "conditions" : [ { "category" : "url", "logic_operation" : "contain", "contents" : [ "/url" ], "index" : null } ], "region_aggregation" : false }
共100000条