Recursos · 37

Proteger uma API GraphQL: autorização, custo de consulta e evidências

Impor direitos de objeto e campo, vincular o trabalho do servidor e testar caminhos de negação.

Atualizado · 2 min

Livros sobre Internet e tecnologia numa biblioteca Ilustração · cena fictícia

O que este guia ajuda a alcançar

  • Mapear o esquema exposto
  • Exercitar permissões
  • Custo da consulta vinculada
  • Verificar negações

Verificação rápida

  • Uma conta pode ler o objeto de outra conta?
  • Um campo sensível segue a decisão de acesso de seu pai?
  • Qual o custo combinado de profundidade, aliases e paginação?
  • Quais detalhes vazam por meio de erros?
  • Quem observa negações e abusos?

Método passo a passo

  1. 1

    Inventariar operações

    Listar tipos, campos, mutações, funções, proprietários de objetos e dados sensíveis. Incluir consultas atuais do cliente e caminhos raramente usados.

    Entregável: matriz de operação, função, objeto e campo.

  2. 2

    Testar cada decisão de acesso

    Criar contas de teste distintas e trocar IDs de objeto, incluindo objetos aninhados. Os resolvedores devem impor autorização antes de retornar dados.

    Entregável: casos reproduzíveis de permissão e negação.

  3. 3

    Trabalho de servidor vinculado

    Medir o custo real de campos e coleções. Testar profundidade, abrangência, aliases, paginação, processamento em lote e tempo em conjunto e, em seguida, definir limites adequados.

    Entregável: política de custo e conjunto de consultas adversárias.

  4. 4

    Reduzir a exposição desnecessária

    Decidir sobre a introspecção para o contexto, ocultar detalhes de erros internos e remover campos que revelem mais do que os clientes precisam.

    Entregável: configuração pública revisada e respostas a erros.

  5. 5

    Observar com moderação

    Registrar identidade técnica útil, operação, custo, negação e correlação, excluindo segredos e argumentos sensíveis. Atribuir a responsabilidade pelo alerta.

    Entregável: painel e procedimento de investigação.

  6. 6

    Reproduzir após alteração

    Quando um campo, função ou cliente for alterado, repetir os casos de autorização e carregamento. Verificar consultas antigas que agora percorrem o grafo revisado.

    Entregável: resultado da regressão e decisão de lançamento.

Indicadores de gestão

IndicadorO que medePrimeira ação
AcessoCasos de objeto e campo negados conforme o esperadoCorrigir o resolvedor
CustoConsultas complexas contidas pela políticaAjustar campos e limites
ErrosRespostas públicas sem detalhes internosReduzir detalhes expostos
RegressãoOperações do cliente reproduzidas após alteraçãoBloquear quebras não intencionais

Erros comuns

  • Confiar apenas no acesso ao endpoint
  • Limitar a profundidade, mas ignorar a amplitude
  • Esquecer a autorização de campos aninhados
  • Registrar argumentos com dados sensíveis

Perguntas frequentes

O GraphQL remove a autorização de API comum?

Não. Cada acesso a objeto e campo ainda precisa de uma decisão baseada em identidade e contexto.

Desativar a introspecção é suficiente?

Não. Pode reduzir a exposição do esquema, mas não corrige o custo de acesso ou de consulta.

Um limite de profundidade é suficiente?

Não. Aliases, amplitude, listas e custo específico do campo também importam.

Referências oficiais

As referências apoiam o método. Adapte as verificações ao seu contexto; elas não são uma certificação. Os títulos das referências originais e os documentos de origem podem estar em outro idioma.