Pular para o conteúdo principal

Práticas recomendadas para aplicativos Databricks

Esta página lista práticas recomendadas importantes para desenvolver e executar aplicativos Databricks. Estas diretrizes concentram-se nos requisitos de segurança, desempenho e plataforma.

Práticas recomendadas gerais

  • Use o recurso Databricks -native para o processamento de dados. O aplicativo compute é otimizado para renderização da interface do usuário. Use Databricks SQL para consultas e conjunto de dados, LakeFlow Jobs para processamento de lotes e servindo modelo para cargas de trabalho de inferência AI.

  • Implemente um tratamento de desligamento elegante . Seu aplicativo deve ser encerrado dentro de 15 segundos após receber um sinal SIGTERM, ou ele será encerrado à força com SIGKILL.

  • Evite operações privilegiadas . Os aplicativos são executados como usuários sem privilégios e não podem realizar ações que exijam permissões elevadas, como acesso root.

  • Compreender a rede gerenciada por plataforma . As solicitações são encaminhadas por meio de um proxy reverso, portanto, seu aplicativo não pode depender da origem das solicitações. O Databricks lida com o encerramento do TLS e exige que os aplicativos ofereçam suporte ao HTTP/2 cleartext (H2C). Não implemente o tratamento personalizado de TLS.

  • Vincule ao host e à porta corretos . Seu aplicativo deve escutar em 0.0.0.0 e usar a porta especificada na variável de ambiente DATABRICKS_APP_PORT. Consulte variável de ambiente para obter detalhes.

  • Minimize o tempo do contêiner startup . Manter a lógica de inicialização leve para reduzir a latência do cold-começar. Evite bloquear operações como instalações de grandes dependências ou chamadas externas para API durante startup. Carregue recursos pesados somente quando necessário.

  • registram em stdout e stderr . Databricks captura logs da saída padrão e da transmissão de erros. Use-os para todos os registros para garantir que logs seja visível na interface do usuário Databricks. Evite gravar logs em arquivos locais.

  • Lide com erros inesperados com elegância . Implemente o tratamento global de exceções para evitar falhas causadas por erros não detectados. Retorne respostas de erro HTTP adequadas sem expor rastreamentos de pilha ou dados confidenciais.

  • versões de dependência de pinos . Use números de versão exatos em seu arquivo requirements.txt para garantir ambientes consistentes em todas as compilações. Evite usar versões não fixadas ou mais recentes do pacote.

  • Valide e limpe a entrada do usuário . Sempre valide os dados recebidos e higienize-os para evitar ataques de injeção ou entradas malformadas, mesmo em aplicativos voltados para o interior.

  • Use o cache na memória para operações caras . Armazene em cache os dados usados com frequência, como resultados de consultas ou respostas de API, para reduzir a latência e evitar o processamento redundante. Use functools.lru_cache, cachetools, ou biblioteca semelhante, e escopo de caches com cuidado em aplicativos multiusuários.

Melhores práticas de segurança

  • Siga o princípio do menor privilégio. Conceda somente as permissões necessárias para cada usuário ou grupo. Use CAN USE em vez de CAN MANAGE, a menos que seja necessário controle total. Consulte Práticas recomendadas para permissões.

  • Utilize uma entidade de serviço dedicada para cada aplicativo . Não compartilhe credenciais de entidade de serviço entre aplicativos ou usuários. Conceda somente as permissões mínimas necessárias, como CAN USE ou CAN QUERY. Consulte gerenciar acesso do aplicativo ao recurso.

  • Gerenciar segredos . Nunca exponha valores secretos brutos em variáveis de ambiente. Use valueFrom na configuração do seu aplicativo e alterne os segredos regularmente, especialmente quando as funções da equipe mudarem. Veja as melhores práticas.

  • Minimize os escopos e as ações do usuário e log . log Ao utilizar a autorização do usuário, solicite apenas os escopos necessários para o seu aplicativo e registre todas as ações do usuário com registros de auditoria estruturados. Consulte Práticas recomendadas para autorização do usuário.

  • Restrinja o acesso externo à rede . Permita apenas os domínios necessários para o seu aplicativo, como repositórios de pacotes e APIs externos. Utilize o modo dry-execução e a negação logs para validar a sua configuração. Consulte Práticas recomendadas para configurar políticas de rede.

  • Siga as práticas seguras de codificação . Parametrizar consultas SQL para evitar ataques de injeção e aplicar diretrizes gerais de desenvolvimento seguro, como validação de entrada e tratamento de erros. Consulte API de execução de instruções: Executar SQL em armazéns.