Como provisionar VPC compartilhada

A VPC compartilhada permite exportar sub-redes de uma rede 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ê verá como configurar e usar a VPC compartilhada, incluindo alguma preparação administrativa necessária para sua organização.

Cotas, limites e recursos qualificados

Familiarize-se com a visão geral da VPC compartilhada e a visão geral do IAM antes de começar. Em especial:

Preparar sua organização

Administradores e IAM

A preparação da sua 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 IAM. Para ver mais detalhes sobre cada papel e informações sobre os papéis opcionais, consulte a seção de administradores e IAM da visão geral da VPC compartilhada.

Políticas da organização para VPC compartilhada

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 Administrador da organização ou outro usuário com o papel orgpolicy.policyAdmin pode definir uma política da organização para limitar a remoção de garantias para apenas proprietários da organização e outros usuários com o papel resourcemanager.lienModifier. Isso efetivamente impede que um proprietário do projeto que não seja um proprietário da organização e que não tenha o papel resourcemanager.lienModifier exclua acidentalmente um projeto host da VPC compartilhada. Para ver mais informações sobre as permissões associadas ao papel resourcemanager.lienModifier, consulte Como aplicar uma garantia em 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 na gcloud como Administrador da organização ou membro do IAM com o papel orgpolicy.policyAdmin. Substitua ORG_ADMIN pelo nome de um Administrador da organização:

    gcloud auth login ORG_ADMIN
    
  2. Determine o código da organização observando a saída deste comando.

    gcloud organizations list
    
  3. Aplique a política compute.restrictXpnProjectLienRemoval para sua organização executando este comando. Substitua ORG_ID pelo número determinado na etapa anterior.

    gcloud beta 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 de VPC compartilhada pode anexar um não host a qualquer projeto host na mesma organização. Um administrador de política da organização pode limitar o conjunto de projetos hosts aos quais um ou mais projeto não host em uma pasta ou organização podem ser anexados. Para ver mais informações, consulte a restrição constraints/compute.restrictSharedVpcHostProject.

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 membros do IAM em projetos de serviço podem usar qualquer sub-rede do projeto host se tiverem as permissões do IAM apropriadas. Além de gerenciar permissões de usuários individuais, um 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 ver mais informações, consulte a restrição constraints/compute.restrictSharedVpcSubnetworks.

Nomear administradores de VPC compartilhada

Um Administrador da organização pode conceder a um ou mais membros do IAM papéis de Administrador de VPC compartilhada e Administrador de IAM do projeto. O papel de administrador do IAM do projeto concede permissão aos Administradores de VPC compartilhada para compartilhar todas as sub-redes existentes 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 membros 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 Console do Google Cloud como um Administrador da organização e acesse a página "IAM".
    Acessar a página "IAM"
  2. No menu do projeto, selecione sua organização.
    Se você selecionar um projeto, não verá as entradas corretas no menu Papéis.
  3. Clique em Adicionar.
  4. Insira os endereços de e-mail dos Membros.
  5. Na lista suspensa 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 Console do Google Cloud como um Administrador da organização e acesse a página "IAM".
    Acessar a página "IAM"
  2. No menu do projeto, selecione sua pasta.
    Se selecionar um projeto ou organização, não verá as opções corretas.
  3. Na página Membros, clique em Adicionar.
  4. Insira os endereços de e-mail dos Novos membros.
  5. Em Selecionar um papel, 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.

gcloud

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

    gcloud auth login ORG_ADMIN
    
  2. Determine o código da organização observando a saída deste comando.

    gcloud organizations list
    
  3. Se você quiser atribuir o papel de Administrador de VPC compartilhada no nível da organização, faça isto:

    1. Aplique o papel Administrador de VPC compartilhada a um membro do IAM. Substitua ORG_ID pelo número do código 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. Se você quiser atribuir o papel de Administrador de VPC compartilhada no nível da pasta, faça isto:

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

      gcloud beta resource-manager folders list --organization=ORG_ID
      
    2. Aplique o papel Administrador de VPC compartilhada a um membro do IAM. Substitua ORG_ID pelo número do código 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 beta resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.xpnAdmin"
      
      gcloud beta resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/resourcemanager.projectIamAdmin"
      
  5. Saia da conta de Administrador da organização na ferramenta de linha de comando gcloud quando terminar de executar 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 código da organização.

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

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

      Substitua ORG_ID pelo código da sua organização.

    3. Atribua o papel de 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 exisitng policy details
      }
      

      Substitua os marcadores por valores válidos:

      • ORG_ID é o código da organização que contém o usuário ao qual 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 existente. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

      Para ver 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 código 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 código da sua organização.

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

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

      Substitua FOLDER_ID pelo código da sua pasta.

    4. Atribua o papel de 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"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Substitua os marcadores por valores válidos:

      • FOLDER_ID é o código da organização que contém o usuário ao qual 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 existente. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

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

Como configurar a VPC compartilhada

Todas as tarefas nesta seção precisam ser executadas por um administrador de VPC compartilhada.

Ativar um projeto host

Dentro de uma organização, os Administradores da VPC compartilhada podem seguir o procedimento abaixo para designar projetos como projetos host de VPC compartilhada, sujeitos a cotas e limites. Também podem criar e excluir projetos se tiverem os papéis resourcemanager.projectCreator e resourcemanager.projectDeleter na organização.

Console

  1. Acesse a página "VPC compartilhada" no Console do Google Cloud.
    Acessar a página "VPC compartilhada"
  2. Faça login como um Administrador da VPC compartilhada.
  3. Selecione o projeto que você quer ativar como projeto host da VPC compartilhada no seletor de projetos.
  4. Clique em Configurar VPC compartilhada.
  5. Na página seguinte, clique em Salvar e continuar abaixo de Ativar projeto host.
  6. Em Selecionar sub-redes, siga um destes procedimentos:
    1. Clique em Compartilhar todas as sub-redes (permissões no nível do projeto) se precisar compartilhar todas as sub-redes atuais e futuras nas redes VPC do projeto host com os projetos de serviço e os Administradores de projetos de serviço especificados nas próximas etapas.
    2. Clique em Sub-redes individuais (permissões no nível da sub-rede) se você precisar compartilhar seletivamente sub-redes das redes VPC do projeto host com projetos de serviço e Administradores do projeto de serviço. Em seguida, selecione Sub-redes a serem compartilhadas.
  7. Clique em Continuar.
    A próxima tela será exibida.
  8. Em Nomes de projeto, especifique os projetos de serviço a serem anexados ao projeto host. Observe que anexar projetos de serviço não define nenhum Administrador de projetos de serviço. Essa definição é feita na próxima etapa.
  9. Na seção Selecionar usuários por papel, adicione Administradores de projeto de serviço. Esses usuários receberão o papel do IAM de compute.networkUser para as sub-redes compartilhadas. Somente os Administradores de projetos de serviço podem criar recursos nas sub-redes do projeto host da VPC compartilhada.
  10. Clique em Salvar.

gcloud

  1. Autentique-se no gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Ative a VPC compartilhada para o projeto que se tornará o projeto host. Substitua HOST_PROJECT_ID pelo ID do projeto.

    Se você tiver o papel de Administrador de VPC compartilhada no nível da organização

    gcloud compute shared-vpc enable HOST_PROJECT_ID
    

    Se você tiver o papel de Administrador de VPC compartilhada no nível da pasta

    gcloud beta compute shared-vpc enable HOST_PROJECT_ID
    
  3. Confirme se o projeto está listado como um projeto host para sua organização. Substitua ORG_ID pelo ID da organização (determinado por gcloud organizations list).

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. Se bastava ativar um projeto host, saia de gcloud para proteger as credenciais da conta de Administrador da VPC compartilhada. Caso contrário, pule esta etapa e continue com as etapas para anexar projetos de serviço.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Ative a VPC compartilhada para o projeto usando credenciais com permissões de Administrador da VPC compartilhada.

    • Se você tiver o papel de Administrador de VPC compartilhada no nível da organização, use a API v1:

      POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
      
    • Se você tiver o papel de Administrador de VPC compartilhada no nível da pasta, use a API Beta:

      POST https://www.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/enableXpnHost
      

    Substitua HOST_PROJECT_ID pelo código do projeto que será um projeto host da VPC compartilhada.

    Para ver mais informações, consulte o método projects.enableXpnHost.

  2. Confirme se o projeto está listado como um projeto host.

    POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
    

    Substitua HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada.

    Para ver mais informações, consulte o método projects.listXpnHosts.

Anexar projetos de serviço

É necessário anexar um projeto de serviço a um projeto host antes que seus Administradores de projeto de serviço possam usar a VPC compartilhada. Um Administrador da VPC compartilhada executa as etapas a seguir para concluir a vinculação.

Um projeto de serviço só pode ser anexado a um projeto host, mas um projeto host oferece suporte a vários anexos de projeto de serviço. Para detalhes, consulte os limites específicos da VPC compartilhada na página de cotas da VPC.

Console

  1. Faça login no Console do Google Cloud como um Administrador de VPC compartilhada.
  2. Acesse a página "VPC compartilhada" no Console do Google Cloud.
    Acessar a página "VPC compartilhada"
  3. Clique na guia Projetos anexados.
  4. Na guia Projetos anexados, clique no botão Anexar projetos.
  5. Marque as caixas dos projetos de serviço a serem anexados na seção Nomes de projeto. Observe que anexar projetos de serviço não define nenhum Administrador de projetos de serviço. Essa definição é feita na próxima etapa.
  6. Nas Permissões de rede VPC selecione os papéis que receberão o papel compute.networkUser para seus membros. Os membros do Cloud IAM recebem o papel de usuário da rede para todo o projeto host ou determinadas sub-redes no projeto host, com base no modo de compartilhamento da rede VPC. Esses membros são conhecidos como Administradores de projeto de serviço nos respectivos projetos de serviço.
  7. Na seção Modo de compartilhamento da rede VPC, selecione uma destas opções:
    1. Clique em Compartilhar todas as sub-redes (permissões no nível do projeto) para compartilhar todas as sub-redes atuais e futuras nas redes VPC do projeto host com todos os projetos de serviço e os Administradores de projetos de serviço.
    2. Clique em Sub-redes individuais (permissões no nível da sub-rede) se você precisar compartilhar seletivamente sub-redes das redes VPC do projeto host com projetos de serviço e Administradores do projeto de serviço. Em seguida, selecione Sub-redes a serem compartilhadas.
  8. Clique em Salvar.

gcloud

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Anexe um projeto de serviço a um projeto host ativado anteriormente. Substitua SERVICE_PROJECT_ID pelo código do projeto do serviço e HOST_PROJECT_ID pelo código do projeto host.

    Se você tiver o papel de Administrador de VPC compartilhada no nível da organização

    gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_ID \
        --host-project HOST_PROJECT_ID
    

    Se você tiver o papel de Administrador de VPC compartilhada no nível da pasta

    gcloud beta compute shared-vpc associated-projects add SERVICE_PROJECT_ID \
        --host-project HOST_PROJECT_ID
    
  3. Confirme se o projeto de serviço foi anexado.

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
  4. Opcionalmente, liste os projetos de serviço que estão anexados ao projeto host:

    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  5. Se bastava anexar um projeto de serviço, faça o logout de gcloud para proteger as credenciais da conta de Administrador da VPC compartilhada. Caso contrário, pule esta etapa e defina os Administradores de projetos de serviço para todas as sub-redes ou apenas para algumas sub-redes.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Anexe um projeto de serviço ao projeto host da VPC compartilhada.

    • Se você tiver o papel de Administrador de VPC compartilhada no nível da organização, use a API v1:

      POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource
      {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
      }
      
    • Se você tiver o papel de Administrador de VPC compartilhada no nível da pasta, use a API Beta:

      POST https://www.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/enableXpnResource
      {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
      }
      

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o código do projeto host da VPC compartilhada.
    • SERVICE_PROJECT é o código do projeto de serviço a ser anexado.

    Para ver mais informações, consulte o método projects.enableXpnResource.

  2. Confirme se os projetos de serviço estão anexados ao projeto host.

    GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
    

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o código do projeto host da VPC compartilhada.

    Para ver mais informações, consulte o método projects.getXpnResources.

Administradores de projetos de serviço para todas as sub-redes

Um Administrador de VPC compartilhada pode atribuir um membro do Cloud IAM de um projeto de serviço como um Administrador do projeto de serviço com acesso a todas as sub-redes no projeto host. Os Administradores de projetos de serviço desse tipo recebem o papel de compute.networkUser para todo o projeto host. Isso significa que eles têm acesso a todas as sub-redes definidas e futuras no projeto host.

Console

Para definir um membro do IAM de um projeto de serviço como Administrador do projeto de serviço com acesso a todas as sub-redes em um projeto host usando o Console do Cloud, consulte a seção anexar projetos de serviço.

gcloud

Essas etapas abrangem a definição de um membro do IAM de um projeto de serviço como um Administrador do projeto de serviço com acesso a todas as sub-redes em um projeto host. Antes de executar essas etapas, ative um projeto host e anexe o projeto de serviço ao projeto host.

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Crie uma vinculação de política para tornar um membro do IAM do projeto de serviço um Administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo código do projeto host e SERVICE_PROJECT_ADMIN pelo endereço de e-mail do usuário Administrador do projeto de serviço.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member "user:SERVICE_PROJECT_ADMIN" \
    --role "roles/compute.networkUser"
    

    Para especificar diferentes tipos de membros, altere o formato do argumento --member:

    • Use group: para especificar um grupo do Google (por endereço de e-mail) como membro.
    • Use domain: para especificar um domínio do Google como membro.
    • Use serviceAccount: para especificar uma conta de serviço. Consulte Contas de serviço como Administradores de projetos de serviços para ver mais informações sobre este caso de uso.
  3. Repita a etapa anterior para cada Administrador do projeto de serviço que você precisar definir.

  4. Ao concluir a definição dos Administradores de projetos de serviço, saia da gcloud para proteger as credenciais da conta de Administrador da VPC compartilhada.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Descreva e registre os detalhes da política de projetos existente. Você precisará da política existente e valor de etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Substitua HOST_PROJECT_ID pelo código do projeto host que contém a rede VPC compartilhada.

  2. Crie uma vinculação de política para atribuir membros do IAM no projeto de serviço como Administradores de projetos de serviço.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            MEMBER,
            ...additional members
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o código do projeto host que contém a rede VPC compartilhada.
    • MEMBER é uma identidade à qual o papel está associado, como um usuário, grupo, domínio ou conta de serviço. Para ver mais informações, consulte o campo members na documentação do Resource Manager.
    • ETAG é um identificador exclusivo que você recebeu quando descreveu a política existente. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

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

Administradores de projetos de serviço para algumas sub-redes

Um Administrador da VPC compartilhada pode atribuir um membro do IAM de um projeto de serviço para ser um Administrador de projetos de serviço com acesso somente a algumas das sub-redes do projeto host. Essa opção fornece um meio mais granular para definir os Administradores de projetos de serviços, concedendo a eles o papel compute.networkUser para apenas algumas sub-redes no projeto host.

Console

Para definir um membro do IAM de um projeto de serviço como Administrador do projeto de serviço com acesso a apenas algumas sub-redes em um projeto host usando o Console do Cloud, consulte a seção anexar projetos de serviço.

gcloud

Essas etapas abrangem a definição de membros do IAM a partir de um projeto de serviço como Administradores de projetos de serviços com acesso a apenas algumas sub-redes em um projeto host. Antes de defini-los, ative um projeto host e anexe o projeto de serviço ao projeto host.

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Escolha a sub-rede no projeto host a que os Administradores do projeto de serviço têm acesso. A política IAM atual está em formato JSON. Substitua SUBNET_NAME pelo nome da sub-rede no projeto host e HOST_PROJECT_ID pelo código do projeto host.

    gcloud beta compute networks subnets get-iam-policy SUBNET_NAME \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID \
        --format json
    
  3. Copie a saída JSON da etapa anterior e salve-a em um arquivo. Para que as instruções fiquem claras, essas etapas salvam a saída em um arquivo denominado subnet-policy.json.

  4. Modifique o arquivo subnet-policy.json, adicionando os membros do IAM que se tornarão Administradores de projetos de serviço com acesso à sub-rede. Substitua cada SERVICE_PROJECT_ADMIN pelo endereço de e-mail de um usuário do IAM do projeto de serviço.

    {
      "bindings": [
      {
         "members": [
               "user:[SERVICE_PROJECT_ADMIN]",
               "user:[SERVICE_PROJECT_ADMIN]"
            ],
            "role": "roles/compute.networkUser"
      }
      ],
      "etag": "[ETAG_STRING]"
    }
    

    Observe que é possível especificar diferentes tipos de membros do IAM (que não sejam usuários) na política:

    • Alterne user: com group: para especificar um grupo do Google (por endereço de e-mail) como membro.
    • Alterne user: com domain: para especificar um domínio do Google como membro.
    • Use serviceAccount: para especificar uma conta de serviço. Consulte Contas de serviço como Administradores de projetos de serviços para ver mais informações sobre este caso de uso.
  5. Atualize a vinculação da política da sub-rede usando o conteúdo do arquivo subnet-policy.json.

    gcloud beta compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID
    
  6. Ao concluir a definição dos Administradores de projetos de serviço, saia da gcloud para proteger as credenciais da conta de Administrador da VPC compartilhada.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Descreva e registre os detalhes da sua política de sub-rede existente. Você precisará da política existente e valor de etag.

    GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
    

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o código do projeto host que contém a rede VPC compartilhada.
    • SUBNET_NAME é o nome da sub-rede a ser compartilhada.
    • SUBNET_REGION é a região em que a sub-rede está localizada.
  2. Atualize as políticas de rede para conceder aos Administradores de projetos de serviço acesso às sub-redes no projeto host.

    POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            MEMBER,
            ...additional members
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Substitua os marcadores por valores válidos:

    • ETAG é um identificador exclusivo que você recebeu quando descreveu a política existente. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.
    • HOST_PROJECT_ID é o código do projeto host que contém a rede VPC compartilhada.
    • MEMBER é uma identidade à qual o papel está associado, como um usuário, grupo, domínio ou conta de serviço. Para ver mais informações, consulte o campo members na documentação do Resource Manager.
    • SUBNET_NAME é o nome da sub-rede a ser compartilhada.
    • SUBNET_REGION é a região em que a sub-rede está localizada.

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

Contas de serviço como Administradores de projetos de serviço

Um Administrador da VPC compartilhada também pode definir contas de serviços a partir de projetos de serviço como Administradores de projetos de serviço. Nesta seção, mostraremos como definir dois tipos diferentes de contas de serviço como Administradores de projetos de serviço:

Como outros membros do IAM, o papel de Administrador do projeto de serviço (compute.networkUser) pode ser concedido para todas as sub-redes ou para apenas algumas sub-redes do projeto host. No entanto, para que as instruções fiquem claras, nesta seção mostraremos apenas como definir cada um dos dois tipos de conta de serviço como Administradores de projetos de serviço para todas as sub-redes do projeto host.

Contas de serviço gerenciadas pelo usuário como Administradores de projetos de serviço

Essas instruções descrevem como definir uma conta de serviço gerenciada pelo usuário como um Administrador do projeto de serviço para todas as sub-redes do projeto host da VPC compartilhada.

Console

  1. Faça login no Console do Google Cloud como um Administrador de VPC compartilhada.
  2. Acesse a página "Configurações" no Console do Google Cloud.
    Acessar a página "Configurações"
  3. Altere o projeto para o projeto de serviço que contém a conta de serviço que precisa ser definida como um Administrador do projeto de serviço.
  4. Copie o Código do projeto de serviço. Para que as instruções fiquem claras, este procedimento refere-se ao código do projeto de serviço como SERVICE_PROJECT_ID.
  5. Altere o projeto para o projeto host da VPC compartilhada.
  6. Acesse a página "IAM" no Console do Google Cloud.
    Acessar a página "IAM"
  7. Clique em Adicionar.
  8. Adicione SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com ao campo Membros, substituindo SERVICE_ACCOUNT_NAME pelo nome da conta de serviço.
  9. Selecione Compute Engine > Usuário da rede do Compute no menu Papéis.
  10. Clique em Adicionar.

gcloud

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Se você não souber o código do projeto de serviço, liste todos os projetos em sua organização. Esta lista mostra o código do projeto para cada um.

    gcloud projects list
    
  3. Crie uma vinculação de política para tornar a conta de serviço um Administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo código do projeto host, SERVICE_ACCOUNT_NAME pelo nome da conta de serviço e SERVICE_PROJECT_ID pelo código do projeto de serviço.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Descreva e registre os detalhes da política de projetos existente. Você precisará da política existente e valor de etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Substitua HOST_PROJECT_ID pelo código do projeto host que contém a rede VPC compartilhada.

  2. Crie uma vinculação de política para atribuir contas de serviço como Administradores de projetos de serviço.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com",
            ...include additional service accounts
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o código do projeto host que contém a rede VPC compartilhada.
    • SERVICE_ACCOUNT_NAME é o nome da conta de serviço.
    • SERVICE_PROJECT_ID é o código do projeto de serviço que contém a conta de serviço.
    • ETAG é um identificador exclusivo que você recebeu quando descreveu a política existente. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

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

Conta de serviço das APIs do Google como um Administrador do projeto de serviço

Essas instruções descrevem como definir a conta de serviço das APIs do Google como um Administrador do projeto de serviço para todas as sub-redes do projeto host da VPC compartilhada. Tornar a conta de serviço das APIs do Google um Administrador do projeto de serviço é um requisito para grupos de instâncias gerenciadas usados ​​com a VPC compartilhada, porque tarefas como a criação de instâncias são realizadas por esse tipo de conta de serviço. Consulte Grupos de instâncias gerenciadas e IAM para ver mais informações sobre esse relacionamento.

Console

  1. Faça login no Console do Google Cloud como um Administrador de VPC compartilhada.
  2. Acesse a página "Configurações" no Console do Google Cloud.
    Acessar a página "Configurações"
  3. Altere o projeto para o projeto de serviço que contém a conta de serviço que precisa ser definida como um Administrador do projeto de serviço.
  4. Copie o Número do projeto de serviço. Para que as instruções fiquem claras, este procedimento refere-se ao número do projeto de serviço como SERVICE_PROJECT_NUMBER.
  5. Altere o projeto para o projeto host da VPC compartilhada.
  6. Acesse a página "IAM" no Console do Google Cloud.
    Acessar a página "IAM"
  7. Clique em Adicionar.
  8. Adicione SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com ao campo Membros.
  9. Selecione Compute Engine > Usuário da rede do Compute no menu Papéis.
  10. Clique em Adicionar.

gcloud

  1. Se ainda não tiver feito isso, autentique-se em gcloud como Administrador de VPC compartilhada. Substitua SHARED_VPC_ADMIN pelo nome do Administrador de VPC compartilhada:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Determine o número do projeto para o projeto de serviço. Para que as instruções fiquem claras, este procedimento refere-se ao número do projeto de serviço como SERVICE_PROJECT_NUMBER. Substitua SERVICE_PROJECT_ID pelo código do projeto de serviço.

    gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
    
    • Se você não souber o código do projeto de serviço, liste todos os projetos em sua organização. Esta lista mostra o número do projeto para cada um.

      gcloud projects list
      
  3. Crie uma vinculação de política para tornar a conta de serviço um Administrador do projeto de serviço. Substitua HOST_PROJECT_ID pelo código do projeto host e SERVICE_PROJECT_NUMBER pelo número do projeto de serviço.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Descreva e registre os detalhes da política de projetos existente. Você precisará da política existente e valor de etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Substitua HOST_PROJECT_ID pelo código do projeto host que contém a rede VPC compartilhada.

  2. Liste seu projeto para encontrar o número do projeto.

    GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
    

    Substitua SERVICE_PROJECT_ID pelo código do projeto de serviço em que a conta de serviço está localizada.

  3. Crie uma vinculação de política para atribuir contas de serviço como Administradores de projetos de serviço.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o código do projeto host que contém a rede VPC compartilhada.
    • SERVICE_PROJECT_NUMBER é o número do projeto de serviço que contém a conta de serviço.
    • ETAG é um identificador exclusivo que você recebeu quando descreveu a política existente. Isso evita colisões se várias solicitações de atualizações forem enviadas ao mesmo tempo.

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

Como usar VPC compartilhada

Depois que um Administrador de VPC compartilhada conclui as tarefas de ativar um projeto host, anexar os projetos de serviço necessários a ele e definir Administradores de projetos de serviço para todas ou algumas sub-redes do projeto host, os Administradores de projetos de serviço podem criar instâncias, modelos e balanceadores de carga internos nos projetos de serviço usando as sub-redes do projeto host.

Todas as tarefas nesta seção são executadas por um Administrador do projeto de serviço.

É importante observar que um Administrador de VPC compartilhada concede aos Administradores de projetos de serviço somente o papel compute.networkUser (para todo o projeto host ou apenas algumas de suas sub-redes). Os Administradores de projetos de serviço também têm outros papéis necessários para administrar seus respectivos projetos de serviço. Por exemplo, um Administrador do projeto de serviço também pode ser proprietário do projeto ou pelo menos ter o papel compute.instanceAdmin no projeto.

Como listar as sub-redes disponíveis

Os Administradores de projetos de serviço podem listar as sub-redes para as quais receberam permissão seguindo estas etapas.

Console

Acesse a página "VPC compartilhada" no Console do Google Cloud.
Acessar a página "VPC compartilhada"

gcloud

  1. Autentique-se no gcloud como um Administrador de projetos de serviço, se ainda não tiver feito isso. Substitua SERVICE_PROJECT_ADMIN pelo nome do Administrador de projeto de serviço:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Execute o seguinte comando, substituindo HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada:

    gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
    

    O exemplo a seguir lista as sub-redes disponíveis no projeto host project-1:

    $ gcloud compute networks subnets list-usable --project project-1
    
    PROJECT    REGION       NETWORK  SUBNET    RANGE          SECONDARY_RANGES
    project-1  us-west1     net-1    subnet-1  10.138.0.0/20
    project-1  us-central1  net-1    subnet-2  10.128.0.0/20  r-1 192.168.2.0/24
                                                              r-2 192.168.3.0/24
    project-1  us-east1     net-1    subnet-3  10.142.0.0/20
    

Para saber mais informações, consulte o comando list-usable na documentação do SDK.

API

Liste as sub-redes disponíveis no projeto host. Faça a solicitação como um Administrador de projeto de serviço.

GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable

Substitua HOST_PROJECT_ID pelo código do projeto host que contém a rede VPC compartilhada.

Para ver mais informações, consulte o método subnetworks.listUsable.

Como reservar um IP interno estático

Os Administradores do projeto de serviço podem reservar um endereço IP interno em uma sub-rede de uma rede VPC compartilhada. Observe que o objeto de configuração de endereço IP é criado no projeto de serviço, enquanto seu valor vem do intervalo de endereços disponíveis na sub-rede compartilhada escolhida.

gcloud

  1. Autentique-se no gcloud como um Administrador de projetos de serviço, se ainda não tiver feito isso. Substitua SERVICE_PROJECT_ADMIN pelo nome do Administrador de projeto de serviço:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Execute o seguinte comando, substituindo HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada:

    gcloud compute addresses create IP_ADDR_NAME \
    --project SERVICE_PROJECT_ID \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --region=REGION
    

Faça estas substituições:

  • IP_ADDR_NAME por um nome para o objeto de endereço IP
  • SERVICE_PROJECT_ID pelo código do projeto de serviço
  • HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada
  • REGION pela região que contém a sub-rede compartilhada
  • SUBNET pelo nome da sub-rede compartilhada

Outros detalhes sobre a criação de endereços IP estão publicados na documentação do SDK.

API

Reserve um endereço IP interno estático como Administrador de projeto de serviço.

POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
{
  "name": "ADDRESS_NAME",
  "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "addressType": "INTERNAL"
}

Substitua os marcadores por valores válidos:

  • ADDRESS_NAME é um nome para o endereço IP interno reservado.
  • HOST_PROJECT_ID é o código do projeto que contém a rede VPC compartilhada.
  • REGION é a região onde o endereço IP reservado será localizado e onde a sub-rede compartilhada está localizada.
  • SERVICE_PROJECT_ID é o código do projeto de serviço em que você está reservando o endereço IP.
  • SUBNET_NAME é o nome da sub-rede compartilhada.

Para ver mais informações, consulte o método addresses.insert.

Como criar uma instância

Considere isto ao criar uma instância usando a VPC compartilhada:

  • O processo padrão de criação de uma instância envolve a seleção de uma zona, uma rede e uma sub-rede. A sub-rede e a zona selecionadas precisam estar na mesma região. Quando um Administrador de projeto de serviço cria uma instância usando uma sub-rede de uma rede VPC compartilhada, a zona selecionada para essa instância precisa estar na mesma região da sub-rede selecionada.

    • Ao criar uma instância com um endereço IP interno estático reservado, a sub-rede e a região já estavam selecionadas quando o endereço IP estático foi criado. Um exemplo do gcloud para criar uma instância com um endereço IP interno estático é fornecido nesta seção.
  • Os Administradores do projeto de serviço só podem criar instâncias usando sub-redes para as quais receberam permissão. Consulte como listar sub-redes disponíveis para determinar quais sub-redes estão disponíveis.

  • Quando o Google Cloud recebe uma solicitação para criar uma instância em uma sub-rede de uma rede VPC compartilhada, ele verifica se o membro do IAM que faz a solicitação tem permissão para usar essa sub-rede compartilhada. Se a verificação falhar, a instância não será criada, e o Google Cloud retornará um erro de permissões. Entre em contato com o Administrador da VPC compartilhada para receber ajuda.

Console

  1. Acesse a página "Instâncias de VM" no Console do Google Cloud Platform.
    Acessar a página "Instâncias de VM"
  2. Clique em Criar.
  3. Especifique um Nome para a instância.
  4. Clique em Gerenciamento, segurança, discos, rede, locatário único.
  5. Clique em Rede.
  6. Clique no botão de opção Redes compartilhadas comigo.
  7. Selecione a Sub-rede compartilhada na qual você quer criar a instância.
  8. Especifique todos os outros parâmetros necessários para a instância.
  9. Clique em Criar.

gcloud

  • Para criar uma instância com um endereço IP interno temporário em uma sub-rede compartilhada de uma rede VPC compartilhada:

    gcloud compute instances create INSTANCE_NAME \
    --project SERVICE_PROJECT_ID \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --zone ZONE
    

    Faça estas substituições:

    • INSTANCE_NAME pelo nome da instância
    • SERVICE_PROJECT_ID pelo código do projeto de serviço
    • HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada
    • REGION pela região que contém a sub-rede compartilhada
    • SUBNET pelo nome da sub-rede compartilhada
    • ZONE por uma zona na região especificada
  • Para criar uma instância com um endereço IP interno estático reservado em uma rede VPC compartilhada:

    1. Reserve um endereço IP interno estático no projeto host.
    2. Crie a instância:

      gcloud compute instances create INSTANCE_NAME \
      --project SERVICE_PROJECT_ID \
      --private-network-ip IP_ADDR_NAME \
      --zone ZONE
      --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
      

      Faça estas substituições:

      • INSTANCE_NAME pelo nome da instância
      • SERVICE_PROJECT_ID pelo código do projeto de serviço
      • HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada
      • IP_ADDR_NAME pelo nome do endereço IP estático
      • ZONE por uma zona na mesma região que IP_ADDR_NAME
      • SUBNET pelo nome da sub-rede compartilhada associada ao endereço IP interno estático.

API

  • Para criar uma instância com um endereço IP interno efêmero como um Administrador de projeto de serviço, especifique apenas a sub-rede.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Substitua os marcadores por valores válidos:

    • INSTANCE_NAME é um nome para a instância.
    • HOST_PROJECT_ID é o código do projeto que contém a rede VPC compartilhada.
    • MACHINE_TYPE é um tipo de máquina para a instância.
    • REGION é a região que contém a sub-rede compartilhada.
    • SERVICE_PROJECT_ID é o código do projeto de serviço.
    • SOURCE_IMAGE é uma imagem da instância.
    • SUBNET é o nome da sub-rede compartilhada.
    • ZONE é uma zona na região especificada.

    Para ver mais informações, consulte o método instances.insert.

  • Para criar uma instância com um endereço IP interno reservado como um Administrador de projeto de serviço, especifique a sub-rede e o nome do endereço IP reservado.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Substitua os marcadores por valores válidos:

    • ADDRESS_NAME é o nome do endereço IP interno reservado.
    • INSTANCE_NAME é um nome para a instância.
    • HOST_PROJECT_ID é o código do projeto que contém a rede VPC compartilhada.
    • MACHINE_TYPE é um tipo de máquina para a instância.
    • REGION é a região que contém a sub-rede compartilhada.
    • SERVICE_PROJECT_ID é o código do projeto de serviço.
    • SOURCE_IMAGE é uma imagem da instância.
    • SUBNET é o nome da sub-rede compartilhada.
    • ZONE é uma zona na região especificada.

    Para ver mais informações, consulte o método instances.insert.

Como criar um modelo de instância

Considere isto ao criar um modelo de instância usando a VPC compartilhada:

  • O processo para criar um modelo de instância envolve selecionar uma rede e uma sub-rede.

    • Os modelos criados para uso em uma rede VPC compartilhada em modo personalizado precisam especificar a rede e uma sub-rede.

    • Os modelos criados para uso em uma rede VPC compartilhada em modo automático podem opcionalmente adiar a seleção de uma sub-rede. Nesses casos, uma sub-rede será selecionada automaticamente na mesma região que qualquer grupo de instâncias gerenciadas que usar o modelo. Por definição, as redes de modo automático têm uma sub-rede em cada região.

  • Quando um membro do IAM cria um modelo de instância, o Google Cloud não executa uma verificação de permissões para ver se o membro pode usar a sub-rede especificada. Essa verificação de permissões é sempre adiada quando um grupo de instâncias gerenciadas usando o modelo é solicitado.

Console

  1. Acesse a página "Modelos de instância" no Console do Google Cloud.
    Acessar a página "Modelos de instância"
  2. Clique em Criar modelo de instância.
  3. Especifique um Nome para o modelo de instância.
  4. Clique em Gerenciamento, segurança, discos, rede, locatário único.
  5. Clique em Rede.
  6. Clique no botão de opção Redes compartilhadas comigo.
  7. Selecione a Sub-rede compartilhada na qual você quer criar o modelo de instância.
  8. Especifique todos os outros parâmetros necessários para o modelo de instância.
  9. Clique em Criar.

gcloud

  • Para criar um modelo de instância para uso em qualquer sub-rede criada automaticamente de uma rede VPC compartilhada em modo automático:

    gcloud compute instance-templates create TEMPLATE_NAME \
    --project SERVICE_PROJECT_ID \
    --network projects/HOST_PROJECT_ID/global/networks/NETWORK
    

    Faça estas substituições:

    • TEMPLATE_NAME pelo nome do modelo
    • SERVICE_PROJECT_ID pelo código do projeto de serviço
    • HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada
    • NETWORK pelo nome da rede VPC compartilhada
  • Para criar um modelo de instância para uma sub-rede criada manualmente em uma rede VPC compartilhada (em modo automático ou personalizado):

    gcloud compute instance-templates create TEMPLATE_NAME \
    --project SERVICE_PROJECT_ID \
    --region REGION \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Faça estas substituições:

    • TEMPLATE_NAME pelo nome do modelo
    • SERVICE_PROJECT_ID pelo código do projeto de serviço
    • HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada
    • REGION pela região que contém a sub-rede compartilhada
    • SUBNET pelo nome da sub-rede compartilhada

API

  • Para criar um modelo de instância que use qualquer sub-rede criada automaticamente de uma rede VPC compartilhada de modo automático, especifique a rede VPC.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK"
        }
      ]
    ...
    }
    

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o código do projeto que contém a rede VPC compartilhada.
    • SERVICE_PROJECT_ID é o código do projeto de serviço.
    • NETWORK é o nome da rede VPC compartilhada.

    Para ver mais informações, consulte o método instanceTemplates.insert.

  • Para criar um modelo de instância que use uma sub-rede criada manualmente na rede VPC compartilhada (modo automático ou personalizado), especifique a sub-rede.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ]
    ...
    }
    

    Substitua os marcadores por valores válidos:

    • HOST_PROJECT_ID é o código do projeto que contém a rede VPC compartilhada.
    • REGION é a região que contém a sub-rede compartilhada.
    • SERVICE_PROJECT_ID é o código do projeto de serviço.
    • SUBNET_NAME é o nome da sub-rede compartilhada.

    Para ver mais informações, consulte o método instanceTemplates.insert.

Como criar um grupo de instâncias gerenciadas

Considere isto ao criar um grupo de instâncias gerenciadas usando a VPC compartilhada:

  • Os grupos de instâncias gerenciadas usados com a VPC compartilhada exigem que a conta de serviço das APIs do Google seja um Administrador do projeto de serviço, já que tarefas como a criação automática de instâncias por meio do escalonamento automático são executadas por essa conta de serviço.

  • O processo padrão de criação de um grupo de instâncias gerenciadas envolve a seleção de uma zona ou região, dependendo do tipo de grupo e de um modelo de instância. Os detalhes de rede e sub-rede estão vinculados ao modelo de instância. Os modelos de instância qualificados são restritos àqueles que fazem referência a sub-redes na mesma região usada pelo grupo de instâncias gerenciadas.

  • Os Administradores do projeto de serviço só podem criar grupos de instâncias gerenciadas com instâncias de membro que usam sub-redes para as quais receberam permissão. Como os detalhes da rede e da sub-rede estão vinculados ao modelo da instância, os Administradores do projeto de serviço só podem usar modelos que se referem às sub-redes que estão autorizados a usar.

  • Quando o Google Cloud recebe uma solicitação para criar um grupo de instâncias gerenciadas, ele verifica se o membro do IAM que fez a solicitação tem permissão para usar a sub-rede especificada no modelo. Se a verificação falhar, o grupo de instâncias gerenciadas não será criado, e o Google Cloud retornará um erro de permissões. Liste as sub-redes disponíveis para determinar quais podem ser usadas. Entre em contato com o Administrador da VPC compartilhada para receber ajuda.

Para ver mais informações, consulte a seção Como criar grupos de instâncias gerenciadas na documentação do Compute Engine.

Como criar um balanceador de carga TCP/UDP interno

O exemplo a seguir ilustra o que você precisa considerar ao criar um balanceador de carga TCP/UDP interno em uma rede VPC compartilhada. Os Administradores de projetos de serviço podem criar um balanceador de carga TCP/UDP interno que usa uma sub-rede (no projeto host) à qual têm acesso. A regra de encaminhamento interno do balanceador de carga é definida no projeto de serviço, mas sua referência de sub-rede aponta para uma sub-rede em uma rede VPC compartilhada do projeto host.

Antes de criar um balanceador de carga TCP/UDP interno em um ambiente de VPC compartilhada, verifique os seguintes documentos:

Console

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"

  2. Crie seu balanceador de carga TCP/UDP interno, fazendo o seguinte ajuste: na seção Configurar serviços de front-end, selecione a sub-rede da VPC compartilhada da seção Redes compartilhadas por outros projetos do menu Sub-rede.

  3. Conclua a criação do balanceador de carga.

gcloud

Ao criar a regra de encaminhamento interno, especifique uma sub-rede no projeto host com a sinalização --subnet:

gcloud compute forwarding-rules create FR_NAME \
    --project SERVICE_PROJECT_ID \
    --load-balancing-scheme internal \
    --region REGION \
    --ip-protocol IP_PROTOCOL \
    --ports PORT,PORT,… \
    --backend-service BACKEND_SERVICE_NAME \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --address INTERNAL_IP

Faça estas substituições:

  • FR_NAME pelo nome da regra de encaminhamento
  • SERVICE_PROJECT_ID pelo código do projeto de serviço
  • REGION pela região que contém a sub-rede compartilhada
  • IP_PROTOCOL por TCP ou UDP, correspondendo ao protocolo do serviço de back-end do balanceador de carga
  • PORT pela porta numérica ou lista de portas do balanceador de carga
  • BACKEND_SERVICE_NAME pelo nome do serviço de back-end (criado como parte do procedimento geral para criar um balanceador de carga TCP/UDP interno)
  • HOST_PROJECT_ID pelo código do projeto host da VPC compartilhada
  • SUBNET pelo nome da sub-rede compartilhada
  • INTERNAL_IP por um endereço IP interno na sub-rede compartilhada (se não for especificado, um disponível será selecionado)

Consulte esta página para ver mais opções para usar com gcloud compute forwarding-rules create.

API

Crie a regra de encaminhamento interno e especifique uma sub-rede no projeto host.

POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "FR_NAME",
  "IPAddress": "IP_ADDRESS",
  "IPProtocol": "PROTOCOL",
  "ports": [ "PORT", ... ],
  "loadBalancingScheme": "INTERNAL",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
  "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME",
  "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME",
  "networkTier": "PREMIUM"
}

Substitua os marcadores por valores válidos:

  • BE_NAME é o nome do serviço de back-end (criado como parte do procedimento geral para criar um balanceador de carga TCP/UDP interno).
  • FR_NAME é um nome para a regra de encaminhamento.
  • HOST_PROJECT_ID é o código do projeto host da VPC compartilhada.
  • IP_ADDRESS é um endereço IP interno na sub-rede compartilhada.
  • IP_PROTOCOL é TCP ou UDP, correspondendo ao protocolo do serviço de back-end do balanceador de carga
  • PORT é a porta numérica ou lista de portas do balanceador de carga.
  • REGION é a região que contém a sub-rede compartilhada.
  • SERVICE_PROJECT_ID é o código do projeto de serviço.
  • SUBNET é o nome da sub-rede compartilhada

Para ver mais informações, consulte o método forwardingRules.insert.

A seguir