Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A: Todos os API Management níveis
A política validate-graphql-request valida o pedido GraphQL e autoriza access a caminhos de consulta específicos numa API GraphQL. Uma consulta inválida é um "erro de solicitação". A autorização só é feita para pedidos válidos.
Nota
Defina os elementos da política e os elementos filho na ordem fornecida na declaração de política. Saiba mais sobre como definir ou editar API Management políticas.
Declaração de política
<validate-graphql-request error-variable-name="variable name" max-size="size in bytes" max-depth="query depth">
<authorize>
<rule path="query path, for example: '/listUsers' or '/__*'" action="string or policy expression that evaluates to 'allow | remove | reject | ignore'" />
</authorize>
</validate-graphql-request>
Atributos
| Atributo | Descrição | Necessário | Predefinição |
|---|---|---|---|
| error-variable-name | Nome da variável em context.Variables para registrar erros de validação. São permitidas expressões de política. |
Não | N/A |
| tamanho-máximo | Tamanho máximo da carga útil da solicitação em bytes. Valor máximo permitido: 102.400 bytes (100 KB). (Contacte suporte se precisar de aumentar este limite.) Expressões de políticas são permitidas. | Sim | N/A |
| profundidade-máxima | Um inteiro. Profundidade máxima da consulta. São permitidas expressões de política. | Não | 6 |
Elementos
| Nome | Descrição | Necessário |
|---|---|---|
| autorizar | Adicione este elemento para definir uma regra de autorização apropriada para um ou mais caminhos. | Não |
| regra | Adicione um ou mais desses elementos para autorizar caminhos de consulta específicos. Cada regra pode, opcionalmente, especificar uma ação diferente. Pode ser especificado condicionalmente usando uma expressão de política. Para cada campo folha GraphQL, API Management avalia todas as regras de correspondência e aplica a correspondência de caminho mais específica (por exemplo, /Query/listUsers sobrepõe /Query/*). |
Não |
atributos da regra
| Atributo | Descrição | Necessário | Predefinição |
|---|---|---|---|
| caminho | Caminho para executar a validação de autorização. Deve seguir o padrão: /type/field. |
Sim | N/A |
| ação | Ação a executar se a regra se aplicar. Pode ser especificado condicionalmente usando uma expressão de política. | Não | permitir |
Sistema de introspeção
A política para path=/__* é o sistema de introspeção . Você pode usá-lo para rejeitar solicitações de introspeção (__schema, __type, etc.).
Solicitar ações
As ações disponíveis são descritas na tabela a seguir.
| Ação | Descrição |
|---|---|
| rejeitar | Acontece um erro de solicitação e a solicitação não é enviada para o back-end. Regras adicionais, se configuradas, não são aplicadas. |
| remover | Ocorre um erro de campo e o campo é removido da solicitação. |
| permitir | O campo é passado para o backend. |
| ignorar | A regra não é válida para este caso e a regra seguinte é aplicada. |
Utilização
- Secções políticas: entrada
- Escopos de política: global, espaço de trabalho, produto, API
- Gateways: clássico, v2, consumo, auto-hospedado, espaço de trabalho
Notas de utilização
Configure a política para uma API GraphQL pass-through ou sintética que tenha sido importada para API Management.
Esta política só pode ser utilizada uma vez numa secção de política.
Como as consultas GraphQL usam um esquema achatado, as permissões podem ser aplicadas em qualquer nó folha de um tipo de saída:
- Mutação, consulta ou subscrição
- Campo individual numa declaração de tipo
As permissões não podem ser aplicadas a:
- Tipos de entrada
- Fragmentos
- Sindicatos
- Interfaces
- O elemento do esquema
A política pode validar solicitações GraphQL com até 250 campos de consulta em todos os níveis.
Processamento de erros
A falha na validação em relação ao esquema GraphQL, ou uma falha no tamanho ou profundidade da solicitação, é um erro de solicitação e resulta na falha da solicitação com um bloco de erros (mas sem bloco de dados).
Semelhante à Context.LastError propriedade, todos os erros de validação do GraphQL são propagados automaticamente na GraphQLErrors variável. Se os erros precisarem ser propagados separadamente, você poderá especificar um nome de variável de erro. Os erros são empurrados para a error variável e para a GraphQLErrors variável.
Exemplos
Validação da consulta
Este exemplo aplica as seguintes regras de validação e autorização a uma consulta GraphQL:
- Solicitações maiores que 100 kb ou com profundidade de consulta maior que 4 são rejeitadas.
- Os pedidos para o sistema de introspeção são rejeitados.
- O
/Missions/namecampo é removido das solicitações que contêm mais de dois cabeçalhos.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4">
<authorize>
<rule path="/__*" action="reject" />
<rule path="/Missions/name" action="@(context.Request.Headers.Count > 2 ? "remove" : "allow")" />
</authorize>
</validate-graphql-request>
Validação de mutações
Este exemplo aplica as seguintes regras de validação e autorização a uma mutação GraphQL:
- Solicitações maiores que 100 kb ou com profundidade de consulta maior que 4 são rejeitadas.
- As solicitações para mutar o
deleteUsercampo são negadas, exceto quando a solicitação é do endereço198.51.100.1IP .
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4">
<authorize>
<rule path="/Mutation/deleteUser" action="@(context.Request.IpAddress <> "198.51.100.1" ? "deny" : "allow")" />
</authorize>
</validate-graphql-request>
Políticas relacionadas
Conteúdos relacionados
Para obter mais informações sobre como trabalhar com políticas, consulte:
- Tutorial: Transforme e proteja sua API
- Referência de política para uma lista completa de declarações de política e suas configurações
- Expressões de política
- Definir ou editar políticas
- Reutilizar configurações de política
- Snippets de políticas repo
- Repositório de recreio de políticas
- Azure API Management kit de ferramentas de políticas
- Obtenha assistência do Copilot para criar, explicar e resolver políticas