Avere una discussione sui problemi di sicurezza con un altro ingegnere del software [chiuso]

4

Background: La società per cui lavoro utilizza diversi sistemi per conservare i dati assicurativi relativi ai clienti. Vogliono avere un'app per i loro clienti dove possono trovare le loro cose relative all'assicurazione. Alcuni di questi sistemi forniscono servizi Web per ottenere le informazioni necessarie, quindi è possibile un'autenticazione utente corretta e di qualsiasi tipo. Tuttavia, alcuni forniscono un accesso diretto al database senza nulla che si avvicini addirittura all'autenticazione dell'utente, perché non è stato progettato per farlo.

Per risolvere questo problema stiamo costruendo un servizio adattatore, che può connettersi a tutti i diversi sistemi per ottenere i dati necessari. Tuttavia, l'autenticazione dell'utente è ancora un problema per i sistemi che non lo forniscono.

Un altro ingegnere del software ha suggerito (siamo gli unici ingegneri) che costruiamo un meccanismo generale di autenticazione che fornisce l'autenticazione a tutti i sistemi per ottenere le necessarie informazioni sui clienti. Entrambi abbiamo lo stesso background, siamo giovani, non abbiamo molta esperienza nella progettazione di un tale sistema o nella comprensione di tutti i problemi di sicurezza per un tale sistema.

Domanda: Con lo sfondo sopra indicato, sono preoccupato per tutti i problemi di sicurezza che potrebbero sorgere se lo faremmo. Per il serio tipo di informazioni (dati assicurativi) potremmo non avere l'esperienza necessaria per creare un sistema del genere, per garantire che il miglior tipo di sicurezza sia possibile e non limitato dalla nostra conoscenza (o Google).

  • La sua opinione su questo argomento è che dovrebbe essere creato un meccanismo di autenticazione generale per tutti i sistemi. Quindi, con un solo accesso da parte nostra, è possibile ottenere tutti i dati dai diversi sistemi, se disponibili. Se seguiamo cose come OAuth, non dobbiamo temere molto la questione della sicurezza. E se cerchiamo (ri) queste cose su internet, sarà OK.
  • La mia opinione su questo argomento è che un meccanismo di autenticazione generale sarà una buona cosa per tutti i sistemi che non forniscono le cose necessarie per l'autenticazione dell'utente (che è anche l'unica soluzione possibile). Tuttavia, non dobbiamo ignorare i sistemi che forniscono la loro autenticazione per accedere al loro sistema per ottenere i dati necessari da un cliente. Forse è possibile scambiare informazioni tra tutti i sistemi per garantire che lo stesso tipo di accesso sia disponibile ovunque (se l'utente esiste in un sistema che fornisce l'autenticazione e con un sistema che utilizza l'autenticazione generale). Ad esempio, se una password viene modificata. Questa idea assicurerebbe che il nostro meccanismo generale di autenticazione venga violato in qualche modo, che non tutti i sistemi saranno esposti all'attaccante e chissà quali potrebbero essere le conseguenze.

Dovremmo solo portare avanti l'idea di creare un meccanismo di autenticazione generale o limitarlo ai sistemi che ne hanno bisogno e possibile scambiare i dettagli di accesso se l'utente dovrebbe esistere nei due diversi tipi di sistemi (sistema che supporta l'autenticazione o no). Quali sono i buoni argomenti a favore o contro queste idee?

Modifica: lo utilizzerebbe il pubblico in generale, ogni sistema fornirebbe il / i contratto / i con i suoi dati (se il cliente esiste nei diversi sistemi). Esempio: per il cliente '1' il sistema A (database) e B (servizio web) contiene entrambi contratti diversi da lui. Tuttavia, per il cliente "2" solo il sistema A (database) contiene un contratto. A seconda del cliente, il tipo di contratto (i) viene memorizzato in sistemi diversi. Tutti questi sistemi sono di terze parti.

    
posta usselite 27.01.2016 - 12:41
fonte

2 risposte

6

L'accesso singolo rende molto conveniente per gli utenti l'accesso a tutto il sistema, oltre a fornire una sicurezza migliorata . Immagina che sarà estremamente complicato per gli utenti se devono accedere a dieci diversi database con account diversi e password diverse ogni giorno più e più volte. Ciò li induce a ignorare qualsiasi raccomandazione in merito al mancato riutilizzo delle password, a utilizzare password deboli (perché più facili da ricordare) o elenchi di password scritti su un "postit" fissato sul retro dello smartphone.

Ma penso che non sia necessario per voi sviluppare questo solo in un modo o nell'altro. Inizia con un meccanismo di autenticazione generale riutilizzabile. Come hai scritto, ne hai bisogno per almeno alcuni dei tuoi sistemi. Assicurati di non reinventare la ruota, informati in anticipo sui meccanismi di single sign-on disponibili

disponibili.

Successivamente, prendi il sistema one con un'autenticazione personalizzata esistente e prova ciò che è necessario per collegarlo al tuo nuovo sistema di autenticazione generale. Colleziona esperienza. Forse scopri che non hai bisogno di buttare via il vecchio sistema, ma devi solo scrivere un piccolo adattatore per quel sistema. Forse scoprirai che l'attività diventa più difficile di quanto ti aspettassi, ma poi almeno conosci i motivi per cui. Ma invece di sperare qui di trovare "la risposta" sui programmatori da persone che in realtà non sanno nulla dei dettagli del tuo sistema, basta provarlo, passo dopo passo. Se non funziona o richiede uno sforzo maggiore del previsto, puoi interrompere ulteriori sviluppi in qualsiasi momento, non hai molto da perdere.

    
risposta data 27.01.2016 - 13:13
fonte
3

Mentre crei un'app rivolta al pubblico in generale, non importa in che modo i contratti sono archiviati internamente e quali controlli di accesso vengono utilizzati da quei diversi sistemi.

Se la società offre un portale ai suoi clienti per vedere i loro contratti e dati associati, allora come cliente, mi aspetto di avere un accesso singolo alla "Mia Azienda X "app e per poter vedere tutti i contratti che ho con la società X.
È compito di questa app raccogliere questi contratti dalle diverse posizioni di archiviazione e non dovrei nemmeno sapere che i contratti potrebbero essere distribuiti su più sistemi.

I sistemi interni che attualmente eseguono l'autenticazione molto probabilmente non hanno account per tutti i clienti dell'azienda, ma piuttosto account per i dipendenti che devono avere accesso a i dati che sono memorizzati lì.
Per l'app che stai sviluppando, dovrai anche autenticare stesso su quei sistemi per poter leggere le informazioni pertinenti. Quindi, non sarai in grado di utilizzare i database di autenticazione esistenti per autenticare i clienti utilizzando la tua app.

    
risposta data 27.01.2016 - 17:20
fonte

Leggi altre domande sui tag