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:
- Ejecutas cargas de trabajo en modo Autopilot en clústeres Standard y deseas que las cargas de trabajo privilegiadas se ejecuten en esos nodos.
- Deseas permitir que solo se ejecute un conjunto específico de cargas de trabajo con privilegios en tu organización, carpeta o proyecto.
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:
- El administrador de la organización verifica que la restricción de la política de la organización
container.managed.autopilotPrivilegedAdmissionadministrada 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. - 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.
- 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.
- 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 prefijogke://. 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 congke://o con una cadena vacía (que impide todas las listas de entidades permitidas). Este es el valor predeterminado para el parámetroallowAnyGKEPath.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ámetroallowPaths.
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 campoallowPaths.
PATH1,: 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.PATH2,...
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:
- 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.
- 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/SELECTORReemplaza lo siguiente:
REPOSITORY_PATH: Es la ruta de acceso al directorio que contiene las listas de entidades permitidas para la carga de trabajo, comoGrafana/alloy. Para obtener más información sobre las rutas de acceso de la lista de entidades permitidas para estas cargas de trabajo, consulta las siguientes páginas:SELECTOR: Es el nombre de un archivo específico o el carácter*, que selecciona todos los archivos de ese directorio.
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/SELECTORReemplaza
DIRECTORY_PATHpor 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:
|
Lleve a cabo unas de las siguientes acciones:
|
| Permite solo listas de entidades permitidas de cargas de trabajo específicas aprobadas por GKE | Sigue estos pasos:
|
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:
|
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:
|
Establece una cadena vacía "" como la ruta aprobada cuando
creas o actualizas un clúster. |
¿Qué sigue?
- Restringe las cargas de trabajo privilegiadas de GKE en las organizaciones.
- Ejecuta cargas de trabajo con privilegios en Autopilot.