Comprensione della crittografia per Portworx

Panoramica sulla crittografia

L'immagine seguente illustra il flusso di lavoro di 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 dei segreti di 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 relativa a “ 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 di 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 un progetto nel tuo cluster denominato “ portworx ”.
    oc create ns portworx
    
  3. Crea un segreto " Kubernetes " denominato " px-ibm " nel progetto " 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 in formato 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 secondo lo standard base64 della tua istanza del servizio.
            :   Hyper Protect Crypto Services: immetti l'endpoint pubblico di base64 encoded Key Management.
    
    2. Crea il segreto nel progetto `portworx` del tuo cluster.
    ```sh {: pre}
        oc apply -f secret.yaml
        ```
    3. Verifica che il segreto sia stato creato correttamente.
    ```sh {: pre}
        oc get secrets -n portworx
        ```