É possível controlar quais cargas de trabalho privilegiadas podem ser executadas no modo Autopilot do Google Kubernetes Engine (GKE) usando listas de permissões 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 de admissão de cargas de trabalho privilegiadas.
Este documento é destinado a:
- 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 cargas de trabalho específicas.
Sobre cargas de trabalho privilegiadas no modo Autopilot
Para melhorar a 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 cargas de trabalho que não atendem a essas restrições padrão. Por padrão, os nós do Autopilot em uma Google Cloud
organização 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 listas de permissões que o cluster pode executar. Por padrão, cada Google Cloud organização oferece suporte a listas de permissões 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 Google Cloud organizações.
- Permitir cargas de trabalho de parceiros específicos ou cargas de trabalho de código aberto verificadas.
- 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 cargas de trabalho privilegiadas | |
|---|---|
| Cargas de trabalho de parceiros do Autopilot | Um subconjunto de Google Cloud parceiros 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 | Cargas de trabalho privilegiadas específicas de código aberto têm listas de permissões que permitem executar essas cargas de trabalho 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 que tem cargas de trabalho privilegiadas que você quer executar em nós do Autopilot, crie listas de permissões para essas cargas de trabalho. Esse recurso está desativado por padrão para todas as Google Cloud organizações. Use o serviço de políticas da organização para adicionar caminhos de lista de permissões para cargas de trabalho específicas e, em seguida, 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 cargas de trabalho privilegiadas
Para permitir que cargas de trabalho privilegiadas específicas sejam executadas nos nós do Autopilot, instale listas de permissões que correspondam 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 WorkloadAllowlist no cluster e permite a admissão somente se os detalhes corresponderem. Por padrão, cada cluster do Autopilot ou Standard em uma Google Cloud organização permite instalar WorkloadAllowlists para cargas de trabalho de parceiros do Autopilot e para cargas de trabalho de código aberto.
Em um nível alto, a execução de 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 gerenciada
container.managed.autopilotPrivilegedAdmissionpermite 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ões. - Para cargas de trabalho privilegiadas de propriedade do cliente, o administrador da plataforma cria listas de permissões 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 Standard para permitir a instalação de listas de permissões de uma fonte 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 a lista de permissões e a mantém atualizada. Para mais informações, consulte a seção Instalação da lista de permissões.
Depois que essas etapas forem concluídas, um operador de app poderá implantar a carga de trabalho privilegiada no cluster.
Restrição gerenciada da política da organização para listas de permissões
Por padrão, cada Google Cloud organização aplica uma política da organização com base na
container.managed.autopilotPrivilegedAdmission
restrição gerenciada.
Essa restrição define um conjunto de caminhos de arquivos ou diretórios em que os clusters do GKE podem instalar listas de permissões. A configuração do cluster precisa usar caminhos de lista de permissões dos parâmetros dessa restrição.
Por padrão, a restrição autopilotPrivilegedAdmission permite o uso de todas as listas de permissões de propriedade de parceiros aprovados do GKE e projetos de código aberto. Essa configuração corresponde à configuração padrão dos clusters do GKE, que podem instalar qualquer uma dessas listas de permissões aprovadas.
Como administrador de políticas da organização, você pode modificar o conjunto de caminhos de lista de permissões que podem ser aplicados aos clusters do GKE na sua organização, pasta ou projeto. Por exemplo, para permitir o uso de uma lista de permissões personalizada de propriedade da sua organização, adicione esse caminho de lista de permissões à restrição gerenciada.
Parâmetros de restrição gerenciada
A restrição gerenciada autopilotPrivilegedAdmission tem a seguinte especificação:
spec:
rules:
- enforce: true
parameters:
allowAnyGKEPath: ALLOW_GKE_PATHS
allowPaths:
- PATH1
- PATH2
- PATH3
Os campos a seguir na especificação controlam o conjunto de listas de permissões que os clusters podem usar:
allowAnyGKEPath: um valor booleano que controla se os clusters podem usar o conjunto padrão de caminhos de lista de permissões aprovados pelo GKE. Esse parâmetro aceita os seguintes valores:True: os administradores de cluster podem configurar clusters sem modificar a configuração da lista de permissões, com um ou mais caminhos de lista de permissões que começam comgke://ou com uma string vazia para desativar todas as listas de permissões do cluster.Trueé o valor padrão desse parâmetro.False: os administradores de cluster precisam configurar 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 de lista de permissões aprovadas que os administradores de cluster podem especificar valores ao configurar um cluster. É possível especificar caminhos para arquivos de lista de permissões específicos ou para diretórios inteiros.
A tabela a seguir descreve os resultados da configuração desses parâmetros de maneiras diferentes:
Valor de allowAnyGKEPath |
Valor de allowPaths |
Resultado |
|---|---|---|
True |
Vazio ou não especificado. | Os administradores de cluster podem realizar qualquer uma das seguintes ações durante a criação ou modificação do cluster:
|
False |
Vazio ou não especificado. | Os administradores de cluster precisam especificar um valor vazio para a configuração da lista de permissões do cluster Se os administradores de cluster ignorarem a configuração do caminho da lista de permissões, então a criação ou modificação do cluster falhará. |
True |
Os valores são especificados. | Os administradores de cluster podem realizar qualquer uma das seguintes ações durante a criação ou modificação do cluster:
|
False |
Os valores são especificados. | Os administradores de cluster precisam realizar uma das seguintes ações durante a criação ou modificação do cluster:
|
Para mais informações sobre como controlar a admissão de cargas de trabalho privilegiadas nas 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 suas próprias cargas de trabalho especializadas que exigem mais privilégios no cluster do que as restrições de segurança padrão do Autopilot permitem. No GKE versão 1.35 e mais recentes, é 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 um WorkloadAllowlist corresponde a vários campos na especificação do pod do Kubernetes. Ao definir um WorkloadAllowlist, você corresponde aos valores no WorkloadAllowlist aos campos correspondentes na especificação da carga de trabalho privilegiada. Armazene 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 acontecer:
- 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 seus próprios 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 de lista de permissões aprovados à configuração do cluster. Depois de adicionar os caminhos ao cluster, os operadores de app podem instalar as listas de permissões e 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ões 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 de lista de permissões aprovados, coordene com o administrador da organização para identificar esses caminhos. Em seguida, especifique um ou mais dos 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 da 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 à criação de outros recursos do Kubernetes, como pods e implantações. Cada AllowlistSynchronizer tem uma lista de caminhos para listas de permissões que você quer instalar no cluster.
Ao criar um AllowlistSynchronizer, o GKE instala listas de permissões desses caminhos e as mantém atualizadas. A cada 10 minutos, o GKE verifica se há mudanças nos arquivos de lista de permissões. Se houver uma atualização, o sincronizador instalará a lista de permissões atualizada no cluster.
Depois que o GKE instalar uma lista de permissões com base em um AllowlistSynchronizer, você poderá 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ão
Ao configurar o suporte à lista de permissões na política da organização ou nos clusters, especifique caminhos para um ou mais WorkloadAllowlists que você aprovou para instalação. A sintaxe desses caminhos depende de quem criou o WorkloadAllowlist, da seguinte maneira:
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 listas de permissões para a carga de trabalho, comoGrafana/alloy. Para mais informações sobre os caminhos de 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ões 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 de 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ões. Por exemplo, gke://* seleciona qualquer lista de permissões aprovada pelo GKE de qualquer fonte.
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 todos os WorkloadAllowlists aprovados pelo GKE | Faça o seguinte:
|
Faça o seguinte:
|
| Permitir apenas WorkloadAllowlists específicos aprovados pelo GKE | Faça o seguinte:
|
Especifique caminhos para WorkloadAllowlists específicos aprovados pelo GKE ao criar ou atualizar um cluster. Uma política da organização pode restringir quais caminhos aprovados pelo GKE podem ser especificados. |
| Permitir apenas WorkloadAllowlists gerenciados pelo cliente | Faça o seguinte:
|
Especifique caminhos para WorkloadAllowlists gerenciados pelo cliente ao criar
ou atualizar um cluster. Os caminhos especificados precisam estar no
allowPaths parâmetro de uma política da organização. |
| Impedir o uso de WorkloadAllowlists | Faça o seguinte:
|
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.