Ho visto alcune domande qui con preoccupazioni simili, ma ho sentito che questa domanda specifica non è stata chiesta o risposta, quindi farò del mio meglio per illustrare il mio caso qui.
Il problema:
- La piattaforma che sto sviluppando consiste in un aggregatore di funzioni e normalizzatori di "terze parti API" come in: i miei utenti forniranno i loro API CHIAVE e devo memorizzarli
- Gli utenti devono fornire diversi API KEY per le API di terze parti
- L'applicazione deve effettuare chiamate API per conto dell'utente, anche quando l'utente non ha effettuato l'accesso (durante le attività in background)
- Quando chiami le API di terze parti avrò bisogno del formato testo chiaro di quelle chiavi e segreti
La mia infrastruttura:
- Attualmente utilizzo Heroku (per il mio server http) che garantisce in teoria che nessuno possa accedere alle mie macchine tramite SSH o altri mezzi
- Il mio passaggio garantisce solo un numero selezionato di utenti (idealmente utilizzando l'autenticazione a 2 fattori) ha accesso al pannello di controllo, quindi alle variabili ENV, quindi alle credenziali del database
Il mio piano attuale:
- Archivia chiavi KEY su un server separato che emette il proprio token per l'autenticazione futura
- Accetta solo chiamate API dai miei server http (utilizzando una sorta di VPN privata)
- Espone un'API che consente solo l'accesso ad alcune funzioni selezionate poi utilizzate dagli altri miei server, in questo modo riducendo la superficie di attacco del mio sistema solo a questa macchina con un software minimale installato (un minimo node.js http api).
La mia raccomandazione per i passaggi:
- Usa heroku per eseguire il mio "servitore con gestore di chiavi"
- Memorizza le credenziali del database su variabili ENV e non concedere l'accesso a questo account a nessuno che non sia l'amministratore delle chiavi che sarà l'unica persona in grado di accedere al pannello di controllo pass e vedere l'indirizzo / le credenziali del database
Domande:
- Qual è il modo più sicuro per archiviare e utilizzare tali chiavi?
- C'è qualche opzione più sicura della semplice memorizzazione delle chiavi su un database che l'indirizzo / le credenziali sono protetti da un dashboard autenticato a due fattori?
Grazie