Provisionar VPC compartilhada

A VPC compartilhada permite exportar sub-redes de uma rede de nuvem privada virtual (VPC) em um projeto host para outros projetos de serviço na mesma organização. As instâncias nos projetos de serviço podem ter conexões de rede nas sub-redes compartilhadas do projeto host. Nesta página, você vai ver como configurar e usar a VPC compartilhada, incluindo alguma preparação administrativa necessária para sua organização.

A VPC compartilhada permite exportar sub-redes de qualquer tipo de pilha.

Para informações sobre como remover projetos de serviço ou a configuração da VPC compartilhada, veja Como desprovisionar a VPC compartilhada.

A VPC compartilhada também é chamada de "XPN" na API e na interface de linha de comando.

Cotas, limites e recursos qualificados

Antes de começar, conheça a VPC compartilhada e o IAM, especificamente:

Preparar a organização

Tenha as seguintes informações em mente ao preparar sua organização.

Administradores e IAM

A preparação da organização, configuração de projetos host da VPC compartilhada e uso de redes VPC compartilhadas envolve no mínimo três papéis administrativos diferentes do gerenciamento de identidade e acesso (IAM). Para mais detalhes sobre cada papel e informações sobre os papéis opcionais, veja a seção sobre administradores e IAM da visão geral da VPC compartilhada.

Restrições da política da organização

As restrições da política da organização podem proteger os recursos da VPC compartilhada no nível do projeto, da pasta ou da organização. As seções a seguir descrevem cada política.

Evitar a exclusão acidental de projetos host

A exclusão acidental de um projeto host levaria a interrupções em todos os projetos de serviço anexados a ele. Quando um projeto é configurado para ser um projeto host da VPC compartilhada, um bloqueio especial, chamado de garantia, é colocado nele. Enquanto a garantia está presente, ela impede que o projeto seja excluído acidentalmente. A garantia é removida automaticamente do projeto host quando não está mais configurada para a VPC compartilhada.

Um usuário com o papel orgpolicy.policyAdmin pode definir uma restrição de política no nível da organização (constraints/compute.restrictXpnProjectLienRemoval) que limita a remoção de garantias apenas aos seguintes papéis:

  • Usuários com roles/owner ou roles/resourcemanager.lienModifier no nível da organização
  • Usuário com papéis personalizados que incluem as permissões resourcemanager.projects.get e resourcemanager.projects.updateLiens no nível da organização

Com isso, impede-se um proprietário de projeto que não tenha os papéis roles/owner ou resourcemanager.lienModifier no nível da organização de excluir acidentalmente um projeto host da VPC compartilhada. Para mais informações sobre as permissões associadas ao papel resourcemanager.lienModifier, consulte Como aplicar uma garantia a um projeto na documentação do Resource Manager.

Como uma política da organização se aplica a todos os projetos da organização, basta seguir estas etapas uma vez para restringir a remoção de garantia.

  1. Autentique-se no gcloud como Administrador da organização ou principal do IAM com o papel orgpolicy.policyAdmin. Substitua ORG_ADMIN pelo nome de um administrador da organização:

    gcloud auth login ORG_ADMIN
    
  2. Consulte a resposta ao comando para determinar o ID da organização.

    gcloud organizations list
    
  3. Para aplicar a política compute.restrictXpnProjectLienRemoval à sua organização, execute este comando. Substitua ORG_ID pelo número determinado na etapa anterior.

    gcloud resource-manager org-policies enable-enforce \
        --organization ORG_ID compute.restrictXpnProjectLienRemoval
    
  4. Saia de gcloud quando concluir a execução de tarefas como Administrador da organização para proteger sua conta.

    gcloud auth revoke ORG_ADMIN
    

Restringir anexos do projeto host

Por padrão, um Administrador da VPC compartilhada pode anexar um não host a qualquer projeto host na mesma organização. O administrador da política da organização pode limitar o conjunto de projetos hosts a que um ou mais projeto não host em uma pasta ou organização podem ser anexados. Para mais informações, consulte a restrição constraints/compute.restrictSharedVpcHostProjects.

Restringir as sub-redes do projeto host que um projeto de serviço pode usar

Por padrão, depois de configurar a VPC compartilhada, os principais do IAM em projetos de serviço podem usar qualquer sub-rede do projeto host se tiverem as permissões do IAM adequadas. Além de gerenciar permissões de usuários individuais, o administrador de política da organização pode definir uma política para definir o conjunto de sub-redes que podem ser acessadas por um projeto específico ou por projetos em uma pasta ou organização. Para mais informações, consulte a restrição constraints/compute.restrictSharedVpcSubnetworks.

Evitar o encerramento acidental de projetos host

Desconectar o faturamento em uma rede VPC compartilhada pode levar a um encerramento completo de todos os recursos dependentes, incluindo projetos de serviço. Para evitar uma possível ocorrência de um desligamento acidental de VPC compartilhada devido a faturamento inativo ou desativado, proteja o vínculo entre o projeto host e a conta de faturamento dele.

Nomear administradores de VPC compartilhada

O Administrador da organização pode conceder os papéis de Administrador da VPC compartilhada e Administrador de IAM do projeto a um ou mais principais do IAM.

O papel de administrador do IAM do projeto concede permissão aos Administradores de VPC compartilhada para compartilhar todas as sub-redes atuais e futuras, não apenas sub-redes individuais. Essa concessão cria um vínculo no nível da organização ou pasta, não no nível do projeto. Portanto, os principais do IAM precisam ser definidos na organização e não apenas em um projeto.

Console

Para conceder o papel de Administrador de VPC compartilhada no nível da organização

  1. Faça login no Google Cloud console como um administrador da organização e acesse a página "IAM".

    Acessar a página do IAM

  2. No menu do projeto, selecione sua organização.

    Se você selecionar um projeto, o menu Papéis mostrará entradas incorretas.

  3. Clique em Adicionar.

  4. Insira os endereços de e-mail dos Novos principais.

  5. No menu Papéis, selecione Compute Engine > Administrador de VPC compartilhada do Compute

  6. Clique em Adicionar outro papel.

  7. Na lista suspensa Papéis, selecione Resource Manager > Administrador de IAM do projeto.

  8. Clique em Salvar.

Para conceder o papel de Administrador de VPC compartilhada no nível da pasta

  1. Faça login no Google Cloud console como um administrador da organização e acesse a página "IAM".

    Acessar a página do IAM

  2. No menu do projeto, selecione sua pasta.

    Se você selecionar um projeto ou uma organização, as opções exibidas estarão incorretas.

  3. Clique em Adicionar.

  4. Insira os endereços de e-mail dos Novos principais.

  5. Em Selecionar um papel, selecione Compute Engine > Administrador de VPC compartilhada do Compute.

  6. Clique em Adicionar outro papel.

  7. No menu Papéis, selecione Resource Manager >. Administrador de IAM do projeto.

  8. Clique em Adicionar outro papel.

  9. No menu Papéis, selecione Resource Manager > Leitor de redes do Compute

  10. Clique em Salvar.

gcloud

  1. Autentique-se no gcloud como Administrador da organização. Substitua ORG_ADMIN pelo nome de um administrador da organização:

    gcloud auth login ORG_ADMIN
    
  2. Consulte a resposta ao comando para determinar o ID da organização.

    gcloud organizations list
    
  3. Para atribuir o papel de Administrador de VPC compartilhada na organização faça o seguinte:

    1. Atribua o papel de Administrador de VPC compartilhada a um principal do IAM atual. Substitua ORG_ID pelo ID da organização da etapa anterior e EMAIL_ADDRESS pelo endereço de e-mail do usuário a quem você está concedendo o papel de Administrador de VPC compartilhada.

      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/compute.xpnAdmin"
      
      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/resourcemanager.projectIamAdmin"
      
  4. Para atribuir o papel de Administrador de VPC compartilhada na pasta, faça o seguinte:

    1. Determine seu código da pasta observando a saída deste comando.

      gcloud resource-manager folders list --organization=ORG_ID
      
    2. Atribua o papel de Administrador de VPC compartilhada a um principal do IAM atual. Substitua ORG_ID pelo ID da organização da etapa anterior e EMAIL_ADDRESS pelo endereço de e-mail do usuário a quem você está concedendo o papel de Administrador de VPC compartilhada.

      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.xpnAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/resourcemanager.projectIamAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.networkViewer"
      
  5. Revogue o token da conta de administrador da organização na ferramenta de linha de comando gcloud ao final das tarefas para proteger sua conta.

    gcloud auth revoke ORG_ADMIN
    

API

  • Para atribuir o papel de Administrador de VPC compartilhada no nível da organização, use o seguinte procedimento:

    1. Determine o número de ID da organização.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Descreva e registre os detalhes da política da organização atual.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:getIamPolicy
      

      Substitua ORG_ID pelo ID da organização.

    3. Atribua o papel Administrador de VPC compartilhada.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Substitua:

      • ORG_ID: o ID da organização que contém o usuário a quem você está concedendo o papel de Administrador de VPC compartilhada.
      • EMAIL_ADDRESS: o endereço de e-mail do usuário.
      • ETAG: um identificador exclusivo que você recebeu quando descreveu a política atual. Isso evita colisões quando várias solicitações de atualização são enviadas ao mesmo tempo.

      Para mais informações, consulte o método organizations.setIamPolicy.

  • Para atribuir o papel de Administrador de VPC compartilhada no nível da pasta, use a seguinte solicitação:

    1. Determine o número de ID da organização.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Encontre o ID da pasta.

      GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
      

      Substitua ORG_ID pelo ID da organização.

    3. Descreva e registre os detalhes da política de pastas atual.

      POST https://cloudresourcemanager.googleapis.com/v2/folders/FOLDER_ID:getIamPolicy
      

      Substitua FOLDER_ID pelo ID da pasta.

    4. Atribua o papel Administrador de VPC compartilhada.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/FOLDER_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.networkViewer"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Substitua:

      • FOLDER_ID: o ID da organização que contém o usuário a quem você está concedendo o papel de Administrador de VPC compartilhada.
      • EMAIL_ADDRESS: o endereço de e-mail do usuário.
      • ETAG: um identificador exclusivo que você recebeu quando descreveu a política atual. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

      Para mais informações, consulte o método folders.setIamPolicy.