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. Para aprender a usar etiquetas en GKE para otros fines, como la administración de facturación o las políticas de IAM condicionales, consulta Administra recursos de GKE mediante etiquetas.
Acerca de las etiquetas
Las etiquetas son pares clave-valor que te permiten anotar y administrar los recursos de Google Cloud a nivel de organización o proyecto. Puedes usar etiquetas para organizar tus recursos y aplicar políticas de forma condicional, como firewalls o políticas de IAM. Puedes usar el control de acceso de IAM para definir quién puede adjuntar, crear, actualizar o borrar etiquetas.
Para obtener más información sobre las etiquetas, consulta la Descripción general de etiquetas en la documentación de Resource Manager.
Usa etiquetas para aplicar políticas de firewall de red
Puedes usar etiquetas para aplicar de forma condicional políticas de firewall de red globales o regionales a los nodos de GKE. Debes designar el propósito GCE_FIREWALL
para las etiquetas que deseas usar con políticas de firewall 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 para las políticas de firewall de red reemplazan la necesidad de usar Etiquetas de red, que son metadatos que cualquiera puede adjuntar a las VMs de Compute Engine subyacentes para la aplicación de la regla de firewall de nube privada virtual y que no son compatibles con el control de acceso de IAM. Si actualmente usas etiquetas de red con reglas de firewall de VPC, te recomendamos que migres a políticas de firewall de red y uses etiquetas de firewall seguras. Para obtener una comparación detallada, consulta Compara etiquetas de red con etiquetas en este documento.
Etiquetas para el flujo de trabajo de políticas de firewall de red
Para usar etiquetas con políticas de firewall de red en GKE, haz lo siguiente:
Crear etiqueta:
- Define una clave de etiqueta a nivel de organización o de proyecto, como
env
. - Define los valores de etiqueta posibles para la clave, como
dev
,staging
yprod
. Designa la etiqueta para el uso de la política de firewall de red.
- Define una clave de etiqueta a nivel de organización o de proyecto, como
Otorga a los usuarios acceso para interactuar con la etiqueta de firewall.
Aplica pares clave-valor de etiqueta a clústeres o grupos de nodos específicos de GKE. GKE adjunta automáticamente las etiquetas a las VMs subyacentes de Compute Engine para la aplicación de la política de firewall.
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta
gcloud components update
para obtener la versión más reciente.
Requisitos y limitaciones
- Las etiquetas para las políticas de firewall de red son compatibles con la versión 1.28 de GKE y versiones posteriores. Si usas una versión de GKE anterior a la 1.28, usa etiquetas de red con reglas de firewall de VPC en su lugar.
- El clúster de GKE y la etiqueta deben estar asociados con la misma red de VPC.
- En los clústeres Standard, cada grupo de nodos admite hasta cinco etiquetas de firewall adjuntas.
- Los clústeres de Autopilot admiten hasta cinco etiquetas de firewall.
- GKE rechaza las claves de etiqueta 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.
Permisos y roles de IAM
Para obtener los permisos que necesitas usar las etiquetas para las políticas de firewall en GKE, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Para otorgar los permisos necesarios para las etiquetas a los usuarios y los agentes de servicio de GKE, haz lo siguiente:
-
Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin
) en tu proyecto -
Administrador de la organización (
roles/resourcemanager.organizationAdmin
) en la organización
-
Administrador de IAM de proyecto (
-
Para crear y administrar etiquetas: Administrador de etiquetas (
roles/resourcemanager.tagAdmin
) en la organización o el proyecto -
Para adjuntar etiquetas a los recursos, debes tener el rol de usuario de etiquetas (
roles/resourcemanager.tagUser
) en el proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Crear etiquetas
Las etiquetas deben existir para que las adjuntes a los clústeres o nodos. Si deseas crear una etiqueta, consulta Usa etiquetas para firewalls en la documentación de Cloud NGFW.
Por ejemplo, para crear una etiqueta de firewall a nivel del proyecto, ejecuta los siguientes comandos:
Crea la clave de etiqueta:
gcloud resource-manager tags keys create TAG_KEY \ --parent=projects/PROJECT_ID \ --purpose=GCE_FIREWALL \ --purpose-data=network=PROJECT_ID/NETWORK_NAME
Reemplaza lo siguiente:
TAG_KEY
: El nombre de la clave de etiqueta, comoenv
PROJECT_ID
: El ID del proyecto de Google Cloud.NETWORK_NAME
: El nombre de la red de VPC que usarás con la etiqueta
Obtén el ID de la clave de etiqueta:
gcloud resource-manager tags keys describe PROJECT_ID/TAG_KEY \ --format="value(name)"
El resultado es
tagKeys/KEY_ID
, en el queKEY_ID
es un ID numérico de la clave. Toma nota de este ID para más adelante.Agrega un valor de etiqueta a la clave de etiqueta:
gcloud resource-manager tags values create TAG_VALUE \ --parent=tagKeys/KEY_ID
Reemplaza
TAG_VALUE
por el nombre de un valor permitido para esa clave de etiqueta, comodev
.
Sintaxis de la etiqueta en los comandos de la CLI de gcloud
Cuando haces referencia a etiquetas con la gcloud CLI, debes dar formato a los pares clave-valor con una de las siguientes sintaxis:
Sintaxis de la etiqueta | |
---|---|
tagKeys/KEY_ID=tagValues/VALUE_ID |
Reemplaza lo siguiente:
Por ejemplo, |
ORGANIZATION_ID/TAG_KEY=TAG_VALUE |
Reemplaza lo siguiente:
Por ejemplo, |
PROJECT_ID/TAG_KEY=TAG_VALUE |
Reemplaza lo siguiente:
Por ejemplo, |
PROJECT_NUMBER/TAG_KEY=TAG_VALUE |
Reemplaza lo siguiente:
Por ejemplo, |
Etiquetas de destino con políticas de firewall
Después de crear etiquetas, puedes hacer referencia a pares clave-valor específicos en las reglas de políticas de firewall. Si deseas obtener instrucciones, consulta Usa etiquetas para firewalls.
Otorga permisos de IAM a los agentes de servicio
Para que GKE adjunte etiquetas de forma automática a nodos nuevos durante los eventos de escalamiento vertical, debes otorgar los roles de IAM correspondientes a las cuentas de servicio administradas por Google Cloud, también llamadas agentes de servicio.
Otorga el rol de 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
Reemplaza
PROJECT_NUMBER
por el número de proyecto de Google Cloud del clúster. Para encontrar el número de proyecto, ejecuta el siguiente comando:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
Otorga el rol de administrador de conservaciones de etiquetas (
roles/resourcemanager.tagHoldAdmin
) al agente de servicio de Kubernetes Engine para el par clave-valor de 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 evite la eliminación de etiquetas si el par clave-valor aún está en uso en GKE.
Otorga 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
Otorga roles de IAM adicionales para las etiquetas fuera del proyecto
Para usar etiquetas que pertenecen a una organización o a un proyecto diferente al proyecto del clúster, realiza los siguientes pasos adicionales:
Otorga el rol de usuario de etiquetas (
roles/resourcemanager.tagUser
) al agente de servicio de Kubernetes Engine para acceder a las etiquetas del recurso superior: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
Reemplaza lo siguiente:
PARENT_RESOURCE
: el ID del proyecto o el ID de la organización del recurso que posee esa etiquetaPROJECT_NUMBER
: es el número del proyecto del proyecto del clúster
Otorga el rol de usuario de etiquetas (
roles/resourcemanager.tagUser
) al agente de servicio de las APIs de Google acceso para las etiquetas en el recurso superior: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
Otorga el rol de administrador de conservaciones de etiquetas (
roles/resourcemanager.tagHoldAdmin
) al agente de servicio de Kubernetes Engine para el par clave-valor de 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
Adjunta etiquetas de firewall a los clústeres de Autopilot
Adjunta etiquetas de firewall a los clústeres Autopilot a nivel del clúster. GKE aplica de forma automática estas etiquetas a nivel de clúster a cada nodo.
Adjunta etiquetas cuando crees un clúster de Autopilot nuevo
Ejecuta el siguiente comando:
gcloud beta container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Reemplaza lo siguiente:
CLUSTER_NAME
el nombre del clúster nuevo.LOCATION
: la región de Compute Engine del clúster.TAG1,TAG2,...
: un conjunto separado por comas de pares clave-valor para adjuntar. Cada par clave-valor debe usar una sintaxis compatible, como se describe en la Sintaxis de la etiqueta en la sección de comandos. Por ejemplo,example-project/env=dev,1234567901/team=sre
.
Adjunta etiquetas a los clústeres de Autopilot existentes
Ejecuta el siguiente comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=TAG1,TAG2,...
Cuando actualizas las etiquetas en un clúster, GKE reemplaza las etiquetas existentes en todos los nodos.
Adjunta etiquetas de firewall a los clústeres Standard y a los grupos de nodos
El método que uses para adjuntar etiquetas depende de si deseas que otros grupos de nodos del clúster hereden las etiquetas de la siguiente manera:
Etiquetas de firewall de clúster estándar | |
---|---|
--autoprovisioning-resource-manager-tags |
Configuración a nivel del clúster GKE aplica las etiquetas a todos los grupos de nodos nuevos aprovisionados de forma automática en el clúster. Si usas esta marca en un clúster existente, los grupos de nodos existentes conservan las etiquetas que se aplicaron antes de la actualización. |
--resource-manager-tags |
Configuración 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 de forma automática, GKE reemplaza las etiquetas existentes en el grupo de nodos. |
Adjunta etiquetas de firewall a los clústeres estándar
Puedes adjuntar etiquetas a los clústeres Standard nuevos o existentes. Cuando adjuntas etiquetas a un clúster completo, GKE considera que estas etiquetas se configuran a nivel de clúster.
Conecta etiquetas a un clúster Standard nuevo con aprovisionamiento automático de nodos
GKE usa etiquetas a nivel de clúster para los nodos nuevos aprovisionados de forma automática de forma predeterminada. El grupo de nodos predeterminado que GKE crea en el clúster no se aprovisiona de forma automática 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
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clúster nuevo.LOCATION
: la región o zona de Compute Engine para el clúster nuevo.TAG1,TAG2,...
: un conjunto separado por comas de pares clave-valor para adjuntar. Cada par clave-valor debe usar una sintaxis compatible, como se describe en la Sintaxis de la etiqueta en la sección de comandos. Por ejemplo,example-project/env=dev,1234567901/team=sre
.MAX_CPU
: la cantidad máxima de núcleos para el clúster.MAX_MEMORY
: la capacidad máxima de memoria para el clúster en gigabytes.
Conecta etiquetas cuando habilites el aprovisionamiento automático de nodos en un clúster existente
GKE solo aplica estas etiquetas a los grupos de nodos nuevos aprovisionados de forma automática. Los grupos de nodos existentes conservan cualquier etiqueta 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
Adjunta etiquetas de firewall a los grupos de nodos
Puedes adjuntar etiquetas a los grupos de nodos nuevos o existentes, sin importar si usan el aprovisionamiento automático de nodos. GKE considera que estas etiquetas son una configuración a nivel de grupo de nodos.
Adjunta etiquetas al grupo de nodos predeterminado
GKE adjunta las etiquetas que especificas con la marca --resource-manager-tags
cuando creas 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,...
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clúster nuevo.LOCATION
: la región o zona de Compute Engine para el clúster nuevo.TAG1,TAG2,...
: un conjunto separado por comas de pares clave-valor para adjuntar. Cada par clave-valor debe usar una sintaxis compatible, como se describe en la Sintaxis de la etiqueta en la sección de comandos. Por ejemplo,example-project/env=dev,1234567901/team=sre
.
Adjunta etiquetas a un grupo de nodos nuevo
Cuando usas la marca --resource-manager-tags
durante la creación del grupo de nodos, GKE adjunta las etiquetas que especificas a ese grupo de nodos.
gcloud beta container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Reemplaza lo siguiente:
NODE_POOL_NAME
: el nombre del grupo de nodos nuevoCLUSTER_NAME
: es el nombre del clústerLOCATION
: la región o zona de Compute Engine del clústerTAG1,TAG2,...
: un conjunto separado por comas de pares clave-valor para adjuntar. Cada par clave-valor debe usar una sintaxis compatible, como se describe en la Sintaxis de la etiqueta en la sección de comandos. Por ejemplo,example-project/env=dev,1234567901/team=sre
.
Adjunta etiquetas a un grupo de nodos existente
Cuando actualizas las etiquetas en un grupo de nodos existente con la marca --resource-manager-tags
, GKE reemplaza las etiquetas existentes en ese grupo de nodos. Puedes usar este comando para actualizar las etiquetas en los grupos de nodos aprovisionados de forma automática.
gcloud beta container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--resource-manager-tags=TAG1,TAG2,...
Reemplaza NODE_POOL_NAME
por el nombre del grupo de nodos que deseas actualizar.
Activa o desactiva la configuración de aprovisionamiento automático en clústeres y grupos de nodos existentes
Cuando actualizas las etiquetas a nivel de clúster, GKE aplica esas etiquetas nuevas a todos los grupos de nodos nuevos en el clúster y conserva las etiquetas que se adjuntaron a los grupos de nodos existentes.
Cuando actualices grupos de nodos existentes para habilitar o inhabilitar el aprovisionamiento automático de nodos, ten 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 existentes. GKE no reemplaza estas etiquetas por etiquetas a nivel de clúster, incluso durante la recreación de nodos.
- Si actualizas de forma manual las etiquetas en grupos de nodos específicos, GKE reemplaza las etiquetas existentes por tus etiquetas especificadas para ese grupo de nodos.
Verifica las etiquetas de firewall en el clúster
Enumera las etiquetas en los clústeres de Autopilot:
gcloud beta container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format="value(nodePoolAutoConfig.resourceManagerTags)"
Enumera las etiquetas en grupos de nodos específicos:
gcloud beta container node-pools describe NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --format="value(config.resourceManagerTags)"
Desconecta etiquetas de firewall de los clústeres y los grupos de nodos
Para quitar las etiquetas de firewall de los clústeres y los grupos de nodos, actualiza el recurso con un valor vacío para las etiquetas.
Desconecta etiquetas de los clústeres Autopilot
Ejecuta el siguiente comando:
gcloud beta container clusters update CLUSTER_NAME \
--location=LOCATION \
--autoprovisioning-resource-manager-tags=
Desconecta etiquetas de grupos de nodos
Desconecta 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 grupos de nodos nuevos aprovisionados de forma automática.
Desconecta las etiquetas del grupo de nodos:
gcloud beta container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --resource-manager-tags=
GKE quita las etiquetas existentes de ese grupo de nodos.
Borra claves y valores de etiquetas
Para borrar una clave o un valor de etiqueta, asegúrate de que esté desconectada de todos los recursos. Luego, consulta Borra etiquetas en la documentación de Resource Manager.
Compara etiquetas de red con etiquetas
El uso de etiquetas para la aplicación de políticas de firewall tiene beneficios de seguridad y usabilidad significativos en comparación con las etiquetas de red. Del mismo modo, las políticas de firewall de red mejoran las capacidades de las reglas de firewall de VPC, ya que facilitan la aplicación de reglas de firewall en organizaciones, carpetas, proyectos o redes completas.
El uso de etiquetas con políticas de firewall de red es una forma más segura y escalable de administrar el acceso a los entornos de GKE en toda tu organización. Puedes usar etiquetas de red en el mismo clúster que las etiquetas, aunque no puedes usar etiquetas de red para aplicar políticas de firewall de red.
Para obtener una comparación detallada entre las etiquetas y las etiquetas de red, consulta Comparación de etiquetas y etiquetas de red en la documentación de Cloud NGFW.
Diferencias funcionales en los grupos de nodos aprovisionados de forma automática
En los clústeres de Autopilot y en los grupos de nodos de Standard que no usan el aprovisionamiento automático de nodos, las etiquetas de red y las etiquetas de instancia tienen un comportamiento similar. En la siguiente tabla, se muestran las diferencias funcionales entre las etiquetas de red y las etiquetas en los grupos de nodos aprovisionados de forma automática en los clústeres Standard:
Acción | Comportamiento de las etiquetas de red | Comportamiento de las etiquetas |
---|---|---|
GKE aprovisiona de forma automática un grupo de nodos | GKE aplica las etiquetas de red a nivel de clúster | GKE aplica las etiquetas de instancia a nivel de clúster |
Actualizas las etiquetas de red o las etiquetas de instancia en un grupo de nodos aprovisionado de forma automática. |
|
GKE reemplaza las etiquetas existentes para el grupo de nodos, sin importar si existen etiquetas a nivel de clúster. |
Debes actualizar las etiquetas de red o las etiquetas de todo el clúster | GKE reemplaza las etiquetas de red para los grupos de nodos aprovisionados de forma automática nuevos y existentes en el clúster. | GKE aplica las nuevas etiquetas a nivel de clúster a los grupos de nodos nuevos aprovisionados de forma automática. Los grupos de nodos aprovisionados de forma automática conservan las etiquetas que tenían antes de la actualización. |
¿Qué sigue?
- Usa etiquetas para el seguimiento del uso y la aplicación de la política de IAM
- Obtén más información sobre las etiquetas de instancia para firewalls
- Más información sobre las etiquetas