Entendendo a criptografia para Portworx

Visão geral de criptografia

A imagem a seguir ilustra o fluxo de trabalho de criptografia no Portworx ao configurar a criptografia por volume.

Criptografia de Portworx
de * volumes*Criptografia de Portworx

  1. O usuário cria um PVC com uma classe de armazenamento do Portworx e solicita que o armazenamento seja criptografado.
  2. O Portworx chama a API WrapCreateDEK do IBM Key Protect ou do Hyper Protect Crypto Services para criar uma passphrase usando a chave raiz do cliente (CRK) que está armazenada no segredo do Portworx.
  3. A instância de serviço do IBM Key Protect ou do Hyper Protect Crypto Services gera uma passphrase de 256 bits e agrupa a passphrase na DEK. O DEK é retornado para o cluster Portworx.
  4. O cluster Portworx usa a passphrase para criptografar o volume.
  5. O cluster Portworx armazena o DEK em texto sem formatação no banco de dados etcd do Portworx, associa o ID do volume ao DEK e remove a passphrase de sua memória.

Visão geral de decriptografia..

A imagem a seguir ilustra o fluxo de trabalho de decriptografia no Portworx quando você configura a criptografia por volume.

Descriptografia de Portworx
de Portworx

  1. O Kubernetes envia uma solicitação para decriptografar um volume criptografado.
  2. O Portworx solicita o DEK para o volume por meio do banco de dados etcd do Portworx.
  3. O etcd do Portworx consulta o DEK e retorna o DEK para o cluster Portworx.
  4. O cluster Portworx chama a API UnWrapDEK do IBM Key Protect ou do Hyper Protect Crypto Services fornecendo a DEK e a chave raiz (CRK) armazenadas no segredo do Portworx.
  5. O IBM Key Protect ou o Hyper Protect Crypto Services desagrupa a DEK para extrair a passphrase e retorna a passphrase para o cluster Portworx.
  6. O cluster Portworx usa a passphrase para decriptografar o volume. Depois que o volume é decriptografado, a passphrase é removida do cluster Portworx.

Configurando a criptografia de volume

Para proteger os dados em um volume Portworx, você pode usar um provedor de serviço de gerenciamento de chaves (KMS), como IBM Key Protect ou Hyper Protect Crypto Services.

Para não usar as chaves raiz do IBM Key Protect ou do Hyper Protect Crypto Services na criptografia de seus volumes, selecione Segredo Kubernetes como seu tipo de armazenamento de segredo do Portworx durante a instalação do Portworx. Essa opção permite que você armazene sua própria chave de criptografia personalizada em um segredo do Kubernetes após instalar o Portworx. Para obter mais informações, consulte a Documentação do Portworx.

Obtendo sua instância e credenciais do KMS

Configurando a criptografia de volume com o Hyper Protect Crypto Services

A IBM Cloud está mudando os serviços dedicados de gerenciamento de chave de Hyper Protect Crypto Services para Key Protect Dedicated.

  1. Criar uma instância de serviço

  2. Criar uma chave raiz..

  3. Crie um ID de serviço.

  4. Clusters privados: crie um gateway de terminal privado virtual que permita o acesso à sua instância do KMS. Certifique-se de ligar pelo menos um endereço IP de cada sub-rede em seu VPC ao VPE.

  5. Recupere o endpoint público do Gerenciamento de Chaves: URL. Certifique-se de anotar seu terminal no formato correto; por exemplo, https://api.us-south.hs-crypto.cloud.ibm.com:<port>. Para obter mais informações, consulte a documentação da API Hyper Protect Crypto Services.

Configurando a criptografia de volume com o IBM Key Protect

  1. Criar uma instância de serviço

  2. Criar uma chave raiz..

  3. Crie um ID de serviço.

  4. Recupere a região na qual você criou sua instância de serviço e anote. Esse valor será necessário posteriormente ao criar seu segredo.

  5. Clusters privados: crie um gateway de terminal privado virtual que permita o acesso à sua instância do KMS. Certifique-se de ligar pelo menos um endereço IP de cada sub-rede em seu VPC ao VPE.

Criando um segredo em seu cluster

  1. Codifique as credenciais que você recuperou na seção anterior para base64 e anote todos os valores codificados em base64. Repita esse comando para cada parâmetro para recuperar o valor codificado em base64.
    echo -n "<value>" | base64
    
  2. Crie um espaço de nomes no cluster chamado portworx.
    kubectl create ns portworx
    
  3. Crie um segredo de Kubernetes chamado px-ibm no espaço de nomes portworx do cluster para armazenar informações do IBM Key Protect.
    1. Crie um arquivo de configuração para seu segredo do Kubernetes com o conteúdo a seguir.
        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`
        :   Insira `px-ibm` como o nome do segredo de Kubernetes. Se você usar um nome diferente, o Portworx não reconhecerá o segredo durante a instalação.
    
        `data.IBM_SERVICE_API_KEY`
        :   Insira a chave de API do IBM Key Protect ou do Hyper Protect Crypto Services codificada em base64 que você recuperou anteriormente.
    
        `data.IBM_INSTANCE_ID`
        :   Insira o GUID de instância de serviço codificada em base64 que você recuperou anteriormente.
    
        `data.IBM_CUSTOMER_ROOT_KEY`
        :   Insira a chave raiz codificada em base64 que você recuperou anteriormente.
    
        `data.IBM_BASE_URL`
        :   IBM Key Protect: insira o terminal de API codificado como base64 da instância de serviço.
            :   Hyper Protect Crypto Services: insira o terminal público de Gerenciamento de chaves codificado como base64.
    
    2. Crie o segredo no namespace `portworx` de seu cluster.
    ```sh {: pre}
        kubectl apply -f secret.yaml
        ```
    3. Verifique se o segredo foi criado com êxito.
    ```sh {: pre}
        kubectl get secrets -n portworx
        ```