Inserire saldamente segreti nelle caselle durante il provisioning

Durante una distribuzione completamente automatica sull'hardware fisico (utilizzando pxeboot / preseed / kickstart per installare e configurare un sistema minimo per il bootstrapping) dobbiamo distribuire determinati segreti – come la chiave di validation Chef e una chiave segreta per l'accesso a dati sicuri dell'applicazione.

Nei nostri ambienti VM possiamo pre-cuocere le immagini con queste già in quando quando il nodo viene distribuito ha già i file localmente e non devono mai attraversare la networking, però per i server fisici where stiamo costruendo direttamente dalle immagini di netboot non hanno la capacità di farlo.

Sto cercando di trovare sia un modo sicuro e automatizzato di distribuire questi segreti ai server che vengono forniti, in modo da sapere che non potrebbero finire nel posto sbagliato.

Il nostro ambiente di provisioning ha conoscenza di tutti i nostri server fisici e se sono stati forniti o no – creiamo le definizioni di nodes nel nostro server chef che includono l'indirizzo MAC dell'interface primaria utilizzata per PXEBooting, quindi impostare una bandiera sul nodo una volta che è stato previsto. Lo utilizziamo per offrire solamente i file PXEBoot ai nodes che non sono ancora stati forniti e quindi possiamo specificare nelle nostre definizioni dei nodes il rilascio / os / roles delle caselle.

La nostra attuale idea di lavoro è un servizio web molto semplice che (su HTTPS) servirebbe i segreti di nodes che non sono stati ancora forniti. Tuttavia questo ha una serie di inconvenienti e problemi che posso vedere. La mia preoccupazione primaria è la nostra unica protezione è la validation dell'indirizzo MAC e gli indirizzi MAC possono essere falsificati (sono molto convinto che non si dovrebbe mai considerare la tua networking interna sicura, anche se è probabilmente una discussione diversa).

Il nostro attuale ambiente di provisioning è Ubuntu 12.04 e 14.04 con PXEboot / Preseeding su server dedicati di provisioning – anche se possiamo adattare altre soluzioni per adattarsi al nostro ambiente.

Sono preoccupato soprattutto di un paio di segreti globali che tutti i nodes hanno bisogno anche di accesso, il nostro fine finale è quello di non avere questi segreti globali e avere segreti per nodes, sto attualmente indagando su uno strumento per realizzarlo, ma per il momento dobbiamo affrontare la configuration corrente.

Così come sono le persone in modo sicuro, distribuendo automaticamente segreti globali in ambienti di provisioning? Qualsiasi consiglio o indicatori per i modi per farlo?

One Solution collect form web for “Inserire saldamente segreti nelle caselle durante il provisioning”

Il pre-OS-boot non ha molte intelligenze vive diverse dal BMC (il piccolo sottosistema della scheda madre che implementa IPMI / iDRAC / iLO / etc.), Ma potrebbe essere sufficiente, a seconda di quanto si desidera fidarsi .

Potresti scrivere una chiave su di esso (sulla networking usando un canale IPMI 2.0 crittografato o se non è un'opzione che si spera sopra una LAN di gestione o VLAN (bleah) durante la sequenza di pre-boot e quindi avere il server da eseguire avvio un vanilla / stub OS che semplicemente carica un sistema operativo e non contiene segreti o cose confidenziali all'interno.

Dopo l'avvio il proto-server può comunicare al proprio BMC (la radice non necessita di authorization localmente), leggere la chiave usando ipmitool o qualsiasi altra cosa, e poi parlare con la chiave madre con le chiavi in ​​lettura fornendo la certezza che è chi lo dice è; quindi può iniziare la fornitura finale. Utilizzando questo (hack gratuito) è ansible utilizzare anche singole chiavi per each sistema.

Le posizioni possibili per l'archiviazione di chiavi sul BMC includono l'indirizzo MAC (~ 48 bit di spazio per port per ethernet dovrebbe essere sufficiente per chiunque (sic!)), La string di comunità SNMP, ecc. Tutti possono essere reimpostati a valori ragionevoli dopo provvedimenti iniziali e sono facilmente modificabili.

L'implementazione è modestamente semplice, con uno script per generare chiavi su base per-server, un command ipmitool per impostare le chiavi appropriate sui bersagli, uno script nella piccola OS di base che legge le chiavi locali e le usa per autenticare alla missione stessa e poi alla fornitura finale. Più complesso del solito provvedimento senza dubbio, ma a volte si deve pagare per la pace della mente.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.