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.

Crittografia di Portworx
Crittografia di Portworx

  1. L'utente crea una PVC on una classe di archiviazione Portworx e richiede che l'archiviazione sia crittografata.
  2. Portworx richiama l'API " IBM Key Protect " o " Hyper Protect Crypto Services " WrapCreateDEK per creare una passphrase utilizzando la chiave root del cliente (CRK) memorizzata nel segreto Portworx.
  3. 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.
  4. Il cluster Portworx utilizza la passphrase per crittografare il volume.
  5. 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.

Decrittazione di Portworx
di Portworx

  1. Kubernetes invia una richiesta di decrittografare un volume crittografato.
  2. La Portworx richiede la DEK per il volume dal database etcd di Portworx.
  3. L'etcd di Portworx ricerca la DEK e la restituisce al cluster Portworx.
  4. Il cluster " Portworx " chiama l'API IBM Key Protect o Hyper Protect Crypto Services UnWrapDEK fornendo il DEK e la chiave root (CRK) memorizzata nel segreto Portworx.
  5. IBM Key Protect oppure Hyper Protect Crypto Services decomprime il file DEK per estrarre la passphrase e la restituisce al cluster Portworx.
  6. 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.

  1. Crea un'istanza del servizio.

  2. Crea una chiave root.

  3. Crea un ID servizio.

  4. 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.

  5. 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

  1. Crea un'istanza del servizio.

  2. Crea una chiave root.

  3. Crea un ID servizio.

  4. 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.

  5. 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

  1. 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
    
  2. Crea uno spazio dei nomi nel tuo cluster denominato " portworx".
    kubectl create ns portworx
    
  3. 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 ”.
    1. 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
        ```