En esta página, se proporcionan instrucciones para configurar políticas de red de tráfico externo a la organización en Google Distributed Cloud (GDC) air-gapped.
El tráfico externo a la organización se refiere a la comunicación entre servicios y cargas de trabajo de diferentes organizaciones y extremos externos.
Antes de comenzar
Para configurar políticas de red de tráfico externo a la organización, debes tener lo siguiente:
- Los roles de identidad y acceso necesarios. Para obtener más información, consulta Prepara los roles y el acceso predefinidos.
- Un proyecto existente. Para obtener más información, consulta Crea un proyecto.
- Inhabilita la protección contra el robo de datos.
- Una de las siguientes configuraciones de red:
- Organizaciones que usan un Interconnect AttachmentGroup común.
- Organizaciones que usan la conectividad a través de sus respectivas redes externas con intercambio de tráfico
Crea una política externa a la organización
Puedes definir políticas de tráfico externo a la organización de entrada o salida para administrar la comunicación entre servicios y cargas de trabajo de diferentes organizaciones y extremos externos.
Puedes crear políticas de red de proyectos de tráfico externo a la organización globales que se apliquen al tráfico en todas las zonas de tu organización. Para obtener más información sobre los recursos globales en un universo de GDC, consulta Descripción general de varias zonas.
La conexión de servicios y cargas de trabajo a un destino fuera de tu proyecto en una organización diferente requiere aprobación explícita. Debes inhabilitar la protección contra el robo de datos para permitir el tráfico externo a la organización.
Crea una regla de firewall de entrada global para el tráfico externo a la organización
Cuando expones cargas de trabajo en tu proyecto con un balanceador de cargas externo, también debes crear una política de entrada ProjectNetworkPolicy para permitir que las direcciones IP de clientes externos accedan a las cargas de trabajo.
Esta política de entrada global se aplica a todas las zonas de tu organización.
Sigue los pasos que se indican a continuación para crear una regla de firewall nueva y permitir el tráfico entrante de cargas de trabajo en un proyecto de una organización diferente:
Console
- En la consola de GDC del proyecto que estás configurando, ve a Herramientas de redes > Firewall en el menú de navegación para abrir la página Firewall.
- Haz clic en Crear en la barra de acciones para comenzar a crear una regla de firewall nueva.
En la página Detalles de las reglas de firewall, completa la siguiente información:
- En el campo Nombre, ingresa un nombre válido para tu regla de firewall.
- En la sección Dirección del tráfico, selecciona Entrada para permitir el tráfico entrante de cargas de trabajo en otras organizaciones.
- En la sección Destino, selecciona una de las siguientes opciones:
- Todas las cargas de trabajo del usuario: Permite conexiones a las cargas de trabajo del proyecto que estás configurando.
- Servicio: Indica que esta regla de firewall segmenta un servicio específico dentro del proyecto que estás configurando.
- Si tu destino es un servicio de proyecto, selecciona el nombre del servicio de la lista de servicios disponibles en el menú desplegable Servicio.
- En la sección Desde , selecciona Fuera de la organización y, luego, ingresa el bloque CIDR de otra organización en el campo CIDR para permitir conexiones desde la red de esa organización.
- Si tu destino son todas las cargas de trabajo del usuario, selecciona una de las siguientes opciones en la sección Protocolos y puertos :
- Permitir todos: Permite conexiones con cualquier protocolo o puerto.
- Protocolos y puertos especificados: Permite conexiones con solo los protocolos y puertos que especificas en los campos correspondientes para la regla de firewall de entrada.
En la página Detalles de las reglas de firewall, haz clic en Crear.
Ahora permitiste conexiones desde cargas de trabajo de proyectos de una organización diferente. Después de crear la regla de firewall, esta se muestra en una tabla en la página Firewall.
API
Configura y aplica tu propia política de entrada ProjectNetworkPolicy personalizada:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: allow-inbound-traffic-from-external
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- ipBlock:
cidr: CIDR
EOF
Reemplaza lo siguiente:
GLOBAL_API_SERVER: Es la ruta de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de la API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.PROJECT: Es el nombre del proyecto de GDC.CIDR: Es el bloque CIDR de otra organización.
Esta política es obligatoria, ya que el balanceador de cargas externo usa el retorno directo del servidor (DSR), que conserva la dirección IP externa de origen y omite el balanceador de cargas en la ruta de retorno.
Crea una regla de firewall de salida global para el tráfico externo a la organización
Para transferir datos a servicios fuera de la organización, primero debes inhabilitar la protección contra el robo de datos. Luego, debes configurar una regla de firewall de salida para permitir el tráfico saliente de las cargas de trabajo o los servicios de tu proyecto.
En esta sección, se describe el proceso para habilitar el tráfico saliente a nivel del proyecto. Para obtener información sobre cómo administrar la conectividad de salida a nivel de la carga de trabajo, consulta Descripción general de NAT.
Esta regla de firewall de salida global se aplica a todas las zonas de tu organización.
Sigue los pasos que se indican a continuación para crear una regla de firewall nueva y permitir el tráfico saliente de cargas de trabajo o servicios de proyectos a cargas de trabajo en otra organización:
Console
- En la consola de GDC del proyecto que estás configurando, ve a Herramientas de redes > Firewall en el menú de navegación para abrir la página Firewall.
- Haz clic en Crear en la barra de acciones para comenzar a crear una regla de firewall nueva.
En la página Detalles de las reglas de firewall, completa la siguiente información:
- En el campo Nombre, ingresa un nombre válido para tu regla de firewall.
- En la sección Dirección del tráfico, selecciona Salida para indicar que esta regla de firewall controla el tráfico saliente.
- En la sección Destino, selecciona una de las siguientes opciones:
- Todas las cargas de trabajo del usuario: Permite conexiones desde las cargas de trabajo del proyecto que estás configurando.
- Servicio: Indica que esta regla de firewall segmenta un servicio específico dentro del proyecto que estás configurando.
- Si tu destino es un servicio de proyecto, selecciona el nombre del servicio de la lista de servicios disponibles en el menú desplegable Servicio.
- En la sección A , selecciona Fuera de la organización y, luego, ingresa el bloque CIDR de otra organización en el campo CIDR para permitir conexiones a la red de esa organización.
- Si tu destino son todas las cargas de trabajo del usuario, selecciona una de las siguientes opciones en la sección Protocolos y puertos :
- Permitir todos: Permite conexiones con cualquier protocolo o puerto.
- Protocolos y puertos especificados: Permite conexiones con solo los protocolos y puertos que especificas en los campos correspondientes para la regla de firewall de salida.
En la página Detalles de las reglas de firewall, haz clic en Crear.
Ahora permitiste conexiones a otra organización. Después de crear la regla de firewall, esta se muestra en una tabla en la página Firewall.
API
Para habilitar el tráfico saliente a servicios fuera de la organización, personaliza tu recurso ProjectNetworkPolicy. Sin embargo, como la prevención contra el robo de datos está habilitada de forma predeterminada, tu política de salida ProjectNetworkPolicy personalizada muestra un error de validación en el campo de estado y el plano de datos la ignora. Este comportamiento es intencional.
Puedes transferir cargas de trabajo desde un proyecto determinado cuando permites el robo de datos para ese proyecto. El tráfico saliente que permites es una traducción de direcciones de red (NAT) de origen que usa una dirección IP conocida asignada al proyecto.
Para habilitar tu política de salida personalizada, sigue estos pasos:
Configura y aplica tu propia política de salida
ProjectNetworkPolicypersonalizada en todas las cargas de trabajo del usuario de un proyecto.Usa el siguiente ejemplo:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-outbound-traffic-to-external spec: subject: subjectType: UserWorkload egress: - to: - ipBlock: cidr: CIDR EOFLa política permite el tráfico saliente a todos los hosts del bloque CIDR, que residen fuera de la organización. Tu primer intento debe causar un error de estado intencional y necesario.
Confirma que ves un error de validación en tu estado.
Pídele al administrador de IAM de la organización que inhabilite la prevención contra el robo de datos. Esta acción habilita tu configuración y, al mismo tiempo, evita todo el tráfico saliente.
Verifica el
ProjectNetworkPolicyque creaste y comprueba que el error en el campo de estado de validación desapareció y que el estadoReadyesTrue, lo que indica que tu política está en vigencia:kubectl --kubeconfig GLOBAL_API_SERVER \ get projectnetworkpolicy allow-outbound-traffic-to-external \ -n PROJECT -o yamlReemplaza lo siguiente:
GLOBAL_API_SERVER: Es la ruta de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de la API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.PROJECT: Es el nombre del proyecto de GDC.
Después de aplicar esta política y, siempre que no hayas definido otras políticas de salida, se rechazará todo el tráfico saliente para PROJECT.
Crea una política externa a la organización para clústeres estándar
Los clústeres estándar son clústeres de Kubernetes con alcance de proyecto que proporcionan mayor control, flexibilidad y permisos de administrador del clúster.
Crea una política externa a la organización de entrada para clústeres estándar
Para crear una política externa a la organización de entrada para clústeres estándar, crea y aplica el siguiente recurso personalizado:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: STANDARD_CLUSTER_PROJECT name: allow-ingress-from-external-endpoint-to-standard-cluster-pod spec: policyType: Ingress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME namespaces: matchLabels: kubernetes.io/metadata.name: SUBJECT_NAMESPACE workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ingress: - from: - ipBlocks: - cidr: EXTERNAL_IP ports: - protocol: TCP port: PORT EOFReemplaza lo siguiente:
GLOBAL_API_SERVER: Es la ruta de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de la API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.STANDARD_CLUSTER_PROJECT: Es el nombre del proyecto de clúster estándar.STANDARD_CLUSTER_NAME: Es el nombre del clúster estándar.SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: Es el valor asociado conSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendreciben el tráfico.EXTERNAL_IP: Es la dirección IP del extremo externo.PORT: Es el puerto de la carga de trabajo del asunto en el que se permite el tráfico.
Crea una política externa a la organización de salida para clústeres estándar
Para crear una política externa a la organización de salida para clústeres estándar, crea y aplica el siguiente recurso personalizado:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: STANDARD_CLUSTER_PROJECT name: allow-egress-from-standard-cluster-pod-to-external-endpoint spec: policyType: Egress subject: subjectType: UserWorkload userWorkloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: STANDARD_CLUSTER_NAME namespaces: matchLabels: kubernetes.io/metadata.name: SUBJECT_NAMESPACE workloads: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE egress: - to: - ipBlocks: - cidr: EXTERNAL_IP ports: - protocol: TCP port: PORT EOFReemplaza lo siguiente:
GLOBAL_API_SERVER: Es la ruta de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de la API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.STANDARD_CLUSTER_PROJECT: Es el nombre del proyecto de clúster estándar.STANDARD_CLUSTER_NAME: Es el nombre del clúster estándar.SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo del asunto. Por ejemplo,app,tierorole.SUBJECT_LABEL_VALUE: Es el valor asociado conSUBJECT_LABEL_KEY. Por ejemplo, siSUBJECT_LABEL_KEYesappySUBJECT_LABEL_VALUEesbackend, las cargas de trabajo con la etiquetaapp: backendenvían el tráfico.EXTERNAL_IP: Es la dirección IP del extremo externo.PORT: Es el puerto del extremo externo al que se permite el tráfico.