ESTOU INDO A BD DO MODO ERRADO?

MARCOS 26/10/2022 17:14:53
#500655
Boa tarde, Pessoal!
Peço , se possível a opinião de voces para uma
dúvida sobre acesso a Banco De Dados:


O caso:

Eu sei que nas aplicações Web e com acesso a API"s , é comum se utilizar
o acesso, a BD utilizando-se WebService e End-Point"s. Já é quase um padrão,
para evitar o acesso direto a BD.
No entanto, quando crio uma aplicação "Desktop" "simples", que roda na máquina do funcionário e
acessa a BD dentro da rede local, eu costumo fazer o acesso direto a BD.Tomando o cuidado de criptografar
a senha da String de conexão.

No entanto, um colega argumentou comigo, de que isso é muito perigoso , pois alguém que consiga invadir a
rede interna, pode quebrar a senha que o aplicativo usa para acessar a BD, e comprometer a BD.
Ele, simplesmente costuma criar Todo um WEbService , num servidor da rede local e faz a aplicação Desktop
do Funcionário , interagir com o WebService e lidar com a BD.

Gostaria de saber dos colegas se esse cuidado procede ou é um exagero.

Quando criam suas aplicações Desktop, para acessar BD dentro da mesma rede local, voces costumam criar
um WebService completo num servidor separado, só para conseguir acesso a BD para aquele pequeno aplicativo?????

FUTURA 26/10/2022 18:25:00
#500656
Eu crio conexão direta, os dados carregados na string de conexão ficam criptogrados. Criar APIs para conexão via lan é trabalhoso hein ?, cada coisa q muda no bd, talém de mexer na programação teria q alterar tbm na API.
KERPLUNK 26/10/2022 19:25:51
#500658
Independente de tipo de aplicação(Desktop, Web ou Mobile), sempre uso API. Instalo em alguma máquina da rede do cliente que vai fazer o papel de "servidor". Essa máquina tem uma segurança refoçada e só uma out duas pessoas da empresa tem acesso(e ainda assim limitado). Segurança é algo que tem que ser levado à sério. Outra coisa que o uso de API ajuda é performance, para alguns casos pode melhorar muito. Além disso, se quiser acessar a aplicação de fora da rede, é muito mais simples de se prover acesso.

Nunca aconteceu comigo, mas já vi pessoas que tiveram problemas com "sequestro de dados", quando tiveram a rede invadida. Uma única máquina na rede invadida e pronto, tudo estava comprometido.
MARCOS 27/10/2022 11:09:06
#500661
Kerplunk,
Então vc recomenda fazer o acesso usando API , usando métodos (EndPoints) , "mesmo" quando a aplicação que vai rodar na máquina do usuário:

- É Desktop
- E acessa uma BD dentro da mesma rede local ( Ou seja, é o acesso parte de um aplicativo instalado, dentro da própia empresa)
KERPLUNK 27/10/2022 11:53:33
#500664
Sim, recomendo totalmente.
MARCOS 27/10/2022 12:39:40
#500665
Kerplunk e colegas,

Estou avaliando seguir a recomendação do Kerplunk:


Como faço atualmente:


Nos meus aplicativos Desktop (WinForm), eu costumo deixar o executavel(.exe)
, num servidor de aplicação. Na máquina do usuário na rede local, fica um atalho
apontando para este executável no servidor.
O acesso do aplicativo a BD é feito de modo direto, com String de conexão criptografada (ADO).


Como estou pensando em fazer, para seguir a orientação do Kerplunk:


- Estou pensando manter o mesmo servidor de aplicação como esta hoje, com o executável. Mas, pretendo incluir a API(Com o WebService), no mesmo servidor. Ao invés de acessar a BD de modo direto, o aplicativo irá se comunicar com a API (WebService/End Points), e obter o acesso a BD


Minhas dúvidas:

1.) É correto usar o mesmo servidor de aplicação, onde já esta o executável para instalar minha API de acesso ao BD? ou devo usar um servidor "exclusivo" para colocar as API"s, fora do servidor de aplicação?

2.) Tenho vários aplicativos "Desktop" diferentes na máquina dos usuários. O correto seria criar uma única
API , com métodos (End Points), para todos os aplicativos. Ou seria melhor ter várias API"s de acesso a BD, cada uma para um aplicativo diferente?


Agradeço qualquer orientação.

KERPLUNK 27/10/2022 14:30:41
#500666
1 - Não tem muito essa de correto, ao invés de correto e incorreto, tente pensar em eficiente/seguro. Geralmente máquinas que fazem o gerenciamento de requisições, são mais "especializadas" nisso, tipo, tem configurações de rede diferenciadas(mais otimizadas), pode ou não estar exposto para a Web(para dar acesso à sua aplicação de uma rede externa), caches e memória mais robustas, enfim. Já a máquina onde ficaria o banco de dados, teria sua configuração também mais específica para rodar bancos de dados, com HD maior e mais eficiente(SCSI ou SSD ou combinações disso), é bem mais fechado, ou seja, só a máquina onde está o serviço consegue acesso(segurança do banco) portanto não exposto. É aquela velha conhecida "divisão de responsabilidades".
2 - Se são aplicativos diferentes, com funções diferentes e em bancos diferentes, então são API"s diferentes.
MARCOS 15/03/2023 16:13:12
#501142
Obrigado!!!
Faça seu login para responder