Compartilhar via


Proteger sua solução do construtor de API de dados

Data API Builder expõe seus dados por meio de endpoints REST e GraphQL. Proteger sua API requer atenção a três áreas principais: autenticação (quem está chamando?), autorização (o que eles podem fazer?) e segurança de transporte (a conexão está protegida?).

Ilustração do fluxo de solicitação de ponta a ponta mostrando autenticação, autorização e acesso ao banco de dados.

Três pilares de segurança

Pilar Pergunta respondida Conceito chave
Autenticação Quem é o chamador? Validar tokens de um provedor de identidade
Autorização O que eles podem fazer? Permissões baseadas em função em entidades
Transport A conexão é segura? Criptografia TLS para todo o tráfego

Escolha seu provedor de autenticação

O Construtor de API de Dados dá suporte a vários provedores de autenticação. Escolha aquele que corresponda ao cenário de implantação:

Fornecedor Caso de uso Guide
Microsoft Entra ID (EntraID/AzureAD) Aplicativos de produção usando a identidade da Microsoft Configurar a autenticação do Entra
JWT personalizado IdPs de terceiros (Okta, Auth0, Keycloak) Configurar a autenticação JWT personalizada
Serviço de Aplicativo Aplicativos em execução por trás do EasyAuth do Serviço de Aplicativo do Azure (cabeçalhos de plataforma) Configurar a autenticação do Serviço de Aplicativo
Simulador Desenvolvimento e teste locais Configurar a autenticação do Simulador
Aplicativos Web Estáticos Aplicativos utilizando cabeçalhos de autenticação SWA Configurar a autenticação do Serviço de Aplicativo

Dica

Comece com o provedor Simulator durante o desenvolvimento para testar permissões sem configurar um provedor de identidade. Alterne para um provedor de produção antes de implantar.

Autenticação

A autenticação verifica a identidade do chamador. O construtor de API de dados autentica solicitações validando tokens de portador JWT (EntraID/AzureAD, Custom) ou confiando em cabeçalhos de identidade fornecidos pela plataforma (AppService, StaticWebApps). Simulator ignora a validação externa para desenvolvimento.

Ilustração de como os clientes se autenticam no construtor de API de Dados usando tokens JWT.

Como funciona

  1. Para provedores JWT, o cliente adquire um token do provedor de identidade
  2. O cliente envia o token no cabeçalho Authorization: Bearer <token> (provedores JWT) ou a plataforma injeta cabeçalhos de identidade (EasyAuth/SWA)
  3. O construtor de API de dados valida o token ou o cabeçalho da plataforma (emissor, audiência, assinatura para provedores JWT)
  4. O DAB extrai as funções do usuário do cabeçalho de token ou identidade

Referência rápida

Configurações Description
runtime.host.authentication.provider O provedor de autenticação (EntraID/AzureAD, , Custom, AppService, StaticWebApps, ) Simulator
runtime.host.authentication.jwt.audience Declaração do destinatário esperado para provedores JWT (não utilizada por AppService/StaticWebApps/Simulator)
runtime.host.authentication.jwt.issuer Emissor/autoridade esperado para provedores JWT (não usado por AppService/StaticWebApps/Simulator)

Para obter uma configuração detalhada, consulte Configurar a autenticação da ID do Microsoft Entra.

Autorização

A autorização determina o que um usuário autenticado (ou anônimo) pode fazer. O Construtor de API de Dados usa o RBAC (controle de acesso baseado em função) para restringir o acesso a entidades e ações.

Ilustração de como o Construtor de API de Dados seleciona uma função e avalia as permissões para uma solicitação.

Como funciona

  1. O DAB atribui uma função à solicitação com base no token e cabeçalhos
  2. O DAB pesquisa as permissões da entidade para essa função
  3. Se a função tiver permissão para a ação solicitada, o DAB executará a consulta
  4. Caso contrário, o DAB retornará uma 403 Forbidden resposta

Funções do sistema versus funções de usuário

Tipo de função Description
Anonymous Atribuído quando nenhuma identidade autenticada está presente
Authenticated Atribuído quando uma solicitação é autenticada (JWT aceito ou cabeçalho de plataforma confiável) e nenhuma função de usuário específica é selecionada
Funções de usuário Funções personalizadas da declaração do token roles (ou funções de plataforma), selecionadas via cabeçalho X-MS-API-ROLE

Segurança por padrão

As entidades não têm permissões por padrão. Você deve conceder acesso explicitamente:

{
  "entities": {
    "Book": {
      "permissions": [
        { "role": "authenticated", "actions": ["read"] }
      ]
    }
  }
}

Para obter uma configuração detalhada, consulte Autorização e funções.

Segurança em nível de linha e de campo

Vá além das permissões de nível de entidade com controle de acesso refinado:

Característica Description Guide
Políticas de banco de dados (segurança em nível de linha) Traduzir expressões de política em predicados de consulta que filtram linhas com base em declarações ou contexto de sessão Implementar a segurança em nível de linha
Segurança de nível de campo Incluir ou excluir colunas específicas por função Acesso a campo

Segurança de transporte e configuração

Segurança do transporte

  • Usar o TLS para todas as conexões: criptografar o tráfego entre clientes e o DAB
  • Desabilitar versões herdadas do TLS: depender apenas do TLS 1.2+
  • Usar pontos de extremidade HTTPS: nunca exponha o DAB sobre HTTP não criptografado em produção

Para obter detalhes, consulte as práticas recomendadas de segurança.

Segurança de configuração

  • Armazenar segredos em variáveis de ambiente: usar @env('SECRET_NAME') em sua configuração
  • Usar o Azure Key Vault: referenciar segredos com @azure('key-vault-uri')
  • Nunca armazene segredos: mantenha dab-config.json livre de senhas e strings de conexão
{
  "data-source": {
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  }
}

Monitoramento e atualizações

  • Monitorar o acesso: usar o Application Insights para acompanhar solicitações e detectar anomalias
  • Revisar logs: Verificar se houve tentativas de autenticação com falha e negações de permissões
  • Manter o DAB atualizado: aplicar patches de segurança atualizando para a versão mais recente

Guias de início rápido

Tarefa Guide
Configurar a autenticação do Microsoft Entra ID Configurar a autenticação do Entra
Usar Okta ou Auth0 Configurar a autenticação JWT personalizada
Operar em segundo plano com o Serviço de Aplicativo do Azure Configurar a autenticação do Serviço de Aplicativo
Teste permissões localmente Configurar a autenticação do Simulador
Restringir linhas por usuário Implementar a segurança em nível de linha
Entender a atribuição de função Autorização e funções