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:
|
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:
|
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:
|
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:
|
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:
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:
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:
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.
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 SEVSEV_SNP
para AMD SEV-SNPTDX
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, comon2d
. 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, comon2d-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 deenabled: true
, que permite ao GKE criar novos conjuntos de nós através do aprovisionamento automático de nós.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.Guarde o seguinte manifesto de implementação como um ficheiro YAML:
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, comous-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 usar o aprovisionamento automático de nós no cluster, tem de configurar opções específicas no comando de criação do cluster. Para mais informações, consulte a secção Use nós GKE confidenciais com aprovisionamento automático de nós.
- Para usar diferentes tecnologias de computação confidencial para encriptar pools de nós específicos no cluster, ignore esta secção e configure nós do GKE confidenciais ao nível do pool de nós.
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 SEVsev_snp
: AMD SEV-SNPtdx
: 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
Na Google Cloud consola, aceda à página Criar um cluster do Kubernetes.
No menu de navegação, na secção Cluster, clique em Segurança.
Selecione a caixa de verificação Ativar nós GKE confidenciais.
Na caixa de diálogo Alterações necessárias, clique em Fazer alterações.
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.
No menu de navegação, na secção Conjuntos de nós, clique em default-pool.
No painel Detalhes do conjunto de nós, faça o seguinte:
- Selecione a caixa de verificação Especificar localizações de nós. É apresentada uma lista de zonas na região do cluster.
- 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.
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 SEVsev_snp
: AMD SEV-SNPtdx
: 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
Na Google Cloud consola, aceda à página Clusters do Kubernetes:
Clique no nome do cluster padrão.
Clique em
Adicionar conjunto de nós.No menu de navegação, clique em Segurança.
No painel Segurança do nó, faça o seguinte:
- Selecione a caixa de verificação Ativar nós GKE confidenciais.
- Na caixa de diálogo Alterações necessárias, clique em Fazer alterações.
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.
No menu de navegação, clique em Detalhes do conjunto de nós.
No painel Detalhes do conjunto de nós, faça o seguinte:
- Selecione a caixa de verificação Especificar localizações de nós. É apresentada uma lista de zonas na região do cluster.
- 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.
Opcional: configure outras definições para o seu conjunto de nós.
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.
- 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.
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.
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 SEVsev_snp
: AMD SEV-SNPtdx
: 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.
Na Google Cloud consola, aceda à página Clusters do Kubernetes:
Clique no nome do cluster padrão.
Clique no separador Nós.
Clique no nome do conjunto de nós que quer modificar.
Na página Detalhes do conjunto de nós, clique em
Editar. É aberto o painel Editar node pool.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:
- Desmarque a caixa de verificação da zona não suportada.
- Opcional: selecione as caixas de verificação para outras zonas suportadas.
- Clique em Guardar. Aguarde pela conclusão da operação de atualização do node pool.
- Clique em Editar para reabrir o painel Editar conjunto de nós.
Na secção Segurança, selecione a caixa de verificação Ativar nós GKE confidenciais.
No menu Tipo, selecione a tecnologia de computação confidencial para os nós.
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 SEVSEV_SNP
: AMD SEV-SNPTDX
: 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
Na Google Cloud consola, aceda à página Clusters do Kubernetes.
Clique no nome do cluster que quer inspecionar.
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
Na Google Cloud consola, aceda à página Clusters do Kubernetes.
Clique no nome do cluster que quer inspecionar.
Clique no nome de um conjunto de nós.
Na secção Segurança, verifique se o campo Confidential GKE Nodes tem o valor Ativado.
Valide para um nó específico
Encontre o nome do nó:
kubectl get nodes
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
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 KMSREGION
: a região onde o disco está localizadoKEY_RING
: o nome do conjunto de chaves que inclui a chaveHSM_KEY_NAME
: o nome da chave do HSM usada para encriptar o disco
Crie a StorageClass:
kubectl create -f hdb-example-class.yaml
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:
- Todas as limitações das instâncias de VMs confidenciais do Compute Engine também se aplicam aos nós confidenciais do GKE.
- Os Confidential GKE Nodes não são compatíveis com nós de inquilino único.
- Os nós do GKE confidenciais só suportam a utilização de armazenamento efémero em SSDs locais, mas não suportam a utilização de SSDs locais em geral.
- Os Confidential GKE Nodes só suportam imagens de nós do SO otimizado para contentores. Os nós do Ubuntu e do Windows não são suportados.
- Os clusters do Autopilot só suportam AMD SEV ao nível do cluster. Para usar uma tecnologia de computação confidencial diferente, configure Confidential GKE Nodes ao nível da carga de trabalho.
- O aprovisionamento automático de nós só suporta AMD SEV e AMD SEV-SNP ao nível do conjunto de nós. Para usar uma tecnologia de computação confidencial diferente, configure nós do GKE confidenciais ao nível da carga de trabalho.
O modo confidencial para o Hyperdisk Balanced tem as seguintes limitações:
- Todas as limitações da utilização de chaves de encriptação geridas pelo cliente (CMEK) para encriptar discos aplicam-se ao modo confidencial para o Hyperdisk Balanced.
- O modo confidencial para o Hyperdisk Balanced só é suportado em nós do GKE confidenciais que usam o AMD SEV como tecnologia de computação confidencial.
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
Na Google Cloud consola, aceda à página Clusters do Kubernetes:
Clique no nome do cluster padrão.
Clique no separador Nós.
Clique no nome do conjunto de nós que quer modificar.
Na página Detalhes do conjunto de nós, clique em
Editar. É aberto o painel Editar node pool.Na secção Segurança, desmarque a caixa de verificação Ativar nós GKE confidenciais.
Clique em Guardar.
O que se segue?
- Saiba mais sobre a VM confidencial
- Saiba mais sobre a Google Cloud encriptação em repouso
- Saiba mais sobre a Google Cloud encriptação em trânsito
- Saiba mais sobre as chaves de encriptação geridas pelo cliente (CMEK)
- Saiba como atestar remotamente que as cargas de trabalho estão a ser executadas na VM confidencial
- Saiba como executar GPUs em nós GKE confidenciais