Pular para o conteúdo principal

Laboratório Técnico: Configure rewrite rule sets

Questões

Questão 1 — Múltipla Escolha

Um arquiteto de redes precisa configurar um Application Gateway para remover o cabeçalho X-Powered-By de todas as respostas HTTP antes de enviá-las ao cliente. Ele cria um rewrite rule set e associa ao listener correto.

Qual é a combinação correta de elementos que deve compor essa regra?

A) Condition com http_req_header, Action do tipo set com valor vazio
B) Condition não é necessária; Action do tipo delete aplicada a http_res_header
C) Condition com http_res_header, Action do tipo delete aplicada a http_req_header
D) Condition com http_res_header, Action do tipo set com valor vazio aplicada ao mesmo cabeçalho de resposta


Questão 2 — Cenário Técnico

Uma equipe configurou o seguinte rewrite rule no Application Gateway:

Condition:
Variable: uri_path
Pattern: ^/api/v1/(.*)
Case-sensitive: false

Action:
URL rewrite
Modified path: /api/v2/{var_uri_path_1}

Após a implantação, as requisições para /api/v1/users chegam ao backend como /api/v2/api/v1/users em vez de /api/v2/users. Qual é a causa do problema?

A) O Application Gateway não suporta captura de grupos em condições de URL path
B) A variável {var_uri_path_1} captura o valor completo do uri_path original, não apenas o grupo de captura
C) A flag de case-insensitive invalida o uso de grupos de captura na regex
D) A action de URL rewrite deve usar {var_uri_path} sem o sufixo numérico para referenciar grupos


Questão 3 — Verdadeiro ou Falso

Um rewrite rule set criado no Application Gateway pode ser associado simultaneamente a múltiplas regras de roteamento (request routing rules), e essa associação determina em quais fluxos de tráfego as reescritas serão aplicadas.

Verdadeiro ou Falso?


Questão 4 — Cenário Técnico

Uma empresa usa Application Gateway para expor uma aplicação interna. O time de segurança exige que toda resposta HTTP inclua o cabeçalho Strict-Transport-Security: max-age=31536000. O engenheiro de redes criou uma regra de rewrite com a Action correta, mas o cabeçalho não aparece nas respostas observadas pelo cliente.

Após investigação, identificou-se que o rewrite rule set está configurado corretamente, mas não está sendo aplicado. Qual é a causa mais provável?

A) O Application Gateway requer reinicialização manual após qualquer alteração em rewrite rule sets
B) O rewrite rule set foi criado, mas não foi associado a nenhuma request routing rule
C) Cabeçalhos de segurança como Strict-Transport-Security são bloqueados por padrão pelo WAF
D) A Action para inserir cabeçalhos de resposta só funciona quando há uma Condition definida na mesma regra


Questão 5 — Múltipla Escolha

Ao configurar uma Condition em um rewrite rule do Application Gateway, o campo Pattern aceita expressões regulares. Um engenheiro deseja que a regra seja aplicada somente quando o cabeçalho Accept-Language da requisição contiver pt-BR ou pt-PT.

Qual pattern atende corretamente a esse requisito?

A) pt-BR|pt-PT
B) ^pt-(BR|PT)$
C) pt-BR&pt-PT
D) (pt-BR)(pt-PT)


Gabarito e Explicações

Gabarito — Questão 1

Resposta: B

Em rewrite rules do Application Gateway, a Action é o elemento obrigatório; a Condition é opcional e serve apenas para tornar a execução da regra condicional. Para remover um cabeçalho, a Action deve ser do tipo delete aplicada à variável http_res_header, pois o cabeçalho X-Powered-By pertence à resposta do backend, não à requisição do cliente.

O principal equívoco dos distratores é confundir a direção do cabeçalho (req vs res) e supor que uma Condition é obrigatória. Escolher set com valor vazio não remove o cabeçalho: o cabeçalho permanece presente na resposta, apenas sem valor, o que não satisfaz o requisito de segurança.


Gabarito — Questão 2

Resposta: B

No Application Gateway, quando uma regex com grupos de captura é definida na Condition, os grupos são referenciados na Action com variáveis no formato {var_uri_path_1}, {var_uri_path_2} etc. O numeral indica o índice do grupo de captura, e o prefixo var_ seguido do nome da variável da condition indica a origem.

O problema aqui é que {var_uri_path_1} captura corretamente apenas o grupo (.*), que seria users. Porém, se o path configurado na Action for /api/v2/{var_uri_path_1} e a variável estiver retornando o path inteiro, isso indica que o nome da variável de condition foi definido incorretamente ou que a referência inclui o path completo. Na prática, o erro mais comum que produz esse sintoma é usar a variável da condição com o nome errado, fazendo ela resolver para o valor bruto de uri_path em vez do grupo capturado. Os outros distratores são falsos: grupos de captura são suportados, a flag de case-insensitive não os afeta, e o sufixo numérico é justamente o mecanismo correto para referenciar grupos.


Gabarito — Questão 3

Resposta: Verdadeiro

Um rewrite rule set é um objeto independente no Application Gateway e pode ser associado a uma ou mais request routing rules. Essa associação é o mecanismo que define o escopo de aplicação das reescritas: o mesmo conjunto de regras pode ser reutilizado em múltiplos fluxos de tráfego sem duplicação de configuração.

O comportamento não óbvio aqui é que a associação é feita na request routing rule, não no listener nem no backend pool. Engenheiros que confundem essa hierarquia frequentemente associam o rewrite rule set ao listener e não entendem por que a reescrita não é aplicada.


Gabarito — Questão 4

Resposta: B

No Application Gateway, criar um rewrite rule set não é suficiente para que ele produza efeito. O rule set precisa ser explicitamente associado a uma ou mais request routing rules. Sem essa associação, o rule set existe na configuração mas não intercepta nenhum fluxo de tráfego.

Os outros distratores representam equívocos comuns: o Application Gateway aplica alterações de configuração sem reinicialização manual do serviço; o WAF inspeciona requisições e respostas em busca de ameaças, mas não bloqueia cabeçalhos de segurança legítimos inseridos por rewrite rules; e a presença de uma Condition nunca é pré-requisito para que uma Action seja executada.


Gabarito — Questão 5

Resposta: A

O campo Pattern nas Conditions do Application Gateway utiliza sintaxe de expressão regular compatível com PCRE. O operador | é o alternador lógico correto para expressar "pt-BR ou pt-PT", e o pattern pt-BR|pt-PT avalia se o valor do cabeçalho contém qualquer uma das duas strings.

O distrator B usaria âncoras ^ e $, o que exigiria que o valor do cabeçalho fosse exatamente pt-BR ou pt-PT, sem nada mais. Dependendo do contexto isso pode ou não ser desejável, mas o enunciado pede apenas que o cabeçalho "contenha" os valores. O distrator C usa &, que não é um operador de alternância em regex. O distrator D exige que ambas as strings estejam presentes e consecutivas no mesmo valor, o que não corresponde ao requisito.