Tutorial: Como criar uma VPC compartilhada com o Deployment Manager

Neste tutorial, você verá o processo de configuração da VPC compartilhada usando o Deployment Manager, que possibilita impor regras estritas de segurança de rede em toda sua organização para fornecer acesso aos recursos do GCP.

Introdução

Em grandes organizações, talvez seja necessário colocar diferentes departamentos ou aplicativos em projetos distintos para separação de orçamentos, controle de acesso e assim por diante. Com a VPC compartilhada, os administradores da organização podem dar a vários projetos permissão para usar uma única rede VPC compartilhada e recursos de rede correspondentes.

Com a VPC compartilhada e como administrador da organização, você pode permitir que os administradores de rede e segurança da sua organização gerenciem uma rede VPC de espaços de IP RFC 1918, assim como recursos relacionados, como VPNs ou regras de firewall, que os projetos associados podem usar. Os administradores em projetos associados podem criar instâncias de máquina virtual (VM, na sigla em inglês) no espaço de rede VPC compartilhada. Você pode aplicar e impor políticas consistentes em uma organização.

Como a VPC compartilhada é frequentemente usada em grandes organizações ou em organizações com regras de segurança rígidas, é importante poder reproduzir facilmente uma configuração de VPC compartilhada. Você pode usar o Deployment Manager, uma ferramenta de infraestrutura como código (IaC, na sigla em inglês), para conseguir isso.

Sobre como executar o tutorial

Neste tutorial, pressupõe-se que você esteja familiarizado com os recursos da organização no Google Cloud Platform (GCP) e que você seja o administrador de um recurso da organização. Entender as VPCs compartilhadas e o Deployment Manager ajudará você a seguir este tutorial. Ao longo deste tutorial, a palavra implantação refere-se a uma implantação do Deployment Manager.

Para simplificar, neste tutorial usaremos um único usuário do IAM: a sua identidade atual como administrador de recursos da organização. Se você ainda não tiver um recurso da organização, poderá encontrar instruções na seção Antes de começar para criar um. Em uma empresa, três pessoas diferentes geralmente estão envolvidas na configuração do cenário ilustrado por este tutorial: um administrador de recursos da organização, um administrador de rede (que gerencia a VPC compartilhada) e um usuário da VPC compartilhada.

Arquitetura de implantação

O diagrama a seguir mostra a arquitetura desta solução:

Arquitetura da VPC compartilhada

Neste tutorial, você criará três dos projetos deste diagrama:

  • O projeto inicial do Deployment Manager é gerenciado por um administrador de recursos da organização (neste tutorial, presumimos que seja você) e é usado para criar os outros projetos e a configuração da VPC compartilhada.
  • O projeto host é gerenciado por administradores de rede e hospeda a VPC compartilhada. Toda a configuração de rede será feita neste projeto.
  • O projeto de serviço é gerenciado por usuários da VPC compartilhada. Neste projeto, os recursos podem ser criados na VPC compartilhada do projeto host.

Objetivos

  • Criar e configurar o projeto inicial do Deployment Manager.
  • Criar os projetos de host e de serviço com o Deployment Manager.
  • Configurar o recurso da VPC compartilhada.
  • Configurar a VPC e algumas sub-redes no projeto host.
  • Verificar se a VPC pode ser usada no projeto de serviço.

Custos

Neste tutorial, usamos componentes faturáveis do GCP que incluem:

  • Compute Engine

Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.

Antes de começar

Este tutorial se baseia no contexto de uma organização do GCP. Caso não tenha, crie uma. Para ver os detalhes, consulte Como criar e gerenciar organizações.

Posteriormente neste tutorial, você criará dois projetos do GCP com uma implantação, ou seja, uma implantação do Deployment Manager. Você cria essa implantação em um projeto dedicado com uma configuração específica. Nas etapas a seguir, você aprenderá a configuração inicial deste projeto e seus ajustes.

Como criar o projeto inicial para o Deployment Manager

  1. Abra o Cloud Shell.

    Abrir o Cloud Shell

  2. Crie uma conta de faturamento caso ainda não tenha uma. Para ver os detalhes, consulte Como criar uma conta de faturamento.

  3. Crie um novo projeto em sua organização e defina uma conta de faturamento para ele. Você precisa escolher um código exclusivo para este projeto. Por exemplo, você pode usar um nome como [YOUR_NAME]-[DATE]-dm-home.

    gcloud

    1. Busque a lista de organizações e anote o código da organização:

      gcloud organizations list
    2. Defina variáveis de ambiente para valores que você usará repetidamente neste tutorial. Substitua [ORG_ID] pelo valor que você copiou na etapa anterior e substitua [DM_HOME_PROJECT_ID] pelo código do seu projeto inicial.

      export ORG_ID=[ORG_ID]
      export DM_HOME_PROJECT=[DM_HOME_PROJECT_ID]
    3. Crie o novo projeto:

      gcloud projects create $DM_HOME_PROJECT \
          --organization=$ORG_ID
    4. Consiga uma lista de códigos de faturamento para o projeto e anote o código de faturamento:

      gcloud beta billing accounts list
    5. Se você tiver acesso a várias contas de faturamento, consulte as políticas internas de cada uma delas e escolha a adequada.

    6. Defina uma variável de ambiente para o código da conta de faturamento que você recebeu na etapa anterior. Substitua [BILLING_ACCOUNT_ID] pelo código de faturamento que você recebeu da etapa anterior.

      export BILLING_ACCOUNT_ID=[BILLING_ACCOUNT_ID]
    7. Ative o faturamento para o novo projeto:

      gcloud beta billing projects link $DM_HOME_PROJECT \
          --billing-account=$BILLING_ACCOUNT_ID

    Console

    1. No Console do GCP, abra a página Gerenciar recursos.

      [Acessar a página "Gerenciar Recursos"](https://console.cloud.google.com/cloud-resource-manager){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }

    2. Na lista suspensa Organização na parte superior esquerda, selecione sua organização.

    3. Clique em Criar projeto e insira o código escolhido como o nome do projeto.

    4. Se você tiver acesso a várias contas de faturamento, selecione aquela que você quer usar para este tutorial (revise suas políticas internas para cada uma delas) na seção Conta de faturamento.

    5. Na seção Organização, confirme se a organização está selecionada.

    6. Clique em Criar.

  4. Ative as APIs necessárias para o restante do tutorial.

    gcloud

    gcloud services enable cloudbilling.googleapis.com \
        deploymentmanager.googleapis.com \
        cloudresourcemanager.googleapis.com \
        iam.googleapis.com \
        servicemanagement.googleapis.com \
        --project $DM_HOME_PROJECT

    Console

    1. Certifique-se de ter selecionado seu novo projeto no Console do GCP. Se necessário, alterne para o novo projeto na página Gerenciar recursos.

      [Acessar a página "Gerenciar Recursos"](https://console.cloud.google.com/cloud-resource-manager){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }

    2. Acesse a página Biblioteca de APIs.

      [Acessar a página "Biblioteca de APIs"](https://console.cloud.google.com/apis/library){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }

    3. Ative as seguintes APIs:

      • API Google Cloud Billing
      • API Google Identity and Access Management (IAM)
      • API Google Service Management
      • API Google Cloud Deployment Manager V2
      • API Google Cloud Resource Manager

Como configurar as políticas de recursos da organização

A VPC compartilhada é um recurso no nível da organização. Assim, é necessário que algumas políticas no nível da organização sejam configuradas. A conta de serviço usada pelo Deployment Manager precisa de funções específicas no nível da organização.

gcloud


  1. Defina variáveis de ambiente para o número do projeto e o nome da conta de serviço. Os comandos a seguir leem os valores do seu projeto e os usam para definir as variáveis do ambiente.

    export PROJECT_NUMBER=$(gcloud projects describe $DM_HOME_PROJECT \
        --format="value(projectNumber)")
    export DM_SA=${PROJECT_NUMBER}@cloudservices.gserviceaccount.com
  2. Adicione políticas do IAM:

    gcloud organizations add-iam-policy-binding $ORG_ID \
        --role=roles/resourcemanager.projectCreator \
        --member="serviceAccount:${DM_SA}"
    gcloud organizations add-iam-policy-binding $ORG_ID \
        --role=roles/billing.user \
        --member="serviceAccount:${DM_SA}"
    gcloud organizations add-iam-policy-binding $ORG_ID \
        --role=roles/compute.xpnAdmin \
        --member="serviceAccount:${DM_SA}"

Console


  1. Em seu projeto, vá para IAM e administrador > Configurações.

  2. Anote o número do projeto.

  3. Acesse IAM e administrador > IAM.

  4. Mude para a sua organização no menu superior de seleção de projetos.

  5. Clique em Adicionar na parte superior da janela.

  6. Adicione os seguintes papéis à conta de serviço do Deployment Manager. Este nome de conta de serviço é [PROJECT_NUMBER]@cloudservices.gserviceaccount.com, em que [PROJECT_NUMBER] é o valor que você anotou anteriormente.

    • Resource Manager > Criador do projeto
    • Faturamento > Usuário da conta de faturamento
    • Compute Engine > Administrador de VPC compartilhada do Compute

Como criar os projetos e a configuração da VPC compartilhada

Agora você está pronto para criar os projetos de Host e de Serviço com o Deployment Manager. A partir de agora, se você estiver usando o Console do GCP, será necessário mudar para o Cloud Shell.

  1. Se sua sessão expirou ou se você a fechou, abra uma nova sessão do Cloud Shell.

    ABRIR O CLOUD SHELL

  2. No Cloud Shell, clone o seguinte repositório Git:

    git clone https://github.com/GoogleCloudPlatform/deploymentmanager-samples.git
  3. Navegue até a amostra project_creation no repositório que você clonou:

    cd $HOME/deploymentmanager-samples/examples/v2/project_creation
  4. Abra o arquivo config_shared_vpc.yaml:

    nano config_shared_vpc.yaml
  5. Defina os valores listados na tabela a seguir.

    Configuração Descrição
    HOST_PROJECT Um nome exclusivo para seu projeto host. O projeto host é onde a VPC será criada e gerenciada. Observe que você também precisa alterar esse valor na última linha do arquivo, para um total de duas substituições.

    Exemplo:

    [YOUR_NAME]-[DATE]-host
    SERVICE_PROJECT Um nome exclusivo para seu projeto de serviço. O projeto de serviço é onde a VPC do projeto host será usada.

    Exemplo:

    [YOUR_NAME]-[DATE]-svc
    ORG_ID O código da sua organização, fornecido nas etapas anteriores. Caso contrário, você pode consegui-lo executando o seguinte comando:
    
    gcloud organizations list

    Use aspas em torno do código da organização para que não seja considerado um valor numérico no arquivo YAML.

    BILLING_ACCOUNT_ID O código da sua conta de faturamento, fornecido nas etapas anteriores. Caso contrário, você pode recebê-lo executando o seguinte comando:
    
    gcloud beta billing accounts list
    EMAIL Endereço de e-mail. Há um total de cinco lugares em que você precisa definir o endereço de e-mail.
  6. Salve o arquivo e saia do nano com a seguinte sequência de teclas:

    ^O <Enter> ^X

  7. Se você usou o Console do GCP para criar o projeto inicial do Deployment Manager, defina uma variável de ambiente como o código do seu projeto inicial:

    export DM_HOME_PROJECT=[DM_HOME_PROJECT]
  8. Crie uma visualização da implantação:

    gcloud deployment-manager deployments \
        create shared-vpc-projects \
        --config config_shared_vpc.yaml --preview \
        --project $DM_HOME_PROJECT

    Criar uma visualização de uma implantação do Deployment Manager permite que você veja quais recursos serão criados, atualizados ou excluídos.

  9. Aplique a visualização da implantação:

    gcloud deployment-manager deployments \
        update shared-vpc-projects \
        --project $DM_HOME_PROJECT
  10. Veja a implantação no Console do GCP. Se necessário, selecione o projeto inicial do Deployment Manager no menu superior de seleção de projetos.

    ACESSAR O DEPLOYMENT MANAGER

Depois de alguns minutos, a implantação é concluída e seus dois novos projetos são criados. O projeto de serviço já está vinculado ao projeto host, mas você ainda não criou a VPC que será compartilhada.

Solução de problemas

Se ocorreram problemas enquanto a visualização estava sendo criada, você pode excluir a implantação (nenhum recurso foi criado ainda) e repetir o processo.

No entanto, se a visualização foi criada, mas a implantação falhou, talvez você não consiga recriar essa implantação. Os projetos não podem ser excluídos e recriados imediatamente. Eles são marcados para exclusão por um período de segurança de 30 dias. Se você precisar recriar a implantação, altere os valores das configurações de HOST_PROJECT e SERVICE_PROJECT no arquivo config_shared_vpc.yaml antes de tentar novamente.

Como criar a VPC

Agora você usará outro modelo do Deployment Manager para criar a VPC no projeto host. Normalmente, essa é uma operação que seria feita por um administrador de rede. Como a configuração da VPC compartilhada já foi configurada, a VPC estará disponível para uso imediato no projeto de serviço.

Como implantar sua configuração de rede

  1. Configure as variáveis de ambiente para os nomes do projeto host e do projeto de serviço configurados no arquivo config_shared_vpc.yaml:

    export HOST_PROJECT=[HOST_PROJECT]
    export SERVICE_PROJECT=[SERVICE_PROJECT]
  2. Navegue até a amostra network no repositório Git:

    cd $HOME/deploymentmanager-samples/community/network/

    No arquivo config.yaml, você pode ver um recurso do tipo network.py com três sub-redes com seus próprios CIDRs. Tente alterar ou duplicar esse recurso para atender às suas necessidades.

  3. Crie uma visualização da implantação. Essa implantação é criada no projeto host.

    gcloud deployment-manager deployments create host-network \
        --config config.yaml --preview \
        --project $HOST_PROJECT
  4. Aplique a visualização da implantação.

    gcloud deployment-manager deployments update host-network \
        --project $HOST_PROJECT

Verificação

Agora você pode verificar o acesso à rede do projeto host a partir do projeto de serviço. Você pode acessar essa rede porque tem o papel roles/compute.networkUser no projeto host. Para uma implantação de produção, você precisa atribuir esse papel a todos os usuários da VPC compartilhada.

  1. Crie uma instância de teste no projeto de serviço usando uma sub-rede do projeto host.

    gcloud

    gcloud compute instances create instance-test \
        --zone us-east1-b \
        --subnet \
        "projects/$HOST_PROJECT/regions/us-east1/subnetworks/host-network-us-east1" \
        --project $SERVICE_PROJECT

    Console


    1. Selecione seu projeto de serviço.

      [ACESSAR A PÁGINA "GERENCIAR RECURSOS"](https://console.cloud.google.com/cloud-resource-manager){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }
    2. Acesse a página "Instâncias de VMs".

      [ACESSAR A PÁGINA "INSTÂNCIAS DE VMS"](https://console.cloud.google.com/compute/instances){: target="console" class="button button-primary" track-type="tutorial" track-name="consoleLink" track-metadata-position="body" }
    3. Clique em Criar.
    4. Na seção Nome, digite `instance-test`.
    5. Verifique se `us-east1-b` está selecionado na seção Zona.
    6. Clique em Gerenciamento, segurança, discos, rede, locatário único.
    7. Clique na guia Rede.
    8. Clique na interface de rede existente.
    9. Escolha a opção Redes compartilhadas comigo.
    10. ![![Seção "Redes compartilhadas comigo" da página "Criar instância"](/solutions/images/shared-vpc-with-deployment-manager-networks-shared-with-me.png){: class="screenshot" width="50%"}
    11. Clique em Concluído na parte inferior da seção Interface de rede.
    12. Clique em Criar.

    Aguarde um ou dois minutos para que a instância seja iniciada. Quando estiver pronta, a instância será listada na página "Instâncias de VMs" com um ícone de status verde.

  2. Verifique se a instância está usando a VPC compartilhada.

    gcloud

    gcloud compute instances describe instance-test \
        --zone us-east1-b --project $SERVICE_PROJECT \
        --format="value(networkInterfaces[0].network)"

    A resposta desse comando é o link para a VPC usada pela instância que você criou. Esse link mostra que a VPC é do projeto host, mesmo que a instância tenha sido criada no projeto de serviço, que seria resultado do uso da sinalização --project no comando.

    Console


    1. Selecione sua instância na lista de instâncias.
    2. Verifique se está usando a rede do projeto host.

      ![![Lista de interfaces de rede mostrando 'host-network-us-east1'](/solutions/images/shared-vpc-with-deployment-manager-verify-network.png){: class="screenshot"}

Como fazer a limpeza

Depois de concluir este tutorial, será possível limpar os recursos criados no Google Cloud Platform para que eles não ocupem cota e você não seja cobrado por eles no futuro. Nas seções a seguir, aprenda a excluir e desativar esses recursos.

  1. No Cloud Shell, exclua a instância de teste:

    gcloud compute instances delete instance-test \
        --project $SERVICE_PROJECT \
        --zone us-east1-b
  2. Se você configurou a proteção contra remoção de projetos, remova-a:

    gcloud beta resource-manager org-policies disable-enforce \
        --organization $ORG_ID compute.restrictXpnProjectLienRemoval
  3. Exclua a implantação de host-network:

    gcloud deployment-manager deployments delete host-network \
        --project $HOST_PROJECT
  4. Exclua a implantação de shared-vpc-projects:

    gcloud deployment-manager deployments \
        delete shared-vpc-projects \
        --project $DM_HOME_PROJECT
  5. Exclua o projeto inicial:

    gcloud projects delete $DM_HOME_PROJECT

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…