Encriptação de dados

Por predefinição, os seguintes dados são armazenados encriptados no plano de execução híbrido:

  • Dados da cache
  • Dados principais do contrato
  • Dados do sistema de gestão de chaves (KMS)
  • Dados do mapa de chaves-valores (KVM)

A encriptação de dados não requer nenhuma configuração especial da sua parte. No entanto, se, por algum motivo, quiser usar as suas próprias chaves de encriptação (substituindo as predefinidas), pode fazê-lo, conforme explicado neste tópico.

Âmbito da chave de encriptação

As chaves de encriptação do Apigee Hybrid têm âmbito. Por exemplo, as chaves do KMS têm o âmbito organization. Isto significa que a chave é usada para encriptar dados do KMS para toda a organização. A tabela seguinte apresenta o âmbito de cada tipo de chave:

Chave de encriptação Âmbito
Reduzir Apenas organização
KMS Apenas organização
KVM Organização ou ambiente

Se uma política de KVM especificar o âmbito apiproxy ou policy (revisão do proxy de API), a chave ao nível da organização é usada para encriptar os dados. Para uma vista geral de como as KVMs são usadas no Apigee Edge, consulte o artigo Trabalhar com mapas de chave-valor.

Cache Apenas ambiente

Acerca das chaves de encriptação predefinidas

Por predefinição, o Apigee hybrid fornece um conjunto de chaves codificadas em Base64 que são usadas para encriptar dados de contratos, KVM, KMS e cache. O instalador híbrido do Apigee armazena as chaves no plano de execução como segredos do Kubernetes e usa-as para encriptar os seus dados com a encriptação padrão AES-128. As chaves estão sob o seu controlo; o plano de gestão híbrido nunca tem conhecimento delas em momento algum.

As chaves predefinidas são aplicadas a todos os novos componentes híbridos do Apigee quando os cria.

Alterar as chaves de encriptação predefinidas

Embora não seja obrigatório, pode alterar qualquer uma das chaves de encriptação predefinidas, se quiser. Para substituir uma ou mais chaves predefinidas, siga estes passos:

  1. Copie as seguintes estrofes para o ficheiro de substituições. Esta configuração permite-lhe alterar as chaves de encriptação do KMS e do KVM ao nível da organização, bem como as chaves de encriptação do KVM e da cache ao nível do ambiente:
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
        contractEncryptionKey: base64-encoded-key
    
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Gere uma nova chave para cada chave que quer substituir. Cada chave tem de ser uma string codificada em Base64 com exatamente 16, 24 ou 32 bytes. Veja também Como criar uma chave codificada.
  3. Substituir as teclas predefinidas por novas. Neste exemplo, todas as teclas predefinidas são substituídas pelas teclas:
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
        contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="

Substitua as teclas predefinidas

Pode substituir as chaves da organização ou dos ambientes específicos indicados no ficheiro de substituições. Quando cria os componentes, as chaves que especifica para a organização ou os ambientes individuais substituem as predefinições.

  1. Copie as seguintes estrofes para o ficheiro de substituições. Esta configuração permite-lhe alterar as chaves de encriptação do KMS e do KVM ao nível da organização, bem como as chaves de encriptação do KVM e da cache ao nível do ambiente:
    org:YOUR_ORG_NAME
    
    kmsEncryptionKey: base64-encoded-key
    kvmEncryptionKey: base64-encoded-key
    contractEncryptionKey: base64-encoded-key
    
    envs
      - name: ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
    
      - name: 2ND_ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Gere uma nova chave para cada chave que quer substituir. Cada chave tem de ser uma string codificada em Base64 com exatamente 16, 24 ou 32 bytes. Veja também Como criar uma chave codificada.
  3. Especifique as teclas que quer substituir. Neste exemplo, todas as teclas predefinidas são substituídas pelas teclas:
    org:hybrid-org
    
    kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
    kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
    contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: prod
        kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "QjEyAvC1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: test
        kvmEncryptionKey: "A1b2C3d4E5f6G7h8I9j10K=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "B1c2D3e4F5f6H7i8J9k10L=="

Aplique as alterações principais

Aplique o ficheiro de substituições ao cluster com os seguintes comandos Helm:
  • Se alterar a chave do contrato ou a chave KVM da organização, atualize a organização:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  • Se alterar a chave de cache ou a chave KVM de um ambiente, atualize o ambiente:
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE.yaml
    
  • Se alterar a chave do KMS, atualize a organização e o ambiente:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

Uma nota sobre a retrocompatibilidade

Se remover as chaves de encriptação no ficheiro de substituições na primeira instalação do Apigee hybrid, desativa efetivamente a encriptação e os valores são armazenados sem encriptação. Se, posteriormente, ativar a encriptação fornecendo chaves, os dados existentes permanecem não encriptados. No entanto, todos os dados futuros adicionados são encriptados. O sistema continua a funcionar normalmente com os dados não encriptados e os novos dados encriptados.

Tenha também em atenção que não pode alterar as chaves de encriptação depois de os dados de tempo de execução serem encriptados.

Como criar uma chave codificada

É necessária uma chave codificada em Base64 com a formatação correta para a encriptação de KVM, KMS e cache. A chave usada para qualquer um destes fins tem de ser codificada em Base-64 a partir de uma string com 16, 24 ou 32 bytes de comprimento, conforme explicado abaixo:

O comando de exemplo seguinte gera uma string de 32 carateres codificada em Base64 adequada e gerada aleatoriamente:

head -c 32 /dev/random | openssl base64