Permitir o acesso a recursos protegidos de um endereço IP interno

Esta página descreve como permitir o tráfego de endereços IP internos em um Rede VPC para perímetros de serviço usando regras de entrada e saída

Visão geral

O VPC Service Controls pode ser usado para especificar condições que permitam a da rede VPC para acessar os intervalos de endereços protegidos projetos e redes VPC. Esse recurso permite: tarefas:

  • Oferecer suporte ao acesso básico level para permitir intervalos de endereços IP internos de redes VPC.

  • Permitir o uso dessas condições de nível de acesso para APIs de entrada ou saída dentro ou fora do limite do perímetro de serviço.

Esse recurso oferece os seguintes benefícios:

  • É possível especificar condições nas configurações do VPC Service Controls para permitir acesso de um endereço IP interno em uma rede VPC.

  • Workflows que exigem que chamadas de API passem por vários perímetros de serviço pode restringir o acesso para permitir apenas algumas sub-redes, em vez de em toda a rede VPC ou no projeto.

  • É possível configurar diferentes recursos do seu local para para acessar apenas recursos específicos do Google Cloud. É preciso usar o IP da sub-rede o intervalo de endereços associado a esses recursos locais e à zona de destino como parte do nível de acesso.

A Figura 1 mostra um exemplo de configuração que permite o acesso a um domínio e o serviço de um endereço IP interno autorizado.

Limitações de uso do endereço IP interno

Quando você usa um endereço IP interno no VPC Service Controls: se aplicam limitações:

  • Só é possível ativar um endereço IP interno com níveis de acesso básicos e não com níveis de acesso personalizados.

  • Recomendamos que você não negue os níveis de acesso com endereços IP internos. com base em condições, porque isso pode causar comportamentos inesperados.

  • As limitações na adição de redes VPC a perímetros de serviço.

  • Quando o VPC Service Controls registra um registro de auditoria de política negada, ele edita o nome da rede VPC como __UNKNOWN__ no registro de auditoria.

  • Redes VPC em que o SUBNET_MODE está definido como custom mas não tiverem sub-redes, não são aceitas. Como ativar o endereço IP interno requer que uma rede VPC tenha pelo menos uma sub-rede.

  • É possível especificar somente 500 redes VPC redes em todas as níveis de acesso na política de acesso.

  • Quando você exclui uma rede VPC que é referenciada por um acesso ou perímetro de serviço e, em seguida, recriar outra VPC rede com o mesmo nome, o VPC Service Controls não ativa automaticamente e endereços IP internos na rede VPC recriada. Para superar essa limitação, crie uma rede VPC com uma nome diferente e adicioná-lo ao perímetro.

  • Não é possível usar um endereço IP interno para permitir o acesso de dispositivos serviços. Por exemplo, Cloud SQL.

  • Se você usar um nível de acesso que tem condições baseadas em endereço IP interno a uma regra de saída, recomendamos que você não adicione nenhuma outra condição como tipo de dispositivo e identidade do usuário, para o nível de acesso.

  • O endereço IP interno não corresponde aos níveis de acesso referentes ou várias regiões.

Usar o endereço IP interno nos níveis de acesso

  1. Especifique o nome da rede VPC e o intervalo de endereços IP na Campo vpcNetworkSources do nível de acesso básico condição.

    • Nome da rede VPC. Você precisa definir a VPC nome de rede no seguinte formato:

      //compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_NAME
      

      Por exemplo, //compute.googleapis.com/projects/my-project/global/networks/my-vpc.

    • Intervalo de endereços IP. O intervalo de endereços IP especificado em VpcSubNetwork campo de VpcNetworkSource devem seguir a especificação da sub-rede IP do bloco CIDR. É possível usar qualquer endereço IP de rede que seja um intervalo IPv4 válido para sub-redes.

  2. Use este nível de acesso com condições de permissão na IngressSource ou EgressSource.

Usando um cenário de exemplo, as seções a seguir explicam como realizar essas e as etapas para ativar um endereço IP interno.

Um exemplo de uso de um endereço IP interno para configurar o acesso à sub-rede

No exemplo a seguir, você tem dois projetos:

  1. Projeto host de rede:Project1 hospeda uma rede VPC: default. As duas VMs em Project1, VM1 e VM2 usam essa rede como uma interface de rede para envio de tráfego.

  2. Projeto do Cloud Storage:Project2 contém um bucket do Cloud Storage.

É possível usar o VPC Service Controls para permitir que apenas VM1 de Project1 acesse o Bucket do Cloud Storage em Project2 usando um endereço IP interno. Para conseguir essa configuração, siga estas etapas:

  1. Você cria um perímetro de serviço sp1 ao redor de Project1 e de outro serviço. perímetro sp2 ao redor de Project2.

  2. Em seguida, é possível adicionar regras de entrada e saída aos perímetros de serviço Permita apenas o acesso da sub-rede de VM1 ao bucket do Cloud Storage.

O diagrama a seguir mostra a configuração descrita neste exemplo.

Configurar uma política de acesso no nível da organização

  1. Verifique se você tem uma política de acesso no nível da organização. Se você não tiver uma política de acesso neste nível, execute o seguinte Comando da CLI gcloud:

    gcloud access-context-manager policies create \
        --organization=ORGANIZATION_ID --title=POLICY_TITLE
    

    Substitua:

    • ORGANIZATION_ID: o ID numérico da organização.

    • POLICY_TITLE: um título legível para sua política de acesso.

    Para mais informações, consulte Criar um acesso no nível da organização política.

  2. Conseguir o nome do seu acesso política.

  3. Para definir essa política como a política de acesso padrão, execute o seguinte Comando da CLI gcloud:

    gcloud config set access_context_manager/policy POLICY_NAME
    

    Substitua POLICY_NAME pelo nome numérico da política de acesso.

    Para mais informações, consulte Definir a política de acesso padrão para a ferramenta de linha de comando gcloud.

Criar perímetros para proteger o projeto do host da rede e o projeto do Cloud Storage

  1. Para criar um perímetro sp1 ao redor de Project1, execute o seguinte: Comando da CLI gcloud:

    gcloud access-context-manager perimeters create sp1 --title="sp1" --resources=PROJECT_NUMBER \
        --restricted-services=storage.googleapis.com --policy=POLICY_NAME
    

    Substitua:

    • PROJECT_NUMBER: o número do projeto host da rede. Por exemplo, projects/111.

    • POLICY_NAME: o nome numérico da política de acesso. Por exemplo, 1234567890.

  2. Para criar um sp2 de perímetro ao redor de Project2 que restrinja Cloud Storage, execute o seguinte comando da CLI gcloud:

    gcloud access-context-manager perimeters create sp2 --title="sp2" --resources=PROJECT_NUMBER \
        --restricted-services=storage.googleapis.com --policy=POLICY_NAME
    

    Substitua:

    • PROJECT_NUMBER: o número do projeto do Cloud Storage projeto. Por exemplo, projects/222.

    • POLICY_NAME: o nome numérico da política de acesso. Por exemplo, 1234567890.

Para mais informações sobre como criar um perímetro de serviço, consulte Criar um serviço perímetro de serviço.

Depois de criar esses dois perímetros, o bucket do Cloud Storage acessíveis pelas duas VMs.

Criar um nível de acesso com uma condição de acesso baseada em endereço IP interno

Crie um nível de acesso que permita apenas o tráfego proveniente da sub-rede de VM1.

  1. Crie um arquivo YAML que defina suas condições de acesso. O exemplo a seguir mostra apenas os atributos necessários para ativar um endereço IP interno:

    echo """
    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    
    """ > level.yaml
    

    Substitua:

    • VPC_NETWORK_NAME: o nome da rede VPC em que o VM1 reside. Por exemplo, //compute.googleapis.com/projects/Project1/global/networks/default.

    • IP_RANGE: o intervalo de endereços IP da sub-rede. Por exemplo, 10.10.0.0/24.

    Usar o nome da rede VPC e os formatos de intervalo de endereços IP explicado anteriormente.

    Para mais informações sobre o arquivo YAML, consulte YAML basic-level-spec arquivo.

  2. Para criar um nível de acesso usando o arquivo YAML, execute o seguinte: Comando da CLI gcloud:

    gcloud access-context-manager levels create LEVEL_NAME \
        --title="TITLE" --basic-level-spec=FILE_NAME
    

    Substitua:

    • LEVEL_NAME: um nome exclusivo para o nível de acesso. Por exemplo, allowvm1.

    • TITLE: um título curto e legível para o nível de acesso. Por exemplo, allowvm1.

    • FILE_NAME: o arquivo YAML que define as condições de acesso para o nível de acesso. Por exemplo, level.yaml.

    Para mais informações, consulte Como criar um plano de do Google Workspace.

Configurar uma política de entrada para permitir o tráfego de API de entrada no bucket do Cloud Storage

Para permitir o acesso apenas de VM1, configure uma política de entrada no sp2 para permitir que o tráfego da API Cloud Storage entre nele.

  1. Crie um arquivo YAML que defina a política de entrada.

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    

    Substitua:

    • POLICY_NAME: o nome numérico da política de acesso. Por exemplo, 1234567890.

    • ACCESS_LEVEL_NAME: o nome do seu nível de acesso. Por exemplo, allowvm1.

    Para mais informações sobre o arquivo YAML, consulte Regras de entrada como referência.

  2. Para atualizar a política de entrada para um perímetro de serviço, execute o seguinte Comando da CLI gcloud:

    gcloud access-context-manager perimeters update PERIMETER --set-ingress-policies=FILE_NAME
    

    Substitua:

    • PERIMETER: o nome do perímetro de serviço que protege o do Google Cloud Storage. Por exemplo, sp2.

    • FILE_NAME: o arquivo YAML que define a política de entrada. Por exemplo, ingress.yaml.

    Para mais informações, consulte Como atualizar políticas de entrada e saída para um perímetro de serviço.

Configurar uma política de saída para permitir o tráfego de API de saída no bucket do Cloud Storage

Além disso, configure uma política de saída no perímetro sp1 para permitir Tráfego da API Cloud Storage para sair do perímetro.

  1. Crie um arquivo YAML que defina sua política de saída. Certifique-se de definir o campo sourceRestriction como SOURCE_RESTRICTION_ENABLED no YAML .

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
        sourceRestriction: SOURCE_RESTRICTION_ENABLED
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > egress.yaml
    

    Substitua:

    • POLICY_NAME: o nome numérico da política de acesso. Por exemplo, 1234567890.

    • ACCESS_LEVEL_NAME: o nome do seu nível de acesso. Por exemplo, allowvm1.

    Para mais informações sobre o arquivo YAML, consulte Regras de saída como referência.

  2. Para atualizar a política de saída de um perímetro de serviço, execute o seguinte comando:

    gcloud access-context-manager perimeters update PERIMETER --set-egress-policies=FILE_NAME
    

    Substitua:

    • PERIMETER: o nome do perímetro de serviço que protege o em um projeto host de rede. Por exemplo, sp1.

    • FILE_NAME: o arquivo YAML que define a política de saída. Por exemplo, egress.yaml.

    Para mais informações, consulte Como atualizar políticas de entrada e saída para um perímetro de serviço.

Depois de configurar as políticas de entrada e saída, o bucket do Cloud Storage é acessível a partir do VM1, enquanto o bucket do Cloud Storage não pode acessível pelo VM2.

Recomendações

  • Ao ativar um endereço IP interno, recomendamos que você desative IPs e encaminhamento das suas VMs. Encaminhamento de IP permite que uma VM na mesma rede VPC envie solicitações usando um endereço IP diferente, o que aumenta o risco de spoofing.

  • Se você quiser ativar o encaminhamento de IP, recomendamos o uso do configurações abaixo para reduzir o risco de spoofing de endereço IP:

    • Usar a política da organização Restrict VM IP Forwarding restrição (constraints/compute.vmCanIpForward) para garantir que apenas VMs autorizadas possam ativar o encaminhamento de IP.

    • Usar origens para regras de firewall restringir os endereços IP que podem se comunicar com as VMs que têm encaminhamento ativado. Realize as tarefas a seguir:

      • Configure regras de firewall de entrada para permitir o tráfego de entrada somente de um para as VMs com o encaminhamento de IP ativado.

      • Configurar regras de firewall de saída para permitir o tráfego de saída apenas para um Intervalo de endereços IP das VMs com o encaminhamento de IP ativado.