Esta página fornece instruções para configurar políticas de rede de tráfego entre projetos no Google Distributed Cloud (GDC) air-gapped.
O tráfego entre projetos refere-se à comunicação entre serviços e cargas de trabalho de diferentes espaços de nomes de projetos, mas dentro da mesma organização.
Por predefinição, os serviços e as cargas de trabalho num projeto estão isolados de serviços e cargas de trabalho externos. No entanto, os serviços e as cargas de trabalho de diferentes espaços de nomes de projetos e dentro da mesma organização podem comunicar entre si aplicando políticas de rede de tráfego entre projetos.
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 entre projetos, 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çãoglobal-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
Pode definir políticas de tráfego de entrada ou saída entre projetos para gerir a comunicação entre projetos.
Crie uma política entre projetos de entrada
Para que as cargas de trabalho ou os serviços do projeto permitam ligações de outras cargas de trabalho noutro projeto na sua organização, tem de configurar uma regra de firewall de entrada para permitir o tráfego de entrada de outras cargas de trabalho do projeto.
Esta política aplica-se a todas as zonas na sua organização.
Siga os passos seguintes para criar uma nova regra de firewall e permitir o tráfego de entrada de cargas de trabalho noutro projeto:
Consola
- Na consola do GDC do projeto que está a configurar, aceda a Rede > Firewall no menu de navegação para abrir a página Firewall.
- Clique em Criar na barra de ações para começar a criar uma nova regra de firewall.
Na página Detalhes da regra de firewall, preencha as seguintes informações:
- No campo Nome, introduza um nome válido para a regra de firewall.
- Na secção Direção do tráfego, selecione Entrada para permitir o tráfego de entrada de cargas de trabalho noutros projetos.
- Na secção Segmentar, selecione uma das seguintes opções:
- Todas as cargas de trabalho do utilizador: permite ligações às cargas de trabalho do projeto que está a configurar.
- Serviço: indica que esta regra de firewall destina-se a um serviço específico no projeto que está a configurar.
- Se o seu alvo for um serviço de projeto, selecione o nome do serviço na lista de serviços disponíveis no menu pendente Serviço.
- Na secção De, selecione uma das seguintes opções:
- Todos os projetos: permite ligações de cargas de trabalho em todos os projetos da mesma organização.
- Outro projeto e Todas as cargas de trabalho do utilizador: permitem ligações de cargas de trabalho noutro projeto da mesma organização.
- Se quiser transferir cargas de trabalho apenas de outro projeto, selecione um projeto ao qual tenha acesso na lista de projetos no menu pendente ID do projeto.
- Se o destino for todas as cargas de trabalho do utilizador, selecione uma das seguintes opções na secção Protocolos e portas:
- Permitir tudo: permitir ligações através de qualquer protocolo ou porta.
- Protocolos e portas especificados: permitem ligações que usam apenas os protocolos e as portas que especificar nos campos correspondentes para a regra da firewall de entrada.
Na página Detalhes da regra de firewall, clique em Criar.
Permitiu ligações de outras cargas de trabalho do projeto na mesma organização. Depois de criar a regra de firewall, esta fica visível numa tabela na página Firewall.
API
A seguinte política permite que as cargas de trabalho no projeto PROJECT_1
permitam ligações de cargas de trabalho no projeto PROJECT_2
, bem como o tráfego de retorno para os mesmos fluxos. Aplique a política:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: allow-inbound-traffic-from-PROJECT_2
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT_2
EOF
Substitua GLOBAL_API_SERVER
pelo 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.
O comando anterior permite que PROJECT_2
aceda a PROJECT_1
, mas não permite ligações iniciadas a partir de PROJECT_1
para PROJECT_2
. Para
este último, precisa de uma política recíproca no projeto
PROJECT_2
. Aplique a política de reciprocidade:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_2
name: allow-inbound-traffic-from-PROJECT_1
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT_1
EOF
As ligações são agora permitidas de e para
PROJECT_1
e PROJECT_2
.
Crie uma política entre projetos de saída
Quando concede uma política de tráfego entre projetos de entrada para permitir que as cargas de trabalho num projeto permitam ligações de cargas de trabalho noutro projeto, esta ação também concede o tráfego de retorno para os mesmos fluxos. Por conseguinte, não precisa de uma política de rede de tráfego entre projetos de saída no projeto original.
Por exemplo, se criar uma política que permita o tráfego de PROJECT_1
para PROJECT_2
e a proteção contra a exfiltração de dados estiver desativada, tem de criar uma política de entrada em PROJECT_2
e uma política de saída em PROJECT_1
. No entanto, os pacotes de resposta são excluídos da aplicação de políticas, pelo que não precisa de políticas adicionais.
Siga os passos seguintes para criar uma nova regra de firewall e permitir o tráfego de saída de cargas de trabalho num projeto:
- Na consola do GDC do projeto que está a configurar, aceda a Rede > Firewall no menu de navegação para abrir a página Firewall.
- Clique em Criar na barra de ações para começar a criar uma nova regra de firewall.
Na página Detalhes da regra de firewall, preencha as seguintes informações:
- No campo Nome, introduza um nome válido para a regra de firewall.
- Na secção Direção do tráfego, selecione Saída para indicar que esta regra de firewall está a controlar o tráfego de saída.
- Na secção Segmentar, selecione uma das seguintes opções:
- Todas as cargas de trabalho do utilizador: permitem ligações das cargas de trabalho do projeto que está a configurar.
- Serviço: indica que esta regra de firewall destina-se a um serviço específico no projeto que está a configurar.
- Se o seu alvo for um serviço de projeto, selecione o nome do serviço na lista de serviços disponíveis no menu pendente Serviço.
- Na secção Para, selecione uma das seguintes opções:
- Todos os projetos: permitem ligações a cargas de trabalho em todos os projetos da mesma organização.
- Outro projeto e Todas as cargas de trabalho do utilizador: permitem ligações a cargas de trabalho noutro projeto da mesma organização.
- Se quiser transferir cargas de trabalho apenas para outro projeto, selecione um projeto ao qual possa aceder a partir da lista de projetos no menu pendente ID do projeto.
- Se o destino for todas as cargas de trabalho do utilizador, selecione uma das seguintes opções na secção Protocolos e portas:
- Permitir tudo: permitir ligações através de qualquer protocolo ou porta.
- Protocolos e portas especificados: permitem ligações que usam apenas os protocolos e as portas que especificar nos campos correspondentes para a regra da firewall de saída.
Na página Detalhes da regra de firewall, clique em Criar.
Permitiu ligações a outras cargas de trabalho do projeto na mesma organização. Depois de criar a regra de firewall, esta fica visível numa tabela na página Firewall.
Crie uma política entre projetos 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 em vários projetos. Esta granularidade permite um controlo mais rigoroso do acesso à rede, melhorando a segurança e a utilização de recursos.
Crie uma política entre projetos ao nível da carga de trabalho de entrada
Para criar uma política entre projetos 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_1 name: allow-cross-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_2 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_1
: o nome do projeto que está a receber o tráfego.PROJECT_2
: o nome do projeto de onde o tráfego está a ser gerado.SUBJECT_LABEL_KEY
: a chave da etiqueta usada para selecionar as cargas de trabalho de origem. Por exemplo,app
,tier
ourole
.SUBJECT_LABEL_VALUE
: o valor associado aoSUBJECT_LABEL_KEY
. Especifica que cargas de trabalho são a origem do tráfego permitido. Por exemplo, seSUBJECT_LABEL_KEY
forapp
eSUBJECT_LABEL_VALUE
forbackend
, as cargas de trabalho com a etiquetaapp: 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 aoTARGET_LABEL_KEY
. Especifica que cargas de trabalho são o destino do tráfego permitido.
Crie uma política entre projetos ao nível da carga de trabalho de saída
Para criar uma política entre projetos 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_1 name: allow-cross-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_2 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_1
: o nome do projeto que está a enviar o tráfego.PROJECT_2
: o nome do projeto que está a receber o tráfego.SUBJECT_LABEL_KEY
: a chave da etiqueta usada para selecionar as cargas de trabalho de origem. Por exemplo,app
,tier
ourole
.SUBJECT_LABEL_VALUE
: o valor associado aoSUBJECT_LABEL_KEY
. Especifica que cargas de trabalho são a origem do tráfego permitido. Por exemplo, seSUBJECT_LABEL_KEY
forapp
eSUBJECT_LABEL_VALUE
forbackend
, as cargas de trabalho com a etiquetaapp: 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 aoTARGET_LABEL_KEY
. Especifica que cargas de trabalho são o destino do tráfego permitido.
Crie uma política entre projetos 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 entre projetos ao nível da carga de trabalho de entrada de zona única
Para criar uma política entre projetos ao nível da carga de trabalho de entrada 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_1 name: allow-single-zone-cross-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_2 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_1
: o nome do projeto que está a receber o tráfego.PROJECT_2
: o nome do projeto de onde o tráfego está a ser gerado.SUBJECT_LABEL_KEY
: a chave da etiqueta usada para selecionar as cargas de trabalho de origem. Por exemplo,app
,tier
ourole
.SUBJECT_LABEL_VALUE
: o valor associado aoSUBJECT_LABEL_KEY
. Especifica que cargas de trabalho são a origem do tráfego permitido. Por exemplo, seSUBJECT_LABEL_KEY
forapp
eSUBJECT_LABEL_VALUE
forbackend
, as cargas de trabalho com a etiquetaapp: 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 aoTARGET_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
ouregion
.ZONE_SUBJECT_LABEL_VALUE
: o valor associado aoZONE_SUBJECT_LABEL_KEY
. Especifica que zona é a origem do tráfego permitido. Por exemplo, seZONE_SUBJECT_LABEL_KEY
forzone
eZONE_SUBJECT_LABEL_VALUE
forus-central1-a
, as cargas de trabalho com a etiquetazone: 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 aoZONE_TARGET_LABEL_KEY
. Especifica qual a zona que é o destino do tráfego permitido.
Crie uma política entre projetos ao nível da carga de trabalho de saída de uma única zona
Para criar uma política entre projetos 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_1 name: allow-single-zone-cross-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_2 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_1
: o nome do projeto que está a enviar o tráfego.PROJECT_2
: o nome do projeto que está a receber o tráfego.SUBJECT_LABEL_KEY
: a chave da etiqueta usada para selecionar as cargas de trabalho de origem. Por exemplo,app
,tier
ourole
.SUBJECT_LABEL_VALUE
: o valor associado aoSUBJECT_LABEL_KEY
. Especifica que cargas de trabalho são a origem do tráfego permitido. Por exemplo, seSUBJECT_LABEL_KEY
forapp
eSUBJECT_LABEL_VALUE
forbackend
, as cargas de trabalho com a etiquetaapp: 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 aoTARGET_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
ouregion
.ZONE_SUBJECT_LABEL_VALUE
: o valor associado aoZONE_SUBJECT_LABEL_KEY
. Especifica que zona é a origem do tráfego permitido. Por exemplo, seZONE_SUBJECT_LABEL_KEY
forzone
eZONE_SUBJECT_LABEL_VALUE
forus-central1-a
, as cargas de trabalho com a etiquetazone: 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 aoZONE_TARGET_LABEL_KEY
. Especifica qual a zona que é o destino do tráfego permitido.