En esta página, se proporcionan instrucciones para configurar políticas de red de tráfico dentro del proyecto en Google Distributed Cloud (GDC) aislado.
Las políticas de red del proyecto definen reglas de entrada o salida. Puedes definir políticas que permitan la comunicación dentro de los proyectos, entre proyectos y con direcciones IP externas.
De forma predeterminada, estas políticas se aplican a nivel global en todas las zonas. Para obtener más información sobre los recursos globales en un universo de GDC, consulta la descripción general de varias zonas.
Si se necesita la aplicación de políticas de tráfico dentro del proyecto en una sola zona, consulta Crea una política dentro del proyecto a nivel de la carga de trabajo para una sola zona.
Antes de comenzar
Para configurar políticas de red de tráfico dentro del proyecto, debes tener lo siguiente:
- Los roles de identidad y acceso necesarios Para administrar las políticas de un proyecto específico, necesitas el rol de
project-networkpolicy-admin
. Para los entornos de varias zonas en los que necesitas administrar políticas que abarcan todas las zonas, necesitas el rol deglobal-project-networkpolicy-admin
. Para obtener más información, consulta Cómo preparar roles y acceso predefinidos. - Un proyecto existente Para obtener más información, consulta Cómo crear un proyecto.
Crea una política intraproyecto
Para el tráfico dentro de un proyecto, GDC aplica una política de red del proyecto predefinida, la política intraproyecto, a cada proyecto de forma predeterminada. De forma predeterminada, las cargas de trabajo en un espacio de nombres del proyecto pueden comunicarse entre sí sin exponer nada a los recursos externos.
De forma predeterminada, no hay una política de salida, por lo que se permite el tráfico saliente para todo el tráfico dentro del proyecto. Sin embargo, cuando estableces una sola política de salida, solo se permite el tráfico que especifica la política.
Crea una política de entrada intraproyecto
Cuando creas un proyecto, también creas de forma implícita un recurso ProjectNetworkPolicy
base predeterminado que permite la comunicación dentro del proyecto. Esta política permite el tráfico entrante de otras cargas de trabajo en el mismo proyecto.
Puedes quitar la política predeterminada, pero ten en cuenta que esta acción deniega la comunicación dentro del proyecto para todos los servicios y cargas de trabajo del proyecto. Para quitar la política, usa el comando kubectl delete
:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Puedes volver a agregar la política predeterminada aplicando el siguiente manifiesto:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: base-policy-allow-intra-project-traffic
spec:
policyType: Ingress
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT
EOF
Reemplaza lo siguiente:
GLOBAL_API_SERVER
: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.PROJECT
: nombre del proyecto.
Crea una política de salida intraproyecto
Cuando inhabilitas la prevención de robo de datos y aplicas una política de salida de ProjectNetworkPolicy
al proyecto, como impedir el acceso a un recurso externo, usa la siguiente política obligatoria para permitir el tráfico saliente dentro del proyecto:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT
name: allow-intra-project-outbound-traffic
spec:
policyType: Egress
egress:
- to:
- projectSelector:
projects:
matchNames:
- PROJECT
EOF
Reemplaza lo siguiente:
GLOBAL_API_SERVER
: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.PROJECT
: nombre del proyecto.
Crea una política intraproyecto a nivel de la carga de trabajo
Las políticas de red a nivel de la carga de trabajo ofrecen un control detallado sobre la comunicación entre las cargas de trabajo individuales dentro de un proyecto. Esta granularidad permite un control más estricto del acceso a la red, lo que mejora la seguridad y el uso de los recursos.
Crea una política de entrada a nivel de la carga de trabajo dentro del proyecto
Cuando creas un proyecto, también creas de forma implícita un recurso ProjectNetworkPolicy
base predeterminado que permite la comunicación dentro del proyecto entre todas las cargas de trabajo. Esta política permite el tráfico entrante de otras cargas de trabajo en el mismo proyecto.
Para crear una política de ingreso a nivel de la carga de trabajo dentro del proyecto, primero se debe borrar la política base predeterminada. De lo contrario, es posible que se produzca un comportamiento inesperado.
Para borrar la política básica predeterminada, ejecuta el siguiente comando:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Para crear una política intraproyecto a nivel de la carga de trabajo de entrada, 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: PROJECT name: allow-intra-project-inbound-traffic-from-target-to-subject spec: policyType: Ingress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE EOF
Reemplaza lo siguiente:
GLOBAL_API_SERVER
: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.PROJECT
: nombre del proyecto.SUBJECT_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de origen. Por ejemplo,app
,tier
orole
.SUBJECT_LABEL_VALUE
: Es el valor asociado con elSUBJECT_LABEL_KEY
. Especifica qué cargas de trabajo son la fuente del tráfico permitido. Por ejemplo, siSUBJECT_LABEL_KEY
esapp
ySUBJECT_LABEL_VALUE
esbackend
, las cargas de trabajo con la etiquetaapp: backend
son la fuente de tráfico.TARGET_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de destino.TARGET_LABEL_VALUE
: Es el valor asociado con elTARGET_LABEL_KEY
. Especifica qué cargas de trabajo son el destino del tráfico permitido.
Crea una política de salida a nivel de la carga de trabajo dentro del proyecto
Para crear una política de salida a nivel de la carga de trabajo dentro del proyecto, 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: PROJECT name: allow-intra-project-outbound-traffic-to-subject-from-target spec: policyType: Egress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE EOF
Reemplaza lo siguiente:
GLOBAL_API_SERVER
: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.PROJECT
: nombre del proyecto.SUBJECT_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de origen. Por ejemplo,app
,tier
orole
.SUBJECT_LABEL_VALUE
: Es el valor asociado con elSUBJECT_LABEL_KEY
. Especifica qué cargas de trabajo son la fuente del tráfico permitido. Por ejemplo, siSUBJECT_LABEL_KEY
esapp
ySUBJECT_LABEL_VALUE
esbackend
, las cargas de trabajo con la etiquetaapp: backend
son la fuente de tráfico.TARGET_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de destino.TARGET_LABEL_VALUE
: Es el valor asociado con elTARGET_LABEL_KEY
. Especifica qué cargas de trabajo son el destino del tráfico permitido.
Crea una política intraproyecto a nivel de la carga de trabajo de una sola zona
Las políticas de red a nivel de la carga de trabajo pueden aplicar PNP a lo largo de una sola zona. Se pueden agregar etiquetas específicas a las cargas de trabajo dentro de una sola zona, lo que te permite controlar la comunicación entre cargas de trabajo individuales dentro de un proyecto o en diferentes proyectos para esa zona.
Crea una política intraproyecto a nivel de la carga de trabajo de entrada de una sola zona
Cuando creas un proyecto, también creas de forma implícita un recurso ProjectNetworkPolicy
base predeterminado que permite la comunicación dentro del proyecto entre todas las cargas de trabajo. Esta política permite el tráfico entrante de otras cargas de trabajo en el mismo proyecto.
Para crear una política intraproyecto a nivel de la carga de trabajo de entrada de una sola zona, primero se debe borrar la política básica predeterminada. De lo contrario, es posible que se produzca un comportamiento inesperado.
Para borrar la política básica predeterminada, ejecuta el siguiente comando:
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
Para crear una política de red de tráfico interno del proyecto a nivel de la carga de trabajo de entrada de una sola zona, 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: PROJECT name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject spec: policyType: Ingress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE EOF
Reemplaza lo siguiente:
GLOBAL_API_SERVER
: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.PROJECT
: nombre del proyecto.SUBJECT_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de origen. Por ejemplo,app
,tier
orole
.SUBJECT_LABEL_VALUE
: Es el valor asociado con elSUBJECT_LABEL_KEY
. Especifica qué cargas de trabajo son la fuente del tráfico permitido. Por ejemplo, siSUBJECT_LABEL_KEY
esapp
ySUBJECT_LABEL_VALUE
esbackend
, las cargas de trabajo con la etiquetaapp: backend
son la fuente de tráfico.TARGET_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de destino.TARGET_LABEL_VALUE
: Es el valor asociado con elTARGET_LABEL_KEY
. Especifica qué cargas de trabajo son el destino del tráfico permitido.ZONE_SUBJECT_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar la zona de origen. Por ejemplo,zone
oregion
.ZONE_SUBJECT_LABEL_VALUE
: Es el valor asociado con elZONE_SUBJECT_LABEL_KEY
. Especifica qué zona es la fuente del tráfico permitido. Por ejemplo, siZONE_SUBJECT_LABEL_KEY
eszone
yZONE_SUBJECT_LABEL_VALUE
esus-central1-a
, las cargas de trabajo con la etiquetazone: us-central1-a
son la fuente de tráfico.ZONE_TARGET_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar la zona de destino.ZONE_TARGET_LABEL_VALUE
: Es el valor asociado con elZONE_TARGET_LABEL_KEY
. Especifica qué zona es el destino del tráfico permitido.
Crea una política intraproyecto a nivel de la carga de trabajo de salida de una sola zona
Para crear una política intraproyecto a nivel de la carga de trabajo de salida de una sola zona, 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: PROJECT name: allow-single-zone-intra-project-outbound-traffic-to-subject-from-target spec: policyType: Egress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE EOF
Reemplaza lo siguiente:
GLOBAL_API_SERVER
: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.PROJECT
: nombre del proyecto.SUBJECT_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de origen. Por ejemplo,app
,tier
orole
.SUBJECT_LABEL_VALUE
: Es el valor asociado con elSUBJECT_LABEL_KEY
. Especifica qué cargas de trabajo son la fuente del tráfico permitido. Por ejemplo, siSUBJECT_LABEL_KEY
esapp
ySUBJECT_LABEL_VALUE
esbackend
, las cargas de trabajo con la etiquetaapp: backend
son la fuente de tráfico.TARGET_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de destino.TARGET_LABEL_VALUE
: Es el valor asociado con elTARGET_LABEL_KEY
. Especifica qué cargas de trabajo son el destino del tráfico permitido.ZONE_SUBJECT_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar la zona de origen. Por ejemplo,zone
oregion
.ZONE_SUBJECT_LABEL_VALUE
: Es el valor asociado con elZONE_SUBJECT_LABEL_KEY
. Especifica qué zona es la fuente del tráfico permitido. Por ejemplo, siZONE_SUBJECT_LABEL_KEY
eszone
yZONE_SUBJECT_LABEL_VALUE
esus-central1-a
, las cargas de trabajo con la etiquetazone: us-central1-a
son la fuente de tráfico.ZONE_TARGET_LABEL_KEY
: Es la clave de la etiqueta que se usa para seleccionar la zona de destino.ZONE_TARGET_LABEL_VALUE
: Es el valor asociado con elZONE_TARGET_LABEL_KEY
. Especifica qué zona es el destino del tráfico permitido.