Encriptação de dados

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

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

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 para KMS, KVM e cache 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
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 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.

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
      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="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
  4. Aplique o ficheiro de substituições ao cluster da seguinte forma:
    • Se alterar as chaves KVM ou de cache, atualize apenas o ambiente:
      $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name
    • Se alterar as chaves do KMS, atualize a organização e o ambiente:
      $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name --org org_name

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