Criptografar dados da carga de trabalho em uso com nós confidenciais do Google Kubernetes Engine


Nesta página, mostramos como aplicar a criptografia de dados em uso nos seus nós e cargas de trabalho usando nós confidenciais do Google Kubernetes Engine.

Visão geral

Os Confidential GKE Nodes foram criados com base na VM confidencial do Compute Engine usando a virtualização de criptografia segura (SEV, na sigla em inglês) da AMD, que criptografa o conteúdo da memória das VMs em uso. A criptografia em uso é um dos três estados da criptografia de ponta a ponta.

Ao ativar os nós confidenciais do GKE em um cluster ou em um pool de nós, os dados nas cargas de trabalho em execução nos nós confidenciais são criptografados em uso. Para ter visibilidade sobre seu plano de controle, use a transparência no acesso.

É possível ativar os nós confidenciais do GKE ao realizar uma das seguintes ações:

  • Criar um novo cluster
  • Criar um novo pool de nós
  • Atualizar um pool de nós

Não é possível atualizar um cluster atual para alterar a configuração dos nós confidenciais do GKE.

A tabela a seguir mostra o comportamento do GKE que se aplica quando você ativa os nós confidenciais do GKE no nível do cluster ou do pool:

Configuração confidencial dos nós do GKE Como configurar Comportamento
Nível do cluster Criar um novo cluster Todos os nós no cluster em qualquer pool de nós usam o GKE confidencial. Não é possível fazer o seguinte:
  • Desativar nós confidenciais do GKE para um pool de nós novo ou atual no cluster
  • Desativar nós confidenciais do GKE no cluster
  • Ativar nós confidenciais do GKE em clusters atuais
Nível do pool de nós
  • Criar um novo pool de nós
  • Atualizar um pool de nós
Só é possível configurar os nós confidenciais do GKE para pools de nós quando esse recurso é desativado no nível do cluster.

Preços

Não há custo extra para implantar nós confidenciais do GKE, além do custo das VMs confidenciais do Compute Engine. No entanto, eles podem gerar um pouco mais de dados de registro na inicialização do que os nós padrão. Para informações sobre preços de registros, consulte Preços do Google Cloud Observability.

Disponibilidade

Os nós confidenciais do GKE estão disponíveis nas seguintes situações:

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando gcloud components update.

Ativar os Confidential GKE Nodes nos clusters

É possível criar um novo cluster com o Confidential GKE Node ativado usando a CLI gcloud ou o Console do Google Cloud. Se você ativar os Confidential GKE Nodes no nível do cluster, todos os nós no cluster serão VMs confidenciais.

gcloud

Ao criar um novo cluster, especifique a opção --enable-confidential-nodes na CLI gcloud:

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Substitua:

Console

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Clique em Criar.

  3. Na seção Padrão, clique em Configurar.

  4. No painel de navegação, em Cluster, clique em Segurança.

  5. Marque a caixa de seleção Ativar o Confidential GKE Node.

  6. Configure o cluster conforme necessário.

  7. Clique em Criar.

Consulte este link para mais detalhes sobre a criação de clusters regionais.

Depois de criar um cluster com nós confidenciais do GKE, todos os pools de nós criados nele só poderão ser nós confidenciais. Não é possível criar pools de nós regulares em clusters com nós confidenciais do GKE ativados. Também não é possível desativar os nós confidenciais do GKE em pools de nós individuais ao ativá-los no nível do cluster.

Ativar os Confidential GKE Nodes em pools de nós

É possível ativar os nós confidenciais do GKE em pools de nós específicos se eles estiverem desativados no nível do cluster.

Criar um novo pool de nós

Para criar um novo pool de nós com os nós confidenciais do GKE ativados, execute o seguinte comando:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --enable-confidential-nodes

Substitua:

Atualizar um pool de nós

É possível ativar os Confidential GKE Nodes em pools de nós atuais que usam o tipo de máquina N2D ou o tipo de máquina C2D. Execute este comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-confidential-nodes

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós.
  • CLUSTER_NAME: o nome do cluster.

Verificar se os nós confidenciais do GKE estão ativados

Em clusters

É possível verificar se o cluster está usando Confidential GKE Nodes com a CLI gcloud ou o console do Google Cloud.

gcloud

Descreva o cluster:

gcloud container clusters describe CLUSTER_NAME

Se os nós confidenciais do GKE estiverem ativados, a saída do comando incluirá as seguintes linhas:

confidentialNodes:
  enabled: true

Console

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Clique no nome do cluster que você quer inspecionar.

  3. Em Segurança, no campo Confidential GKE Nodes, verifique se os nós Confidential GKE Nodes estão Ativados.

Em pools de nós

Para verificar se o pool de nós está usando nós confidenciais do GKE, execute o seguinte comando:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

Se os nós confidenciais do GKE estiverem ativados, a saída será semelhante a esta:

confidentialNodes:
  enabled: true

Em nós

Para validar a confidencialidade de nós específicos, é possível:

  1. validar o SEV AMD ativado ou
  2. validar a VM confidencial usando o Cloud Monitoring.

Executar aplicativos em nós confidenciais do GKE

A abordagem do Google para a computação confidencial é possibilitar uma migração lift-and-shift fácil para os aplicativos existentes. As cargas de trabalho do GKE executadas hoje podem ser executadas em nós confidenciais do GKE sem alterações de código.

Opcionalmente, se você quiser expressar de maneira declarada que suas cargas de trabalho precisam ser executadas somente em clusters com nós confidenciais do GKE, use o seletor de nós cloud.google.com/gke-confidential-nodes. Veja um exemplo de especificação de pod que usa esse seletor:

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: my-confidential-app
    image: us-docker.pkg.dev/myproject/myrepo/my-confidential-app
  nodeSelector:
    cloud.google.com/gke-confidential-nodes: "true"

Definir restrições da política da organização

Defina uma restrição de política da organização para garantir que todos os recursos da VM criados na sua organização sejam instâncias de VM confidenciais. No GKE, é possível personalizar a restrição Restringir a computação não confidencial para exigir que todos os novos clusters sejam criados com os nós confidenciais do GKE ativados. Adicione o nome do serviço da API container.googleapis.com à lista de proibições ao aplicar restrições da política da organização. Por exemplo:

gcloud resource-manager org-policies deny \
    constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
    --project=PROJECT_ID

Substitua PROJECT_ID pela ID do seu projeto.

Limitações

Os nós confidenciais do GKE têm as seguintes limitações:

Limitações da migração em tempo real

Certos tipos de máquina de VM confidencial do Compute Engine oferecem suporte à migração em tempo real, o que minimiza a possível interrupção da carga de trabalho devido a um evento de manutenção do host. A migração em tempo real ocorre nas seguintes versões do GKE:

  • 1.27.10-gke.1218000 e mais recente
  • 1.28.6-gke.1393000 e mais recente
  • 1.29.1-gke.1621000 e mais recente

Se seus pools de nós já estavam executando uma versão compatível quando a migração em tempo real foi adicionada, atualize manualmente os pools de nós para a mesma versão compatível ou para uma versão diferente. A atualização dos nós aciona a recriação dos nós, e os novos nós têm a migração em tempo real ativada.

Para mais detalhes sobre quais tipos de máquina do Compute Engine são compatíveis com a migração em tempo real, consulte Configurações compatíveis.

Se um evento de manutenção do host ocorrer em um nó que não oferece suporte à migração em tempo real, o nó entrará em um estado NotReady. Os pods em execução vão ter interrupções até que o nó fique pronto novamente. Se a manutenção levar mais de cinco minutos, o GKE poderá tentar recriar os pods em outros nós.

Desativar os Confidential GKE Nodes

A desativação de nós confidenciais do GKE só funciona para pools de nós que ativaram os nós confidenciais do GKE. Se o cluster for criado com nós confidenciais do GKE, não será possível desativar o recurso. Execute o seguinte comando para desativar os nós confidenciais do GKE em um pool de nós:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --no-enable-confidential-nodes

A seguir