Encripte os dados de cargas de trabalho em utilização com Confidential GKE Nodes


Esta página mostra como aplicar a encriptação de dados em utilização nos seus nós e cargas de trabalho através de nós confidenciais do Google Kubernetes Engine. A aplicação da encriptação pode ajudar a aumentar a segurança das suas cargas de trabalho.

Esta página destina-se a especialistas em segurança que implementam medidas de segurança no GKE. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud

Antes de ler esta página, certifique-se de que está familiarizado com o conceito de dados em utilização.

O que são os Confidential GKE Nodes?

Pode encriptar as suas cargas de trabalho com nós GKE confidenciais ou o modo confidencial para o Hyperdisk Balanced.

Confidential GKE Nodes

Os nós GKE confidenciais usam a VM confidencial do Compute Engine para proteger os dados em utilização com a encriptação de memória baseada em hardware. Os Confidential GKE Nodes suportam as seguintes tecnologias de computação confidencial:

  • Virtualização encriptada segura (SEV) da AMD
  • AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP)
  • Extensões de domínio fidedigno (TDX) da Intel

Para mais informações sobre estas tecnologias e ajuda na escolha da tecnologia ideal para os seus requisitos, consulte a vista geral da VM confidencial.

Os Confidential GKE Nodes não alteram as medidas de segurança que o GKE aplica aos planos de controlo do cluster. Para saber mais sobre estas medidas, consulte o artigo Segurança do plano de controlo. Para ter visibilidade sobre quem acede aos planos de controlo nos seus projetos, use a Google Cloud Transparência de acesso.

Pode ativar os nós GKE confidenciais para clusters inteiros, para pools de nós específicos ou para cargas de trabalho específicas. A tabela seguinte descreve estes métodos de ativação:

Definição de nós do GKE confidenciais Descrição Comportamento
Nível de carga de trabalho Configure nós GKE confidenciais numa ComputeClass e, em seguida, selecione essa ComputeClass numa carga de trabalho. O GKE cria nós que usam essa configuração para executar os seus pods.

A definição da carga de trabalho suporta qualquer uma das seguintes tecnologias de computação confidencial, independentemente do modo de cluster ou do tipo de conjunto de nós:

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

Ative os nós do GKE confidenciais quando criar um novo cluster do Autopilot ou Standard. Todos os nós no cluster usam Confidential GKE Nodes. Não pode substituir a definição de cluster para conjuntos de nós ou cargas de trabalho individuais.

As tecnologias suportadas ao nível do cluster dependem do modo de funcionamento do cluster, da seguinte forma:

  • Clusters do Autopilot: AMD SEV
  • Clusters padrão:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
Nível do node pool Ative os nós do GKE confidenciais quando criar um novo conjunto de nós num cluster padrão. Só pode usar este método se os nós do GKE confidenciais estiverem desativados ao nível do cluster.

As tecnologias suportadas ao nível do conjunto de nós dependem de o conjunto de nós usar o aprovisionamento automático dos nós, da seguinte forma:

  • Node pools criados manualmente:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
  • Pools de nós aprovisionados automaticamente:
    • AMD SEV
    • AMD SEV-SNP

Modo confidencial para o Hyperdisk Balanced

Também pode ativar o modo confidencial para o Hyperdisk Balanced no armazenamento do disco de arranque, que encripta os seus dados em enclaves adicionais suportados por hardware.

Pode ativar o modo confidencial para o Hyperdisk Balanced quando realizar uma das seguintes ações:

  • Crie um novo cluster
  • Crie um novo node pool

Não pode atualizar um cluster existente nem um conjunto de nós para alterar a definição do modo confidencial para o Hyperdisk Balanced.

A tabela seguinte mostra o comportamento do GKE que se aplica quando ativa o modo confidencial para a definição equilibrada do Hyperdisk ao nível do cluster ou ao nível do conjunto de nós:

Modo confidencial para a definição Hyperdisk Balanced Como configurar Comportamento
Ao nível do cluster Crie um novo cluster Apenas o conjunto de nós predefinido no cluster usa o modo confidencial para a definição de Hyperdisk Balanced. Não pode fazer o seguinte:
  • Desative o modo confidencial para a definição Hyperdisk Balanced para um conjunto de nós existente no cluster
  • Ative o modo confidencial para a definição Hyperdisk Balanced em clusters existentes
Nível do node pool Crie um novo node pool Pode configurar o modo confidencial para a definição Hyperdisk Balanced para quaisquer novos conjuntos de nós no momento da criação. Não pode atualizar os conjuntos de nós existentes para usar o modo confidencial para a definição equilibrada do Hyperdisk.

Preços

Os seguintes preços aplicam-se consoante a forma como configura os Confidential GKE Nodes:

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

Nos workloads do Autopilot, aplicam-se os dois custos seguintes:

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

Nos conjuntos de trabalho padrão, aplicam-se os seguintes custos:

Ao nível do cluster

Nos clusters do Autopilot, aplicam-se os seguintes custos:

  • Preços da classe de computação equilibrados, porque a série de máquinas predefinida no cluster muda para N2D. Para mais informações, consulte a secção "Pods da classe de computação equilibrada e de expansão" em Preços do Google Kubernetes Engine.
  • Preços dos Confidential GKE Nodes. Para mais informações, consulte a secção "Preços dos nós GKE confidenciais no GKE Autopilot" em Preços das VMs confidenciais.

Nos clusters padrão, aplicam-se os seguintes custos:

Nível do node pool

Nos conjuntos de nós padrão, aplicam-se os seguintes custos:

Além disso, os Confidential GKE Nodes podem gerar ligeiramente mais dados de registo no arranque do que os nós que não são Confidential GKE Nodes. Para mais informações sobre os preços dos registos, consulte a secção Preços do Google Cloud Observability.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.

Requisitos

Os Confidential GKE Nodes têm os seguintes requisitos:

  • Os clusters do Autopilot têm de executar a versão 1.30.2 ou posterior do GKE.
  • Os clusters padrão têm de executar uma das seguintes versões do GKE, dependendo da tecnologia de computação confidencial que escolher:

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

  • Os nós têm de usar um tipo de máquina que suporte a tecnologia de computação confidencial que escolher. Para mais informações, consulte o artigo Tipos de máquinas, CPUs e zonas.

  • Os planos de controlo e os nós do cluster têm de estar numa localização que suporte a tecnologia de computação confidencial que escolher. Para mais informações, consulte o artigo Veja as zonas suportadas.

Configure nós do GKE confidenciais ao nível da carga de trabalho

Para ativar os nós GKE confidenciais em cargas de trabalho individuais, usa uma ComputeClass. As ComputeClasses são recursos personalizados do Kubernetes que lhe permitem definir os atributos de novos nós que o GKE cria e controlar o comportamento alternativo se o hardware não estiver disponível. As ComputeClasses suportam todas as tecnologias de computação confidencial disponíveis para o GKE, mesmo que uma tecnologia específica não seja suportada ao nível do cluster ou do conjunto de nós.

Para configurar os Confidential GKE Nodes ao nível da carga de trabalho, siga estes passos:

  1. Opcional: para clusters padrão do GKE, ative o aprovisionamento automático de nós para o cluster. Para clusters do Autopilot, ignore este passo.

    Se optar por usar ComputeClasses apenas com pools de nós criados manualmente, também tem de configurar manualmente as contaminações de nós e as etiquetas de nós nesses pools de nós. Esta configuração manual adicional pode resultar na perceção de menos vantagens na utilização de uma ComputeClass para criar nós GKE confidenciais.

  2. Guarde o seguinte manifesto ComputeClass como um ficheiro YAML. Para mais informações sobre os campos e os valores suportados para ComputeClasses, consulte a definição de recursos personalizados 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 o seguinte:

    • COMPUTE_CLASS: um nome para a sua nova classe de computação.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de computação confidencial a usar. Os seguintes valores são suportados:

      • SEV para AMD SEV
      • SEV_SNP para AMD SEV-SNP
      • TDX para o Intel TDX
    • ZONE1,ZONE2,...: as zonas nas quais criar nós, como ['us-central1-a','us-central1-b']. Especifique zonas que suportam a tecnologia de computação confidencial que especificou. Para mais informações, consulte Veja as zonas suportadas.

    • MACHINE_SERIES: a série de máquinas para os nós, como n2d. Especifique uma série de máquinas que suporte a tecnologia de computação confidencial que especificou. Para mais informações, consulte o artigo Tipos de máquinas, CPUs e zonas.

    • MACHINE_TYPE o tipo de máquina para os nós, como n2d-standard-4. Especifique um tipo de máquina que suporte a tecnologia de computação confidencial que especificou. Para mais informações, consulte o artigo Tipos de máquinas, CPUs e zonas.

    Este manifesto inclui o campo spec.nodePoolAutoCreation com um valor de enabled: true, que permite ao GKE criar novos conjuntos de nós através do aprovisionamento automático de nós.

  3. Crie a ComputeClass no seu cluster:

    kubectl apply -f PATH_TO_COMPUTE_CLASS_MANIFEST
    

    Substitua PATH_TO_COMPUTE_CLASS_MANIFEST pelo caminho para o ficheiro de manifesto ComputeClass.

  4. Guarde o seguinte manifesto de implementação como um ficheiro 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: "4Gi"

  5. Crie a implementação:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    Substitua PATH_TO_DEPLOYMENT_MANIFEST pelo caminho para o ficheiro de manifesto de implementação.

Os novos nós que o GKE cria para esta carga de trabalho usam a tecnologia de computação confidencial que especificou. Estes nós são executados numa das zonas que selecionou, num tipo de máquina que definiu na ComputeClass. O GKE adiciona taints de nós e etiquetas de nós para que apenas os pods que selecionam a mesma ComputeClass possam ser executados nos nós.

Configure nós do GKE confidenciais ao nível do cluster

Pode ativar os Confidential GKE Nodes para um cluster do Autopilot ou Standard completo, o que significa que todos os nós nos clusters usam Confidential GKE Nodes. Como resultado, todas as cargas de trabalho que implementar nesse cluster são executadas em Confidential GKE Nodes. Não pode substituir a definição do cluster em cargas de trabalho ou conjuntos de nós individuais.

Crie um novo cluster do Autopilot

Os clusters do Autopilot só suportam AMD SEV ao nível do cluster. Quando ativa os nós do GKE confidenciais, a série de máquinas predefinida no cluster do Autopilot muda para N2D. Todas as suas cargas de trabalho são executadas nestes nós confidenciais sem necessidade de alterar os manifestos das cargas de trabalho.

  • Execute o seguinte comando:

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

    Substitua o seguinte:

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

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

Crie um novo cluster Standard

Pode especificar uma tecnologia de computação confidencial para os seus nós quando cria um cluster padrão. A especificação da tecnologia quando cria um cluster tem os seguintes efeitos:

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

A configuração de uma definição de computação confidencial ao nível do cluster é permanente. Como resultado, considere os seguintes exemplos de utilização antes de criar o seu cluster:

Para criar um cluster do modo padrão que use nós do GKE confidenciais, selecione uma das seguintes opções:

gcloud

Quando 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 o seguinte:

  • CLUSTER_NAME: o nome do cluster.
  • LOCATION: a localização do Compute Engine para o plano de controlo do cluster. A localização tem de suportar a tecnologia de computação confidencial especificada. Para mais informações, consulte a secção Disponibilidade.
  • MACHINE_TYPE: um tipo de máquina que suporta a tecnologia de computação confidencial que especificar. Para mais informações, consulte a secção Disponibilidade.
  • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do plano de controlo que suportam a nova tecnologia de computação confidencial. Para mais informações, consulte o artigo Veja as zonas suportadas.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de computação confidencial a usar. Os seguintes valores são suportados:

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

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

Consola

  1. Na Google Cloud consola, aceda à página Criar um cluster do Kubernetes.

    Aceda a Crie um cluster do Kubernetes

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

  3. Selecione a caixa de verificação Ativar nós GKE confidenciais.

  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 quer usar.

    Se a tecnologia que selecionar exigir uma série de máquinas do Compute Engine específica, é apresentada uma caixa de diálogo. Clique em Fazer alterações para atualizar a série de máquinas do conjunto de nós.

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

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

    1. Selecione a caixa de verificação Especificar localizações de nós. É apresentada uma lista de zonas na região do cluster.
    2. Selecione as caixas de verificação das zonas que suportam a tecnologia de computação confidencial que selecionou para os nós. Para mais informações, consulte o artigo Veja as zonas suportadas.
  8. Clique em Criar.

Para mais informações sobre a criação de clusters, consulte o artigo Criar um cluster regional.

Para qualquer conjunto de nós criado com a definição do modo confidencial para o Hyperdisk Balanced, apenas os nós no conjunto de nós estão restritos à configuração de configuração. Para todos os novos conjuntos de nós criados no cluster, tem de configurar o modo confidencial no momento da criação.

Configure o aprovisionamento automático de nós

Pode configurar o aprovisionamento automático de nós para usar nós do GKE confidenciais em conjuntos de nós aprovisionados automaticamente. O aprovisionamento automático de nós suporta as seguintes tecnologias de computação confidencial:

  • AMD SEV
  • AMD SEV-SNP

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

  • Quando criar o cluster, escolha uma tecnologia de computação confidencial suportada pelo aprovisionamento automático de nós. Esta escolha é irreversível ao nível do cluster.
  • Quando ativa o aprovisionamento automático de nós num cluster existente, o cluster já tem de usar uma tecnologia de nós do GKE confidenciais suportada pelo aprovisionamento automático de nós.
  • Quando implementar cargas de trabalho, verifique se as cargas de trabalho selecionam a tecnologia de computação confidencial do cluster e uma série de máquinas compatível com essa tecnologia.

Configure nós do GKE confidenciais ao nível do conjunto de nós

Pode ativar os Confidential GKE Nodes em pools de nós específicos se os Confidential GKE Nodes estiverem desativados ao nível do cluster.

O modo confidencial para a definição Hyperdisk Balanced tem de ser especificado durante o pedido de criação do conjunto de nós.

Crie um novo node pool

Para criar um novo conjunto de nós com os Confidential GKE Nodes ativados, selecione uma das seguintes opções:

gcloud

Execute o seguinte 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 o seguinte:

  • NODE_POOL_NAME: o nome do novo node pool.
  • LOCATION: a localização do novo node pool. A localização tem de suportar a tecnologia de computação confidencial que especificar. Para ver detalhes, consulte a secção Disponibilidade.
  • CLUSTER_NAME: o nome do cluster.
  • MACHINE_TYPE: um tipo de máquina que suporta a tecnologia de computação confidencial que especificar. Para ver detalhes, consulte a secção Disponibilidade.
  • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do cluster que suportam a nova tecnologia de computação confidencial. Para mais informações, consulte o artigo Veja as zonas suportadas.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de computação confidencial a usar. Os seguintes valores são suportados:

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

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

Consola

  1. Na Google Cloud consola, aceda à página Clusters do Kubernetes:

    Aceda aos clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique em Adicionar conjunto 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. Selecione a caixa de verificação Ativar nós GKE confidenciais.
    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 quer usar.

      Se a tecnologia que selecionar exigir uma série de máquinas do Compute Engine específica, é apresentada uma caixa de diálogo. Clique em Fazer alterações para atualizar a série de máquinas do conjunto de nós.

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

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

    1. Selecione a caixa de verificação Especificar localizações de nós. É apresentada uma lista de zonas na região do cluster.
    2. Selecione as caixas de verificação das zonas que suportam a tecnologia de computação confidencial que selecionou para os nós. Para mais informações, consulte o artigo Veja as zonas suportadas.
  8. Opcional: configure outras definições para o seu conjunto de nós.

  9. Clique em Criar.

Atualize um node pool existente

Esta alteração requer a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para ver detalhes sobre esta alteração específica, procure a linha correspondente na tabela alterações manuais que recriam os nós através de uma estratégia de atualização de nós sem respeitar as políticas de manutenção. Para saber mais sobre as atualizações de nós, consulte o artigo Planeamento de interrupções de atualizações de nós.

Pode atualizar os conjuntos de nós existentes para usar nós GKE confidenciais ou para mudar a tecnologia de computação confidencial que os nós usam. O conjunto de nós tem de cumprir todos os seguintes requisitos:

  • Os nós usam um tipo de máquina que suporta a tecnologia de computação confidencial escolhida.
  • Os nós são executados em zonas que suportam a tecnologia de computação confidencial escolhida.

Uma vez que o tipo de máquina e a disponibilidade de localização podem variar entre as tecnologias de computação confidencial, pode ter de atualizar estes atributos para o seu conjunto de nós antes de ativar uma tecnologia de computação confidencial específica.

Para atualizar um node pool existente para usar Confidential GKE Nodes, selecione uma das seguintes opções:

gcloud

Pode usar a CLI gcloud para ativar os nós GKE confidenciais num conjunto de nós ou para alterar a tecnologia de computação confidencial dos nós.

  1. Se o conjunto de nós já usar Confidential GKE Nodes, desative os Confidential GKE Nodes. Aguarde pela conclusão da operação de atualização do conjunto de nós.
  2. Altere o tipo de máquina do node pool e as localizações dos nós para valores suportados para 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 o seguinte:

    • NODE_POOL_NAME: o nome do grupo de nós existente.
    • CLUSTER_NAME: o nome do cluster.
    • CLUSTER_LOCATION: a localização do cluster.
    • MACHINE_TYPE: um tipo de máquina que suporta a nova tecnologia de computação confidencial. Para mais informações, consulte a secção Disponibilidade.
    • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do cluster que suportam a nova tecnologia de computação confidencial. Para mais informações, consulte o artigo Veja as zonas suportadas.
  3. Atualize o node pool com a tecnologia de computação confidencial para usar:

    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 usar. Os seguintes valores são suportados:

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

Consola

Pode atualizar um node pool existente para usar nós do GKE confidenciais apenas se o tipo de máquina do node pool for suportado pela tecnologia de computação confidencial escolhida. Se os nós não usarem um tipo de máquina suportado, use as instruções da CLI gcloud nesta secção.

  1. Na Google Cloud consola, aceda à página Clusters do Kubernetes:

    Aceda aos clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique no separador Nós.

  4. Clique no nome do conjunto de nós que quer modificar.

  5. Na página Detalhes do conjunto de nós, clique em Editar. É aberto o painel Editar node pool.

  6. Na secção Zonas, verifique se as zonas selecionadas suportam a tecnologia de computação confidencial. Para mais informações, consulte o artigo Veja as zonas suportadas.

    Se uma zona selecionada não suportar a tecnologia, faça o seguinte:

    1. Desmarque a caixa de verificação da zona não suportada.
    2. Opcional: selecione as caixas de verificação para outras zonas suportadas.
    3. Clique em Guardar. Aguarde pela conclusão da operação de atualização do node pool.
    4. Clique em Editar para reabrir o painel Editar conjunto de nós.
  7. Na secção Segurança, selecione a caixa de verificação Ativar nós GKE confidenciais.

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

  9. Clique em Guardar.

Coloque cargas de trabalho apenas em node pools confidenciais

Se ativar os Confidential GKE Nodes ao nível do cluster, todas as suas cargas de trabalho são executadas em nós confidenciais. Não precisa de alterar os seus manifestos. No entanto, se ativar os Confidential GKE Nodes apenas para pools de nós no modo padrão específicos ao nível do pool de nós, deve expressar declarativamente que as suas cargas de trabalho têm de ser executadas apenas em pools de nós com Confidential GKE Nodes.

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

    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 que o conjunto de nós usa. Este campo suporta os seguintes valores, que tem de especificar em letras 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, independentemente da tecnologia de computação confidencial, use uma regra de afinidade de nós, como no exemplo seguinte:

    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ós semelhante ao seguinte exemplo:

    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 nas quais quer executar a carga de trabalho.

Verifique se os Confidential GKE Nodes estão ativados

Pode verificar se os seus clusters ou nós usam nós do GKE confidenciais inspecionando os clusters, os conjuntos de nós, os nós ou as instâncias do Compute Engine.

Valide 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 Confidential GKE Nodes estiverem ativados, o resultado é semelhante ao seguinte:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Consola

  1. Na Google Cloud consola, aceda à página Clusters do Kubernetes.

    Aceda aos clusters do Kubernetes

  2. Clique no nome do cluster que quer inspecionar.

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

Valide os conjuntos de nós

Selecione uma das seguintes opções:

gcloud

Descreva o node pool:

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

Se os Confidential GKE Nodes estiverem ativados, o resultado é semelhante ao seguinte:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Se o modo confidencial para o Hyperdisk Balanced também estiver ativado, o resultado é semelhante ao seguinte:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR
enableConfidentialStorage: true

Consola

  1. Na Google Cloud consola, aceda à página Clusters do Kubernetes.

    Aceda aos clusters do Kubernetes

  2. Clique no nome do cluster que quer inspecionar.

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

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

Valide para 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 inspecionar.

    O resultado é semelhante ao seguinte:

    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
    

    Neste resultado, a etiqueta do nó cloud.google.com/gke-confidential-nodes-instance-type indica que o nó é um nó confidencial.

Defina restrições de políticas da organização

Pode definir uma restrição de política da organização para garantir que todos os recursos de VM criados na sua organização são instâncias de Confidential VM. Para o GKE, pode personalizar a restrição Restrict Non-Confidential Computing 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 à lista de recusa quando aplicar restrições da política da organização, como no exemplo seguinte:container.googleapis.com

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

Substitua PROJECT_ID pelo ID do seu projeto.

Crie um PersistentVolume para o modo confidencial para o Hyperdisk Balanced

Para orientações sobre os valores permitidos para a taxa de transferência ou as IOPS, consulte o artigo Planeie o nível de desempenho do seu volume do Hyperdisk.

Os exemplos seguintes mostram como pode criar um modo confidencial para a StorageClass Balanced do Hyperdisk para cada tipo de Hyperdisk:

Hyperdisk Balanced

  1. Guarde o seguinte manifesto num ficheiro com o nome 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 o seguinte:

    • KMS_PROJECT_ID: o projeto que detém a chave do Cloud KMS
    • REGION: a região onde o disco está localizado
    • KEY_RING: o nome do conjunto de chaves que inclui a chave
    • HSM_KEY_NAME: o nome da chave do HSM usada para encriptar o disco
  2. Crie a StorageClass:

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

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

kubectl get sc

Limitações

Os Confidential GKE Nodes têm as seguintes limitações:

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

Limitações da migração ao vivo

As VMs confidenciais do Compute Engine que usam o tipo de máquina N2D e usam o SEV da AMD como tecnologia de computação confidencial suportam a migração em direto, o que minimiza a potencial interrupção da carga de trabalho devido a um evento de manutenção do anfitrião. A migração em direto ocorre nas seguintes versões do GKE:

  • 1.27.10-gke.1218000 e posterior
  • 1.28.6-gke.1393000 e posteriores
  • 1.29.1-gke.1621000 e posterior

Se os seus conjuntos de nós já estavam a executar uma versão suportada quando a migração em direto foi adicionada, atualize manualmente os conjuntos de nós para a mesma versão suportada ou 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 direto ativada.

Para ver detalhes sobre os tipos de máquinas do Compute Engine que suportam a migração em direto, consulte as Configurações suportadas.

Se ocorrer um evento de manutenção do anfitrião num nó que não suporte a migração em direto, o nó entra num estado NotReady. Os pods em execução vão sofrer interrupções até o nó ficar novamente pronto. Se a manutenção demorar mais de cinco minutos, o GKE pode tentar recriar os pods noutros nós.

Desative os Confidential GKE Nodes

Esta alteração requer a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para ver detalhes sobre esta alteração específica, procure a linha correspondente na tabela alterações manuais que recriam os nós através de uma estratégia de atualização de nós sem respeitar as políticas de manutenção. Para saber mais sobre as atualizações de nós, consulte o artigo Planeamento de interrupções de atualizações de nós.

Só pode desativar os nós do GKE confidenciais em conjuntos de nós do modo padrão. Se o conjunto de nós estiver num cluster que usa nós do GKE confidenciais ao nível do cluster, não pode desativar a funcionalidade ao nível do conjunto de nós. Para desativar os Confidential GKE Nodes, selecione uma das seguintes opções:

gcloud

Execute o seguinte comando:

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

Consola

  1. Na Google Cloud consola, aceda à página Clusters do Kubernetes:

    Aceda aos clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique no separador Nós.

  4. Clique no nome do conjunto de nós que quer modificar.

  5. Na página Detalhes do conjunto de nós, clique em Editar. É aberto o painel Editar node pool.

  6. Na secção Segurança, desmarque a caixa de verificação Ativar nós GKE confidenciais.

  7. Clique em Guardar.

O que se segue?