Come archiviare e utilizzare in modo sicuro le API API di terze parti?

4

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

    
posta kroe 29.05.2017 - 19:48
fonte

1 risposta

1

In base a ciò che affermi sulla tua domanda. Basta usare un semplice archivio certificati come file JKS, file o PFX se in esecuzione su Windows e quindi proteggere il file system, in modo che il file sia protetto. Questo è se si stanno memorizzando le chiavi private, tuttavia se l'applicazione è il client di un servizio di terze parti, è sufficiente la propria chiave pubblica, che non deve essere protetta come la chiave privata. L'applicazione ha ancora bisogno della passphrase per aprire il keystore. ci sono alcuni schemi di sicurezza per i certificati come i certificati di rotazione.

    
risposta data 11.08.2017 - 08:10
fonte

Leggi altre domande sui tag