Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Data API Builder expõe os seus dados através de endpoints REST e GraphQL. Proteger a sua API requer atenção a três áreas principais: autenticação (quem está a ligar?), autorização (o que podem fazer?) e segurança de transporte (a ligação está protegida?).
Três pilares de segurança
| Pilar | Pergunta que responde | Conceito-chave |
|---|---|---|
| Authentication | Quem é o chamador? | Validar tokens de um fornecedor de identidade |
| Authorization | O que podem fazer? | Permissões baseadas em funções nas entidades |
| Transportes | A ligação é segura? | Encriptação TLS para todo o tráfego |
Escolha o seu fornecedor de autenticação
O Data API Builder suporta múltiplos fornecedores de autenticação. Escolhe aquele que corresponde ao teu cenário de implantação:
| Provider | Caso de uso | Guia |
|---|---|---|
Microsoft Entra ID (EntraID/AzureAD) |
Aplicações de produção que usam a identidade Microsoft | Configurar autenticação Entra |
| JWT Personalizado | IDPs de terceiros (Okta, Auth0, Keycloak) | Configurar autenticação JWT personalizada |
| Serviço de Aplicações | Aplicações a executar atrás do Azure App Service EasyAuth (cabeçalhos da plataforma) | Configurar autenticação de App Service |
| Simulador | Desenvolvimento local e testes | Configurar autenticação do simulador |
| Aplicações Web Estáticas | Aplicações anteceadas por cabeçalhos de autenticação SWA | Configurar autenticação de App Service |
Sugestão
Comece pelo fornecedor Simulador durante o desenvolvimento para testar permissões sem configurar um fornecedor de identidade. Muda para um fornecedor de produção antes de lançar.
Autenticação
A autenticação verifica a identidade do chamador. O Data API builder autentica os pedidos validando tokens portadores JWT (EntraID/AzureAD, Custom) ou confiando nos cabeçalhos de identidade fornecidos pela plataforma (AppService, ). StaticWebApps
Simulator Ignora a validação externa para desenvolvimento.
Como funciona
- Para os fornecedores JWT, o cliente adquire um token do fornecedor de identidade
- O cliente envia o token no cabeçalho
Authorization: Bearer <token>(fornecedores de JWT) ou a plataforma injeta cabeçalhos de identidade (EasyAuth/SWA) - O Data API builder valida o token ou cabeçalho da plataforma (emissor, audiência, assinatura para fornecedores JWT)
- O DAB extrai as funções do utilizador do token ou do cabeçalho de identidade
Referência rápida
| Configuração | Description |
|---|---|
runtime.host.authentication.provider |
O fornecedor de autenticação (EntraID/AzureAD, Custom, AppService, StaticWebApps, ) Simulator |
runtime.host.authentication.jwt.audience |
Declaração de audiência esperada para fornecedores JWT (não é utilizado por AppService/StaticWebApps/Simulator) |
runtime.host.authentication.jwt.issuer |
Emissor/autoridade esperado para fornecedores JWT (não utilizado por AppService/StaticWebApps/Simulator) |
Para configuração detalhada, consulte Configurar autenticação do ID Microsoft Entra.
Autorização
A autorização determina o que um utilizador autenticado (ou anónimo) pode fazer. O Data API Builder utiliza controlo de acesso baseado em funções (RBAC) para restringir o acesso a entidades e ações.
Como funciona
- O DAB atribui um papel ao pedido com base no token e nos cabeçalhos
- O DAB verifica as permissões da entidade para esse papel
- Se o papel tiver permissão para a ação solicitada, o DAB executa a consulta
- Caso contrário, o DAB retornará uma resposta
403 Forbidden.
Funções do sistema vs. funções de utilizadores
| Tipo de função | Description |
|---|---|
Anonymous |
Atribuída quando não existe identidade autenticada |
Authenticated |
Atribuído quando um pedido é autenticado (aceite JWT ou cabeçalho de plataforma de confiança) e não é selecionada nenhuma função de utilizador específica. |
| Papéis de utilizador | Funções personalizadas a partir da reivindicação do token roles (ou funções da plataforma), selecionadas através do cabeçalho X-MS-API-ROLE |
Proteger por predefinição
As entidades não têm permissões por padrão. Deve conceder explicitamente o acesso:
{
"entities": {
"Book": {
"permissions": [
{ "role": "authenticated", "actions": ["read"] }
]
}
}
}
Para uma configuração detalhada, veja Autorização e funções.
Segurança ao nível da linha e ao nível do campo
Vá além das permissões ao nível da entidade com controlo de acesso detalhado:
| Característica | Description | Guia |
|---|---|---|
| Políticas de base de dados (segurança ao nível das linhas) | Traduzir expressões de política em predicados de consulta que filtram linhas com base em reivindicações ou contexto de sessão | Implementar segurança ao nível das linhas |
| Segurança a nível do campo | Incluir ou excluir colunas específicas por função | Acesso ao campo |
Segurança do transporte e da configuração
Segurança dos transportes
- Use TLS para todas as ligações: Encripte o tráfego entre clientes e DAB
- Desativar versões legadas do TLS: Confiar apenas no TLS 1.2+
- Utilize pontos de extremidade HTTPS: Nunca exponha DAB em HTTP não encriptado em produção
Para mais detalhes, consulte as melhores práticas de segurança.
Segurança de configuração
-
Armazene segredos em variáveis de ambiente: Use
@env('SECRET_NAME')na sua configuração -
Use Azure Key Vault: Referenciar segredos com
@azure('key-vault-uri') -
Nunca comprometa segredos: Mantenha-se
dab-config.jsonlivre de palavras-passe e strings de ligação
{
"data-source": {
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
}
Monitorização e atualizações
- Monitorizar o acesso: Utilizar o Application Insights para rastrear pedidos e detetar anomalias
- Rever registos: Verifique tentativas de autenticação falhadas e recusas de permissões
- Mantenha o DAB atualizado: Aplique patches de segurança atualizando para a versão mais recente
Guias de início rápido
| Tarefa | Guia |
|---|---|
| Configurar a autenticação do Microsoft Entra ID | Configurar autenticação Entra |
| Utilize o Okta ou o Auth0 | Configurar autenticação JWT personalizada |
| Executar por trás do Azure App Service | Configurar autenticação de App Service |
| Testar permissões localmente | Configurar autenticação do simulador |
| Restringir linhas por utilizador | Implementar segurança ao nível das linhas |
| Compreender a atribuição de funções | Autorização e funções |