Ho a che fare con un fornitore di terze parti che chiaramente non capisce la sicurezza: per accedere alla loro API dal mio back-end devo fornire l'ID / utente / password dell'utente finale per il servizio di terze parti con ogni serie di richieste .
Sto combattendo con loro per implementare almeno una sorta di autenticazione basata su token revocabile, ma nel frattempo devo occuparmene (almeno usano HTTPS ... sheesh).
Devo autenticarmi abbastanza regolarmente per sincronizzare i dati, e la sincronizzazione deve avvenire senza l'intervento dell'utente finale, quindi fondamentalmente significa che BE deve memorizzare le credenziali in un formato reversibile. Non sono abbastanza ingenuo da archiviarlo in testo in chiaro, ma anche se lo cripto nel database, la chiave non sarà molto lontana dal lucchetto, per così dire.
Se non avessero una quantità di dati riservati memorizzati lì sarei meno preoccupato, ma questo è sicuramente un dato che vale la pena proteggere. Qualche consiglio?
Note:
- Le password verrebbero archiviate in un database distribuito. Il database stesso è ragionevolmente sicuro. L'unica vera possibilità di una violazione sarebbe una perdita di credenziali di uno degli sviluppatori per accedere direttamente ai dati, o un errore di programmazione grave .
- L'API del fornitore non consente di modificare la password in modo programmatico, pertanto la rotazione delle password non è un'opzione.
L'accesso al codice sorgente del back-end potrebbe essere bloccato abbastanza stretto. Sarebbe ragionevole memorizzare una chiave privata nell'origine e chiamarla un giorno?