Comprensione della crittografia per Portworx
Panoramica sulla crittografia
L'immagine seguente illustra il flusso di lavoro della crittografia in Portworx quando si configura la crittografia per volume.
- L'utente crea una PVC on una classe di archiviazione Portworx e richiede che l'archiviazione sia crittografata.
- Portworx richiama l'API " IBM Key Protect " o " Hyper Protect Crypto Services "
WrapCreateDEKper creare una passphrase utilizzando la chiave root del cliente (CRK) memorizzata nel segreto Portworx. - L'istanza del servizio " IBM Key Protect " o " Hyper Protect Crypto Services " genera una passphrase a 256 bit e la racchiude nel DEK. La DEK viene restituita al cluster Portworx.
- Il cluster Portworx utilizza la passphrase per crittografare il volume.
- Il cluster Portworx archivia la DEK in testo semplice nel database etcd di Portworx, associa l'ID volume alla DEK e rimuove la passphrase dalla sua memoria.
Panoramica sulla decodifica
L'immagine seguente illustra il flusso di lavoro di decrittografia in Portworx quando si configura la crittografia per volume.
- Kubernetes invia una richiesta di decrittografare un volume crittografato.
- La Portworx richiede la DEK per il volume dal database etcd di Portworx.
- L'etcd di Portworx ricerca la DEK e la restituisce al cluster Portworx.
- Il cluster " Portworx " chiama l'API IBM Key Protect o Hyper Protect Crypto Services
UnWrapDEKfornendo il DEK e la chiave root (CRK) memorizzata nel segreto Portworx. - IBM Key Protect oppure Hyper Protect Crypto Services decomprime il file DEK per estrarre la passphrase e la restituisce al cluster Portworx.
- Il cluster Portworx utilizza la passphrase per decrittografare il volume. Dopo che il volume è stato decrittografato, la passphrase viene rimossa dal cluster Portworx.
Configurazione della crittografia del volume
Per proteggere i dati in un volume Portworx, è possibile utilizzare un provider di servizi di gestione delle chiavi (KMS) come IBM Key Protect o Hyper Protect Crypto Services.
Se non desideri utilizzare le chiavi root IBM Key Protect o Hyper Protect Crypto Services per crittografare i tuoi volumi, puoi selezionare " Kubernetes " come tipo di archivio segreto per l' Portworx durante l'installazione di Portworx. Questa opzione ti consente di memorizzare la tua chiave di crittografia personalizzata in un segreto di “ Kubernetes ” dopo aver installato Portworx. Per ulteriori informazioni, consultare la documentazione di Portworx.
Ottenimento dell'istanza e delle credenziali KMS
Configurazione della crittografia dei volumi con Hyper Protect Crypto Services
IBM Cloud sta modificando i servizi dedicati alla gestione delle chiavi da Hyper Protect Crypto Services a Key Protect dedicati.
-
Crea un ID servizio.
-
Cluster privati: crea un gateway endpoint privato virtuale che consente l'accesso alla tua istanza KMS. Assicurati di collegare almeno 1 indirizzo IP da ogni sottorete nel tuo VPC al VPE.
-
Recuperare l'endpoint pubblico di Key Management URL. Assicurati di annotare il tuo endpoint nel formato corretto; ad esempio,
https://api.us-south.hs-crypto.cloud.ibm.com:<port>. Per ulteriori informazioni, consultare la documentazione API Hyper Protect Crypto Services.
Configurazione della crittografia dei volumi con IBM Key Protect
-
Crea un ID servizio.
-
Richiama la regione in cui hai creato la tua istanza del servizio e prendi nota. Hai bisogno di questo valore in un momento successivo quando crei il segreto.
-
Cluster privati: crea un gateway endpoint privato virtuale che consente l'accesso alla tua istanza KMS. Assicurati di collegare almeno 1 indirizzo IP da ogni sottorete nel tuo VPC al VPE.
Creazione di un segreto nel tuo cluster
- Codifica le credenziali che hai richiamato nella sezione precedente in base64 e annota tutti i valori codificati base64. Ripetere questo comando per ciascun parametro per richiamare il valore con codifica base64.
echo -n "<value>" | base64 - Crea uno spazio dei nomi nel tuo cluster denominato "
portworx".kubectl create ns portworx - Crea un segreto di tipo “ Kubernetes ” denominato “
px-ibm” nello spazio dei nomi “portworx” del tuo cluster per memorizzare le informazioni relative a “ IBM Key Protect ”.- Crea un file di configurazione per il tuo segreto Kubernetes con il seguente contenuto.
apiVersion: v1 kind: Secret metadata: name: px-ibm namespace: portworx type: Opaque data: IBM_SERVICE_API_KEY: <base64_apikey> IBM_INSTANCE_ID: <base64_guid> IBM_CUSTOMER_ROOT_KEY: <base64_rootkey> IBM_BASE_URL: <base64_endpoint> ``` `metadata.name` : Inserisci " `px-ibm` " come nome per il tuo segreto " Kubernetes ". Se utilizzi un nome diverso, Portworx non riconosce il segreto durante l'installazione. `data.IBM_SERVICE_API_KEY` : Inserisci la chiave API di IBM Key Protect o Hyper Protect Crypto Services, codificata con l' base64, che hai recuperato in precedenza. `data.IBM_INSTANCE_ID` : Inserisci il GUID dell’istanza di servizio codificato in formato “ base64 ” che hai recuperato in precedenza. `data.IBM_CUSTOMER_ROOT_KEY` : Inserisci la chiave root codificata con l' base64, che hai recuperato in precedenza. `data.IBM_BASE_URL` : IBM Key Protect: Inserisci l'endpoint API codificato in formato base64 della tua istanza del servizio. : Hyper Protect Crypto Services: immetti l'endpoint pubblico di base64 encoded Key Management. 2. Crea il segreto nello spazio dei nomi `portworx` del tuo cluster. ```sh {: pre} kubectl apply -f secret.yaml ``` 3. Verifica che il segreto sia stato creato correttamente. ```sh {: pre} kubectl get secrets -n portworx ```