Proteggere le chiavi del account di servizio

A differenza dei normali utenti, gli account di servizio non hanno password. Gli account di servizio utilizzano invece coppie di chiavi ECDSA per l'autenticazione. Poiché la chiave privata della coppia di chiave RSA ti consente di autenticarti come account di servizio, l'accesso alla chiave privata è simile alla conoscenza della password di un utente. La chiave privata è nota come chiave delaccount di serviziot. Le chiavi dei service account rappresentano un rischio per la sicurezza se non vengono gestite con attenzione.

Le principali minacce relative alle chiavi del account di servizio sono le seguenti:

  • Perdita di credenziali: le chiavi degli account di servizio potrebbero finire inavvertitamente in posizioni in cui non dovrebbero essere archiviate. Un malintenzionato può utilizzare una chiave account di servizio divulgata per autenticarsi e ottenere l'accesso al tuo ambiente.

  • Elevazione dei privilegi: se un malintenzionato ottiene l'accesso a una chiave dell'account di servizio protetta in modo inadeguato, potrebbe essere in grado di utilizzarla per elevare i propri privilegi.

  • Divulgazione di informazioni: le chiavi del service account potrebbero divulgare inavvertitamente dati riservati.

  • Non ripudio: eseguendo l'autenticazione utilizzando una chiave dell'account di servizio e consentendo all'account di servizio di eseguire operazioni per suo conto, un malintenzionato potrebbe nascondere la propria identità e le proprie azioni.

Questa pagina presenta le best practice per la gestione, l'utilizzo e la protezione delle chiavi degli account di servizio.

Proteggersi dalla fuga di credenziali

Come un nome utente e una password, le chiavi del account di servizio sono una forma di credenziale. Se un utente può accedere a una chiave dell'account di servizio valida, può utilizzarla per autenticarsi e accedere alle risorse a cui ha accesso il rispettivo account di servizio.

Gli utenti malintenzionati potrebbero trovare le chiavi dell'account di servizio più preziose di una password compromessa. Ad esempio, il tentativo di accesso utilizzando una password compromessa ha poche probabilità di riuscire se l'account utente è stato configurato per utilizzare la verifica in due passaggi e le verifiche dell'accesso. Al contrario, l'autenticazione con una chiave delaccount di serviziot compromessa ha maggiori probabilità di riuscita, in quanto i service account non sono soggetti ad alcuna verifica di accesso aggiuntiva.

Gli utenti malintenzionati potrebbero cercare le chiavi dell'account di servizio nei seguenti modi:

  • Repository del codice sorgente di progetti open source.
  • Dump pubblici di dati di servizi compromessi.

Oltre alle posizioni pubbliche, gli utenti malintenzionati potrebbero cercare le chiavi dei account di servizio in posizioni private che hanno compromesso. Ecco alcuni esempi:

  • Poste in arrivo
  • Condivisioni file
  • Spazio di archiviazione dei backup
  • Directory del file system temporanee

Un modo efficace per ridurre il rischio di divulgazione delle chiavi del account di servizio è ridurre il numero di chiavi in circolazione e scoraggiare la creazione di nuove chiavi. Le sezioni seguenti descrivono come limitare il numero di chiavi del service account in circolazione e quali altre misure possono aiutarti a limitare il rischio di divulgazione dei service account.

Evita di lasciare le chiavi del account di servizio in posizioni temporanee

Quando crei una chiave del account di servizio, spostala immediatamente nella posizione in cui vuoi archiviarla. Assicurati di non lasciare accidentalmente una copia nella cartella dei download o nel cestino del computer.

Non trasferire le chiavi del account di servizio tra gli utenti

Quando implementi un'applicazione che richiede una chiave del account di servizio, potresti non avere l'autorizzazione per creare una chiave del account di servizio. Potresti invece dover chiedere a un'altra persona di creare una chiave dell'account di servizio per te.

Non inviare chiavi del account di servizio ai repository di codice sorgente

Le chiavi del service account sono credenziali e devono essere protette da accessi non autorizzati. Se invii una chiave dell'account di servizio a un repository di codice sorgente, aumenta il rischio che la chiave diventi accessibile a utenti non autorizzati e malintenzionati:

  • Gli utenti malintenzionati potrebbero cercare chiavi divulgate nel codice sorgente dei repository di codice origine pubblici.

  • In futuro, potresti decidere di trasformare un repository di codice sorgente privato in pubblico senza prima controllare la presenza di chiavi.

  • Altri membri del team potrebbero archiviare copie del codice sorgente sulla propria workstation.

Quando lavori su codice che utilizza una chiave del account di servizio, memorizza sempre la chiave del service account separatamente dal codice sorgente per ridurre il rischio di inviare accidentalmente la chiave al repository di origine. In molti casi, puoi ridurre ulteriormente questo rischio non utilizzando affatto le chiavi dei account di servizio durante lo sviluppo e utilizzando invece le tue credenziali personali.

Non incorporare le chiavi del account di servizio nei file binari del programma

Le chiavi dei service account sono stringhe che corrispondono a un determinato pattern e possono essere identificate anche se incorporate in altri file o binari. Se un malintenzionato ha accesso al file binario, può estrarre tutte le chiaviaccount di serviziot incorporate nel file binario.

I file binari del programma per le applicazioni lato server potrebbero essere ospitati in repository di artefatti o potrebbero essere copiati nelle workstation degli sviluppatori a scopo di debug. Mantenere le chiavi del account di servizio separate dai file binari del programma contribuisce a garantire che un utente che può accedere al file binario non ottenga implicitamente l'accesso alle credenziali deaccount di serviziont.

  • Per le applicazioni lato client come strumenti, programmi desktop o app mobile, non utilizzare account di servizio.
  • Per le applicazioni lato server, non incorporare le chiavi dell'account di servizio nel file binario. Tieni invece le chiavi separate dal file binario dell'applicazione.

Ruotare le chiavi account di servizio per ridurre il rischio per la sicurezza causato da chiavi compromesse

Sebbene tu possa ridurre la probabilità di divulgare accidentalmente una chiave di account di servizio, può essere difficile eliminare completamente il rischio.

La rotazione delle chiavi è il processo di sostituzione delle chiavi esistenti con nuove chiavi e successiva invalidazione delle chiavi sostituite. Ti consigliamo di ruotare regolarmente tutte le chiavi che gestisci, incluse quelle dell'account di servizio.

La rotazione delle chiavi del account di servizio può contribuire a ridurre il rischio rappresentato da chiavi rubate o compromesse. Se una chiave viene divulgata, gli utenti malintenzionati potrebbero impiegare giorni o settimane per scoprirla. Se ruoti regolarmente le chiavi dell'account di servizio, è più probabile che le chiavi trapelate non siano valide quando vengono ottenute da un malintenzionato.

Utilizzare i tempi di scadenza per far scadere automaticamente le chiavi

Per impostazione predefinita, le chiavi account di servizio che crei hanno una scadenza di un anno e rimangono valide finché non le elimini. Puoi anche impostare una data di scadenza personalizzata. L'impostazione di un tempo di scadenza per le chiavi dei account di servizio può limitare il rischio per la sicurezza riducendo la durata della credenziale persistente. Tuttavia, esistono altri rischi associati all'impostazione dei tempi di scadenza; ad esempio, l'impostazione di un tempo di scadenza può causare l'errore dei workload quando le chiavi scadono.

Utilizza i tempi di scadenza quando hai bisogno di un accesso temporaneo a un sistema che richiede una chiave del account di servizio. Ad esempio, utilizza i tempi di scadenza quando esegui le seguenti operazioni:

  • Sviluppo di codice in un ambiente non di produzione per un'applicazione che può autenticarsi solo con le chiavi delaccount di serviziot.
  • Utilizzo di uno strumento di terze parti che può eseguire l'autenticazione solo con le chiavi del account di servizio.

Evita di utilizzare tempi di scadenza per questi scenari:

  • Workload di produzione. In produzione, una chiave del account di servizio scaduta potrebbe causare un'interruzione accidentale. Utilizza invece chiavi che non scadono e gestisci il loro ciclo di vita conrotazione della chiavei.
  • Carichi di lavoro non di produzione che richiedono l'accesso permanente, ad esempio una pipeline di integrazione continua (CI).
  • Sistemi di rotazione delle chiavi che impediscono l'utilizzo di una chiave dopo un periodo di tempo specificato.

Per limitare la validità delle chiavi degli account di servizio, puoi configurare un tempo di scadenza per le chiavi appena create nel progetto, nella cartella o nell'organizzazione. L'ora di scadenza non si applica alle chiavi esistenti.

Disporre di una procedura consolidata per la rotazione delle chiavi del account di servizio ti aiuta anche ad agire rapidamente se sospetti che una chiave delaccount di serviziot sia stata compromessa.

Utilizza una chiave dedicata per ogni macchina che esegue un'applicazione

Per aiutarti a restringere le potenziali fonti di attività sospetta, crea chiavi individuali per ogni copia dell'applicazione. In questo modo, puoi utilizzare il campo serviceAccountKeyName che molti servizi aggiungono ai record dell'audit log per distinguere da quale macchina ha avuto origine un'attività.