Acerca de la admisión de cargas de trabajo privilegiadas en el modo Autopilot

Puedes controlar qué cargas de trabajo con privilegios se pueden ejecutar en el modo Autopilot de Google Kubernetes Engine (GKE) mediante el uso de listas de entidades permitidas y políticas. En este documento, se describen las restricciones predeterminadas que Autopilot aplica a las cargas de trabajo, los tipos de cargas de trabajo con privilegios que puedes ejecutar en el modo Autopilot y los métodos para controlar la admisión de cargas de trabajo con privilegios.

Este documento está destinado a las siguientes personas:

  • Administradores y operadores de plataformas que desean ejecutar cargas de trabajo de GKE con privilegios de varias fuentes en el modo Autopilot
  • Administradores de identidades y cuentas que desean mejorar la postura de seguridad de tu organización bloqueando todas las cargas de trabajo con privilegios, excepto las cargas de trabajo específicas

Acerca de las cargas de trabajo con privilegios en el modo Autopilot

Para mejorar tu postura de seguridad, los clústeres y nodos del modo Autopilot aplican restricciones de seguridad específicas de forma predeterminada. Por ejemplo, Autopilot rechaza la mayoría de los Pods que establecen el campo spec.securityContext.privileged en true en un contenedor. Las cargas de trabajo con privilegios en Autopilot son cargas de trabajo que no cumplen con estas restricciones predeterminadas. De forma predeterminada, los nodos de Autopilot en una Google Cloud organización rechazan las cargas de trabajo con privilegios.

Las cargas de trabajo con privilegios específicas solo se pueden ejecutar en el modo Autopilot si el clúster tiene listas de entidades permitidas que coincidan con esas cargas de trabajo. Cuando un administrador de clústeres crea o modifica un clúster, puede especificar rutas de acceso a las listas de entidades permitidas que el clúster puede ejecutar. De forma predeterminada, cada Google Cloud organización admite listas de entidades permitidas de socios de Autopilot y proyectos de código abierto verificados.

Los administradores de la organización pueden modificar este comportamiento predeterminado de las siguientes maneras con el servicio de políticas de la organización:

  • Permitir todas las cargas de trabajo de socios de GKE Autopilot y las cargas de trabajo de código abierto verificadas. Este es el comportamiento predeterminado en todas las Google Cloud organizaciones.
  • Permitir cargas de trabajo de socios específicas o cargas de trabajo de código abierto verificadas.
  • Permitir solo cargas de trabajo con privilegios específicas propiedad del cliente.
  • Denegar todas las cargas de trabajo con privilegios.

Este enfoque de denegar todo y, luego, permitir algunos elementos es una práctica recomendada de seguridad que te permite controlar exactamente lo que se ejecuta con privilegios elevados en tus clústeres de GKE.

Es posible que desees controlar las cargas de trabajo con privilegios en el modo Autopilot en situaciones como las siguientes:

Fuentes de cargas de trabajo con privilegios de Autopilot

En la siguiente tabla, se describen los tipos de cargas de trabajo con privilegios que puedes ejecutar en Autopilot:

Tipos de cargas de trabajo con privilegios
Cargas de trabajo de socios de Autopilot

Un subconjunto de Google Cloud socios proporciona cargas de trabajo con privilegios para el modo Autopilot. GKE verifica estas cargas de trabajo de socios. Estas cargas de trabajo están disponibles para cualquier cliente. De forma predeterminada, cualquier cliente puede instalar las listas de entidades permitidas correspondientes en cualquier clúster de Autopilot o estándar.

Para obtener más información sobre las cargas de trabajo de socios disponibles, consulta Socios de Autopilot.

Cargas de trabajo de código abierto

Las cargas de trabajo de código abierto con privilegios específicas tienen listas de entidades permitidas que te permiten ejecutar esas cargas de trabajo en el modo Autopilot. GKE verifica estas cargas de trabajo. De forma predeterminada, cualquier cliente puede instalar las listas de entidades permitidas correspondientes en cualquier clúster de Autopilot o estándar.

Para obtener más información sobre las cargas de trabajo de código abierto disponibles, consulta Ejecuta cargas de trabajo de código abierto con privilegios en GKE Autopilot.

Cargas de trabajo propiedad del cliente

Si eres un cliente que cumple con los requisitos que tiene cargas de trabajo con privilegios que deseas ejecutar en nodos de Autopilot, puedes crear listas de entidades permitidas para esas cargas de trabajo. Esta función está inhabilitada de forma predeterminada para todas las Google Cloud organizaciones. Usas el servicio de políticas de la organización para agregar rutas de acceso a listas de entidades permitidas para cargas de trabajo específicas y, luego, actualizar los clústeres para instalar esas listas de entidades permitidas.

Para obtener más información, consulta la sección Cargas de trabajo con privilegios propiedad del cliente.

Cómo funciona el control de admisión de cargas de trabajo con privilegios

Para permitir que se ejecuten cargas de trabajo con privilegios específicas en tus nodos de Autopilot, instala listas de entidades permitidas que correspondan a cada carga de trabajo. Estas listas de entidades permitidas son recursos personalizados de Kubernetes WorkloadAllowlist. GKE valida los detalles de la carga de trabajo con cualquier WorkloadAllowlist en el clúster y permite la admisión solo si los detalles coinciden. De forma predeterminada, cada clúster de Autopilot o estándar en una Google Cloud organización te permite instalar WorkloadAllowlists para cargas de trabajo de socios de Autopilot y para cargas de trabajo de código abierto.

En general, ejecutar cargas de trabajo con privilegios en nodos de Autopilot implica los siguientes pasos:

  1. El administrador de la organización verifica que la restricción administrada de la política de la organización container.managed.autopilotPrivilegedAdmission permita la instalación de listas de entidades permitidas de una fuente específica. Para obtener más información, consulta la sección Restricción administrada de la política de la organización para listas de entidades permitidas.
  2. Para las cargas de trabajo con privilegios propiedad del cliente, el administrador de la plataforma crea listas de entidades permitidas que coinciden con las cargas de trabajo con privilegios. Para obtener más información, consulta la sección Cargas de trabajo con privilegios propiedad del cliente.
  3. El administrador del clúster configura un clúster de Autopilot o estándar para permitir la instalación de listas de entidades permitidas de una fuente específica. Para obtener más información, consulta la sección Configuración del clúster.
  4. El administrador del clúster crea un AllowlistSynchronizer que hace referencia a la ruta de acceso a la lista de entidades permitidas. El AllowlistSynchronizer instala la lista de entidades permitidas y la mantiene actualizada. Para obtener más información, consulta la sección Instalación de la lista de entidades permitidas.

Una vez que se completan estos pasos, un operador de la app puede implementar la carga de trabajo con privilegios en el clúster.

Restricción administrada de la política de la organización para listas de entidades permitidas

De forma predeterminada, cada Google Cloud organización aplica una política de la organización basada en la container.managed.autopilotPrivilegedAdmission restricción administrada. Esta restricción define un conjunto de rutas de acceso a archivos o directorios desde los que los clústeres de GKE pueden instalar listas de entidades permitidas. La configuración del clúster debe usar rutas de acceso a listas de entidades permitidas de los parámetros de esta restricción.

De forma predeterminada, la restricción autopilotPrivilegedAdmission permite el uso de todas las listas de entidades permitidas que son propiedad de socios aprobados de GKE y proyectos de código abierto. Este parámetro de configuración coincide con la configuración predeterminada de los clústeres de GKE, que pueden instalar cualquiera de esas listas de entidades permitidas aprobadas.

Como administrador de políticas de la organización, puedes modificar el conjunto de rutas de acceso a listas de entidades permitidas que se pueden aplicar a los clústeres de GKE en tu organización, carpeta o proyecto. Por ejemplo, para permitir el uso de una lista de entidades permitidas personalizada que es propiedad de tu organización, agrega esa ruta de acceso a la lista de entidades permitidas a la restricción administrada.

Parámetros de restricción administrados

La restricción administrada autopilotPrivilegedAdmission tiene la siguiente especificación:

spec:
  rules:
  - enforce: true
    parameters:
      allowAnyGKEPath: ALLOW_GKE_PATHS
      allowPaths:
      - PATH1
      - PATH2
      - PATH3

Los siguientes campos de la especificación controlan el conjunto de listas de entidades permitidas que pueden usar los clústeres:

  • allowAnyGKEPath: Es un valor booleano que controla si los clústeres pueden usar el conjunto predeterminado de rutas de acceso a listas de entidades permitidas aprobadas por GKE. Este parámetro admite los siguientes valores:

    • True: Los administradores de clústeres pueden configurar clústeres sin modificar la configuración de la lista de entidades permitidas, con una o más rutas de acceso a listas de entidades permitidas que comiencen con gke:// o con una cadena vacía para inhabilitar todas las listas de entidades permitidas para el clúster. True es el valor predeterminado para este parámetro.

    • False: Los administradores de clústeres deben configurar clústeres con una cadena vacía para las fuentes de listas de entidades permitidas o con cualquier ruta de acceso a listas de entidades permitidas del parámetro allowPaths.

  • allowPaths: Es una lista de fuentes de listas de entidades permitidas aprobadas de las que los administradores de clústeres pueden especificar valores cuando configuran un clúster. Puedes especificar rutas de acceso a archivos de listas de entidades permitidas específicos o a directorios completos.

En la siguiente tabla, se describen los resultados de configurar estos parámetros de diferentes maneras:

Valor de allowAnyGKEPath Valor de allowPaths Resultado
True Vacío o no especificado

Los administradores de clústeres pueden realizar cualquiera de las siguientes acciones durante la creación o modificación del clúster:

  • Usar la configuración predeterminada de la lista de entidades permitidas: Omite cualquier opción de configuración de la lista de entidades permitidas para que el clúster pueda instalar listas de entidades permitidas desde cualquier ruta de acceso que tenga el prefijo gke://.
  • Inhabilitar la instalación de la lista de entidades permitidas: Especifica un valor vacío para la configuración de la lista de entidades permitidas del clúster.
  • Especificar rutas de acceso a listas de entidades permitidas de GKE: especifica una o más rutas de acceso a listas de entidades permitidas que tengan el prefijo gke://. El clúster solo puede instalar listas de entidades permitidas desde esas rutas de acceso.
False Vacío o no especificado

Los administradores de clústeres deben especificar un valor vacío para la configuración de la lista de entidades permitidas del clúster. Si los administradores de clústeres omiten la configuración de la ruta de acceso a la lista de entidades permitidas, entonces falla la creación o modificación del clúster.

True Se especifican los valores

Los administradores de clústeres pueden realizar cualquiera de las siguientes acciones durante la creación o modificación del clúster:

  • Usar la configuración predeterminada de la lista de entidades permitidas:Omite cualquier lista de entidades permitidas opciones de configuración para que el clúster pueda instalar listas de entidades permitidas desde cualquier ruta de acceso que tenga el prefijo gke://.
  • Inhabilitar la instalación de la lista de entidades permitidas: Especifica un valor vacío para la configuración de la lista de entidades permitidas del clúster.
  • Especificar rutas de acceso a listas de entidades permitidas: especifica una o más rutas de acceso a listas de entidades permitidas que tengan el prefijo gke:// o que se especifiquen en el parámetro allowPaths.
False Se especifican los valores

Los administradores de clústeres deben realizar una de las siguientes acciones durante la creación o modificación del clúster:

  • Inhabilitar la instalación de la lista de entidades permitidas: Especifica un valor vacío para la configuración de la lista de entidades permitidas del clúster.
  • Especificar rutas de acceso a listas de entidades permitidas: especifica una o más rutas de acceso a listas de entidades permitidas del parámetro allowPaths.

Para obtener más información sobre el control de admisión de cargas de trabajo con privilegios en las políticas de la organización, consulta Restringe las cargas de trabajo de GKE con privilegios en las organizaciones.

Cargas de trabajo con privilegios propiedad del cliente

Como cliente de GKE, es posible que tengas tus propias cargas de trabajo especializadas que requieran más privilegios en el clúster que los que permiten las restricciones de seguridad predeterminadas de Autopilot. En GKE 1.35 y versiones posteriores, puedes eximir estas cargas de trabajo de las restricciones predeterminadas de Autopilot mediante la creación de listas de entidades permitidas.

Una lista de entidades permitidas es un archivo YAML que define un recurso personalizado de Kubernetes WorkloadAllowlist. La especificación de un WorkloadAllowlist coincide con varios campos de la especificación de Pod de Kubernetes. Cuando defines un WorkloadAllowlist, haces coincidir los valores en el WorkloadAllowlist con los campos correspondientes en la especificación de tu carga de trabajo con privilegios. Almacenas los archivos YAML en un bucket de Cloud Storage.

Para instalar estas listas de entidades permitidas propiedad del cliente en un clúster, deben ocurrir los siguientes pasos:

  1. El administrador de tu organización agrega las rutas de acceso de Cloud Storage a una política de la organización. Para obtener más información, consulta la sección Acerca de la restricción administrada de la política de la organización.
  2. Agrega las rutas de acceso de Cloud Storage a una configuración de clúster. Para obtener más información, consulta la sección Configuración del clúster.

Para obtener más información sobre cómo crear tus propios WorkloadAllowlists, consulta Crea listas de entidades permitidas para cargas de trabajo con privilegios de Autopilot.

Configuración del clúster

Para ejecutar una carga de trabajo con privilegios en el modo Autopilot, un administrador de clústeres agrega una o más rutas de acceso a listas de entidades permitidas aprobadas a la configuración del clúster. Después de agregar las rutas de acceso al clúster, los operadores de la app pueden instalar las listas de entidades permitidas y las cargas de trabajo con privilegios correspondientes en el clúster.

De forma predeterminada, puedes instalar listas de entidades permitidas de socios de Autopilot y proyectos de código abierto aprobados. Este conjunto predeterminado de fuentes aprobadas para listas de entidades permitidas puede cambiar debido a una política de la organización, como se describe en la sección anterior. Si una política de la organización controla las rutas de acceso a listas de entidades permitidas aprobadas, debes coordinar con el administrador de tu organización para identificar esas rutas de acceso. Luego, puedes especificar una o más de las rutas de acceso aprobadas en la configuración del clúster.

Para obtener más información sobre la configuración de clústeres, consulta Ejecuta cargas de trabajo con privilegios en Autopilot.

Instalación de la lista de entidades permitidas

Para instalar una lista de entidades permitidas de una fuente aprobada en tu clúster, usa un recurso personalizado de Kubernetes llamado AllowlistSynchronizer. Defines y creas AllowlistSynchronizers de manera similar a como creas otros recursos de Kubernetes, como Pods y Deployments. Cada AllowlistSynchronizer tiene una lista de rutas de acceso a listas de entidades permitidas que deseas instalar en el clúster.

Cuando creas un AllowlistSynchronizer, GKE instala listas de entidades permitidas desde estas rutas de acceso y las mantiene actualizadas. Cada 10 minutos, GKE verifica si hay cambios en los archivos de listas de entidades permitidas. Si existe una actualización, el sincronizador instala la lista de entidades permitidas actualizada en el clúster.

Después de que GKE instala una lista de entidades permitidas basada en un AllowlistSynchronizer, puedes crear la carga de trabajo con privilegios correspondiente en el clúster.

Para obtener más información sobre la instalación de listas de entidades permitidas en un clúster, consulta Ejecuta cargas de trabajo con privilegios en Autopilot.

Rutas de la lista de entidades permitidas

Cuando configuras la compatibilidad con listas de entidades permitidas en tu política de la organización o clústeres, especificas rutas de acceso a uno o más WorkloadAllowlists que aprobaste para la instalación. La sintaxis de estas rutas de acceso depende de quién creó el WorkloadAllowlist, de la siguiente manera:

  • Socios de Autopilot específicos y proyectos de código abierto aprobados:

    gke://REPOSITORY_PATH/SELECTOR
    

    Reemplaza lo siguiente:

    Por ejemplo, la siguiente ruta de acceso selecciona cualquier lista de entidades permitidas en el directorio Grafana/alloy:

    gke://Grafana/alloy/*
    
  • Cargas de trabajo con privilegios propiedad del cliente:

    gs://DIRECTORY_PATH/SELECTOR
    

    Reemplaza DIRECTORY_PATH por la ruta de acceso al directorio en Cloud Storage que contiene tus archivos de listas de entidades permitidas. Puedes especificar varias rutas de acceso.

Puedes especificar una o más de las rutas de acceso anteriores en tu política de la organización o configuración del clúster. Por ejemplo, puedes agregar cargas de trabajo de socios de GKE y cargas de trabajo propiedad del cliente a la misma configuración. También puedes usar el carácter * para seleccionar todas las listas de entidades permitidas. Por ejemplo, gke://* selecciona cualquier lista de entidades permitidas aprobada por GKE de cualquier fuente.

En la siguiente tabla, se describe la configuración necesaria en las políticas de la organización o los clústeres para admitir ciertos objetivos:

Objetivo Configuración de la política de la organización Configuración del clúster
Permitir todos los WorkloadAllowlists aprobados por GKE Haz lo siguiente:
  1. Establece el parámetro allowAnyGKEPath en el valor predeterminado de True.
  2. Mantén vacío el parámetro allowPaths.
Realiza una de las siguientes acciones:
  • No configures listas de entidades permitidas para tu clúster. De forma predeterminada, todos los clústeres permiten la instalación de WorkloadAllowlists aprobados por GKE.
  • Especifica solo gke://* como la ruta de acceso aprobada cuando configures listas de entidades permitidas para tu clúster.
Permitir solo WorkloadAllowlists específicos aprobados por GKE Haz lo siguiente:
  1. Establece el parámetro allowAnyGKEPath en False.
  2. Especifica rutas de acceso a WorkloadAllowlists específicos aprobados por GKE en el allowPaths parámetro.
Especifica rutas de acceso a WorkloadAllowlists específicos aprobados por GKE cuando crees o actualices un clúster. Una política de la organización puede restringir las rutas de acceso aprobadas por GKE que puedes especificar.
Permitir solo WorkloadAllowlists administrados por el cliente Haz lo siguiente:
  1. Establece el parámetro allowAnyGKEPath en False.
  2. Especifica rutas de acceso a WorkloadAllowlists administrados por el cliente en el allowPaths parámetro.
Especifica rutas de acceso a WorkloadAllowlists administrados por el cliente cuando crees o actualices un clúster. Las rutas de acceso que especifiques deben estar en el allowPaths parámetro de una política de la organización.
Impedir el uso de WorkloadAllowlists Haz lo siguiente:
  1. Establece el parámetro allowAnyGKEPath en False.
  2. Mantén vacío el parámetro allowPaths.
Establece una cadena vacía "" como la ruta de acceso aprobada cuando crees o actualices un clúster.

¿Qué sigue?