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 comSIGKILL
. -
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 ambienteDATABRICKS_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 deCAN 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
ouCAN 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.