Protezione di una chiave privata su Azure

1

C'è un modo su Azure per proteggere una chiave privata in modo che solo io abbia la chiave? Nessun altro può ottenere la chiave?

Capisco che ciò potrebbe essere impossibile in quanto il codice che abbiamo su Azure ha bisogno della chiave per convalidare l'XML in entrata e firmare l'XML in uscita e quindi il codice ce l'ha. Ma sto chiedendo nella speranza che ci sia un modo per impedire a qualsiasi individuo di ottenerlo.

Chiedo perché ho imparato nel corso degli anni che a volte qualcuno di cui si pensava potesse essere totalmente fidato, non può essere.

    
posta David Thielen 02.03.2018 - 23:19
fonte

3 risposte

1

Azure ha una funzione specifica per questa volta a chiave di Azure Questi sono supportati da HSM: questo è quello che vuoi. È necessario assegnare l'accesso all'applicazione tramite serviceprincipals e la consueta autenticazione / autorizzazione, ma questo è il modo in cui si desidera memorizzare le chiavi per le applicazioni in Azure.

"With Key Vault, Microsoft doesn’t see or extract your keys."

    
risposta data 03.03.2018 - 02:09
fonte
0

Questa è una domanda piuttosto ampia ed è davvero più un problema architettonico e filosofico. Cercare un prodotto particolare è spesso una cattiva idea su questo sito, quindi offrirò qualche consiglio.

Come definisci "nessun altro"? Codice nell'app, altre app sulla VM, app in altre VM, hacker che colpiscono il tuo sito web, app nell'host di macchine virtuali, amministratori di data center, ecc.? Questo riguarderà il design del sistema.

Dato che stiamo parlando di chiavi, il design breve e semplice è quello di spostare l'accesso e l'uso della chiave fuori dal regno di coloro che la attaccano (risposta utile, giusto?).

Spostamento verso l'esterno:

  • Hardcoded nei binari dell'app (chiunque abbia letto sui binari può ottenere le chiavi)
  • Memorizzato in un file di configurazione su disco (chiunque abbia letto nella config può ottenere le chiavi)
  • Memorizzato nell'archivio certificati di Windows localmente (solo gli amministratori locali possono ottenere le chiavi)
  • Memorizzato in un archivio certificati su un'altra macchina con accesso ai servizi remoti (solo gli amministratori locali sulla macchina remota possono ottenere le chiavi)
  • In un modulo di sicurezza con supporto hardware (HSM) (nessuno può ottenere le chiavi)

In ogni fase introduci dei limiti e rendi più difficile l'accesso alle chiavi. Questi limiti esistono come servizi autenticati di qualche tipo. Generalmente trasferisci il lavoro a questi servizi e toccano i tasti, in questo modo la tua app non lo fa.

Il compromesso è complessità e gestibilità per un livello efficace di sicurezza.

    
risposta data 03.03.2018 - 00:32
fonte
0

Se ti capisco correttamente, "nessun altro" significa nel tuo caso " non il mio team " (quindi persone con accesso a codice sorgente, server ecc.).

Quindi vedo solo due soluzioni:

Opzione A:

  1. Estrai la funzionalità di firma (crea un servizio / server di firma).
  2. Esegui questo in un ambiente / server / vm dedicato (salva qui la chiave).
  3. Limita l'accesso a questo come richiesto.

Opzione B:

Limita l'accesso al tuo attuale server / servizio.

    
risposta data 03.03.2018 - 02:35
fonte

Leggi altre domande sui tag