Crie uma regra de proteção para um módulo de proteção do WAF.
Descrição da operação
Use DefenseType para especificar o módulo de proteção de destino. Módulos compatíveis: prevenção de intrusão web, segurança de dados, proteção avançada, gerenciamento de bots e controle de acesso e limitação de taxa. A estrutura do parâmetro Rule varia conforme o módulo. Consulte a Referência de parâmetros de Rule abaixo.
Limites
Esta operação tem um limite de 10 chamadas por segundo por conta. Exceder esse limite aciona a limitação de taxa e pode afetar o serviço.
Depuração
Teste esta operação no OpenAPI Explorer. O OpenAPI Explorer assina requisições automaticamente e gera códigos de exemplo para vários SDKs.
Parâmetros da requisição
|
Parâmetro |
Tipo |
Obrigatório |
Exemplo |
Descrição |
|
Action |
String |
Sim |
CreateProtectionModuleRule |
Operação a executar. Defina como CreateProtectionModuleRule. |
|
Domain |
String |
Sim |
www.example.com |
Nome de domínio para criar a regra de proteção. Para obter a lista de nomes de domínio protegidos, chame a operação DescribeDomainNames. |
|
DefenseType |
String |
Sim |
ac_custom |
Módulo de proteção para criar a regra. Valores válidos: waf-codec (mecanismo de regras de proteção), tamperproof (proteção contra adulteração de site), dlp (prevenção contra vazamento de dados), ng_account (segurança de conta), antifraud (controle de risco de dados), antifraud_js (plug-in JavaScript de controle de risco de dados), bot_algorithm (algoritmo inteligente, gerenciamento de bots), bot_wxbb_pkg (proteção de versão, proteção de aplicativo), bot_wxbb (proteção de caminho, proteção de aplicativo), ac_custom (políticas de proteção personalizadas), whitelist (lista de permissões de site). |
|
Rule |
String |
Sim |
{"action":"monitor","name":"test","scene":"custom_acl","conditions":[{"opCode":1,"key":"URL","values":"/example"}]} |
Configuração da regra, formatada como string JSON. Os parâmetros variam conforme o |
|
InstanceId |
String |
Sim |
waf-cn-0xldbqt**** |
ID da instância do WAF. Para obter o ID da instância, chame a operação DescribeInstanceInfo. |
Para parâmetros de requisição comuns, consulte Parâmetros comuns.
Referência de parâmetros de Rule
O parâmetro Rule é uma string JSON. Sua estrutura depende do valor de DefenseType.
waf-codec — Mecanismo de regras de proteção
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
codecList |
Array |
Sim |
Configurações de decodificação ativadas. Visualize os valores válidos no console do WAF. |
Exemplo:
{
"codecList": ["url", "base64"]
}
tamperproof — Proteção contra adulteração de site
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
name |
String |
Sim |
Nome da regra. |
|
uri |
String |
Sim |
URL a proteger. |
Exemplo:
{
"name": "example",
"uri": "http://www.aliyundoc.com/example"
}
dlp — Prevenção contra vazamento de dados
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
name |
String |
Sim |
Nome da regra. |
|
conditions |
Array |
Sim |
Condições de correspondência. Especifique até duas condições com relação AND. Cada condição é um objeto JSON. Consulte a tabela abaixo. |
|
action |
Integer |
Sim |
Ação a executar quando a regra corresponder. Valores válidos: 3 (gerar alertas), 10 (filtrar dados sensíveis; válido apenas quando |
Objeto condition:
|
Campo |
Tipo |
Descrição |
|
key |
Integer |
Item de correspondência. Valores válidos: 0 (URL), 10 (dados sensíveis), 11 (código de status HTTP). Não especifique |
|
operation |
Integer |
Lógica de correspondência. Defina como 1 (inclui). |
|
value |
Array |
Valores de correspondência, formatados como array JSON. Cada elemento contém |
Exemplo:
{
"name": "example",
"conditions": [
{"key": 11, "operation": 1, "value": [{"v": 401}]},
{"key": "0", "operation": 1, "value": [{"v": "www.aliyundoc.com"}]}
],
"action": 3
}
ng_account — Segurança de conta
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
url_path |
String |
Sim |
Caminho da URL a monitorar. Deve começar com barra ( |
|
method |
String |
Sim |
Métodos de requisição HTTP a detectar. Valores válidos: POST, GET, PUT, DELETE. Separe múltiplos valores com vírgulas. |
|
account_left |
String |
Sim |
Identificador do campo de conta. |
|
password_left |
String |
Não |
Identificador do campo de senha. |
|
action |
String |
Sim |
Ação quando a regra corresponde. Valores válidos: monitor (gerar alertas), block (bloquear requisições). |
Exemplo:
{
"url_path": "/example",
"method": "POST,GET,PUT,DELETE",
"account_left": "aaa",
"password_left": "123",
"action": "monitor"
}
antifraud — Controle de risco de dados
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
uri |
String |
Sim |
URL para aplicar o controle de risco de dados. |
Exemplo:
{
"uri": "http://1.example.com/example"
}
antifraud_js — Controle de risco de dados (plug-in JavaScript)
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
uri |
String |
Sim |
Caminho da URL para injeção do plug-in JavaScript. Deve começar com barra ( |
Exemplo:
{
"uri": "/example/example"
}
bot_algorithm — Algoritmo inteligente (gerenciamento de bots)
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
name |
String |
Sim |
Nome da regra. |
|
algorithmName |
String |
Sim |
Algoritmo de detecção. Valores válidos: RR (rastreadores de recursos especiais), PR (rastreadores de caminhos especiais), DPR (rastreadores de round-robin de parâmetros), SR (rastreadores de endereços IP dinâmicos), IND (rastreadores de dispositivos proxy), Periodicity (rastreadores periódicos). |
|
timeInterval |
Integer |
Sim |
Intervalo de detecção, em segundos. Valores válidos: 30, 60, 120, 300, 600. |
|
action |
String |
Sim |
Ação quando a regra corresponde. Valores válidos: monitor (monitorar requisições), captcha (verificação CAPTCHA deslizante), js (verificação JavaScript), block (bloquear requisições). Se definir como |
|
blocktime |
Integer |
Não |
Duração do bloqueio, em minutos. Valores válidos: 1–600. Obrigatório quando |
|
config |
String |
Sim |
Configuração do algoritmo, formatada como string JSON. Os parâmetros variam conforme o |
Parâmetros de config por algorithmName:
RR — Rastreadores de recursos especiais:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
resourceType |
Integer |
Não |
Tipo de recurso. Valores válidos: 1 (recursos dinâmicos), 2 (recursos estáticos), -1 (personalizado; especifique sufixos no campo |
|
minRequestCountPerIp |
Integer |
Sim |
Número mínimo de requisições de um endereço IP antes da avaliação pelo WAF. Valores válidos: 5–10000. |
|
minRatio |
Float |
Sim |
Proporção limiar de requisições correspondentes. Se a proporção real exceder esse valor, o IP será sinalizado como arriscado. Valores válidos: 0,01–1. |
PR — Rastreadores de caminhos especiais:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
keyPathConfiguration |
Array |
Não |
Caminhos de URL a monitorar. Até 10 caminhos. Cada entrada contém: |
|
minRequestCountPerIp |
Integer |
Sim |
Número mínimo de requisições de um endereço IP antes da avaliação pelo WAF. Valores válidos: 5–10000. |
|
minRatio |
Float |
Sim |
Proporção limiar de requisições correspondentes. Valores válidos: 0,01–1. |
DPR — Rastreadores de round-robin de parâmetros:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
method |
String |
Sim |
Método de requisição HTTP. Valores válidos: POST, GET, PUT, DELETE, HEAD, OPTIONS. |
|
urlPattern |
String |
Sim |
Padrão de caminho do parâmetro chave. Deve começar com |
|
minRequestCountPerIp |
Integer |
Sim |
Número mínimo de requisições de um endereço IP antes da avaliação pelo WAF. Valores válidos: 5–10000. |
|
minRatio |
Float |
Sim |
Proporção limiar de requisições que usam os parâmetros chave especificados. Valores válidos: 0,01–1. |
SR — Rastreadores de endereços IP dinâmicos:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
maxRequestCountPerSrSession |
Integer |
Sim |
Limiar para requisições por sessão. Sessões com menos requisições que este valor são consideradas anormais. Valores válidos: 1–8. |
|
minSrSessionCountPerIp |
Integer |
Sim |
Número mínimo de sessões anormais de um endereço IP para sinalizá-lo como arriscado. Valores válidos: 5–300. |
IND — Rastreadores de dispositivos proxy:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
minIpCount |
Integer |
Sim |
Número mínimo de endereços IP que um dispositivo conectado via Wi-Fi deve acessar para ser sinalizado como malicioso. Valores válidos: 5–500. |
|
keyPathConfiguration |
Array |
Não |
Caminhos de URL a monitorar. Até 10 caminhos. Mesma estrutura do |
Periodicity — Rastreadores periódicos:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
minRequestCountPerIp |
Integer |
Sim |
Número mínimo de requisições de um endereço IP antes da avaliação pelo WAF. Valores válidos: 5–10000. |
|
level |
Integer |
Sim |
Grau de periodicidade no padrão de acesso. Valores válidos: 0 (óbvio), 1 (moderado), 2 (fraco). |
Exemplo (algoritmo IND):
{
"name": "Crawler identification for proxy devices",
"algorithmName": "IND",
"timeInterval": "60",
"action": "monitor",
"config": {
"minIpCount": 5,
"keyPathConfiguration": [{"url": "/index", "method": "GET", "matchType": "prefix"}]
}
}
bot_wxbb_pkg — Proteção de versão (proteção de aplicativo)
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
name |
String |
Sim |
Nome da regra. |
|
action |
String |
Sim |
Ação quando a regra corresponde. Valores válidos: test (monitorar requisições), close (bloquear requisições). |
|
nameList |
Array |
Sim |
Informações de versão para pacotes válidos. Até 5 pacotes. Cada entrada contém: |
Exemplo:
{
"name": "test",
"action": "close",
"nameList": [
{
"name": "apk-xxxx",
"signList": ["xxxxxx", "xxxxx", "xxxx", "xx"]
}
]
}
bot_wxbb — Proteção de caminho (proteção de aplicativo)
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
name |
String |
Sim |
Nome da regra. |
|
uri |
String |
Sim |
Palavra-chave do caminho da URL a proteger. Deve começar com barra ( |
|
matchType |
String |
Sim |
Método de correspondência. Valores válidos: all (correspondência exata), prefix (correspondência de prefixo), regex (correspondência de expressão regular). |
|
arg |
String |
Sim |
Parâmetros incluídos na correspondência do caminho da URL. Use em combinação com |
|
action |
String |
Sim |
Ação quando a regra corresponde. Valores válidos: test (monitorar requisições), close (bloquear requisições). |
|
hasTag |
Boolean |
Sim |
Define se deve adicionar um campo de assinatura personalizada. Se definido como |
|
wxbbVmpFieldType |
Integer |
Não |
Tipo do campo de assinatura personalizada. Obrigatório quando |
|
wxbbVmpFieldValue |
String |
Não |
Valor do campo de assinatura personalizada. Obrigatório quando |
|
blockInvalidSign |
Integer |
Sim |
Define se deve aplicar a política de proteção padrão para assinaturas inválidas. Defina como 1 para ativar. |
|
blockProxy |
Integer |
Não |
Define se deve bloquear requisições de proxy. Defina como 1 para bloquear. Deixe sem especificar para ignorar a aplicação de proxy. |
|
blockSimulator |
Integer |
Não |
Define se deve bloquear requisições de simulador. Defina como 1 para bloquear. Deixe sem especificar para ignorar a aplicação de simulador. |
Exemplo:
{
"name": "test",
"uri": "/index",
"matchType": "all",
"arg": "test",
"action": "close",
"hasTag": true,
"wxbbVmpFieldType": 2,
"wxbbVmpFieldValue": "test",
"blockInvalidSign": 1,
"blockProxy": 1
}
ac_custom — Políticas de proteção personalizadas
A estrutura do parâmetro Rule depende do campo scene.
Regra ACL (scene: custom_acl)
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
name |
String |
Sim |
Nome da regra. |
|
scene |
String |
Sim |
Tipo de política. Defina como custom_acl. |
|
action |
String |
Sim |
Ação quando a regra corresponde. Valores válidos: monitor (monitorar requisições), captcha (verificação CAPTCHA deslizante), captcha_strict (verificação CAPTCHA deslizante estrita), js (verificação JavaScript), block (bloquear requisições). |
|
conditions |
Array |
Sim |
Condições de correspondência. Até 5 condições. Cada condição contém |
Campos de condition:
|
Campo |
Tipo |
Descrição |
|
key |
String |
Item de correspondência. Valores válidos: URL, IP, Referer, User-Agent, Params, Cookie, Content-Type, Content-Length, X-Forwarded-For, Post-Body, Http-Method, Header, URLPath. |
|
opCode |
Integer |
Operador lógico. Valores válidos: 11 (igual a), 10 (diferente de), 41 (igual a um de vários valores), 50 (diferente de qualquer valor), 1 (inclui), 0 (não inclui), 51 (inclui um de vários valores), 52 (não inclui nenhum valor), 82 (existe), 2 (não existe), 21 (comprimento igual a), 22 (comprimento maior que), 20 (comprimento menor que), 60 (não corresponde a uma expressão regular), 61 (corresponde a uma expressão regular), 72 (corresponde a um prefixo), 81 (corresponde a um sufixo), 80 (conteúdo vazio). Os operadores disponíveis variam conforme a |
|
values |
String |
Valor de correspondência. |
Exemplo:
{
"action": "monitor",
"name": "test",
"scene": "custom_acl",
"conditions": [{"opCode": 1, "key": "URL", "values": "/example"}]
}
Regra de proteção contra flood HTTP (scene: custom_cc)
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
name |
String |
Sim |
Nome da regra. |
|
scene |
String |
Sim |
Tipo de política. Defina como custom_cc. |
|
conditions |
Array |
Sim |
Condições de correspondência. Até 5 condições. Mesma estrutura das regras ACL. |
|
action |
String |
Sim |
Ação quando a regra corresponde. Valores válidos: monitor, captcha, captcha_strict, js, block. |
|
ratelimit |
Object |
Sim |
Configuração de limite de taxa. Consulte a tabela abaixo. |
Campos de ratelimit:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
target |
String |
Sim |
Objeto cuja taxa de requisição é medida. Valores válidos: remote_addr (endereços IP), cookie.acw_tc (sessões), queryarg (parâmetros personalizados), cookie (cookies personalizados), header (headers personalizados). |
|
subkey |
String |
Não |
Obrigatório quando |
|
interval |
Integer |
Sim |
Período de medição, em segundos. |
|
threshold |
Integer |
Sim |
Número máximo de requisições permitidas do objeto alvo dentro do |
|
status |
Object |
Não |
Aciona a regra com base na frequência do código de status HTTP. Contém: |
|
scope |
String |
Sim |
Escopo de aplicação do limite de taxa. Valores válidos: rule (objetos que correspondem às condições), domain (todo o domínio). |
|
ttl |
Integer |
Sim |
Duração da aplicação da ação, em segundos. Valores válidos: 60–86400. |
Exemplo:
{
"name": "HTTP flood protection rule",
"conditions": [{"opCode": 1, "key": "URL", "values": "/example"}],
"action": "block",
"scene": "custom_cc",
"ratelimit": {
"target": "remote_addr",
"interval": 300,
"threshold": 2000,
"status": {
"code": 404,
"count": 200
},
"scope": "rule",
"ttl": 1800
}
}
whitelist — Lista de permissões de site
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
name |
String |
Sim |
Nome da regra. |
|
tags |
Array |
Sim |
Módulos de proteção a ignorar. Os valores devem pertencer a uma única categoria de lista de permissões. Não misture tags de categorias diferentes (por exemplo, |
|
regularRules |
Array |
Não |
IDs de regras específicas a ignorar. Obrigatório quando |
|
regularTypes |
Array |
Não |
Tipos de regras a ignorar. Obrigatório quando |
|
conditions |
Array |
Sim |
Condições de correspondência. Até 5 condições. Mesma estrutura das regras ACL, com dois operadores adicionais: 30 (valor menor que), 31 (valor maior que). |
Valores válidos de tags por categoria:
|
Categoria |
Valores válidos |
|
Global |
waf — ignora todos os módulos de proteção |
|
Prevenção de intrusão web |
regular (todas as regras), regular_rule (regras específicas, requer |
|
Controle de acesso e limitação de taxa |
cc (proteção contra flood HTTP), customrule (políticas de proteção personalizadas), blacklist (lista de bloqueios de endereços IP), antiscan (proteção contra varredura) |
|
Segurança de dados |
dlp (prevenção contra vazamento de dados), tamperproof (proteção contra adulteração de site), account (segurança de conta) |
|
Gerenciamento de bots |
bot_intelligence (inteligência de ameaças de bots), bot_algorithm (identificação de comportamento típico de bots), bot_wxbb (proteção de aplicativo), antifraud (controle de risco de dados) |
Exemplo:
{
"name": "test",
"tags": ["cc", "customrule"],
"conditions": [{"opCode": 1, "key": "URL", "values": "/example"}]
}
Parâmetros de resposta
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
RequestId |
String |
D7861F61-5B61-46CE-A47C-6B19160D5EB0 |
ID da requisição. |
Exemplos
Exemplo de requisição:
http(s)://[Endpoint]/?Action=CreateProtectionModuleRule
&Domain=www.example.com
&DefenseType=ac_custom
&Rule={"action":"monitor","name":"test","scene":"custom_acl","conditions":[{"opCode":1,"key":"URL","values":"/example"}]}
&InstanceId=waf-cn-0xldbqt****
&<Common request parameters>
Exemplo de resposta de sucesso (XML):
HTTP/1.1 200 OK
Content-Type:application/xml
<CreateProtectionModuleRuleResponse>
<RequestId>D7861F61-5B61-46CE-A47C-6B19160D5EB0</RequestId>
</CreateProtectionModuleRuleResponse>
Exemplo de resposta de sucesso (JSON):
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId": "D7861F61-5B61-46CE-A47C-6B19160D5EB0"
}
Códigos de erro
Para obter uma lista de códigos de erro, visite o Centro de Erros de API.