Esta página fornece instruções para configurar políticas de rede de tráfego externo à organização no Google Distributed Cloud (GDC) com isolamento físico.
O tráfego externo à organização se refere à comunicação entre serviços e cargas de trabalho de diferentes organizações e endpoints externos.
Antes de começar
Para configurar políticas de rede de tráfego externo à organização, você precisa ter o seguinte:
- Os papéis de identidade e acesso necessários. Para mais informações, consulte Preparar papéis e acesso predefinidos.
- Um projeto. Para mais informações, consulte Criar um projeto.
- Desative a proteção contra exfiltração de dados.
- Uma das seguintes configurações de rede:
- Organizações que usam um AttachmentGroup de interconexão comum.
- Organizações que usam a conectividade pelas respectivas redes externas pareadas.
Criar uma política externa à organização
É possível definir políticas de tráfego externo à organização de entrada ou saída para gerenciar a comunicação entre serviços e cargas de trabalho de diferentes organizações e endpoints externos.
É possível criar políticas de rede de projetos de tráfego externo à organização global que se aplicam ao tráfego em todas as zonas da organização. Para mais informações sobre recursos globais em um universo do GDC, consulte Visão geral de várias zonas.
A conexão de serviços e cargas de trabalho a um destino fora do projeto em uma organização diferente requer aprovação explícita. É necessário desativar a proteção contra exfiltração de dados para permitir o tráfego externo à organização.
Criar uma regra de firewall de entrada global para tráfego externo à organização
Ao expor cargas de trabalho no projeto usando um balanceador de carga externo, também é necessário criar uma política de entrada ProjectNetworkPolicy para permitir que endereços IP de clientes externos acessem as cargas de trabalho.
Essa política de entrada global se aplica a todas as zonas da organização.
Siga estas etapas para criar uma regra de firewall e permitir o tráfego de entrada de cargas de trabalho em um projeto de uma organização diferente:
Console
- No console do GDC do projeto que você está configurando, acesse 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 regra de firewall.
Na página Detalhes da regra de firewall, preencha as seguintes informações:
- No campo Nome, insira um nome válido para a regra de firewall.
- Na seção Direção do tráfego, selecione Entrada para permitir o tráfego de entrada de cargas de trabalho em outras organizações.
- Na seção Destino, selecione uma das seguintes opções:
- Todas as cargas de trabalho do usuário:permite conexões com as cargas de trabalho do projeto que você está configurando.
- Serviço:indica que essa regra de firewall segmenta um serviço específico no projeto que você está configurando.
- Se o destino for um serviço de projeto, selecione o nome do serviço na lista de serviços disponíveis no menu suspenso Serviço.
- Na seção De, selecione Fora da organização e insira o bloco CIDR de outra organização no campo CIDR para permitir conexões da rede dessa organização.
- Se o destino for todas as cargas de trabalho do usuário, selecione uma das seguintes opções na seção Protocolos e portas :
- Permitir tudo:permite conexões usando qualquer protocolo ou porta.
- Protocolos e portas especificados:permite conexões usando apenas os protocolos e portas especificados nos campos correspondentes para a regra de firewall de entrada.
Na página Detalhes da regra de firewall, clique em Criar.
Agora você permitiu conexões de cargas de trabalho de projetos de uma organização diferente. Depois de criar a regra de firewall, ela fica visível em uma tabela na página Firewall.
API
Configure e aplique sua própria 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
Substitua:
GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte Servidores da API global e zonal. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para mais detalhes.PROJECT: o nome do projeto do GDC.CIDR: o bloco CIDR de outra organização.
Essa política é necessária porque o balanceador de carga externo usa o retorno direto do servidor (DSR, na sigla em inglês), que preserva o endereço IP externo de origem e ignora o balanceador de carga no caminho de retorno.
Criar uma regra de firewall de saída global para tráfego externo à organização
Para transferir dados para serviços fora da organização, primeiro desative a proteção contra exfiltração de dados. Em seguida, configure uma regra de firewall de saída para permitir o tráfego de saída das cargas de trabalho ou serviços do projeto.
Esta seção descreve o processo para ativar o tráfego de saída no nível do projeto. Para informações sobre como gerenciar a conectividade de saída no nível da carga de trabalho, consulte Visão geral do NAT.
Essa regra de firewall de saída global se aplica a todas as zonas da organização.
Siga estas etapas para criar uma regra de firewall e permitir o tráfego de saída de cargas de trabalho ou serviços de projetos para cargas de trabalho em outra organização:
Console
- No console do GDC do projeto que você está configurando, acesse 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 regra de firewall.
Na página Detalhes da regra de firewall, preencha as seguintes informações:
- No campo Nome, insira um nome válido para a regra de firewall.
- Na seção Direção do tráfego, selecione Saída para indicar que essa regra de firewall está controlando o tráfego de saída.
- Na seção Destino, selecione uma das seguintes opções:
- Todas as cargas de trabalho do usuário:permite conexões das cargas de trabalho do projeto que você está configurando.
- Serviço:indica que essa regra de firewall segmenta um serviço específico no projeto que você está configurando.
- Se o destino for um serviço de projeto, selecione o nome do serviço na lista de serviços disponíveis no menu suspenso Serviço.
- Na seção Para, selecione Fora da organização e insira o bloco CIDR de outra organização no campo CIDR para permitir conexões com a rede dessa organização.
- Se o destino for todas as cargas de trabalho do usuário, selecione uma das seguintes opções na seção Protocolos e portas :
- Permitir tudo:permite conexões usando qualquer protocolo ou porta.
- Protocolos e portas especificados:permite conexões usando apenas os protocolos e portas especificados nos campos correspondentes para a regra de firewall de saída.
Na página Detalhes da regra de firewall, clique em Criar.
Agora você permitiu conexões com outra organização. Depois de criar a regra de firewall, ela fica visível em uma tabela na página Firewall.
API
Para ativar o tráfego de saída para serviços fora da organização, personalize o recurso ProjectNetworkPolicy. No entanto, como a prevenção contra exfiltração de dados está ativada por padrão, a política de saída ProjectNetworkPolicy personalizada mostra um erro de validação no campo de status, e o plano de dados a ignora. Esse comportamento acontece por design.
É possível transferir cargas de trabalho de um determinado projeto quando você permite a exfiltração de dados para esse projeto. O tráfego de saída permitido é uma conversão de endereços de rede de origem (NAT) usando um endereço IP conhecido alocado para o projeto.
Para ativar sua política de saída personalizada, siga estas etapas:
Configure e aplique sua própria política de saída
ProjectNetworkPolicypersonalizada em todas as cargas de trabalho do usuário em um projeto.Use o exemplo a seguir:
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 EOFA política permite o tráfego de saída para todos os hosts no bloco CIDR, que residem fora da organização. Sua primeira tentativa precisa causar um erro de status intencional e necessário.
Confirme se há um erro de validação no status.
Peça ao administrador do IAM da organização para desativar a prevenção contra exfiltração de dados. Essa ação ativa sua configuração, evitando todo o outro tráfego de saída.
Verifique o
ProjectNetworkPolicycriado e confirme se o erro no campo de status de validação desapareceu e se o statusReadyéTrue, indicando que sua política está em vigor:kubectl --kubeconfig GLOBAL_API_SERVER \ get projectnetworkpolicy allow-outbound-traffic-to-external \ -n PROJECT -o yamlSubstitua:
GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte Servidores da API global e zonal. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para mais detalhes.PROJECT: o nome do projeto do GDC.
Depois de aplicar essa política e, desde que você não tenha definido outras políticas de saída, todo o outro tráfego de saída será negado para PROJECT.
Criar uma política externa à organização para clusters padrão
Os clusters padrão são clusters do Kubernetes com escopo de projeto que oferecem maior controle, flexibilidade e permissões de administrador de cluster.
Criar uma política externa à organização de entrada para clusters padrão
Para criar uma política externa à organização de entrada para clusters padrão, 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: 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 EOFSubstitua:
GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte Servidores da API global e zonal. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para detalhes.STANDARD_CLUSTER_PROJECT: o nome do projeto de cluster padrão.STANDARD_CLUSTER_NAME: o nome do cluster padrão.SUBJECT_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho do assunto. Por exemplo,app,tierourole.SUBJECT_LABEL_VALUE: o valor associado àSUBJECT_LABEL_KEY. Por exemplo, seSUBJECT_LABEL_KEYforappeSUBJECT_LABEL_VALUEforbackend, as cargas de trabalho com o rótuloapp: backendvão receber o tráfego.EXTERNAL_IP: o endereço IP do endpoint externo.PORT: a porta na carga de trabalho do assunto em que o tráfego é permitido.
Criar uma política externa à organização de saída para clusters padrão
Para criar uma política externa à organização de saída para clusters padrão, 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: 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 EOFSubstitua:
GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte Servidores da API global e zonal. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para detalhes.STANDARD_CLUSTER_PROJECT: o nome do projeto de cluster padrão.STANDARD_CLUSTER_NAME: o nome do cluster padrão.SUBJECT_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho do assunto. Por exemplo,app,tierourole.SUBJECT_LABEL_VALUE: o valor associado àSUBJECT_LABEL_KEY. Por exemplo, seSUBJECT_LABEL_KEYforappeSUBJECT_LABEL_VALUEforbackend, as cargas de trabalho com o rótuloapp: backendvão enviar o tráfego.EXTERNAL_IP: o endereço IP do endpoint externo.PORT: a porta no endpoint externo para o qual o tráfego é permitido.