Piano di sicurezza per le informazioni aziendali critiche e l'accessibilità del servizio

StackOverflow https://stackoverflow.com/questions/229571

  •  04-07-2019
  •  | 
  •  

Domanda

Sono coinvolto nella creazione di una soluzione aziendale basata sul web. L'idea è che i clienti la useranno, trasferiranno i loro processi e le informazioni aziendali in un unico posto e riceveranno anche un valore aggiunto commerciale attraverso la comunicazione tra sistemi. In breve, lo useranno come strumento principale nel loro lavoro quotidiano e dipenderanno fortemente da esso.

Un problema che necessita di una soluzione è come rendere questo sistema web abbastanza sicuro da essere un'alternativa che sia noi che i clienti troveremo soddisfacente. Sto cercando buoni consigli da altri che sono stati o si trovano nella stessa situazione.

Nel nostro scenario specifico stiamo attualmente esaminando l'utilizzo di Java SE 6, Tomcat (come contenitore Servlet, necessario in quanto utilizzeremo Wicket), Hibernate (per interagire con il nostro database) e MySQL (come DBMS).

Penso che il problema e la consulenza possano interessare anche altri utenti della tecnologia. Poiché molti dei problemi sono di carattere generale per quanto riguarda il guasto dell'HDD, l'accessibilità della rete e altre cose.

Sentiti libero di dare qualsiasi consiglio tu abbia! Fornisco ancora alcune domande e pensieri per farci andare avanti:

  • Il sistema deve essere raggiungibile tramite Internet. Cosa dovremmo pensare quando decidiamo come ospitarlo? (vale a dire, abbiamo bisogno che il nostro host web abbia più percorsi fisici che li collegano a Internet e domande simili.)
  • Esistono liste di controllo per questo tipo di cose? Forse gli standard ISO o qualche altro modo di vedere che siamo sulla buona strada guardando attraverso un articolo / lista di controllo / documento accademico / libro?
  • Più avanti nel progetto pensiamo che sarebbe una buona idea coinvolgere qualcuno con una vasta esperienza nel settore. In tal caso non stiamo cercando un normale sviluppatore web. È probabile che un numero maggiore di società di consulenza ci dirà che sono in grado di fornire queste competenze rispetto a quelle effettivamente disponibili. Qualche consiglio su come entreremo in contatto con le persone giuste? (Siamo basati in Scandinavia, quindi sarebbe preferibile trovare qualcuno lì.)
  • Quanto tempo alto è abbastanza buono? Il 99,99% sembra un obiettivo ragionevole. Ma eventuali tempi di inattività potrebbero comportare la perdita di attività per i nostri clienti.
  • Come garantiamo che ogni cliente sarà in grado di accedere ai propri dati? Dato che il sistema sarà in grado di accedere al proprio database, sembra difficile. Un corretto processo di sviluppo, che prevede numerosi test, è davvero tutto ciò che abbiamo per quanto riguarda i privilegi dell'utente.
  • Come gestiamo i guasti dell'HDD? RAID 5 è in combinazione con un backup incrementale giornaliero e un backup completo settimanale sufficiente? O sceglieresti RAID 6?
  • Se un server è sufficiente per servire i client. Utilizzeresti ancora un cluster? (Penso di sì.) E in quel caso, quanti nodi avresti nel cluster?
  • Quale strategia di backup useresti?
  • Pensi che l'hosting del sistema in una nuvola di computer sia una buona alternativa? (ovvero come fornito da Amazon, Google o altri.)
  • Utilizzeresti la crittografia del disco rigido? E se sì, quale tipo? (Un chiarimento: Sì, va bene solo se qualcuno ruba il disco rigido, ma ciò aggiunge ancora sicurezza e può impedire agli intrusi (fisici) di accedere ai dati aziendali dei clienti vitali.)
  • Fornire al cliente un modo per fare i propri backup e una buona alternativa? Questi clienti non saranno orientati tecnicamente. Quindi in quel caso il download delle informazioni in un archivio ZIP contenente file di Microsoft Office potrebbe essere un buon metodo?
  • Come monitoreresti la soluzione?
  • Quale di queste cose pensi che dovremmo fare in casa e quali dovrebbero essere acquistati? Svilupperemo il sistema centrale di noi stessi, ovviamente.
  • Se ritieni che il sistema sia sicuro, come persona tecnica. Come convincere una persona non tecnica che è sicura e protetta?

Grazie per il tuo tempo! Spero che tu abbia qualche input da condividere. Altre domande potrebbero essere aggiunte in seguito.

È stato utile?

Soluzione

Anch'io realizzo app Web nel mio tempo e lavoro personale, così posso capire perché poni le domande precedenti. Mentre sono al lavoro nessuna delle questioni sopra descritte, prendo molta attenzione a queste cose nel mio lavoro personale. Non posso rispondere a tutte le tue domande, ma per quelle che posso, dirò questo:

Come monitoreresti la soluzione? Sto sviluppando un'app Web ASP.NET e quindi sto utilizzando monitor delle prestazioni, registrazione, traccia (solo per sviluppatori), monitoraggio dell'integrità e un sistema di monitoraggio delle prestazioni Sql Server personalizzato che sto scrivendo (anche se prima implementato, userò AppManager di AdventNet).

Quale di queste cose pensi che dovremmo fare in casa e quali dovrebbero essere di provenienza esterna? Svilupperemo il sistema centrale di noi stessi, ovviamente.

Questa è un'ottima domanda in quanto ho sempre la stessa decisione da prendere. Vorrei esternalizzare ciò che non si trova nel mio skillset (quindi se devo fare un lavoro in 3d, esternalizzalo). Inoltre, attenersi ai punti di forza del proprio team, concentrarsi sulle funzionalità aziendali in quanto questo è ciò che piacerà / attirare gli utenti (lo dico da un punto di vista commerciale per un'app Web rivolta a utenti domestici) e esternalizzare i sistemi interni critici come backup, monitoraggio, registrazione, ecc. (Non l'ho esternalizzato a causa del costo / risorse finanziarie che ho a disposizione, e faccio cose che posso imparare - quindi codificale io stesso anche se questo è l'approccio lungo - ma mi diverto esso).

Esistono liste di controllo per questo tipo di cose? Forse gli standard ISO o un altro modo di vedere che siamo sulla buona strada guardando un articolo / lista di controllo / documento accademico / libro?

Dici che stai usando Java / MySQL / Hibernate, ma Microsoft ha alcune guide eccellenti sulla sicurezza delle applicazioni web e in generale costruendo applicazioni scalabili e sicure (sia web che basate su Windows). Guarda Microsoft Patterns and Practices.

Pensi che l'hosting del sistema in una nuvola di computer sia una buona alternativa? (ad esempio come fornito da Amazon, Google o altri.)

Sì. Questo è economico, efficace e toglierà lo stress dalla tua architettura interna (sto pensando a come puoi usare CDN e Amazon EC2 per archiviare i file statici). Dico file statici, quindi puoi archiviare contenuti che non cambiano spesso e che possono essere memorizzati nella cache.

Se ritieni che il sistema sia sicuro, come persona tecnica. Come convincere una persona non tecnica che è sicura e protetta?

Chiedi loro di provocare una violazione.

Come possiamo garantire che ogni cliente sia in grado di accedere ai propri dati? Dato che il sistema sarà in grado di accedere al proprio database, sembra difficile. Un corretto processo di sviluppo, che prevede numerosi test, è davvero tutto ciò che abbiamo per quanto riguarda i privilegi dell'utente.

Non sono sicuro di aver capito cosa si pone questa domanda, ma è possibile utilizzare i sistemi di accesso, l'appartenenza / i ruoli (questo è solo ASP.NET) e le procedure memorizzate per garantire che un utente possa vedere sempre e solo la propria propri dati e non chiunque altro.

Anch'io sarei interessato alle risposte al resto delle domande.

Altri suggerimenti

disclaimer: non sono un ingegnere di rete. Ho saltato le domande a cui sentivo di non poter rispondere

Il sistema deve essere raggiungibile tramite Internet. Cosa dovremmo pensare quando decidiamo come ospitarlo? (vale a dire, abbiamo bisogno che il nostro host web abbia più percorsi fisici che li collegano a Internet e domande simili.)

  

Vorrei ridimensionare secondo necessità. Nel tuo primo stadio, probabilmente non avrai bisogno di tutto ridondante. Una volta che le persone si affidano a te per le loro esigenze aziendali, aggiorna le parti più instabili della tua rete. Se la tua connessione Internet non è affidabile, procurati una pipe secondaria. Se i tuoi interruttori sono andati giù, raddoppiali.

Quanto tempo alto è abbastanza buono? Il 99,99% sembra un obiettivo ragionevole. Ma eventuali tempi di inattività potrebbero comportare la perdita di attività per i nostri clienti.

  

The Nines . Non pagare di più per i tempi di attività di quanto perderai per i tempi di inattività. Se perdi 50K per essere caduto inaspettatamente per un'ora, dovresti pagare circa 50K per mantenere i tempi di inattività sotto un'ora. 4 Nove sono 52 minuti di inattività all'anno. È ragionevole per te? Cinque nove è estremamente difficile. Quattro nove per iniziare è probabilmente più difficile. Lavoro per un settore finanziario e gestiamo dal 98% al 99%, con circa il 50-80% dei tempi di inattività pianificati. Andiamo d'accordo.

Come possiamo garantire che ogni cliente sia in grado di accedere ai propri dati? Dato che il sistema sarà in grado di accedere al proprio database, sembra difficile. Un corretto processo di sviluppo, che prevede numerosi test, è davvero tutto ciò che abbiamo per quanto riguarda i privilegi dell'utente.

  

Abbiamo lo stesso problema. Buoni sviluppatori, corrette pratiche di sviluppo, test automatizzati, test manuali, strumenti di sviluppo (ad esempio attributi che decorano dati proprietari che generano avvisi quando l'oggetto viene utilizzato in un contesto pubblico), scanner di codice (ad esempio, ricerca di proc e codice che utilizza tabelle con un proprietario indicatore senza fare riferimento a esso), revisioni del codice e così via.

Quale strategia di backup useresti?

  

Il meglio che posso ragionevolmente permettermi. Se possibile, direi ogni ora per 24 ore, ogni giorno per 3 settimane, ogni settimana per infinito.

Pensi che l'hosting del sistema in una nuvola di computer sia una buona alternativa? (ovvero come fornito da Amazon, Google o altri.)

  

A Joel piace dire che il tuo core business non dovrebbe essere esternalizzato. Se la tua attività principale è la memorizzazione di documenti, forse no. Se la tua attività principale è accessoria ai documenti, sembra ragionevole.

Utilizzeresti la crittografia del disco rigido? E se sì, quale tipo?

  

Ciò sarebbe utile solo se qualcuno rubasse il tuo disco rigido, non se avesse violato il tuo sistema. Stai visualizzando la crittografia in modo errato. Non vuoi la crittografia per amor di crittografia, la vuoi dove effettivamente aiuterà. HTTPS è una buona crittografia. Forse (-maybe-) crittografa ogni documento su base documento per documento e richiede una chiave di accesso da parte dell'utente per decrittografarlo.

Fornire al cliente un modo per fare i propri backup e una buona alternativa? Questi clienti non saranno orientati tecnicamente. Quindi in quel caso il download delle informazioni in un archivio ZIP contenente file di Microsoft Office potrebbe essere un buon metodo?

  

Questa è una buona funzionalità per non importa cosa. La fatturazione come backup è ragionevole, ma se vuoi davvero fornire ai loro netops una soluzione di backup dovrà essere più affidabile di così.

Come monitoreresti la soluzione?

  

Avvisi SMS al mio BlackBerry, controlli di integrità sull'uso, qualcuno su chiamata 24/7 con la possibilità di risolvere i problemi del sistema.

Se ritieni che il sistema sia sicuro, come persona tecnica. Come convincere una persona non tecnica che è sicura e protetta?

  

Una persona non tecnica? Metti lucchetti su tutto il sito. In alternativa, convinci il loro amico tecnico che è sicuro (lasciando loro vedere la tua sicurezza) e fai in modo che l'amico garantisca il non tecnico.

Il sistema deve essere raggiungibile tramite Internet. Cosa dovremmo pensare quando decidiamo come ospitarlo?

Considererei alcune cose. Innanzitutto, il tuo provider di hosting deve fornire percorsi di rete multipli, indipendenti, dalla posizione di hosting a Internet. Secondo, a quale livello di sicurezza fisica sei disposto a investire per le tue macchine? Normalmente, almeno nel Regno Unito, si affitta (principalmente) spazio co-lo dall'U (unità di altezza) e ciò significa che le macchine saranno accessibili a chiunque lavori nello stesso rack (forse anche nella stessa sala macchine). Se noleggi interi rack, potrebbe essere possibile avere le tue chiavi.

Quanto tempo alto è abbastanza buono? Il 99,99% sembra un obiettivo ragionevole. Tuttavia, eventuali tempi di fermo possono comportare la perdita di attività per i nostri clienti.

Innanzitutto, considera quando questo tempo di attività deve essere presente. Il 99,99% suona bene, ma se i clienti hanno bisogno solo dell'accesso dal lunedì al venerdì, dalle 08:00 alle 20:00, puoi avere una disponibilità inferiore al 50%, senza ridurre la soddisfazione del cliente. Considera anche che dovrai eseguire la manutenzione (controlli del database, backup e altre cose) che POTREBBE influire sulla disponibilità dell'applicazione, quindi mi assicurerei di includerlo nella garanzia del livello di servizio (come "X% di disponibilità nel ... finestra "o" X% di disponibilità al di fuori di interruzioni annunciate, non pianificate ").

Se un server è sufficiente per servire i client. Utilizzeresti ancora un cluster? (Penso di sì.) E in quel caso, quanti nodi avresti nel cluster?

Se un server è abbastanza buono per il prossimo futuro, personalmente non mi preoccuperei di un cluster, ma mi assicurerei di avere macchine identiche sul sito del co-lo, spente, quindi l'interruzione di una macchina ha un tempo minimo di riparazione.

Pensi che l'hosting del sistema in una nuvola di computer sia una buona alternativa? (ovvero come fornito da Amazon, Google o altri.)

Quali garanzie avete in merito a uptime, privacy dei dati e simili da un fornitore di cloud di dati? Non puoi (o almeno non dovresti) garantire ai tuoi clienti qualcosa di più. Inoltre, se puoi ospitare le tue macchine in Scandinavia, potresti avere un vantaggio di rete rispetto a qualcuno che fornisce un servizio simile da un cloud di elaborazione ospitato negli Stati Uniti. Onestamente non so se qualcuno dei fornitori di cloud di calcolo abbia server in Scandinavia, ma potrebbero essere felici di rispondere a questa domanda.

Quale di queste cose pensi che dovremmo fare in casa e quali dovrebbero essere di provenienza esterna? Svilupperemo il sistema centrale di noi stessi, ovviamente.

" Dipende da " ;. Più fai in casa, meno devi pagare ad altri outfit. D'altra parte, se riesci a trovare buoni fornitori di servizi periferici (progettazione di data center, forse costruzione di macchine di base, forse monitoraggio dei servizi, forse monitoraggio della sicurezza, magari alzare X giorni alla settimana per cambiare i nastri di backup e portare i vecchi nastri in una cassaforte Posizione). Un aspetto positivo di farlo internamente è che può agire da motivatore per il tuo staff. D'altra parte, più fai in casa, più sei esposto, se uno o più dei tuoi dipendenti vengono colpiti da un autobus. Quindi, per tutto ciò che fai internamente, assicurati di averne almeno due

  

Il sistema deve essere raggiungibile   attraverso internet. Cosa dovremmo   pensare a quando decidere come   ospitalo? (cioè abbiamo bisogno del nostro host web   avere più percorsi fisici   collegandoli a Internet e   domande simili.)

Se vuoi il 99% di uptime, allora sì. Vorrei guardare una società chiamata Server Vault.

  

Esistono liste di controllo per questi tipi   di cose? Forse standard ISO o alcuni   altro modo di vedere che siamo sul   strada giusta guardando attraverso un   articolo / lista di controllo / accademico   carta / libro?

Liste di controllo ufficiali, non che io abbia visto. Normalmente significa passare attraverso e avere politiche in atto per ogni disastro e mitigazione.

  

Più avanti nel progetto pensiamo che sarebbe   essere una buona idea per coinvolgere qualcuno   che ha una vasta esperienza nel   campo. In quel caso non stiamo guardando   per un normale sviluppatore web. È   probabilmente lo faranno più società di consulenza   dicci che sono in grado di fornire   questa esperienza poi lì effettivamente   siamo. Qualche consiglio su come entreremo   contatto con le persone giuste? (Siamo   con sede in Scandinavia, quindi sarebbe   preferibile trovare qualcuno lì.)

Verificherei con Internet Security Solutions o At Stake. Credo che si trovino in tutto il mondo.

  

Quanto tempo alto è abbastanza buono?   Il 99,99% sembra un obiettivo ragionevole. Ma eventuali tempi di fermo potrebbero comportare perdite   di affari per i nostri clienti.

Se vuoi davvero che i tuoi clienti facciano affidamento sulla loro attività su ciò che costruisci, i tempi di fermo non sono accettabili. È possibile ottenere ciò disponendo di server cluster e siti DR. A questo punto questo potrebbe essere fattibile per te, quindi direi che avere una finestra di manutenzione forse per un paio d'ore al mese sarebbe accettabile. Dovrai verificare dove si trovano i tuoi clienti perché i periodi di inattività nel cuore della notte potrebbero essere a metà giornata per i tuoi clienti.

How do we guarantee that each customer only will be able to access
     

i suoi dati? Come sarà il sistema   in grado di accedere al proprio database, esso   sembra difficile. Uno sviluppo adeguato   è un processo che prevede numerosi test   davvero tutto ciò che abbiamo riguardo all'utente   privilegi.

Molti test. Suggerirei frequenti test di penetrazione per assicurarti di non lasciare un buco da qualche parte.

  

Come gestiamo i guasti dell'HDD? È   RAID 5 in combinazione con un quotidiano   backup incrementale e un full settimanale   abbastanza backup? O andresti per   RAID 6?

Vorrei andare con qualche tipo di Raid e più server. Avrai bisogno di una sorta di monitoraggio per avvisarti se un server non funziona. A seconda di dove lo ospiti, potrebbero avere una sorta di soluzione di monitoraggio per cui puoi assumerli, quindi saranno responsabili di farti sapere se qualcosa va offline. Consiglierei l'utilizzo di Nagios per il montaggio su server.

If one server is enough to serve the clients. Would you still use a cluster? (I would think so.) And in that case, how many nodes would you have in the cluster? 

Sì, non sai mai cosa potrebbe accadere.

   Which backup strategy would you use?

Una soluzione cluster con un sito di DR, distribuzione dei log (so che il server sql so che esiste un processo per mantenere sincronizzati più server db) e backup notturni. Tutti i backup devono essere spediti fuori sede e conservati per almeno 7 giorni. Dovrebbero inoltre essere crittografati per garantire la sicurezza dei dati.

Do you think hosting the system in a computer cloud is a good alternative? (i.e. as provided by Amazon, Google or others.) 

Non so se mi fiderei ancora di loro, e ho sentito che sono molto costosi. Per un sistema mission-critical, vado con quello che conosco e utilizzo tecnologie comprovate. Questa è la mia opinione però. Potrebbero funzionare bene.

Would you use hard disk encryption? And if so, which kind? (One clarification: Yes it's only good if someone steals the hard disk, but that's still added security and may prevent (physical) intruders access to vital client business data.) 

Probabilmente no. Rallenterà troppo i server. Preferirei andare con un servizio di hosting di cui mi posso fidare per mantenere sicuri i server.

Is providing the customer with a way to do their own backups as well a good alternative? These customers won't be technically oriented. So in that case downloading the information in a ZIP archive containing Microsoft Office files might be a good way? 

Potrebbe essere bello offrire l'opzione, ma se riesci a mostrare loro una strategia di backup completa, direi che sarebbe sufficiente.

How would you monitor the solution? 

Qualcosa come Nagios, e assumere il servizio di hosting per controllare lo stato del server. Per un tempo di attività del 100%, è necessario trovarsi in qualcosa di simile a un NOC in cui qualcuno è sempre lì a guardare i monitor del server.

Quale di queste cose pensi che dovremmo fare in casa e quali dovrebbero essere di provenienza esterna? Svilupperemo il sistema centrale di noi stessi, ovviamente.

Fai le cose con cui ti senti a tuo agio e compiacente. Sembra programmazione e test. Assumerei le persone per eseguire l'installazione, l'hosting e il monitoraggio del server. La chiave per questo è non andare con il miglior offerente. Vai con le persone che faranno un buon lavoro.

If you feel that the system is secure, as a technical person. How do you convince a non technical person that it's safe and secure? 

Hai una serie scritta di politiche e procedure che segui. Hai un elenco di tutti i fornitori che usi con quale acquisto da loro e come sono configurati per l'esecuzione. Assicurati che tutti i fornitori da cui stipuli un contratto siano affidabili e abbiano una comprovata esperienza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top