
A liderança da pequena empresa para a qual trabalho ficou muito entusiasmada com o SaaS e está empurrando nosso produto para uma implantação SaaS - estou preocupado com isso porque parte da funcionalidade do produto é baseada na capacidade dos usuários de usar inteligência de negócios ferramentas para escrever relatórios no banco de dados subjacente do aplicativo.
Quando pergunto sobre como planejamos fornecer essa funcionalidade no modelo SaaS, sou recebido com olhares vazios e a resposta é simplesmente que exporemos o servidor de banco de dados na Internet e permitiremos que as pessoas consultem o banco de dados como se ele estivesse sendo executado dentro sua rede corporativa.
Isso me assusta muito, mas não sei se estou apenas sendo paranóico ou se há um motivo significativo para me preocupar.
Portanto, minha pergunta é: é possível reforçar adequadamente a segurança de um servidor de banco de dados Oracle para que não precisemos nos preocupar com o fato de ele ficar exposto na Internet? E se sim, que recursos devo pesquisar para aprender a fazer isso? O banco de dados armazenará informações proprietárias que nossos clientes não gostariam de expor ao mundo e, ainda assim, uma proposta para colocar essa funcionalidade por trás de uma VPN foi totalmente rejeitada.
Minhas pesquisas sobre como proteger um banco de dados Oracle incluíram praticamente todas declarações do tipo "Nunca abra um buraco no seu firewall", então pode ser que a resposta correta aqui seja "Atualize seu currículo o mais rápido possível", mas eu aprecio qualquer conselho que você possa dar.
Responder1
Expor um banco de dados não é realmente umagiganteproblema em comparação com alguns dos outros serviços que são frequentemente expostos ao world+dog... exceto que é um sistema complicado com muitas vulnerabilidades potenciais, incluindo escalonamento de permissões. Eu garantiria que você não expusesse o banco de dados a consultas públicas e executasse com SSL necessário, etc. Eu diria que é possível, mas sim, você deve ser paranóico e deve manter uma instalação de banco de dados separada para o público. Se a sua empresa não estiver disposta a pagar os custos de licenciamento por isso, sim, vá embora.
Do lado do cliente/suporte, conectar-se diretamente ao banco de dados pode ser um problema se o ISP do cliente bloquear determinados tipos de portas ou tráfego.
Em um modelo SaaS, o que você geralmente deseja que seus programadores façam é escrever uma API que possa ser consultada no aplicativo. APIs dessa natureza normalmente operam em https e fornecem dados ao aplicativo na resposta HTTP. Bônus adicional: funciona em qualquer lugar onde a web funciona, é MUITO fácil armazenar conjuntos de resultados em cache usando memcached ou outras tecnologias de cache para reduzir a carga no servidor db, e a autenticação http é muito bem suportada e testada.
Responder2
Eu configuraria um segundo servidor de banco de dados na DMZ, importaria dumps para esse banco de dados e tornaria a publicidade desse banco de dados disponível.
Responder3
Como tenho certeza de que você concordará, basicamente, por definição, acesso e segurança são uma troca. E você está sendo encarregado de tornar acessíveis dados confidenciais.
A resposta curta é: você pode mitigar muitos riscos com truques de firewall, arquitetura de rede sólida, conjuntos de patches atualizados, auditoria de acesso e backups abundantes.
O gerenciamento de senhas também vem à mente como algo complicado de realizar, muitas vezes as contas de aplicativos têm senhas que nunca expiram e controles de acesso físico/de rede são implementados para garantir que ex-funcionários com conhecimento de senha não possam obter acesso aos dados. Se o seu servidor de banco de dados estiver exposto a toda a Internet, isso parece algo difícil de fazer.
Você provavelmente também desejará definir 'estamos comprometidos, o que fazemos agora?' estratégia, para que você estabeleça expectativas para todos os envolvidos e tenha um plano de ação para quando sua sorte acabar.
Responder4
SaaS são bens.
Expor um servidor de banco de dados à Internet – não é tão bom.
Por que eles precisam disso exposto? É por causa do RPC e eles não querem usar portas RPC estáticas?
Mas existem alguns ótimos firewalls de aplicativos e se você bloquear a porta endmapper do banco de dados e, em seguida, firewall - você pode fazer algumas coisas boas com ACLs, restrições de IP, etc.
E você precisará auditar logs de eventos, verificação de vulnerabilidades, etc.