En esta página se muestra cómo aplicar de forma selectiva las políticas de firewall de red de Cloud Next Generation Firewall en Google Kubernetes Engine (GKE) mediante etiquetas. Las etiquetas proporcionan un control más detallado para organizar la jerarquía de recursos en comparación con la Google Cloud jerarquía de recursos predeterminada. Las etiquetas también permiten aplicar políticas de forma condicional.
Esta página está dirigida a especialistas en seguridad que quieran tener un control preciso sobre las políticas de cortafuegos en GKE. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud
Antes de leer esta página, asegúrese de que conoce los siguientes conceptos:
- Descripción general de las etiquetas
- Cómo usar las etiquetas para otros fines, como la gestión de la facturación o las políticas de gestión de identidades y accesos condicionales
Acerca de las etiquetas
Las etiquetas son pares clave-valor que te permiten anotar y gestionar tus Google Cloud recursos a nivel de organización o proyecto. Puedes usar etiquetas para organizar tus recursos y aplicar condicionalmente políticas, como políticas de cortafuegos o de gestión de identidades y accesos. Puedes usar el control de acceso de IAM para definir quién puede adjuntar, crear, actualizar o eliminar etiquetas.
Para obtener más información sobre las etiquetas, consulta la descripción general de las etiquetas en la documentación de Resource Manager.
Usar etiquetas para aplicar políticas de cortafuegos de red
Puedes usar etiquetas para aplicar de forma condicional políticas de cortafuegos de red globales o regionales a tus nodos de GKE. Debes asignar el propósito GCE_FIREWALL
a las etiquetas que quieras usar con las políticas de cortafuegos de red. Cuando aplicas etiquetas de propósito de firewall a clústeres o grupos de nodos de GKE, GKE adjunta automáticamente esas etiquetas a las máquinas virtuales (VMs) de Compute Engine correspondientes.
Las etiquetas de las políticas de cortafuegos de red sustituyen a las etiquetas de red, que son metadatos que cualquier persona puede asociar a las VMs de Compute Engine subyacentes para aplicar las reglas de cortafuegos de la nube privada virtual y que no admiten el control de acceso de gestión de identidades y accesos. Si actualmente usas etiquetas de red con reglas de cortafuegos de VPC, te recomendamos que migres a políticas de cortafuegos de red y uses etiquetas de cortafuegos seguras. Para ver una comparación detallada, consulta Comparar etiquetas de red con etiquetas en este documento.
Flujo de trabajo de etiquetas de políticas de cortafuegos de red
Para usar etiquetas con políticas de cortafuegos de red en GKE, haz lo siguiente:
Para crear una etiqueta, sigue estos pasos:
- Define una clave de etiqueta a nivel de organización o proyecto, como
env
. - Define los posibles valores de la etiqueta de la clave, como
dev
,staging
yprod
. Designa la etiqueta para usarla en la política de cortafuegos de red.
- Define una clave de etiqueta a nivel de organización o proyecto, como
Concede a los usuarios acceso para interactuar con la etiqueta de cortafuegos.
Aplica pares clave-valor de etiquetas a clústeres o grupos de nodos de GKE específicos. GKE adjunta automáticamente las etiquetas a las VMs de Compute Engine subyacentes para aplicar la política de cortafuegos.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
Requisitos y limitaciones
- Las etiquetas de las políticas de cortafuegos de red se admiten en GKE 1.28 y versiones posteriores. Si utilizas una versión de GKE anterior a la 1.28, usa etiquetas de red con reglas de cortafuegos de VPC.
- El clúster de GKE y la etiqueta deben estar asociados a la misma red de VPC.
- En los clústeres estándar, cada grupo de nodos admite hasta cinco etiquetas de cortafuegos asociadas.
- Los clústeres de Autopilot admiten hasta cinco etiquetas de cortafuegos.
- GKE rechaza las claves de etiquetas que usan el prefijo
gke-managed
. - Debes crear los pares clave-valor de la etiqueta antes de poder adjuntarlos a clústeres o grupos de nodos.
Funciones y permisos de IAM
Para obtener los permisos que necesitas para usar etiquetas en las políticas de cortafuegos de GKE, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Para conceder los permisos necesarios para las etiquetas a los usuarios y a los agentes de servicio de GKE, sigue estos pasos:
-
Administrador de gestión de identidades y accesos de proyectos (
roles/resourcemanager.projectIamAdmin
) en tu proyecto -
Administrador de la organización (
roles/resourcemanager.organizationAdmin
) de la organización
-
Administrador de gestión de identidades y accesos de proyectos (
-
Para crear y administrar etiquetas:
Administrador de etiquetas (
roles/resourcemanager.tagAdmin
) en la organización o el proyecto -
Para adjuntar etiquetas a los recursos, sigue estos pasos:
Etiquetar usuario (
roles/resourcemanager.tagUser
) en el proyecto
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear etiquetas
Para poder adjuntar etiquetas a clústeres o nodos, estas deben existir. Para crear una etiqueta, consulta Usar etiquetas en cortafuegos en la documentación de Cloud NGFW.
Por ejemplo, para crear una etiqueta de cortafuegos con ámbito de proyecto, ejecuta los siguientes comandos:
Crea la clave de la etiqueta:
gcloud resource-manager tags keys create TAG_KEY \ --parent=projects/PROJECT_ID \ --purpose=GCE_FIREWALL \ --purpose-data=network=PROJECT_ID/NETWORK_NAME
Haz los cambios siguientes:
TAG_KEY
: el nombre de la clave de la etiqueta, comoenv
PROJECT_ID
: tu ID de proyecto Google CloudNETWORK_NAME
: el nombre de la red de VPC que usarás con la etiqueta
Obtén el ID de la clave de la etiqueta:
gcloud resource-manager tags keys describe PROJECT_ID/TAG_KEY \ --format="value(name)"
El resultado es
tagKeys/KEY_ID
, dondeKEY_ID
es el ID numérico de la clave. Anota este ID para más adelante.Añade un valor a la clave de la etiqueta:
gcloud resource-manager tags values create TAG_VALUE \ --parent=tagKeys/KEY_ID
Sustituye
TAG_VALUE
por el nombre de un valor permitido para esa clave de etiqueta, comodev
.
Usar la sintaxis de etiquetas correcta en los comandos de la CLI de gcloud
Cuando hagas referencia a etiquetas con gcloud CLI, debes dar formato a los pares clave-valor con una de las siguientes sintaxis:
Sintaxis de las etiquetas | |
---|---|
tagKeys/KEY_ID=tagValues/VALUE_ID |
Haz los cambios siguientes:
Por ejemplo, |
ORGANIZATION_ID/TAG_KEY=TAG_VALUE |
Haz los cambios siguientes:
Por ejemplo, |
PROJECT_ID/TAG_KEY=TAG_VALUE |
Haz los cambios siguientes:
Por ejemplo, |
PROJECT_NUMBER/TAG_KEY=TAG_VALUE |
Haz los cambios siguientes:
Por ejemplo, |
Etiquetas de destino con políticas de cortafuegos
Después de crear etiquetas, puedes hacer referencia a pares clave-valor específicos en las reglas de la política de cortafuegos. Para obtener instrucciones, consulta Usar etiquetas en firewalls.
Conceder permisos de gestión de identidades y accesos a agentes de servicio
Para que GKE adjunte automáticamente etiquetas a los nodos nuevos durante los eventos de escalado vertical, debes asignar los roles de gestión de identidades y accesos correspondientes a las cuentas de servicio gestionadas por Google Cloud, también llamadas agentes de servicio.
Concede el rol Usuario de etiquetas (
roles/resourcemanager.tagUser
) al agente de servicio de Kubernetes Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Sustituye
PROJECT_NUMBER
por el número de proyecto del clúster. Google CloudPara encontrar el número de proyecto, ejecuta el siguiente comando:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
Asigna el rol de administrador de retenciones de etiquetas (
roles/resourcemanager.tagHoldAdmin
) al agente de servicio de Kubernetes Engine para el par clave-valor de la etiqueta:gcloud resource-manager tags values add-iam-policy-binding PROJECT_ID/TAG_KEY/TAG_VALUE \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagHoldAdmin
Este rol permite que el agente de servicio impida que se elimine la etiqueta si el par clave-valor sigue en uso en GKE.
Concede el rol de usuario de etiquetas (
roles/resourcemanager.tagUser
) al agente de servicio de las APIs de Google:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Conceder roles de gestión de identidades y accesos adicionales para etiquetas fuera del proyecto
Para usar etiquetas que pertenezcan a una organización o a un proyecto distinto del proyecto del clúster, sigue estos pasos adicionales:
Asigna el rol Usuario de etiquetas (
roles/resourcemanager.tagUser
) al acceso del agente de servicio de Kubernetes Engine para las etiquetas del recurso principal:gcloud resource-manager tags keys add-iam-policy-binding PARENT_RESOURCE/TAG_KEY \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Haz los cambios siguientes:
PARENT_RESOURCE
: el ID del proyecto o el ID de la organización del recurso propietario de esa etiquetaPROJECT_NUMBER
: el número de proyecto del clúster
Asigna el rol Usuario de etiquetas (
roles/resourcemanager.tagUser
) al acceso de agente de servicio de las APIs de Google para las etiquetas del recurso principal:gcloud resource-manager tags keys add-iam-policy-binding PARENT_RESOURCE/TAG_KEY \ --member=serviceAccount:PROJECT_NUMBER@cloudservices.gserviceaccount.com \ --role=roles/resourcemanager.tagUser \ --condition=None
Asigna el rol Administrador de retenciones de etiquetas (
roles/resourcemanager.tagHoldAdmin
) a la cuenta de servicio de Kubernetes Engine para el par clave-valor de la etiqueta:gcloud resource-manager tags values add-iam-policy-binding PARENT_RESOURCE/TAG_KEY/TAG_VALUE \ --member=serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/resourcemanager.tagHoldAdmin
Adjuntar etiquetas de cortafuegos a clústeres de Autopilot
Las etiquetas de cortafuegos se adjuntan a los clústeres de Autopilot a nivel de clúster. GKE aplica automáticamente estas etiquetas a nivel de clúster a todos los nodos.
Asignar etiquetas al crear un clúster de Autopilot
Ejecuta el siguiente comando:
gcloud beta container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del nuevo clúster.LOCATION
: la región de Compute Engine del clúster.TAG1,TAG2,...
: conjunto de pares clave-valor separados por comas que se van a adjuntar. Cada par clave-valor debe usar una sintaxis admitida, tal como se describe en la sección Sintaxis de las etiquetas en los comandos. Por ejemplo,example-project/env=dev,1234567901/team=sre
.
Asignar etiquetas a clústeres de Autopilot
Ejecuta el siguiente comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Cuando actualizas las etiquetas de un clúster, GKE sobrescribe las etiquetas de todos los nodos.
Adjuntar etiquetas de cortafuegos a clústeres y grupos de nodos estándar
El método que utilices para adjuntar etiquetas dependerá de si quieres que otros grupos de nodos del clúster hereden las etiquetas, como se indica a continuación:
Etiquetas de cortafuegos de clústeres estándar | |
---|---|
--autoprovisioning-resource-manager-tags |
Ajuste a nivel de clúster GKE aplica las etiquetas a todos los grupos de nodos aprovisionados automáticamente nuevos del clúster. Si usas esta marca en un clúster, GKE no aplicará las etiquetas a los grupos de nodos del clúster. Los grupos de nodos
mantienen las etiquetas que ya se habían aplicado antes de la actualización. Para actualizar las etiquetas de los grupos de nodos, usa la marca |
--resource-manager-tags |
Ajuste a nivel de grupo de nodos GKE aplica las etiquetas al grupo de nodos especificado. Si usas esta marca durante la creación del clúster, GKE aplica las etiquetas al grupo de nodos predeterminado que crea GKE. Si usas esta marca en un grupo de nodos aprovisionado automáticamente, GKE sobrescribe las etiquetas que ya tenga el grupo de nodos. |
Adjuntar etiquetas de cortafuegos a clústeres estándar
Puedes adjuntar etiquetas a clústeres estándar nuevos o que ya tengas. Cuando adjuntas etiquetas a un clúster completo, GKE considera que estas etiquetas se han definido a nivel de clúster .
Asociar etiquetas a un clúster estándar nuevo con aprovisionamiento automático de nodos
GKE usa etiquetas a nivel de clúster para los nodos aprovisionados automáticamente de forma predeterminada. El grupo de nodos predeterminado que crea GKE en el clúster no se aprovisiona automáticamente y no obtiene esas etiquetas.
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,... \
--enable-autoprovisioning \
--max-cpu=MAX_CPU \
--max-memory=MAX_MEMORY
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del nuevo clústerLOCATION
: la región o zona de Compute Engine del clústerTAG1,TAG2,...
: conjunto de pares clave-valor separados por comas que se van a adjuntar. Cada par clave-valor debe usar una sintaxis admitida, tal como se describe en la sección Sintaxis de las etiquetas en los comandos. Por ejemplo,example-project/env=dev,1234567901/team=sre
.MAX_CPU
: número máximo de núcleos del clústerMAX_MEMORY
: capacidad de memoria máxima del clúster en gigabytes
Asignar etiquetas al habilitar el aprovisionamiento automático de nodos en un clúster
GKE solo aplica estas etiquetas a los nuevos grupos de nodos aprovisionados automáticamente. Los grupos de nodos conservan las etiquetas que tenían antes de la actualización.
Adjunta etiquetas al clúster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Habilita el aprovisionamiento automático de nodos en el clúster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --enable-autoprovisioning \ --max-cpu=MAX_CPU \ --max-memory=MAX_MEMORY
Adjuntar etiquetas de cortafuegos a grupos de nodos
Puedes asociar etiquetas a grupos de nodos nuevos o ya creados, independientemente de si usan el aprovisionamiento automático de nodos. GKE considera que estas etiquetas son un ajuste a nivel de grupo de nodos.
Asignar etiquetas al grupo de nodos predeterminado
GKE añade las etiquetas que especifiques con la marca --resource-manager-tags
cuando crees un clúster al grupo de nodos predeterminado que GKE crea en el clúster.
gcloud beta container clusters create CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del nuevo clústerLOCATION
: la región o zona de Compute Engine del clústerTAG1,TAG2,...
: conjunto de pares clave-valor separados por comas que se van a adjuntar. Cada par clave-valor debe usar una sintaxis admitida, tal como se describe en la sección Sintaxis de las etiquetas en los comandos. Por ejemplo,example-project/env=dev,1234567901/team=sre
.
Asociar etiquetas a un nuevo grupo de nodos
Cuando usas la marca --resource-manager-tags
durante la creación del grupo de nodos, GKE adjunta las etiquetas que especifiques a ese grupo de nodos.
gcloud beta container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Haz los cambios siguientes:
NODE_POOL_NAME
: el nombre del nuevo grupo de nodosCLUSTER_NAME
: el nombre del clústerLOCATION
: la región o zona de Compute Engine del clústerTAG1,TAG2,...
:conjunto de pares clave-valor separados por comas que se van a adjuntar. Cada par clave-valor debe usar una sintaxis admitida, tal como se describe en la sección Sintaxis de las etiquetas en los comandos. Por ejemplo,example-project/env=dev,1234567901/team=sre
.
Asignar etiquetas a un grupo de nodos
Cuando actualizas las etiquetas de un grupo de nodos con la marca --resource-manager-tags
, GKE sobrescribe las etiquetas que ya tenga ese grupo de nodos. Puede usar este comando para actualizar las etiquetas de los grupos de nodos aprovisionados automáticamente.
gcloud beta container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Sustituye NODE_POOL_NAME
por el nombre del grupo de nodos que quieras actualizar.
Activar o desactivar la configuración de aprovisionamiento automático en clústeres y grupos de nodos
Cuando actualizas las etiquetas a nivel de clúster, GKE aplica esas etiquetas nuevas a todos los grupos de nodos nuevos del clúster y conserva las etiquetas que se habían adjuntado a los grupos de nodos que ya existían.
Cuando actualice grupos de nodos para habilitar o inhabilitar el aprovisionamiento automático de nodos, tenga en cuenta las siguientes implicaciones para las etiquetas:
- Cuando habilitas o inhabilitas el aprovisionamiento automático de nodos, el grupo de nodos conserva las etiquetas que ya tenga. GKE no sobrescribe estas etiquetas con etiquetas a nivel de clúster, ni siquiera durante la recreación de nodos.
- Si actualizas manualmente las etiquetas de grupos de nodos específicos, GKE sobrescribe las etiquetas que ya tengan esos grupos de nodos con las que hayas especificado.
Verificar las etiquetas de cortafuegos en el clúster
Lista las etiquetas de los clústeres de Autopilot:
gcloud beta container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format="value(nodePoolAutoConfig.resourceManagerTags)"
Lista las etiquetas de grupos de nodos específicos:
gcloud beta container node-pools describe NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format="value(config.resourceManagerTags)"
Desasociar etiquetas de cortafuegos de clústeres y grupos de nodos
Para quitar etiquetas de cortafuegos de clústeres y grupos de nodos, actualiza el recurso con un valor vacío para las etiquetas.
Desasociar etiquetas de clústeres de Autopilot
Ejecuta el siguiente comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=
Desasociar etiquetas de grupos de nodos
Desasocia las etiquetas de aprovisionamiento automático de nodos a nivel de clúster:
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --autoprovisioning-resource-manager-tags=
GKE no adjuntará etiquetas a los nuevos grupos de nodos aprovisionados automáticamente.
Desasocia las etiquetas del grupo de nodos:
gcloud beta container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --resource-manager-tags=
GKE elimina las etiquetas del grupo de nodos.
Eliminar claves y valores de etiquetas
Para eliminar una clave o un valor de etiqueta, asegúrate de que la etiqueta no esté asociada a ningún recurso. A continuación, consulta la sección Eliminar etiquetas de la documentación de Resource Manager.
Comparar etiquetas de red con etiquetas
Usar etiquetas para aplicar políticas de cortafuegos tiene ventajas significativas en cuanto a seguridad y usabilidad en comparación con las etiquetas de red. Del mismo modo, las políticas de cortafuegos de red mejoran las funciones de las reglas de cortafuegos de VPC, ya que facilitan la aplicación de reglas de cortafuegos en organizaciones, carpetas, proyectos o redes completas.
Usar etiquetas con políticas de cortafuegos de red es una forma más segura y escalable de gestionar el acceso a tus entornos de GKE en toda tu organización. Puede usar etiquetas de red en el mismo clúster que las etiquetas, aunque no puede usarlas para aplicar políticas de firewall de red.
Para ver una comparación detallada entre las etiquetas y las etiquetas de red, consulta el artículo Comparación de etiquetas y etiquetas de red de la documentación de Cloud NGFW.
Diferencias funcionales en los grupos de nodos aprovisionados automáticamente
En los clústeres Autopilot y en los grupos de nodos Estándar que no usan el aprovisionamiento automático de nodos, las etiquetas de red y las etiquetas se comportan de forma similar. En la siguiente tabla se muestran las diferencias funcionales entre las etiquetas de red y las etiquetas de los grupos de nodos aprovisionados automáticamente en los clústeres estándar:
Acción | Comportamiento de las etiquetas de red | Comportamiento de las etiquetas |
---|---|---|
GKE aprovisiona automáticamente un grupo de nodos | GKE aplica las etiquetas de red a nivel de clúster | GKE aplica las etiquetas a nivel de clúster |
Actualizas las etiquetas o las etiquetas de red de un grupo de nodos aprovisionado automáticamente |
|
GKE sobrescribe las etiquetas del grupo de nodos independientemente de si existen etiquetas a nivel de clúster |
Actualiza las etiquetas o las etiquetas de red de todo el clúster | GKE sobrescribe las etiquetas de red de los grupos de nodos aprovisionados automáticamente nuevos y antiguos del clúster. | GKE aplica las nuevas etiquetas a nivel de clúster a los grupos de nodos aprovisionados automáticamente. Los grupos de nodos aprovisionados automáticamente conservan las etiquetas que tenían antes de la actualización. |
Siguientes pasos
- Usar etiquetas para hacer un seguimiento del uso y aplicar políticas de gestión de identidades y accesos
- Más información sobre las etiquetas de cortafuegos
- Información sobre las etiquetas