Ci sono casi in cui è una buona idea impedire l'accesso remoto a un database?

1

Il mio collaboratore sta lavorando a un progetto e ha deciso di lasciare che il database si abbassi completamente sul server glassfish con glassfish che è l'unica cosa che può accedere direttamente al database. Creerà quindi servizi Web e una libreria in Java per accedere a questi dati.

Per me sembra un modo orribile per strutturare l'architettura di uno dei database più importanti dell'azienda (contiene tutti i dati dei dipendenti). Gli ho detto che è una cattiva idea perché non è possibile ottenere facilmente dati al momento, a cui ha detto che avrebbe scritto una libreria java per avvolgere il servizio web REST. Il problema è che mi occupo di .NET e gliel'ho detto. Il servizio web non funziona e non c'è documentazione e attualmente devo esportare i dati dal database in Excel usando PhpMyAdmin e poi leggerli da lì poiché ci vorrebbe molto tempo per formattare correttamente l'SQL per lavorare con MS SQL Server.

La mia domanda è questa: il mio collega ha un design decente e sto solo soffrendo perché è nella sua infanzia o sono corretto e questo disegno è orribile. Se è un design terribile, quali sono i punti che posso richiamare per aiutarlo a capire che potrebbe essere meglio avere un database più aperto?

    
posta Jetti 05.03.2012 - 21:09
fonte

3 risposte

8

In pratica, i casi in cui consentendo l'accesso remoto a un database sono estremamente rari.

Consentendo un accesso diretto a un database, si consente, per impostazione predefinita, a chiunque:

  • Accedi a tutti i dati nel tuo database (quindi, nel tuo caso, tutti i dati dei dipendenti),
  • Cambialo, perché è divertente,
  • Elimina tutto, perché è ancora più divertente.

puoi concedere l'accesso remoto:

  • Se sei del 99,999% sicuro che i tuoi dati siano protetti e solo le persone autorizzate possono leggerli e modificarli,
  • E se gli account del database sono protetti contro bruteforce,
  • E se è in corso un controllo da monitorare costantemente per arrestare il database in caso di rischio di accesso non autorizzato,
  • E se ci sono backup regolari del tuo database, evitando la perdita di dati se qualcosa va ancora storto.

È il tuo caso?

Proteggere il database dal mondo esterno e consentire agli utenti di accedere ai dati solo tramite i servizi Web è come chiudere porte e finestre nella propria casa quando si è in vacanza e lasciare aperta solo la cassetta postale. Consentire l'accesso remoto al tuo database è come lasciare che tutte le porte e le finestre si aprano in casa quando parti per una vacanza e ti aspetti che il postino sia l'unico che entrerà nella tua casa.

    
risposta data 05.03.2012 - 21:19
fonte
4

Sembra che il tuo Collaboratore abbia deciso di andare con Service Oriented Architecture (SOA)

Gli SOA hanno molti vantaggi e stanno diventando sempre più comuni. Non so perché esattamente hai scelto questo disegno, ma dovresti chiedergli perché, prima di provare a convincerlo, è sbagliato.

Il motivo più comune per scegliere SOA è Mobilità di codice , puoi avere una base di codice comune da consumare i miei numerosi clienti . (iPhone, Android, Web App, Client remoti ecc ..) Ecco alcuni altri ..

In una nota a margine, SOA è un'abilità negoziabile MOLTO in questo momento, non sarei sorpreso se il tuo collaboratore decidesse di seguire questa strada solo per sviluppare quelle abilità. Mettendo da parte le considerazioni etiche, potrebbe non essere una cattiva idea per te chiudere gli occhi e seguire la sua guida.

    
risposta data 05.03.2012 - 22:50
fonte
3

The problem is that I deal with .NET

I servizi Web, sia REST che SOAP, non sono uno standard Java. Sia Java che .NET dispongono di numerosi strumenti per l'interfaccia e la generazione di classi proxy per i servizi Web. Questo è in qualche modo uno standard universale. Vedere la referenza di Wikipedia per ulteriori informazioni sui servizi Web. link

The web service doesn't work and there is no documentation

Il WSDL è la tua forma di documentazione più fondamentale, ma più è sempre meglio. In genere i servizi Web supportano la componentizzazione e la sicurezza dei dati. Come consumatore dei suoi servizi web non dovresti preoccuparti per l'archivio dati sottostante. L'interfaccia per il tuo servizio web è il tuo contratto, che espone quali funzionalità sono disponibili e cosa devi sapere sulle strutture di dati. Questo aiuta nella componentizzazione perché dovresti essere in grado di assumere che il servizio web restituirà prevedibilmente determinati risultati che possono essere facilmente sbeffeggiati nei test delle unità.

Forse il tuo collega ha semplicemente progettato male i servizi web e questo ti sta causando confusione? Forse non hai familiarità con il software basato su componenti e sei confuso? Forse entrambi.

He will then create web services and a library in Java to access this data.

Se crea servizi Web, non è necessaria una libreria Java per accedervi. È possibile scrivere con facilità una libreria .NET e so che le versioni recenti di Visual Studio dispongono di strumenti in grado di creare automaticamente classi proxy del servizio Web basate su un WSDL. C'è anche il supporto per i servizi web basati su REST.

To me that sounds like a horrible way to structure the architecture of one of the most important databases in the company (contains all the employee data).

In realtà è molto buono. Non vorrei che i programmatori junior inesperti accedano a dati riservati dei dipendenti che non sono autorizzati a visualizzare. Solo le persone con accesso a questo server dovrebbero essere in grado di accedere direttamente al database di produzione.

I've mentioned to him that it is a bad idea because it isn't possible to easily get data out currently

In genere il tuo amico ti fornirà presto un'interfaccia per il suo servizio web in modo da poter iniziare lo sviluppo dei tuoi componenti. Non importa se questi servizi web non esistono ancora, perché puoi prendere in giro queste chiamate di servizio web finché i servizi non diventano disponibili.

does my coworker have a decent design

Senza vedere i suoi documenti di progettazione ed eseguire una revisione completa del design non posso dirlo con certezza, ma sembra che abbia una buona idea.

    
risposta data 05.03.2012 - 21:32
fonte

Leggi altre domande sui tag