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