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 la plataforma 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 privilegiadas 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íficos 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 organizaciones Google Cloud 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 los 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.
  • Permite solo 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 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 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 de 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 administrada tiene los siguientes parámetros:

  • allowAnyGKEPath: Es un valor booleano que permite a los administradores del clúster configurar clústeres para la instalación de listas de entidades permitidas desde rutas de acceso que tienen el prefijo gke://. Se admiten los siguientes valores:

    • true: Permite que los administradores de clústeres configuren clústeres con las fuentes de la lista de entidades permitidas predeterminada de GKE, con cualquier ruta de acceso a la lista de entidades permitidas que comience con gke:// o con una cadena vacía (que impide todas las listas de entidades permitidas). Este es el valor predeterminado para el parámetro allowAnyGKEPath.
    • false: Requiere que los administradores del clúster configuren 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.

Como administrador de la organización, puedes actualizar los parámetros de esta política para controlar qué cargas de trabajo privilegiadas pueden ejecutarse en tu organización de Google Cloud. Por ejemplo, la siguiente configuración de la política de la organización permite que los administradores de clústeres instalen listas de entidades permitidas solo para una carga de trabajo de socio Google Cloudespecífica:

name: organizations/ORGANIZATION_ID/policies/container.managed.autopilotPrivilegedAdmission
spec:
  rules:
  - enforce: true
    parameters:
      allowAnyGKEPath: ALLOW_GKE_PATHS
      allowPaths:
      - PATH1
      - PATH2
      - PATH3

Reemplaza lo siguiente:

  • ALLOW_GKE_PATHS: Indica si se permiten las listas de entidades permitidas aprobadas por GKE. Especifica uno de los siguientes valores:

    • True: Permite la configuración del clúster con cualquier carga de trabajo de socios de GKE o cargas de trabajo de código abierto verificadas. Este es el valor predeterminado.
    • False: Permite la configuración del clúster solo con las rutas de acceso en el campo allowPaths.
  • PATH1, PATH2, ...: Es una lista de rutas de acceso a fuentes de la lista de entidades permitidas aprobadas que los administradores de clústeres pueden usar cuando configuran clústeres. De forma predeterminada, este parámetro está vacío. Si especificas rutas de acceso para este parámetro, los administradores del clúster deben especificar cero o más de esas rutas de acceso cuando creen o actualicen un clúster.

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 de 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 una configuración del 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 listas de entidades permitidas de cargas de trabajo, 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. 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 Ejecuta 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 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 los archivos de la 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 las 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 creas o actualizas un clúster.

¿Qué sigue?