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

Puedes controlar qué cargas de trabajo privilegiadas pueden ejecutarse en el modo Autopilot de Google Kubernetes Engine (GKE) con 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 privilegiadas que puedes ejecutar en el modo Autopilot y los métodos para controlar la admisión de cargas de trabajo privilegiadas.

Este documento está dirigido a las siguientes personas:

  • Administradores y operadores de plataformas que desean ejecutar cargas de trabajo privilegiadas de GKE desde varias fuentes en el modo Autopilot.
  • Administradores de identidades y cuentas que desean mejorar la postura de seguridad de su organización bloqueando todas las cargas de trabajo privilegiadas, excepto las 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 en 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 privilegiadas en Autopilot son cargas de trabajo que no cumplen con estas restricciones predeterminadas. De forma predeterminada, los nodos de Autopilot en una organización de Google Cloudrechazan 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 del clúster 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, todas las Google Cloud organizaciones admiten 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:

  • Permite 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 organizaciones deGoogle Cloud .
  • Permite cargas de trabajo de socios específicas o cargas de trabajo de código abierto verificadas.
  • Solo permite cargas de trabajo privilegiadas específicas propiedad del cliente.
  • Rechaza todas las cargas de trabajo con privilegios.

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

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

Fuentes de cargas de trabajo privilegiadas de Autopilot

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

Tipos de cargas de trabajo privilegiadas
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 Standard.

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

Ciertas cargas de trabajo de código abierto con privilegios tienen listas de entidades permitidas que te permiten ejecutar esas cargas de trabajo en 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 Standard.

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 apto que tiene cargas de trabajo privilegiadas que deseas ejecutar en nodos de Autopilot, puedes crear listas de entidades permitidas para esas cargas de trabajo. Esta capacidad está inhabilitada de forma predeterminada para todas las organizaciones de Google Cloud . Utilizas el servicio de políticas de la organización para agregar rutas de acceso a la lista de entidades permitidas para cargas de trabajo específicas y, luego, actualizas 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 cargas de trabajo privilegiadas específicas se ejecuten 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 en función de cualquier WorkloadAllowlist del clúster y permite la admisión solo si los detalles coinciden. De forma predeterminada, todos los clústeres de Autopilot o Standard de una organización de Google Cloudte permiten instalar listas de entidades permitidas de cargas de trabajo para las cargas de trabajo de socios de Autopilot y para las cargas de trabajo de código abierto.

En términos generales, 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 de la política de la organización container.managed.autopilotPrivilegedAdmission administrada permita la instalación de listas de entidades permitidas desde 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 las listas de entidades permitidas.
  2. En el caso de las cargas de trabajo privilegiadas propiedad del cliente, el administrador de la plataforma crea listas de entidades permitidas que coinciden con las cargas de trabajo privilegiadas. 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 Standard para permitir la instalación de listas de entidades permitidas desde 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.

Después de completar estos pasos, un operador de la app puede implementar la carga de trabajo con privilegios en el clúster.

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

De forma predeterminada, cada organización de Google Cloud aplica una política de la organización basada en lacontainer.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 de la lista 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 de la lista 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 pertenece a tu organización, agrega la ruta de acceso de esa lista 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 la lista 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 la lista de entidades permitidas que comiencen con gke:// o con una cadena vacía para inhabilitar todas las listas de entidades permitidas del clúster. True es el valor predeterminado para este parámetro.

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

  • allowPaths: Es una lista de fuentes aprobadas de la lista de entidades permitidas desde las que los administradores del clúster pueden especificar valores cuando configuran un clúster. Puedes especificar rutas de acceso a archivos de la lista 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 allowAnyGKEPath Valor allowPaths Resultado
True Vacío o sin especificar.

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

  • Usa 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://.
  • Inhabilita 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.
  • Especifica rutas de la lista de entidades permitidas de GKE: Especifica una o más rutas de la lista de entidades permitidas que tengan el prefijo gke://. El clúster solo puede instalar listas de entidades permitidas desde esas rutas.
False Vacío o sin especificar.

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

True Se especifican los valores.

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

  • Usa 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://.
  • Inhabilita 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.
  • Especifica rutas de acceso a la lista de entidades permitidas: Especifica una o más rutas de acceso a la lista de entidades permitidas que tengan el prefijo gke:// o que se especifiquen en el parámetro allowPaths.
False Se especifican los valores.

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

  • Inhabilita 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.
  • Especifica rutas de acceso de la lista de entidades permitidas: Especifica una o más rutas de acceso de la lista de entidades permitidas desde el parámetro allowPaths.

Para obtener más información sobre cómo controlar la admisión de cargas de trabajo privilegiadas en las políticas de la organización, consulta Restringe las cargas de trabajo privilegiadas de GKE en las organizaciones.

Cargas de trabajo privilegiadas 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 de los que permiten las restricciones de seguridad predeterminadas de Autopilot. En la versión 1.35 y versiones posteriores de GKE, puedes crear listas de entidades permitidas para eximir estas cargas de trabajo de las restricciones predeterminadas de Autopilot.

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 en la especificación del Pod de Kubernetes. Cuando defines una WorkloadAllowlist, haces coincidir los valores de la WorkloadAllowlist con los campos correspondientes en la especificación de tu carga de trabajo privilegiada. Almacenas los archivos YAML en un bucket de Cloud Storage.

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

  1. El administrador de tu organización agrega las rutas 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. Agregarás las rutas de Cloud Storage a la configuración de un 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 propias 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 del clúster agrega una o más rutas de acceso aprobadas a la lista de entidades permitidas en 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 privilegiadas 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 las 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 aprobadas de la lista de entidades permitidas, debes coordinarte con el administrador de tu organización para identificar esas rutas de acceso. Luego, puedes especificar una o más de las rutas aprobadas en la configuración del clúster.

Para obtener más información sobre la configuración de clústeres, consulta Cómo ejecutar cargas de trabajo privilegiadas en Autopilot.

Instalación de la lista de entidades permitidas

Para instalar una lista de entidades permitidas desde una fuente aprobada en tu clúster, usa un recurso personalizado de Kubernetes llamado AllowlistSynchronizer. Puedes definir y crear 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 las listas de entidades permitidas que deseas instalar en el clúster.

Cuando creas un AllowlistSynchronizer, GKE instala las listas de entidades permitidas desde estas rutas y las mantiene actualizadas. Cada 10 minutos, GKE verifica si hay cambios en los archivos de la lista 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 privilegiada correspondiente en el clúster.

Para obtener más información sobre cómo instalar 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 en tus clústeres, especificas rutas de acceso a una o más WorkloadAllowlists que aprobaste para la instalación. La sintaxis de estas rutas depende de quién creó la WorkloadAllowlist, como se indica a continuación:

  • Socios específicos de Autopilot 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 privilegiadas propiedad del cliente:

    gs://DIRECTORY_PATH/SELECTOR
    

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

Puedes especificar una o más de las rutas anteriores en la política de la organización o en la 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 desde cualquier fuente.

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

Objetivo Configuración de la política de la organización Configuración del clúster
Permite todas las listas de entidades permitidas de cargas de trabajo aprobadas por GKE Sigue estos pasos:
  1. Establece el parámetro allowAnyGKEPath en el valor predeterminado de True.
  2. Mantén el parámetro allowPaths vacío.
Lleve a cabo unas 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 listas de entidades permitidas de cargas de trabajo aprobadas por GKE.
  • Especifica solo gke://* como la ruta de acceso aprobada cuando configures las listas de entidades permitidas para tu clúster.
Permite solo listas de entidades permitidas de cargas de trabajo específicas aprobadas por GKE Sigue estos pasos:
  1. Establece también el parámetro allowAnyGKEPath en False.
  2. Especifica rutas de acceso a WorkloadAllowlists específicas aprobadas por GKE en el parámetro allowPaths.
Especifica rutas de acceso a WorkloadAllowlists específicas aprobadas por GKE cuando crees o actualices un clúster. Una política de la organización podría restringir las rutas aprobadas por GKE que puedes especificar.
Permite solo las listas de entidades permitidas de cargas de trabajo administradas por el cliente Sigue estos pasos:
  1. Establece también el parámetro allowAnyGKEPath en False.
  2. Especifica las rutas de acceso a las listas de entidades permitidas de cargas de trabajo administradas por el cliente en el parámetro allowPaths.
Especifica rutas de acceso a las listas de entidades permitidas de cargas de trabajo administradas por el cliente cuando crees o actualices un clúster. Las rutas de acceso que especifiques deben estar en el parámetro allowPaths de una política de la organización.
Evita el uso de WorkloadAllowlists Sigue estos pasos:
  1. Establece también el parámetro allowAnyGKEPath en False.
  2. Mantén el parámetro allowPaths vacío.
Establece una cadena vacía "" como la ruta aprobada cuando crees o actualices un clúster.

¿Qué sigue?