É possível controlar quais cargas de trabalho privilegiadas podem ser executadas no modo Autopilot do Google Kubernetes Engine (GKE) usando listas de permissão e políticas. Este documento descreve as restrições padrão que o Autopilot aplica às cargas de trabalho, os tipos de cargas de trabalho privilegiadas que podem ser executadas no modo Autopilot e os métodos de controle da admissão de cargas de trabalho privilegiadas.
Este documento é destinado às seguintes pessoas:
- Administradores e operadores de plataforma que querem executar cargas de trabalho privilegiadas do GKE de várias fontes no modo Autopilot.
- Administradores de identidade e conta que querem melhorar a postura de segurança da organização bloqueando todas as cargas de trabalho privilegiadas, exceto algumas específicas.
Sobre cargas de trabalho privilegiadas no modo Autopilot
Para melhorar sua postura de segurança, os clusters e nós do modo Autopilot
aplicam restrições de segurança específicas por
padrão. Por exemplo, o Autopilot rejeita a maioria dos pods que definem o
campo spec.securityContext.privileged como true em um contêiner. As cargas de trabalho privilegiadas no Autopilot são aquelas que não atendem a essas restrições padrão. Por padrão, os nós do Autopilot em uma organização Google Cloud
rejeitam cargas de trabalho privilegiadas.
Cargas de trabalho privilegiadas específicas só podem ser executadas no modo Autopilot se o cluster tiver listas de permissões que correspondam a essas cargas de trabalho. Quando um administrador de cluster cria ou modifica um cluster, ele pode especificar caminhos para permitir listas que o cluster pode executar. Por padrão, todas as organizações do Google Cloud aceitam listas de permissão de parceiros do Autopilot e projetos de código aberto verificados.
Os administradores da organização podem modificar esse comportamento padrão das seguintes maneiras usando o Serviço de políticas da organização:
- Permitir todas as cargas de trabalho de parceiros do Autopilot do GKE e cargas de trabalho de código aberto verificadas. Esse é o comportamento padrão em todas as organizações do Google Cloud .
- Permitir cargas de trabalho específicas de parceiros ou cargas de trabalho verificadas de código aberto.
- Permitir apenas cargas de trabalho privilegiadas específicas de propriedade do cliente.
- Negar todas as cargas de trabalho privilegiadas.
Essa abordagem de negar tudo e permitir alguns é uma prática recomendada de segurança que permite controlar exatamente o que é executado com privilégios elevados nos clusters do GKE.
Talvez você queira controlar cargas de trabalho privilegiadas no modo Autopilot em situações como as seguintes:
- Você executa cargas de trabalho no modo Autopilot em clusters Standard e quer que cargas de trabalho privilegiadas sejam executadas nesses nós.
- Você quer permitir que apenas um conjunto específico de cargas de trabalho privilegiadas seja executado na sua organização, pasta ou projeto.
Fontes de cargas de trabalho privilegiadas do Autopilot
A tabela a seguir descreve os tipos de cargas de trabalho privilegiadas que podem ser executadas no Autopilot:
| Tipos de carga de trabalho privilegiada | |
|---|---|
| Cargas de trabalho de parceiros do Autopilot | Um subconjunto de parceiros do Google Cloud fornece cargas de trabalho privilegiadas para o modo Autopilot. O GKE verifica essas cargas de trabalho de parceiros. Essas cargas de trabalho estão disponíveis para qualquer cliente. Por padrão, qualquer cliente pode instalar as listas de permissões correspondentes em qualquer cluster do Autopilot ou Standard. Para mais informações sobre as cargas de trabalho de parceiros disponíveis, consulte Parceiros do Autopilot. |
| Cargas de trabalho de código aberto | Algumas cargas de trabalho privilegiadas de código aberto têm listas de permissões que permitem executá-las no modo Autopilot. O GKE verifica essas cargas de trabalho. Por padrão, qualquer cliente pode instalar as listas de permissões correspondentes em qualquer cluster do Autopilot ou Standard. Para mais informações sobre as cargas de trabalho de código aberto disponíveis, consulte Executar cargas de trabalho privilegiadas de código aberto no Autopilot do GKE. |
| Cargas de trabalho de propriedade do cliente | Se você for um cliente qualificado com cargas de trabalho privilegiadas que quer executar em nós do Autopilot, crie listas de permissões para essas cargas. Esse recurso está desativado por padrão para todas as organizações do Google Cloud . Use o serviço de política da organização para adicionar caminhos de lista de permissões para cargas de trabalho específicas e atualize os clusters para instalar essas listas de permissões. Para mais informações, consulte a seção Cargas de trabalho privilegiadas de propriedade do cliente. |
Como funciona o controle de admissão de carga de trabalho privilegiada
Para permitir que cargas de trabalho privilegiadas específicas sejam executadas nos nós do Autopilot, instale listas de permissão correspondentes a cada carga de trabalho. Essas listas de permissões são recursos personalizados do Kubernetes WorkloadAllowlist. O GKE valida os detalhes da carga de trabalho em relação a qualquer WorkloadAllowlists no cluster e permite a admissão somente se os detalhes corresponderem. Por padrão, cada cluster do Autopilot ou Standard em uma organização do Google Cloud permite instalar WorkloadAllowlists para cargas de trabalho de parceiros do Autopilot e para cargas de trabalho de código aberto.
Em geral, executar cargas de trabalho privilegiadas em nós do Autopilot envolve estas etapas:
- O administrador da organização verifica se a restrição de política da organização
container.managed.autopilotPrivilegedAdmissiongerenciada permite a instalação de listas de permissões de uma fonte específica. Para mais informações, consulte a seção Restrição gerenciada da política da organização para listas de permissão. - Para cargas de trabalho privilegiadas de propriedade do cliente, o administrador da plataforma cria listas de permissão que correspondem às cargas de trabalho privilegiadas. Para mais informações, consulte a seção Cargas de trabalho privilegiadas de propriedade do cliente.
- O administrador do cluster configura um cluster do Autopilot ou padrão para permitir a instalação de listas de permissão de uma origem específica. Para mais informações, consulte a seção Configuração do cluster.
- O administrador do cluster cria um AllowlistSynchronizer que faz referência ao caminho da lista de permissões. O AllowlistSynchronizer instala e mantém a lista de permissões atualizada. Para mais informações, consulte a seção Instalação na lista de permissões.
Depois de concluir essas etapas, um operador de app poderá implantar a carga de trabalho privilegiada no cluster.
Restrição gerenciada pela política da organização para listas de permissão
Por padrão, toda organização do Google Cloud impõe uma política da organização baseada na restrição gerenciada docontainer.managed.autopilotPrivilegedAdmission.
Essa restrição gerenciada tem os seguintes parâmetros:
allowAnyGKEPath: um valor booleano que permite aos administradores de cluster configurar clusters para instalação de lista de permissões de caminhos com o prefixogke://. Os valores a seguir são aceitos:true: permite que os administradores de cluster configurem clusters com as fontes de lista de permissões padrão do GKE, com qualquer caminho de lista de permissões que comece comgke://ou com uma string vazia (que impede todas as listas de permissões). Esse é o valor padrão do parâmetroallowAnyGKEPath.false: exija que os administradores de cluster configurem clusters com uma string vazia para fontes de lista de permissões ou com qualquer caminho de lista de permissões do parâmetroallowPaths.
allowPaths: uma lista de fontes aprovadas da lista de permissões que os administradores de cluster podem especificar valores ao configurar um cluster.
Como administrador da organização, você pode atualizar os parâmetros dessa política para controlar quais cargas de trabalho privilegiadas podem ser executadas na sua organização do Google Cloud. Por exemplo, a seguinte configuração de política da organização permite que os administradores de cluster instalem listas de permissões apenas para uma carga de trabalho de parceiro Google Cloud específica:
name: organizations/ORGANIZATION_ID/policies/container.managed.autopilotPrivilegedAdmission
spec:
rules:
- enforce: true
parameters:
allowAnyGKEPath: ALLOW_GKE_PATHS
allowPaths:
- PATH1
- PATH2
- PATH3
Substitua:
ALLOW_GKE_PATHS: se é permitido usar qualquer lista de permissões aprovada pelo GKE. Especifique um dos seguintes valores:True: permite a configuração do cluster com qualquer carga de trabalho de parceiro do GKE ou cargas de trabalho de código aberto verificadas. Esse é o valor padrão.False: permite a configuração do cluster apenas com os caminhos no campoallowPaths.
PATH1,: uma lista de caminhos para fontes aprovadas da lista de permissões que os administradores de cluster podem usar ao configurar clusters. Por padrão, esse parâmetro fica vazio. Se você especificar caminhos para esse parâmetro, os administradores de cluster precisarão especificar zero ou mais desses caminhos ao criar ou atualizar um cluster.PATH2,...
Para mais informações sobre como controlar a admissão de cargas de trabalho privilegiadas em políticas da organização, consulte Restringir cargas de trabalho privilegiadas do GKE em organizações.
Cargas de trabalho privilegiadas de propriedade do cliente
Como cliente do GKE, você pode ter cargas de trabalho especializadas que exigem mais privilégios no cluster do que as restrições de segurança padrão do Autopilot permitem. Na versão 1.35 e mais recentes do GKE, é possível isentar essas cargas de trabalho das restrições padrão do Autopilot criando listas de permissões.
Uma lista de permissões é um arquivo YAML que define um recurso personalizado do Kubernetes WorkloadAllowlist. A especificação de uma lista de permissões de carga de trabalho corresponde a vários campos na especificação do pod do Kubernetes. Ao definir uma WorkloadAllowlist, você corresponde os valores na WorkloadAllowlist aos campos correspondentes na especificação da sua carga de trabalho privilegiada. Você armazena os arquivos YAML em um bucket do Cloud Storage.
Para instalar essas listas de permissões de propriedade do cliente em um cluster, as seguintes etapas precisam ser realizadas:
- O administrador da organização adiciona os caminhos do Cloud Storage a uma política da organização. Para mais informações, consulte a seção Sobre a restrição gerenciada da política da organização.
- Adicione os caminhos do Cloud Storage a uma configuração de cluster. Para mais informações, consulte a seção Configuração do cluster.
Para mais informações sobre como criar suas próprias WorkloadAllowlists, consulte Criar listas de permissões para cargas de trabalho privilegiadas do Autopilot.
Configuração do cluster
Para executar uma carga de trabalho privilegiada no modo Autopilot, um administrador de cluster adiciona um ou mais caminhos aprovados da lista de permissões à configuração do cluster. Depois de adicionar os caminhos ao cluster, os operadores de apps podem instalar as listas de permissão e as cargas de trabalho privilegiadas correspondentes no cluster.
Por padrão, é possível instalar listas de permissões de parceiros do Autopilot e projetos de código aberto aprovados. Esse conjunto padrão de fontes aprovadas para listas de permissão pode mudar devido a uma política da organização, conforme descrito na seção anterior. Se uma política da organização controlar os caminhos aprovados da lista de permissões, coordene com o administrador da organização para identificar esses caminhos. Em seguida, especifique um ou mais caminhos aprovados na configuração do cluster.
Para mais informações sobre como configurar clusters, consulte Executar cargas de trabalho privilegiadas no Autopilot.
Instalação na lista de permissões
Para instalar uma lista de permissões de uma fonte aprovada no cluster, use um recurso personalizado do Kubernetes chamado AllowlistSynchronizer. Você define e cria AllowlistSynchronizers de maneira semelhante a outros recursos do Kubernetes, como pods e implantações. Cada AllowlistSynchronizer tem uma lista de caminhos para as listas de permissões que você quer instalar no cluster.
Quando você cria um AllowlistSynchronizer, o GKE instala listas de permissão desses caminhos e as mantém atualizadas. A cada 10 minutos, o GKE verifica se há mudanças nos arquivos da lista de permissões. Se houver uma atualização, o sincronizador vai instalar a lista de permissões atualizada no cluster.
Depois que o GKE instalar uma lista de permissões com base em um AllowlistSynchronizer, será possível criar a carga de trabalho privilegiada correspondente no cluster.
Para mais informações sobre como instalar listas de permissões em um cluster, consulte Executar cargas de trabalho privilegiadas no Autopilot.
Caminhos da lista de permissões
Ao configurar o suporte à lista de permissões na política ou nos clusters da organização, você especifica caminhos para uma ou mais WorkloadAllowlists aprovadas para instalação. A sintaxe desses caminhos depende de quem criou a WorkloadAllowlist, da seguinte forma:
Parceiros específicos do Autopilot e projetos de código aberto aprovados:
gke://REPOSITORY_PATH/SELECTORSubstitua:
REPOSITORY_PATH: o caminho para o diretório que contém as listas de permissão para a carga de trabalho, comoGrafana/alloy. Para mais informações sobre os caminhos da lista de permissões para essas cargas de trabalho, consulte as seguintes páginas:SELECTOR: o nome de um arquivo específico ou o caractere*, que seleciona todos os arquivos nesse diretório.
Por exemplo, o caminho a seguir seleciona qualquer lista de permissão no diretório
Grafana/alloy:gke://Grafana/alloy/*Cargas de trabalho privilegiadas de propriedade do cliente:
gs://DIRECTORY_PATH/SELECTORSubstitua
DIRECTORY_PATHpelo caminho para o diretório no Cloud Storage que contém os arquivos da lista de permissões. É possível especificar vários caminhos.
É possível especificar um ou mais dos caminhos anteriores na política da organização ou na configuração do cluster. Por exemplo, é possível adicionar cargas de trabalho de parceiros do GKE e cargas de trabalho de propriedade do cliente à mesma configuração. Também é possível usar o caractere * para selecionar todas as listas de permissão. Por exemplo, gke://* seleciona
qualquer lista de permissões aprovada pelo GKE de qualquer origem.
A tabela a seguir descreve a configuração necessária nas políticas ou clusters da organização para oferecer suporte a determinados objetivos:
| Objetivo | Configuração da política da organização | Configuração do cluster |
|---|---|---|
| Permitir todas as listas de permissões de carga de trabalho aprovadas pelo GKE | Siga estas etapas:
|
Escolha uma destas opções:
|
| Permitir apenas listas de permissões de carga de trabalho específicas aprovadas pelo GKE | Siga estas etapas:
|
Especifique caminhos para WorkloadAllowlists específicos aprovados pelo GKE ao criar ou atualizar um cluster. Uma política da organização pode restringir os caminhos aprovados pelo GKE que você pode especificar. |
| Permitir apenas WorkloadAllowlists gerenciadas pelo cliente | Siga estas etapas:
|
Especifique os caminhos para as listas de permissões de carga de trabalho gerenciadas pelo cliente ao criar
ou atualizar um cluster. Os caminhos especificados precisam estar no parâmetro allowPaths de uma política da organização. |
| Impedir o uso de WorkloadAllowlists | Siga estas etapas:
|
Defina uma string vazia "" como o caminho aprovado ao
criar ou atualizar um cluster. |
A seguir
- Restringir cargas de trabalho privilegiadas do GKE em organizações.
- Executar cargas de trabalho privilegiadas no Autopilot.