Criptografar dados da carga de trabalho em uso com Confidential GKE Nodes

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. A aplicação da criptografia pode ajudar a aumentar a segurança das suas cargas de trabalho.

Esta página é destinada a especialistas em segurança que implementam medidas de segurança no GKE. Para saber mais sobre papéis comuns e exemplos de tarefas que mencionamos no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE.

Antes de ler esta página, confira se você conhece o conceito de dados em uso.

O que são os Confidential GKE Nodes?

É possível criptografar suas cargas de trabalho com os nós confidenciais do GKE ou o modo confidencial para o Hyperdisk Balanced.

Confidential GKE Nodes

Os nós confidenciais do GKE usam a VM confidencial do Compute Engine para proteger dados em uso com criptografia de memória baseada em hardware. Os nós confidenciais do GKE são compatíveis com as seguintes tecnologias de computação confidencial:

  • AMD Secure Encrypted Virtualization (SEV)
  • AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP)
  • Extensões de domínio de confiança (TDX) da Intel

Para mais informações sobre essas tecnologias e ajuda para escolher a melhor opção para seus requisitos, consulte a Visão geral de VMs confidenciais.

Os nós confidenciais do GKE não mudam as medidas de segurança que o GKE aplica aos planos de controle do cluster. Para saber mais sobre essas medidas, consulte Segurança do plano de controle. Para ter visibilidade sobre quem acessa os planos de controle nos seus projetos do Google Cloud, use a transparência no acesso.

É possível ativar os nós confidenciais do GKE para clusters inteiros, pools de nós específicos ou cargas de trabalho específicas. A tabela a seguir descreve esses métodos de ativação:

Configuração confidencial dos nós do GKE Descrição Comportamento
Nível de carga de trabalho Configure nós confidenciais do GKE em uma ComputeClass e selecione essa ComputeClass em uma carga de trabalho. O GKE cria nós que usam essa configuração para executar seus pods.

A configuração de carga de trabalho é compatível com qualquer uma das seguintes tecnologias de computação confidencial, independente do modo de cluster ou do tipo de pool de nós:

  • AMD SEV
  • AMD SEV-SNP
  • Intel TDX
Nível do cluster Essa configuração é irreversível.

Ative os nós confidenciais do GKE ao criar um cluster do Autopilot ou Standard. Todos os nós do cluster usam nós confidenciais do GKE. Não é possível substituir a configuração do cluster para pools de nós ou cargas de trabalho individuais.

As tecnologias compatíveis no nível do cluster dependem do modo de operação do cluster, da seguinte maneira:

  • Clusters do Autopilot: AMD SEV
  • Clusters padrão:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
Nível do pool de nós Ative os Confidential GKE Nodes ao criar um pool de nós em um cluster padrão. Só é possível usar esse método se os nós confidenciais do GKE estiverem desativados no nível do cluster.

As tecnologias compatíveis no nível do pool de nós dependem se o pool de nós usa o provisionamento automático de nós, da seguinte maneira:

  • Pools de nós criados manualmente:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
  • Pools de nós com provisionamento automático:
    • AMD SEV
    • AMD SEV-SNP

Modo confidencial para Hyperdisk Balanced

Você também pode ativar o modo confidencial para Hyperdisk Balanced no armazenamento do disco de inicialização, que criptografa seus dados em enclaves adicionais com suporte de hardware.

É possível ativar o modo confidencial para o Hyperdisk Balanced ao fazer uma das seguintes ações:

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

Não é possível atualizar um cluster ou um pool de nós para mudar a configuração do modo confidencial para o Hyperdisk Balanced.

A tabela a seguir mostra o comportamento do GKE que se aplica quando você ativa o modo confidencial para a configuração balanceada do Hyperdisk no nível do cluster ou do pool de nós:

Configuração do modo confidencial para Hyperdisk Balanced Como configurar Comportamento
Nível do cluster Criar um novo cluster Apenas o pool de nós padrão no cluster vai usar o modo confidencial para a configuração do Hyperdisk Balanced. Não é possível fazer o seguinte:
  • Desativar o modo confidencial para a configuração do Hyperdisk Balanced em um pool de nós atual no cluster
  • Ativar o modo confidencial para a configuração do Hyperdisk equilibrado em clusters atuais
Nível do pool de nós Criar um novo pool de nós É possível configurar o modo confidencial para a configuração do Hyperdisk Balanced em qualquer novo pool de nós no momento da criação. Não é possível atualizar os pools de nós atuais para usar a configuração do modo confidencial para o Hyperdisk Balanced.

Preços

Os preços a seguir se aplicam, dependendo de como você configura os Confidential GKE Nodes:

Preços dos Confidential GKE Nodes
No nível da carga de trabalho

Nas cargas de trabalho do Autopilot, os dois custos a seguir são aplicáveis:

  • O faturamento do Autopilot com base em nós para a série de máquinas do Compute Engine em que os pods são executados. Para mais informações, consulte a seção "Pods com requisitos de hardware específicos" em Preços do Google Kubernetes Engine.
  • Preços dos Confidential GKE Nodes. Para mais informações, consulte a seção "Preços dos Confidential GKE Nodes no Autopilot do GKE" em Preços das Confidential VMs.

Em cargas de trabalho Standard, os dois custos a seguir são aplicados:

Nível do cluster

Nos clusters do Autopilot, os dois custos a seguir se aplicam:

  • Preços da classe de computação equilibrada, porque a série de máquinas padrão no cluster muda para N2D. Para mais informações, consulte a seção "Pods de classe de computação balanceados e com escalonamento horizontal" em Preços do Google Kubernetes Engine.
  • Preços dos Confidential GKE Nodes. Para mais informações, consulte a seção "Preços dos Confidential GKE Nodes no Autopilot do GKE" em Preços das Confidential VMs.

Nos clusters padrão, os dois custos a seguir se aplicam:

Nível do pool de nós

Nos pools de nós padrão, os seguintes custos são aplicados:

Além disso, eles podem gerar um pouco mais de dados de registro na inicialização do que os nós que não são confidenciais do GKE. Para mais informações sobre preços de registros, consulte Preços do Google Cloud Observability.

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 CLI do Google Cloud para essa tarefa, instale e inicialize a gcloud CLI. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.

Requisitos

Os nós confidenciais do GKE têm os seguintes requisitos:

  • Os clusters do Autopilot precisam executar a versão 1.30.2 ou mais recente do GKE.
  • Os clusters Standard precisam executar uma das seguintes versões do GKE, dependendo da tecnologia de computação confidencial escolhida:

    • AMD SEV: qualquer versão do GKE.
    • AMD SEV-SNP: 1.32.2-gke.1297000 ou mais recente.
    • Intel TDX: 1.32.2-gke.1297000 ou mais recente.
  • Para ativar os nós confidenciais do GKE no nível da carga de trabalho, os clusters do Autopilot e Standard precisam executar a versão 1.33.3-gke.1392000 ou mais recente do GKE.

  • Os nós precisam usar um tipo de máquina compatível com a tecnologia de Computação Confidencial escolhida. Para mais informações, consulte Tipos de máquinas, CPUs e zonas.

  • Os planos de controle e nós do cluster precisam estar em um local que ofereça suporte à tecnologia de computação confidencial escolhida. Para mais informações, consulte Ver zonas compatíveis.

Configurar os Confidential GKE Nodes no nível da carga de trabalho

Para ativar os nós confidenciais do GKE em cargas de trabalho individuais, use uma ComputeClass. As ComputeClasses são recursos personalizados do Kubernetes que permitem definir os atributos de novos nós criados pelo GKE e controlar o comportamento de fallback se o hardware não estiver disponível. As ComputeClasses são compatíveis com todas as tecnologias de computação confidencial disponíveis para o GKE, mesmo que uma tecnologia específica não seja compatível no nível do cluster ou do pool de nós.

Para configurar os nós confidenciais do GKE no nível da carga de trabalho, siga estas etapas:

  1. Opcional: para clusters padrão do GKE, ative o provisionamento automático de nós para o cluster. Para clusters do Autopilot, pule esta etapa.

    Se você optar por usar ComputeClasses com apenas pools de nós criados manualmente, também será necessário configurar manualmente taints e rótulos de nós nesses pools. Essa configuração manual adicional pode fazer com que você perceba menos benefícios ao usar uma ComputeClass para criar nós confidenciais do GKE.

  2. Salve o seguinte manifesto ComputeClass como um arquivo YAML. Para mais informações sobre os campos e valores compatíveis com ComputeClasses, consulte a CustomResourceDefinition do ComputeClass.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        confidentialNodeType: CONFIDENTIAL_COMPUTE_TECHNOLOGY
      nodePoolAutoCreation:
        enabled: true
      activeMigration:
        optimizeRulePriority: true
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - machineFamily: MACHINE_SERIES
      - machineType: MACHINE_TYPE
      whenUnsatisfiable: DoNotScaleUp
    

    Substitua:

    • COMPUTE_CLASS: um nome para a nova classe de computação.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de computação confidencial a ser usada. Os valores a seguir são compatíveis:

      • SEV para AMD SEV
      • SEV_SNP para AMD SEV-SNP
      • TDX para Intel TDX
    • ZONE1,ZONE2,...: as zonas em que os nós serão criados, como ['us-central1-a','us-central1-b']. Especifique zonas que ofereçam suporte à tecnologia de Computação confidencial especificada. Para mais informações, consulte Ver zonas compatíveis.

    • MACHINE_SERIES: a série de máquinas para os nós, como n2d. Especifique uma série de máquinas compatível com a tecnologia de Computação confidencial especificada. Para mais informações, consulte Tipos de máquinas, CPUs e zonas.

    • MACHINE_TYPE o tipo de máquina dos nós, como n2d-standard-4. Especifique um tipo de máquina compatível com a tecnologia de Computação confidencial especificada. Para mais informações, consulte Tipos de máquinas, CPUs e zonas.

    Esse manifesto inclui o campo spec.nodePoolAutoCreation com o valor enabled: true, que permite ao GKE criar novos pools de nós usando o provisionamento automático de nós.

  3. Crie a ComputeClass no cluster:

    kubectl apply -f PATH_TO_COMPUTE_CLASS_MANIFEST
    

    Substitua PATH_TO_COMPUTE_CLASS_MANIFEST pelo caminho do arquivo de manifesto ComputeClass.

  4. Salve o seguinte manifesto de implantação como um arquivo YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

  5. Crie a implantação:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    Substitua PATH_TO_DEPLOYMENT_MANIFEST pelo caminho para o arquivo de manifesto da implantação.

Os novos nós que o GKE cria para essa carga de trabalho usam a tecnologia de computação confidencial especificada. Esses nós são executados em uma das zonas selecionadas, em um tipo de máquina definido na ComputeClass. O GKE adiciona taints e rótulos de nós para que apenas pods que selecionam a mesma ComputeClass possam ser executados nos nós.

Configurar os Confidential GKE Nodes no nível do cluster

É possível ativar os nós confidenciais do GKE para um cluster inteiro do Autopilot ou Standard, o que significa que todos os nós nos clusters usam nós confidenciais do GKE. Como resultado, todas as cargas de trabalho implantadas nesse cluster são executadas em nós confidenciais do GKE. Não é possível substituir a configuração do cluster em cargas de trabalho ou pools de nós individuais.

Criar um cluster do Autopilot

Os clusters do Autopilot só oferecem suporte ao AMD SEV no nível do cluster. Quando você ativa os Confidential GKE Nodes, a série de máquinas padrão no cluster do Autopilot muda para N2D. Todas as suas cargas de trabalho são executadas nesses nós confidenciais sem precisar mudar os manifestos de carga de trabalho.

  • Execute este comando:

    gcloud container clusters create-auto CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-confidential-nodes
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster do Autopilot.
    • CONTROL_PLANE_LOCATION: a região do Compute Engine do plano de controle do cluster, como us-central1.

    O cluster precisa executar a versão 1.30.2 ou mais recente. Para mais informações, consulte Criar um cluster do Autopilot com um canal de lançamento e uma versão específicos.

Criar um cluster padrão

É possível especificar uma tecnologia de Computação confidencial para seus nós ao criar um cluster padrão. Especificar a tecnologia ao criar um cluster tem os seguintes efeitos:

  • Só é possível criar pools de nós ou cargas de trabalho que usam nós confidenciais do GKE nesse cluster.
  • Não é possível atualizar o cluster para desativar os nós confidenciais do GKE.
  • Não é possível substituir a tecnologia de computação confidencial no nível do cluster em pools de nós ou cargas de trabalho individuais.

A configuração da computação confidencial no nível do cluster é permanente. Por isso, considere os seguintes casos de uso antes de criar o cluster:

Para criar um cluster do modo Standard que usa Confidential GKE Nodes, selecione uma das seguintes opções:

gcloud

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

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • LOCATION: o local do Compute Engine para o plano de controle do cluster. O local precisa ser compatível com a tecnologia de Computação confidencial especificada. Para mais informações, consulte a seção Disponibilidade.
  • MACHINE_TYPE: um tipo de máquina compatível com a tecnologia de computação confidencial especificada. Para mais informações, consulte a seção Disponibilidade.
  • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do plano de controle que oferecem suporte à nova tecnologia de computação confidencial. Para mais informações, consulte Ver zonas compatíveis.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de computação confidencial a ser usada. Os valores a seguir são compatíveis:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

Também é possível usar a flag --enable-confidential-nodes no comando de criação do cluster. Se você especificar apenas essa flag no comando, o cluster usará o AMD SEV. O tipo de máquina especificado no comando precisa ser compatível com o AMD SEV. No entanto, se você especificar a flag --confidential-node-type no mesmo comando, o GKE usará o valor especificado na flag --confidential-node-type.

Console

  1. No console Google Cloud , acesse a página Criar um cluster do Kubernetes.

    Acessar "Criar um cluster do Kubernetes"

  2. No menu de navegação, na seção Cluster, clique em Segurança.

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

  4. Na caixa de diálogo Alterações necessárias, clique em Fazer alterações.

  5. No menu Tipo, selecione a tecnologia de Computação confidencial que você quer usar.

    Se a tecnologia selecionada exigir uma série de máquinas específica do Compute Engine, uma caixa de diálogo vai aparecer. Clique em Fazer mudanças para atualizar a série de máquinas do pool de nós.

  6. No menu de navegação, na seção Pools de nós, clique em default-pool.

  7. No painel Detalhes do pool de nós, faça o seguinte:

    1. Marque a caixa de seleção Especificar locais dos nós. Uma lista de zonas na região do cluster aparece.
    2. Marque as caixas de seleção das zonas que oferecem suporte à tecnologia de computação confidencial selecionada para os nós. Para mais informações, consulte Ver zonas compatíveis.
  8. Clique em Criar.

Para mais informações sobre como criar clusters, consulte Como criar um cluster regional.

Para qualquer pool de nós criado com a configuração do modo confidencial para Hyperdisk Balanced, apenas os nós no pool de nós são restritos à configuração. Para todos os novos pools de nós criados no cluster, é necessário configurar o modo confidencial na criação.

Configurar o provisionamento automático de nós

É possível configurar o provisionamento automático de nós para usar os Confidential GKE Nodes em pools de nós provisionados automaticamente. O provisionamento automático de nós é compatível com as seguintes tecnologias de computação confidencial:

  • AMD SEV
  • AMD SEV-SNP

Para usar nós confidenciais do GKE com o provisionamento automático de nós, especifique a flag --enable-confidential-nodes da CLI gcloud ao criar um cluster. As seguintes considerações adicionais se aplicam:

  • Ao criar o cluster, escolha uma tecnologia de computação confidencial compatível com o provisionamento automático de nós. Essa escolha é irreversível no nível do cluster.
  • Ao ativar o provisionamento automático de nós em um cluster atual, ele precisa usar uma tecnologia de nós confidenciais do GKE compatível com o provisionamento automático de nós.
  • Ao implantar cargas de trabalho, verifique se elas selecionam a tecnologia de Computação confidencial do cluster e uma série de máquinas compatível com essa tecnologia.

Configurar os nós confidenciais do GKE no nível do pool 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.

O modo confidencial para a configuração do Hyperdisk Balanced precisa ser especificado durante a solicitação de criação do pool de nós.

Criar um novo pool de nós

Para criar um pool de nós com os nós confidenciais do GKE ativados, selecione uma das seguintes opções:

gcloud

Execute este comando:

gcloud container node-pools create NODE_POOL_NAME \
    --location=LOCATION \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

Substitua:

  • NODE_POOL_NAME: o nome do novo pool de nós.
  • LOCATION: o local do novo pool de nós. O local precisa ser compatível com a tecnologia de Computação confidencial especificada. Para mais detalhes, consulte a seção Disponibilidade.
  • CLUSTER_NAME: o nome do cluster.
  • MACHINE_TYPE: um tipo de máquina compatível com a tecnologia de computação confidencial especificada. Para mais detalhes, consulte a seção Disponibilidade.
  • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do cluster que oferecem suporte à nova tecnologia de computação confidencial. Para mais informações, consulte Ver zonas compatíveis.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de computação confidencial a ser usada. Os valores a seguir são compatíveis:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

Também é possível usar a flag --enable-confidential-nodes no comando de criação do cluster. Se você especificar apenas essa flag no comando, o cluster usará o AMD SEV. O tipo de máquina especificado no comando precisa ser compatível com o AMD SEV. No entanto, se você especificar a flag --confidential-node-type no mesmo comando, o GKE usará o valor especificado na flag --confidential-node-type.

Console

  1. No console Google Cloud , acesse a página Clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique em Adicionar pool de nós.

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

  5. No painel Segurança do nó, faça o seguinte:

    1. Marque a caixa de seleção Ativar o Confidential GKE Node.
    2. Na caixa de diálogo Alterações necessárias, clique em Fazer alterações.
    3. No menu Tipo, selecione a tecnologia de Computação confidencial que você quer usar.

      Se a tecnologia selecionada exigir uma série de máquinas específica do Compute Engine, uma caixa de diálogo vai aparecer. Clique em Fazer mudanças para atualizar a série de máquinas do pool de nós.

  6. No menu de navegação, clique em Detalhes do pool de nós.

  7. No painel Detalhes do pool de nós, faça o seguinte:

    1. Marque a caixa de seleção Especificar locais dos nós. Uma lista de zonas na região do cluster aparece.
    2. Marque as caixas de seleção das zonas que oferecem suporte à tecnologia de computação confidencial selecionada para os nós. Para mais informações, consulte Ver zonas compatíveis.
  8. Opcional: configure outras definições para o pool de nós.

  9. Clique em Criar.

Atualizar um pool de nós

Essa mudança exige a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para mais detalhes sobre essa mudança específica, encontre a linha correspondente na tabela Alterações manuais que recriam os nós usando uma estratégia de upgrade de nós sem respeitar as políticas de manutenção. Para saber mais sobre atualizações de nós, consulte Planejar interrupções de atualização de nós.

É possível atualizar os pools de nós atuais para usar os Confidential GKE Nodes ou mudar a tecnologia de computação confidencial usada pelos nós. O pool de nós precisa atender a todos os requisitos a seguir:

  • Os nós usam um tipo de máquina compatível com a tecnologia de Computação Confidencial escolhida.
  • Os nós são executados em zonas que oferecem suporte à tecnologia de Computação confidencial escolhida.

Como a disponibilidade de tipo de máquina e local pode variar entre as tecnologias de computação confidencial, talvez seja necessário atualizar esses atributos para o pool de nós antes de ativar uma tecnologia específica.

Para atualizar um pool de nós atual e usar os nós confidenciais do GKE, selecione uma das seguintes opções:

gcloud

É possível usar a CLI gcloud para ativar os nós confidenciais do GKE em um pool de nós ou mudar a tecnologia de computação confidencial dos nós.

  1. Se o pool de nós já usar nós confidenciais do GKE, desative os nós confidenciais do GKE. Aguarde a conclusão da operação de atualização do pool de nós.
  2. Mude o tipo de máquina e os locais dos nós para valores compatíveis com a nova tecnologia de Computação Confidencial:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --machine-type=MACHINE_TYPE \
        --node-locations=ZONE1,ZONE2,...
    

    Substitua:

    • NODE_POOL_NAME: o nome do pool de nós atual.
    • CLUSTER_NAME: o nome do cluster.
    • CLUSTER_LOCATION: O local do cluster.
    • MACHINE_TYPE: um tipo de máquina compatível com a nova tecnologia de computação confidencial. Para mais informações, consulte a seção Disponibilidade.
    • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do cluster que oferecem suporte à nova tecnologia de computação confidencial. Para mais informações, consulte Ver zonas compatíveis.
  3. Atualize o pool de nós com a tecnologia de computação confidencial a ser usada:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY
    

    Substitua CONFIDENTIAL_COMPUTE_TECHNOLOGY pela tecnologia de computação confidencial a ser usada. Os valores a seguir são compatíveis:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

Console

É possível atualizar um pool de nós atual para usar os nós confidenciais do GKE somente se o tipo de máquina do pool de nós for compatível com a tecnologia de Computação Confidencial escolhida. Se os nós não usarem um tipo de máquina compatível, use as instruções da CLI gcloud nesta seção.

  1. No console Google Cloud , acesse a página Clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique na guia Nós.

  4. Clique no nome do pool de nós que você quer modificar.

  5. Na página Detalhes do pool de nós, clique em Editar. O painel Editar pool de nós é aberto.

  6. Na seção Zonas, verifique se as zonas selecionadas são compatíveis com a tecnologia de Computação confidencial. Para mais informações, consulte Ver zonas compatíveis.

    Se uma zona selecionada não for compatível com a tecnologia, faça o seguinte:

    1. Desmarque a caixa de seleção da zona sem suporte.
    2. Opcional: marque as caixas de seleção de outras zonas compatíveis.
    3. Clique em Salvar. Aguarde a conclusão da operação de atualização do pool de nós.
    4. Clique em Editar para reabrir o painel Editar pool de nós.
  7. Na seção Segurança, marque a caixa de seleção Ativar o Confidential GKE Node.

  8. No menu Tipo, selecione a tecnologia de Computação confidencial para os nós.

  9. Clique em Salvar.

Colocar cargas de trabalho apenas em pools de nós confidenciais

Se você ativar os Confidential GKE Nodes no nível do cluster, todas as suas cargas de trabalho serão executadas em nós confidenciais. Não é necessário fazer mudanças nos seus manifestos. No entanto, se você ativar os nós confidenciais do GKE apenas para pools de nós específicos do modo Standard no nível do pool de nós, declare que suas cargas de trabalho precisam ser executadas apenas em pools de nós com nós confidenciais do GKE.

  • Para exigir que uma carga de trabalho seja executada em uma tecnologia específica de computação confidencial, use um seletor de nós com o rótulo cloud.google.com/gke-confidential-nodes-instance-type, como no exemplo a seguir:

    apiVersion: v1
    kind: Pod
    spec:
    # For readability, lines are omitted from this example manifest
      nodeSelector:
        cloud.google.com/gke-confidential-nodes-instance-type: "CONFIDENTIAL_COMPUTE_SELECTOR"
    

    Substitua CONFIDENTIAL_COMPUTE_SELECTOR pelo nome da tecnologia usada pelo pool de nós. Esse campo aceita os seguintes valores, que precisam ser especificados em maiúsculas:

    • SEV: AMD SEV
    • SEV_SNP: AMD SEV-SNP
    • TDX: Intel TDX
  • Para permitir que uma carga de trabalho seja executada em qualquer nó confidencial, independente da tecnologia de computação confidencial, use uma regra de afinidade de nó, como no exemplo a seguir:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: Exists
    
  • Para permitir que uma carga de trabalho seja executada em nós que usam apenas um subconjunto das tecnologias de computação confidencial disponíveis, use uma regra de afinidade de nó semelhante ao exemplo a seguir:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: In
                values:
                - SEV
                - SEV_SNP
                - TDX
    

    No campo values, especifique apenas as tecnologias de Computação confidencial em que você quer executar a carga de trabalho.

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

É possível verificar se os clusters ou nós usam Confidential GKE Nodes inspecionando os clusters, pools de nós, nós ou instâncias do Compute Engine.

Verificar para clusters

Selecione uma das seguintes opções:

gcloud

Descreva o cluster:

gcloud container clusters describe CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType)'

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

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Console

  1. No console Google Cloud , acesse a página Clusters do Kubernetes.

    Acessar os clusters do Kubernetes

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

  3. Na seção Segurança, verifique se o campo Confidential GKE Nodes tem o valor Ativado.

Verificar pools de nós

Selecione uma das seguintes opções:

gcloud

Descreva o pool de nós:

gcloud container node-pools describe NODE_POOL_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType,enableConfidentialStorage)'

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

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Se o modo confidencial para Hyperdisk Balanced também estiver ativado, a saída será semelhante a esta:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR
enableConfidentialStorage: true

Console

  1. No console Google Cloud , acesse a página Clusters do Kubernetes.

    Acessar os clusters do Kubernetes

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

  3. Clique no nome de um pool de nós.

  4. Na seção Segurança, verifique se o campo Confidential GKE Nodes tem o valor Ativado.

Verificar um nó específico

  1. Encontre o nome do nó:

    kubectl get nodes
    
  2. Descreva o nó:

    kubectl describe NODE_NAME
    

    Substitua NODE_NAME pelo nome de um nó a ser inspecionado.

    O resultado será assim:

    Name:               gke-cluster-1-default-pool-affsf335r-asdf
    Roles:              <none>
    Labels:             cloud.google.com/gke-boot-disk=pd-balanced
                        cloud.google.com/gke-container-runtime=containerd
                        cloud.google.com/gke-confidential-nodes-instance-type=CONFIDENTIAL_COMPUTE_SELECTOR
                        cloud.google.com/gke-nodepool=default-pool
                        cloud.google.com/gke-os-distribution=cos
                        cloud.google.com/machine-family=e2
    # lines omitted for clarity
    

    Nessa saída, o rótulo do nó cloud.google.com/gke-confidential-nodes-instance-type indica que ele é confidencial.

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 uma das tecnologias de Computação confidencial disponíveis ativadas. 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, como no exemplo a seguir:

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.

Criar um PersistentVolume para o modo confidencial do Hyperdisk Balanced

Para orientações sobre os valores permitidos para capacidade ou IOPS, consulte Planejar o nível de desempenho do volume do Hyperdisk.

Os exemplos a seguir mostram como criar um modo confidencial para o Hyperdisk Balanced StorageClass para cada tipo de Hyperdisk:

Hiperdisco equilibrado

  1. Salve o manifesto em um arquivo chamado confidential-hdb-example-class.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: balanced-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
      provisioned-throughput-on-create: "250Mi"
      provisioned-iops-on-create: "7000"
      enable-confidential-storage: true
      disk-encryption-kms-key: "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/HSM_KEY_NAME"
    

    Substitua:

    • KMS_PROJECT_ID: o projeto proprietário da chave do Cloud KMS.
    • REGION: a região onde o disco está localizado.
    • KEY_RING: o nome do keyring que inclui a chave.
    • HSM_KEY_NAME: o nome da chave do HSM usada para criptografar o disco
  2. Crie o StorageClass

    kubectl create -f hdb-example-class.yaml
    
  3. Crie uma reivindicação de volume permanente do Hyperdisk para o GKE que use o modo confidencial para o volume do Hyperdisk Balanced.

Para encontrar o nome das StorageClasses disponíveis no cluster, execute o seguinte comando:

kubectl get sc

Limitações

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

O modo confidencial para Hyperdisk Balanced tem as seguintes limitações:

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

As VMs confidenciais do Compute Engine que usam o tipo de máquina N2D e a tecnologia de computação confidencial AMD SEV 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 os 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

Essa mudança exige a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para mais detalhes sobre essa mudança específica, encontre a linha correspondente na tabela Alterações manuais que recriam os nós usando uma estratégia de upgrade de nós sem respeitar as políticas de manutenção. Para saber mais sobre atualizações de nós, consulte Planejar interrupções de atualização de nós.

Só é possível desativar os nós confidenciais do GKE em pools de nós no modo Standard. Se o pool de nós estiver em um cluster que usa os nós confidenciais do GKE no nível do cluster, não será possível desativar o recurso no nível do pool de nós. Para desativar os nós confidenciais do GKE, selecione uma das seguintes opções:

gcloud

Execute este comando:

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

Console

  1. No console Google Cloud , acesse a página Clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique na guia Nós.

  4. Clique no nome do pool de nós que você quer modificar.

  5. Na página Detalhes do pool de nós, clique em Editar. O painel Editar pool de nós é aberto.

  6. Na seção Segurança, desmarque a caixa de seleção Ativar Confidential GKE Nodes.

  7. Clique em Salvar.

A seguir