Crie políticas de rede intraprojeto

Esta página fornece instruções para configurar políticas de rede de tráfego entre projetos no Google Distributed Cloud (GDC) air-gapped.

As políticas de rede do projeto definem regras de entrada ou saída. Pode definir políticas que permitam a comunicação nos projetos, entre projetos e com endereços IP externos.

Por predefinição, estas políticas aplicam-se globalmente em todas as zonas. Para mais informações sobre os recursos globais num universo da GDC, consulte o artigo Vista geral de várias zonas.

Se for necessária a aplicação de políticas de tráfego entre projetos numa única zona, consulte o artigo Crie uma política entre projetos ao nível da carga de trabalho de uma única zona.

Antes de começar

Para configurar políticas de rede de tráfego intralocal, tem de ter o seguinte:

  • As funções de identidade e acesso necessárias. Para gerir políticas de um projeto específico, precisa da função project-networkpolicy-admin. Para ambientes multizona onde tem de gerir políticas que abrangem todas as zonas, precisa da função global-project-networkpolicy-admin. Para mais informações, consulte o artigo Prepare funções e acesso predefinidos.
  • Um projeto existente. Para mais informações, consulte Crie um projeto.

Crie uma política entre projetos

Para o tráfego num projeto, a GDC aplica uma política de rede do projeto predefinida, a política intraprojeto, a cada projeto por predefinição. Por predefinição, as cargas de trabalho num espaço de nomes do projeto têm a capacidade de comunicar entre si sem expor nada a recursos externos.

Por predefinição, não existe nenhuma política de saída, pelo que o tráfego de saída é permitido para todo o tráfego intraprojeto. No entanto, quando define uma única política de saída, apenas o tráfego especificado pela política é permitido.

Crie uma política de entrada entre projetos

Quando cria um projeto, cria implicitamente um recurso base ProjectNetworkPolicy predefinido que permite a comunicação entre projetos. Esta política permite o tráfego de entrada de outras cargas de trabalho no mesmo projeto.

Pode remover a política predefinida, mas tenha em atenção que esta remoção resulta na recusa da comunicação entre projetos para todos os serviços e cargas de trabalho no projeto. Para remover a política, use o comando kubectl delete:

kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT

Pode voltar a adicionar a política predefinida aplicando o seguinte manifesto:

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

Substitua o seguinte:

  • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores de API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.
  • PROJECT: o nome do seu projeto.

Crie uma política de saída entre projetos

Quando desativa a prevenção de exfiltração de dados e aplica uma política de saída ProjectNetworkPolicy ao projeto, como impedir o acesso a um recurso externo, use a seguinte política obrigatória para permitir o tráfego de saída no projeto:

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

Substitua o seguinte:

  • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores de API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.
  • PROJECT: o nome do seu projeto.

Crie uma política intraprojeto ao nível da carga de trabalho

As políticas de rede ao nível da carga de trabalho oferecem um controlo detalhado sobre a comunicação entre cargas de trabalho individuais num projeto. Esta granularidade permite um controlo mais rigoroso do acesso à rede, melhorando a segurança e a utilização de recursos.

Crie uma política intralocal de nível de carga de trabalho de entrada

Quando cria um projeto, cria implicitamente um recurso base ProjectNetworkPolicy predefinido que permite a comunicação no projeto entre todas as cargas de trabalho. Esta política permite o tráfego de entrada de outras cargas de trabalho no mesmo projeto.

Para criar uma política intraprojeto ao nível da carga de trabalho de entrada, tem de eliminar primeiro a política base predefinida. Caso contrário, pode ocorrer um comportamento inesperado.

  1. Para eliminar a política base predefinida, execute o seguinte comando:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Para criar uma política intraprojeto ao nível da carga de trabalho de entrada, crie e aplique o seguinte 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
    

    Substitua o seguinte:

    • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores de API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.
    • PROJECT: o nome do seu projeto.
    • SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho de origem. Por exemplo, app, tier ou role.
    • SUBJECT_LABEL_VALUE: o valor associado ao SUBJECT_LABEL_KEY. Especifica que cargas de trabalho são a origem do tráfego permitido. Por exemplo, se SUBJECT_LABEL_KEY for app e SUBJECT_LABEL_VALUE for backend, as cargas de trabalho com a etiqueta app: backend são a origem do tráfego.
    • TARGET_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho de destino.
    • TARGET_LABEL_VALUE: o valor associado ao TARGET_LABEL_KEY. Especifica que cargas de trabalho são o destino do tráfego permitido.

Crie uma política de nível de carga de trabalho de saída intraprojeto

  • Para criar uma política intraprojeto ao nível da carga de trabalho de saída, crie e aplique o seguinte 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
    

    Substitua o seguinte:

    • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores de API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.
    • PROJECT: o nome do seu projeto.
    • SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho de origem. Por exemplo, app, tier ou role.
    • SUBJECT_LABEL_VALUE: o valor associado ao SUBJECT_LABEL_KEY. Especifica que cargas de trabalho são a origem do tráfego permitido. Por exemplo, se SUBJECT_LABEL_KEY for app e SUBJECT_LABEL_VALUE for backend, as cargas de trabalho com a etiqueta app: backend são a origem do tráfego.
    • TARGET_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho de destino.
    • TARGET_LABEL_VALUE: o valor associado ao TARGET_LABEL_KEY. Especifica que cargas de trabalho são o destino do tráfego permitido.

Crie uma política intraprojeto ao nível da carga de trabalho de zona única

As políticas de rede ao nível da carga de trabalho podem aplicar o PNP ao longo de uma única zona. Podem ser adicionadas etiquetas específicas a cargas de trabalho numa única zona, o que lhe permite controlar a comunicação entre cargas de trabalho individuais num projeto ou em projetos diferentes para essa zona.

Crie uma política intraprojeto ao nível da carga de trabalho de entrada de zona única

Quando cria um projeto, cria implicitamente um recurso base ProjectNetworkPolicy predefinido que permite a comunicação no projeto entre todas as cargas de trabalho. Esta política permite o tráfego de entrada de outras cargas de trabalho no mesmo projeto.

Para criar uma política intraprojeto ao nível da carga de trabalho de entrada de uma única zona, tem de eliminar primeiro a política base predefinida. Caso contrário, pode ocorrer um comportamento inesperado.

  1. Para eliminar a política base predefinida, execute o seguinte comando:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Para criar uma política de rede de tráfego intralocal de nível de carga de trabalho de entrada de zona única, crie e aplique o seguinte 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
    

    Substitua o seguinte:

    • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores de API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.
    • PROJECT: o nome do seu projeto.
    • SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho de origem. Por exemplo, app, tier ou role.
    • SUBJECT_LABEL_VALUE: o valor associado ao SUBJECT_LABEL_KEY. Especifica que cargas de trabalho são a origem do tráfego permitido. Por exemplo, se SUBJECT_LABEL_KEY for app e SUBJECT_LABEL_VALUE for backend, as cargas de trabalho com a etiqueta app: backend são a origem do tráfego.
    • TARGET_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho de destino.
    • TARGET_LABEL_VALUE: o valor associado ao TARGET_LABEL_KEY. Especifica que cargas de trabalho são o destino do tráfego permitido.
    • ZONE_SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar a zona de origem. Por exemplo, zone ou region.
    • ZONE_SUBJECT_LABEL_VALUE: o valor associado ao ZONE_SUBJECT_LABEL_KEY. Especifica que zona é a origem do tráfego permitido. Por exemplo, se ZONE_SUBJECT_LABEL_KEY for zone e ZONE_SUBJECT_LABEL_VALUE for us-central1-a, as cargas de trabalho com a etiqueta zone: us-central1-a são a origem do tráfego.
    • ZONE_TARGET_LABEL_KEY: a chave da etiqueta usada para selecionar a zona de destino.
    • ZONE_TARGET_LABEL_VALUE: o valor associado ao ZONE_TARGET_LABEL_KEY. Especifica qual a zona que é o destino do tráfego permitido.

Crie uma política intraprojeto ao nível da carga de trabalho de saída de uma única zona

  • Para criar uma política intraprojeto ao nível da carga de trabalho de saída de uma única zona, crie e aplique o seguinte 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
    

    Substitua o seguinte:

    • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores de API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.
    • PROJECT: o nome do seu projeto.
    • SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho de origem. Por exemplo, app, tier ou role.
    • SUBJECT_LABEL_VALUE: o valor associado ao SUBJECT_LABEL_KEY. Especifica que cargas de trabalho são a origem do tráfego permitido. Por exemplo, se SUBJECT_LABEL_KEY for app e SUBJECT_LABEL_VALUE for backend, as cargas de trabalho com a etiqueta app: backend são a origem do tráfego.
    • TARGET_LABEL_KEY: a chave da etiqueta usada para selecionar as cargas de trabalho de destino.
    • TARGET_LABEL_VALUE: o valor associado ao TARGET_LABEL_KEY. Especifica que cargas de trabalho são o destino do tráfego permitido.
    • ZONE_SUBJECT_LABEL_KEY: a chave da etiqueta usada para selecionar a zona de origem. Por exemplo, zone ou region.
    • ZONE_SUBJECT_LABEL_VALUE: o valor associado ao ZONE_SUBJECT_LABEL_KEY. Especifica que zona é a origem do tráfego permitido. Por exemplo, se ZONE_SUBJECT_LABEL_KEY for zone e ZONE_SUBJECT_LABEL_VALUE for us-central1-a, as cargas de trabalho com a etiqueta zone: us-central1-a são a origem do tráfego.
    • ZONE_TARGET_LABEL_KEY: a chave da etiqueta usada para selecionar a zona de destino.
    • ZONE_TARGET_LABEL_VALUE: o valor associado ao ZONE_TARGET_LABEL_KEY. Especifica qual a zona que é o destino do tráfego permitido.