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 é compatível com a exportação tanto de sub-redes somente IPv4 (pilha única) quanto de redes IPv4 e IPv6 (pilha dupla).
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:
anote as cotas e os limites que pertencem à VPC compartilhada;
Entenda quais recursos podem utilizá-la e quais recursos não podem.
Lembre-se de ativar a API Compute Engine e o faturamento para seu projeto host e todos os projetos de serviço que você planeja anexar ao projeto host.
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
ouroles/resourcemanager.lienModifier
no nível da organização - Usuário com papéis personalizados que incluem as permissões
resourcemanager.projects.get
eresourcemanager.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.
Autentique-se no
gcloud
como Administrador da organização ou principal do IAM com o papelorgpolicy.policyAdmin
. SubstituaORG_ADMIN
pelo nome de um administrador da organização:gcloud auth login ORG_ADMIN
Consulte a resposta ao comando para determinar o ID da organização.
gcloud organizations list
Para aplicar a política
compute.restrictXpnProjectLienRemoval
à sua organização, execute este comando. SubstituaORG_ID
pelo número determinado na etapa anterior.gcloud resource-manager org-policies enable-enforce \ --organization ORG_ID compute.restrictXpnProjectLienRemoval
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
Faça login no Console do Google Cloud como um Administrador da organização e acesse a página "IAM".
No menu do projeto, selecione sua organização.
Se você selecionar um projeto, o menu Papéis mostrará entradas incorretas.
Clique em Adicionar.
Insira os endereços de e-mail dos Novos principais.
No menu Papéis, selecione Compute Engine > Administrador de VPC compartilhada do Compute
Clique em Adicionar outro papel.
Na lista suspensa Papéis, selecione Resource Manager > Administrador de IAM do projeto.
Clique em Salvar.
Para conceder o papel de Administrador de VPC compartilhada no nível da pasta
Faça login no Console do Google Cloud como um Administrador da organização e acesse a página "IAM".
No menu do projeto, selecione sua pasta.
Se você selecionar um projeto ou uma organização, as opções exibidas estarão incorretas.
Clique em Adicionar.
Insira os endereços de e-mail dos Novos principais.
Em Selecionar um papel, selecione Compute Engine > Administrador de VPC compartilhada do Compute.
Clique em Adicionar outro papel.
No menu Papéis, selecione Resource Manager >. Administrador de IAM do projeto.
Clique em Adicionar outro papel.
No menu Papéis, selecione Resource Manager > Leitor de redes do Compute
Clique em Salvar.
gcloud
Autentique-se no
gcloud
como Administrador da organização. SubstituaORG_ADMIN
pelo nome de um administrador da organização:gcloud auth login ORG_ADMIN
Consulte a resposta ao comando para determinar o ID da organização.
gcloud organizations list
Para atribuir o papel de Administrador de VPC compartilhada na organização faça o seguinte:
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 eEMAIL_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"
Para atribuir o papel de Administrador de VPC compartilhada na pasta, faça o seguinte:
Determine seu código da pasta observando a saída deste comando.
gcloud resource-manager folders list --organization=ORG_ID
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 eEMAIL_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"
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:
Determine o número de ID da organização.
POST https://cloudresourcemanager.googleapis.com/v1/organizations
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.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:
Determine o número de ID da organização.
POST https://cloudresourcemanager.googleapis.com/v1/organizations
Encontre o ID da pasta.
GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
Substitua
ORG_ID
pelo ID da organização.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.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
.
Configurar 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.
Os administradores de VPC compartilhada também podem criar e excluir projetos se tiverem o
papel Criador de projetos e Excluidor de projetos
(roles/resourcemanager.projectCreator
e roles/resourcemanager.projectDeleter
)
na sua organização.
Quando você ativa um projeto host, os recursos de rede do projeto não são compartilhados automaticamente com projetos de serviço. Você precisa anexar projetos de serviço ao projeto host para compartilhar redes e sub-redes selecionadas com os projetos de serviço.
Console
Se você ainda não tem o
papel de Administrador de VPC compartilhada do Compute (roles/compute.xpnAdmin
),
não é possível ver esta página no console do Google Cloud.
No console do Google Cloud, acesse a página VPC compartilhada.
Faça login como administrador de VPC compartilhada.
Selecione o projeto que você quer ativar como projeto host da VPC compartilhada no seletor de projetos.
Clique em Configurar VPC compartilhada.
Na página seguinte, clique em Salvar e continuar abaixo de Ativar projeto host.
Em Selecionar sub-redes, faça isto:
- 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.
- 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.
Clique em Continuar.
A próxima tela será exibida.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.
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.Clique em Salvar.
gcloud
Autentique-se no
gcloud
como Administrador de VPC compartilhada. SubstituaSHARED_VPC_ADMIN
pelo nome do Administrador de VPC compartilhada:gcloud auth login SHARED_VPC_ADMIN
Ative a VPC compartilhada no projeto que se tornará o projeto host. Substitua
HOST_PROJECT_ID
pelo ID do projeto.gcloud compute shared-vpc enable HOST_PROJECT_ID
Confirme se o projeto está listado como um projeto host para a organização. Substitua
ORG_ID
pelo ID da organização (determinado porgcloud organizations list
).gcloud compute shared-vpc organizations list-host-projects ORG_ID
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
Ative a VPC compartilhada para o projeto usando credenciais com permissões de Administrador de VPC compartilhada.
POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
Substitua
HOST_PROJECT_ID
pelo ID do projeto que será um projeto host da VPC compartilhada.Para mais informações, consulte o método
projects.enableXpnHost
.Confirme se o projeto está listado como host.
POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
Substitua
HOST_PROJECT_ID
pelo ID do projeto host da VPC compartilhada.Para mais informações, consulte o método
projects.listXpnHosts
.
Terraform
É possível usar um recurso do Terraform para ativar um projeto host.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Anexar projetos de serviço
É necessário anexar um projeto de serviço a um projeto host antes que os respectivos Administradores de projeto de serviço usem a VPC compartilhada. O Administrador de VPC compartilhada precisa realizar as etapas a seguir para concluir a anexaçã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, veja os limites específicos da VPC compartilhada na página de cotas da VPC.
Console
- Faça login no Console do Google Cloud como administrador de VPC compartilhada.
- No console do Google Cloud, acesse a página VPC compartilhada.
Acessar a página "VPC compartilhada" - Clique na guia Projetos anexados.
- Na guia Projetos anexados, clique no botão Anexar projetos.
- 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.
- Na seção Permissões de rede VPC, selecione os papéis
que já foram concedidos aos principais que receberão o papel
compute.networkUser
. Os principais do IAM recebem o papel de usuário da rede para todo o projeto host ou para determinadas sub-redes no projeto host, com base no modo de compartilhamento da rede VPC. Esses principais são conhecidos como Administradores de projeto de serviço nos respectivos projetos de serviço. - Na seção Modo de compartilhamento da rede VPC, selecione uma destas opções:
- 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.
- 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.
- Clique em Salvar.
gcloud
Se ainda não tiver feito isso, autentique-se em
gcloud
como Administrador de VPC compartilhada. SubstituaSHARED_VPC_ADMIN
pelo nome do Administrador de VPC compartilhada:gcloud auth login SHARED_VPC_ADMIN
Anexe um projeto de serviço a um projeto host ativado anteriormente. Substitua
SERVICE_PROJECT_ID
pelo ID do projeto de serviço eHOST_PROJECT_ID
pelo ID do projeto host.gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_ID \ --host-project HOST_PROJECT_ID
Confirme se o projeto de serviço foi anexado.
gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
Opcionalmente, liste os projetos de serviço que estão anexados ao projeto host:
gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
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
Anexe um projeto de serviço ao projeto host da VPC compartilhada.
POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource { "xpnResource": { "id": "SERVICE_PROJECT" } }
Substitua:
HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.SERVICE_PROJECT
: o ID do projeto de serviço a ser anexado.
Para mais informações, consulte o método
projects.enableXpnResource
.Confirme se os projetos de serviço estão anexados ao projeto host.
GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
Substitua:
HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.
Para mais informações, consulte o método
projects.getXpnResources
.
Terraform
Use um recurso do Terraform para anexar um projeto de serviço.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Administradores de projeto de serviço para todas as sub-redes
O Administrador de VPC compartilhada pode atribuir um principal do 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.
Um usuário que tenha o papel compute.networkUser
no projeto
host poderá ver todas as sub-redes em projetos de serviço anexados.
Console
Para definir um principal 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 Google Cloud, consulte a seção anexar projetos de serviço.
gcloud
Essas etapas abrangem a definição de um principal 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 realizar essas etapas, ative um projeto host e anexe o projeto de serviço ao projeto host.
Se ainda não tiver feito isso, autentique-se em
gcloud
como Administrador de VPC compartilhada. SubstituaSHARED_VPC_ADMIN
pelo nome do Administrador de VPC compartilhada:gcloud auth login SHARED_VPC_ADMIN
Crie uma vinculação de política para tornar o principal do IAM do projeto de serviço um Administrador do projeto de serviço. Substitua
HOST_PROJECT_ID
pelo ID do projeto host eSERVICE_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 principais, altere o formato do argumento
--member
:- Use
group:
para especificar um grupo do Google (por endereço de e-mail) como principal. - Use
domain:
para especificar um domínio do Google como principal. - Use
serviceAccount:
para especificar uma conta de serviço. Para mais informações sobre este caso de uso, veja Contas de serviço como administradores de projeto de serviço.
- Use
Repita a etapa anterior para cada Administrador do projeto de serviço que você precisar definir.
Ao concluir a definição dos Administradores de projetos de serviço, saia da
gcloud
para proteger as credenciais da conta de Administrador de VPC compartilhada.gcloud auth revoke SHARED_VPC_ADMIN
API
Descreva e registre os detalhes da política de projetos existente. Você precisará da política atual e valor de
etag
.POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
Substitua
HOST_PROJECT_ID
pelo ID do projeto host em que está a rede VPC compartilhada.Crie uma vinculação de política para atribuir principais 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": [ PRINCIPAL, ...additional principals ], "role": "roles/compute.networkUser" }, ], "etag": "ETAG", "version": 1, ...other existing policy details }
Substitua:
HOST_PROJECT_ID
: o ID do projeto host que contém a rede VPC compartilhada.PRINCIPAL
: uma identidade a que o papel está associado, como um usuário, grupo, domínio ou conta de serviço. Para mais informações, consulte o campomembers
na documentação do Resource Manager.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
projects.setIamPolicy
.
Administradores de projeto de serviço para algumas sub-redes
O Administrador da VPC compartilhada pode atribuir o papel de Administrador de projeto de serviço a um principal do IAM de um
projeto de serviço, com acesso apenas 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.
Um usuário que tenha o papel compute.networkUser
no projeto
host poderá ver todas as sub-redes em projetos de serviço anexados.
Console
Para definir um principal 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 Google Cloud, consulte a seção anexar projetos de serviço.
gcloud
Estas etapas abrangem a definição de principais do IAM 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.
Se ainda não tiver feito isso, autentique-se em
gcloud
como Administrador de VPC compartilhada. SubstituaSHARED_VPC_ADMIN
pelo nome do Administrador de VPC compartilhada:gcloud auth login SHARED_VPC_ADMIN
Escolha a sub-rede no projeto host a que os Administradores do projeto de serviço têm acesso. A política do IAM atual está em formato JSON. Substitua
SUBNET_NAME
pelo nome da sub-rede no projeto host eHOST_PROJECT_ID
pelo ID do projeto host.gcloud compute networks subnets get-iam-policy SUBNET_NAME \ --region SUBNET_REGION \ --project HOST_PROJECT_ID \ --format json
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
.Modifique o arquivo
subnet-policy.json
adicionando os principais do IAM que vão se tornar Administradores de projetos de serviço com acesso à sub-rede. Substitua cadaSERVICE_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]" }
Na política, é possível especificar diferentes tipos de membros do IAM (que não sejam usuários):
- Alterne
user:
comgroup:
para especificar um grupo do Google (por endereço de e-mail) como principal. - Alterne
user:
comdomain:
para especificar um domínio do Google como principal. - 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.
- Alterne
Atualize a vinculação da política da sub-rede usando o conteúdo do arquivo
subnet-policy.json
.gcloud compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \ --region SUBNET_REGION \ --project HOST_PROJECT_ID
Ao concluir a definição dos Administradores de projetos de serviço, saia da
gcloud
para proteger as credenciais da conta de Administrador de VPC compartilhada.gcloud auth revoke SHARED_VPC_ADMIN
API
Descreva e registre os detalhes da sua política de sub-rede existente. Você precisará da política atual e valor de
etag
.GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
Substitua:
HOST_PROJECT_ID
: o ID 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 onde a sub-rede está localizada.
Atualize as políticas de rede para conceder aos Administradores de projetos de serviço acesso às sub-redes no projeto host.
POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy { "bindings": [ ...copy existing bindings { "members": [ PRINCIPAL, ...additional principals ], "role": "roles/compute.networkUser" }, ], "etag": "ETAG", "version": 1, ...other existing policy details }
Substitua:
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.HOST_PROJECT_ID
: o ID do projeto host que contém a rede VPC compartilhada.PRINCIPAL
: uma identidade a que o papel está associado, como um usuário, grupo, domínio ou conta de serviço. Para mais informações, consulte o campomembers
na documentação do Resource Manager.SUBNET_NAME
: o nome da sub-rede a ser compartilhada.SUBNET_REGION
: a região onde a sub-rede está localizada.
Para mais informações, consulte o método
subnetworks.setIamPolicy
.
Contas de serviço como administradores de projeto 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:
Contas de serviço gerenciadas pelo usuário com este formato:
USER_ID
@SERVICE_PROJECT_ID
.iam.gserviceaccount.comA conta de serviço das APIs do Google tem este formato:
SERVICE_PROJECT_NUMBER
@cloudservices.gserviceaccount.com
O papel de Administrador do projeto de serviço (compute.networkUser
) pode ser concedido para
todas as sub-redes ou 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 projeto 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
- Faça login no Console do Google Cloud como administrador de VPC compartilhada.
- No console do Google Cloud, abra a página Configurações.
Acessar a página "Configurações" - Mude 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.
- Copie o ID do projeto de serviço. Para que as instruções
fiquem claras, este procedimento refere-se ao ID do projeto de serviço como
SERVICE_PROJECT_ID
. - Altere o projeto para o host da VPC compartilhada.
- Acesse a página "IAM" no Console do Google Cloud.
Acessar a página "IAM" - Clique em Adicionar.
- Adicione
SERVICE_ACCOUNT_NAME
@SERVICE_PROJECT_ID
.iam.gserviceaccount.com ao campo Principais, substituindoSERVICE_ACCOUNT_NAME
pelo nome da conta de serviço. - Selecione Compute Engine > Usuário da rede do Compute no menu Papéis.
- Clique em Adicionar.
gcloud
Se ainda não tiver feito isso, autentique-se em
gcloud
como Administrador de VPC compartilhada. SubstituaSHARED_VPC_ADMIN
pelo nome do Administrador de VPC compartilhada:gcloud auth login SHARED_VPC_ADMIN
Se você não souber o ID do projeto de serviço, liste todos os projetos na organização. Esta lista mostra o código do projeto para cada um.
gcloud projects list
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 ID do projeto host,SERVICE_ACCOUNT_NAME
pelo nome da conta de serviço eSERVICE_PROJECT_ID
pelo ID 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
Descreva e registre os detalhes da política de projetos existente. Você precisará da política atual e valor de
etag
.POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
Substitua
HOST_PROJECT_ID
pelo ID do projeto host em que está a rede VPC compartilhada.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:
HOST_PROJECT_ID
: o ID do projeto host que contém a rede VPC compartilhada.SERVICE_ACCOUNT_NAME
: o nome da conta de serviço.SERVICE_PROJECT_ID
: o ID 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 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
projects.setIamPolicy
.
Conta de serviço das APIs do Google como administrador de projeto de serviço
Estas instruções descrevem como definir a conta de serviço das APIs do Google como o 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 gerenciado de instâncias 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. Para mais informações sobre esse relacionamento, consulte Grupos de instâncias gerenciadas e IAM.
Console
- Faça login no Console do Google Cloud como administrador de VPC compartilhada.
- No console do Google Cloud, abra a página Configurações.
Acessar a página "Configurações" - Mude 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.
- 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
. - Altere o projeto para o host da VPC compartilhada.
- Acesse a página "IAM" no Console do Google Cloud.
Acessar a página "IAM" - Clique em Adicionar.
- Adicione
SERVICE_PROJECT_NUMBER
@cloudservices.gserviceaccount.com ao campo Membros. - Selecione Compute Engine > Usuário da rede do Compute no menu Papéis.
- Clique em Adicionar.
gcloud
Se ainda não tiver feito isso, autentique-se em
gcloud
como Administrador de VPC compartilhada. SubstituaSHARED_VPC_ADMIN
pelo nome do Administrador de VPC compartilhada:gcloud auth login SHARED_VPC_ADMIN
Determine o número do projeto de serviço. Para que as instruções sejam claras, este procedimento se refere ao número do projeto de serviço como
SERVICE_PROJECT_NUMBER
. SubstituaSERVICE_PROJECT_ID
pelo ID do projeto de serviço.gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
Se você não souber o ID do projeto de serviço, liste todos os projetos na organização. Esta lista mostra o número do projeto para cada um.
gcloud projects list
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 ID do projeto host eSERVICE_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
Descreva e registre os detalhes da política de projetos existente. Você precisará da política atual e valor de
etag
.POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
Substitua
HOST_PROJECT_ID
pelo ID do projeto host em que está a rede VPC compartilhada.Liste seu projeto para encontrar o número dele.
GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
Substitua
SERVICE_PROJECT_ID
pelo ID do projeto de serviço em que a conta de serviço está localizada.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:
HOST_PROJECT_ID
: o ID do projeto host que contém a rede VPC compartilhada.SERVICE_PROJECT_NUMBER
: o número do projeto de serviço em que está a conta de serviço.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
projects.setIamPolicy
.
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 de projeto de serviço.
É importante observar que um administrador de VPC compartilhada somente concede aos Administradores de projetos de serviço o papel de Usuário da rede do Compute (roles/compute.networkUser
) para todo o projeto host ou apenas alguns das suas sub-redes. Outros papéis também são necessários aos Administradores de projetos de serviço para que administrem 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 de Administrador da instância do Compute (roles/compute.instanceAdmin
).
Liste 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
No console do Google Cloud, acesse a página VPC compartilhada.
gcloud
Autentique-se no
gcloud
como um Administrador de projetos de serviço, se ainda não tiver feito isso. SubstituaSERVICE_PROJECT_ADMIN
pelo nome do Administrador do projeto de serviço:gcloud auth login SERVICE_PROJECT_ADMIN
Execute o comando abaixo, substituindo
HOST_PROJECT_ID
pelo ID 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 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://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable
Substitua HOST_PROJECT_ID
pelo ID do projeto host que contém
a rede VPC compartilhada.
Para mais informações, consulte o
método subnetworks.listUsable
.
Reservar um endereço IPv4 interno ou IPv6 estático
Os administradores de projetos de serviço podem reservar um endereço IPv4 ou IPv6 interno em uma sub-rede de uma rede VPC compartilhada. O objeto de configuração de endereço IP é criado no projeto de serviço, mas o valor dele vem do intervalo de endereços IPv4 disponíveis na sub-rede compartilhada escolhida.
Para reservar um endereço IP interno autônomo no projeto de serviço, conclua as etapas a seguir.
Console
- Configurar VPC compartilhada.
No console do Google Cloud, acesse a página VPC compartilhada.
Faça login como administrador de VPC compartilhada.
Selecione o projeto de serviço no seletor de projetos.
Acesse a página Endereços IP selecionando Rede VPC > Endereços IP.
Clique em Reservar endereço IP estático interno.
No campo Nome, digite um nome de endereço IP.
Na lista Versão do IP, selecione a versão do IP necessária:
- Para reservar um endereço IPv4 interno estático, selecione IPv4.
- Para reservar um endereço IPv6 interno estático, selecione IPv6.
Clique no botão de opção Redes compartilhadas comigo.
Nas listas Rede e Sub-rede, selecione uma rede VPC e uma sub-rede, respectivamente.
Especifique como você quer reservar o endereço IP:
- Para endereços IPv4, para especificar um endereço IPv4 interno estático a ser reservado, em Endereço IP estático, selecione Deixe-me escolher e insira um IP personalizado. Caso contrário, o sistema atribuirá automaticamente um endereço IPv4 interno estático na sub-rede para você.
- Para endereços IPv6, o sistema atribui automaticamente um endereço IPv6 interno estático do intervalo de endereços IPv6 interno da sub-rede.
Opcional: se quiser compartilhar o endereço IPv4 interno estático em diferentes front-ends, em Objetivo, escolha Compartilhado. A seleção padrão é Não compartilhado.
Clique em Reservar.
gcloud
Autentique-se na Google Cloud CLI como Administrador de projeto de serviço, caso ainda não tenha feito isso. Substitua
SERVICE_PROJECT_ADMIN
pelo nome do Administrador do projeto de serviço:gcloud auth login SERVICE_PROJECT_ADMIN
Use o comando
compute addresses create
.Reservar endereços IPv4:
gcloud compute addresses create IP_ADDR_NAME \ --project SERVICE_PROJECT_ID \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --region=REGION --ip-version=IPV4
Reservar endereços IPv6:
gcloud compute addresses create IP_ADDR_NAME \ --project SERVICE_PROJECT_ID \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --region=REGION --ip-version=IPV6
Substitua:
IP_ADDR_NAME
por um nome para o objeto de endereço IPv4SERVICE_PROJECT_ID
: o ID do projeto de serviço.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SUBNET
: o nome da sub-rede compartilhada.
Outros detalhes sobre a criação de endereços IP estão publicados na documentação do SDK.
API
Use o método addresses.insert
.
Reserve um endereço IPv4 interno estático como Administrador de projeto de serviço:
POST https://compute.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:
ADDRESS_NAME
: um nome para o endereço IP interno reservado.HOST_PROJECT_ID
é o ID do projeto que contém a rede VPC compartilhada.REGION
: a região onde o endereço IPv4 reservado será localizado e onde a sub-rede compartilhada está localizada.SERVICE_PROJECT_ID
: o ID do projeto de serviço em que você está reservando o endereço IPv4.SUBNET_NAME
: o nome da sub-rede compartilhada.
Para mais informações, consulte o
método addresses.insert
.
Terraform
É possível usar um bloco de dados do Terraform para especificar as informações da sub-rede
do host.
Em seguida, use um recurso do Terraform para reservar um endereço IPv4 interno estático. Se você omitir o argumento address
opcional, um endereço IPv4 disponível será selecionado e reservado.
Especifique a sub-rede do host:
Reserve um endereço IPv4 da sub-rede do projeto host para usar no projeto de serviço:
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Reservar endereço IPv4 externo estático
Um recurso em um projeto de serviço pode usar um endereço IPv4 externo estático regional definido no projeto de serviço ou no projeto host. Portanto, um recurso nos projetos de serviço anexados pode usar um endereço IPv4 externo estático reservado no projeto host.
Reservar endereço IPv6 externo estático
Os administradores do projeto de serviço podem reservar um endereço IPv6 externo estático em um projeto de serviço. O objeto de configuração de endereço IPv6 é criado no projeto de serviço, mas o valor dele vem do intervalo de endereços disponíveis na sub-rede compartilhada escolhida.
Console
É possível reservar um endereço IPv6 externo autônomo no projeto de serviço usando o Console do Google Cloud:
- Configurar VPC compartilhada.
- No console do Google Cloud, acesse a página VPC compartilhada.
Acessar a página "VPC compartilhada" - Faça login como administrador de VPC compartilhada.
- Selecione o projeto de serviço no seletor de projetos.
- Para acessar a página Endereços IP, selecione Rede VPC > Endereços IP.
- Selecione Reservar endereço IP estático externo.
- Escolha um nome para o novo endereço.
- Especifique se o nível de serviço da rede é Premium ou Standard. A reserva de endereços estáticos IPv6 é suportada apenas no nível Premium.
- Em Versão IP, selecione IPv6.
- Especifique se esse endereço IP é regional ou global.
- Se estiver reservando um endereço IP estático para um balanceador de carga global, escolha Global.
- Se você estiver reservando um endereço IP estático para uma instância ou para um balanceador de carga regional, escolha Regional e selecione a região para criar o endereço.
- Escolha o seguinte:
- Redes neste projeto: escolha esta opção se quiser reservar um endereço IPv6 externo em uma sub-rede da mesma rede da nuvem privada virtual (VPC) em que está reservando o endereço IPv6. do Google Analytics.
- Redes compartilhadas comigo: escolha essa opção para reservar um endereço IPv6 externo em uma sub-rede de uma rede VPC compartilhada.
Com base na sua escolha, selecione o seguinte:
- Rede: a rede VPC.
- Sub-rede: a sub-rede da qual o endereço IPv6 regional será atribuído.
- Tipo de endpoint: escolha VM instance ou Network Load Balancer
Opcional: se você tiver escolhido Instância de VM como o tipo de endpoint, selecione uma instância de VM para anexar o endereço IPv6.
Clique em Reservar.
gcloud
Autentique-se no
gcloud
como um Administrador de projetos de serviço, se ainda não tiver feito isso. SubstituaSERVICE_PROJECT_ADMIN
pelo nome do Administrador do projeto de serviço:gcloud auth login SERVICE_PROJECT_ADMIN
Use o comando
gcloud compute addresses create
:gcloud compute addresses create IP_ADDR_NAME \ --project SERVICE_PROJECT_ID \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --region=REGION \ --ip-version=IPV6 \ --endpoint-type=[VM | NETLB]
Substitua:
IP_ADDR_NAME
: um nome para o objeto de endereço IPv6.SERVICE_PROJECT_ID
: o ID do projeto de serviço.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.SUBNET
: o nome da sub-rede compartilhada.REGION
: a região que contém a sub-rede compartilhada.
API
Para reservar um endereço IPv6 interno estático como administrador de projeto de serviço, use o método addresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses { "name": "ADDRESS_NAME", "ipVersion": "IPV6", "ipv6EndpointType": "VM|LB", "networkTier": "PREMIUM", "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "addressType": "EXTERNAL" }
Substitua:
SERVICE_PROJECT_ID
: o ID do projeto de serviço em que você está reservando o endereço IPv6.REGION
: a região em que o endereço IPv6 reservado e a sub-rede compartilhada estão localizados.ADDRESS_NAME
: um nome para o endereço IPv6 externo estático reservado.HOST_PROJECT_ID
é o ID do projeto que contém a rede VPC compartilhada.SUBNET_NAME
: o nome da sub-rede compartilhada.
Criar uma instância
Lembre-se do seguinte ao usar a VPC compartilhada para criar uma instância:
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 o 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.
Quando você cria uma instância com um endereço IPv4 interno estático reservado, a sub-rede e a região já estão selecionadas quando o endereço IPv4 estático é criado. Um exemplo do
gcloud
para criar uma instância com um endereço IPv4 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. Para determinar quais sub-redes estão disponíveis, consulte Listar as sub-redes 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 principal do IAM que fez 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ão. Para receber ajuda, entre em contato com o administrador de VPC compartilhada.
É possível criar uma instância de pilha dupla se você criá-la em uma sub-rede de pilha dupla. As sub-redes de pilha dupla são compatíveis apenas com redes VPC de modo personalizado. O tipo de acesso IPv6 da sub-rede determina se o endereço IPv6 atribuído à VM é um endereço IPv6 interno ou externo.
Console
- Configurar VPC compartilhada.
No console do Google Cloud, acesse a página VPC compartilhada.
Faça login como administrador de VPC compartilhada.
Selecione o projeto de serviço no seletor de projetos.
Para acessar a página Criar uma instância, selecione Compute Engine > Instâncias de VM > Criar instância.
Especifique um Nome para a instância.
Em Região, selecione uma região que contenha uma sub-rede compartilhada.
Clique em Rede em Opções avançadas.
Em Interfaces de rede, clique no botão de opção Redes compartilhadas comigo.
Na lista Sub-rede compartilhada, selecione a sub-rede necessária em que você quer criar a instância:
- Para endereços IPv4, selecione qualquer sub-rede de pilha única.
- Para endereços IPv6, selecione uma sub-rede de pilha dupla com o tipo de acesso IPv6 necessário.
Selecione o tipo de pilha de IP:
- Para endereços IPv4, selecione IPv4 (pilha única).
- Para endereços IPv6, selecione IPv4 e IPv6 (pilha dupla).
Especifique todos os outros parâmetros necessários para a instância.
Clique em Criar.
gcloud
Crie uma instância com um endereço IPv4 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
Substitua:
INSTANCE_NAME
: o nome da instância.SERVICE_PROJECT_ID
: o ID do projeto de serviço.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SUBNET
: o nome da sub-rede compartilhada.ZONE
: uma zona na região especificada. .
Crie uma instância com um endereço IPv4 interno estático reservado em uma rede VPC compartilhada:
- Reserve um endereço IPv4 interno estático no projeto de serviço a partir do intervalo de endereços disponíveis do projeto host.
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
Substitua:
INSTANCE_NAME
: o nome da instância.SERVICE_PROJECT_ID
: o ID do projeto de serviço.IP_ADDR_NAME
: o nome do endereço IP estático.ZONE
: uma zona na mesma região queIP_ADDR_NAME
HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SUBNET
: o nome da sub-rede compartilhada associada ao endereço IPv4 interno estático.
Crie uma instância com um endereço IPv4 interno temporário e um endereço IPv6 temporário:
gcloud compute instances create INSTANCE_NAME \ --project SERVICE_PROJECT_ID \ --stack-type IPV4_IPV6 \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --zone ZONE
Substitua:
INSTANCE_NAME
: o nome da instância.SERVICE_PROJECT_ID
: o ID do projeto de serviço.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SUBNET
: o nome da sub-rede compartilhada.ZONE
: uma zona na região especificada.
Crie uma instância com um endereço IPv6 externo estático reservado:
gcloud compute instances create INSTANCE_NAME \ --project SERVICE_PROJECT_ID \ --stack-type IPV4_IPV6 \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --ipv6-address IPV6_ADDRESS \ --ipv6-prefix-length=96 \ --ipv6-network-tier PREMIUM \ --zone ZONE
Substitua:
INSTANCE_NAME
: o nome da instância.SERVICE_PROJECT_ID
: o ID do projeto de serviço.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SUBNET
: o nome da sub-rede compartilhada.IPV6_ADDRESS
: o endereço IPv6 que será atribuído à VM.ZONE
: uma zona na região especificada.
API
Para criar uma instância com um endereço IPv4 interno temporário, especifique apenas a sub-rede:
POST https://compute.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:
INSTANCE_NAME
: um nome para a instância.HOST_PROJECT_ID
é o ID 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 ID do projeto de serviço.SOURCE_IMAGE
: uma imagem para a instância.SUBNET
: o nome da sub-rede compartilhada.ZONE
: uma zona na região especificada.
Para mais informações, consulte o método
instances.insert
.Para criar uma instância com um endereço IPv4 interno reservado, especifique a sub-rede e o nome do endereço IPv4 reservado:
POST https://compute.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:
ADDRESS_NAME
: o nome do endereço IPv4 interno reservado.INSTANCE_NAME
: um nome para a instância.HOST_PROJECT_ID
é o ID 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 ID do projeto de serviço.SOURCE_IMAGE
: uma imagem para a instância.SUBNET
: o nome da sub-rede compartilhada.ZONE
: uma zona na região especificada.
Para mais informações, consulte o método
instances.insert
.Para criar uma instância com um endereço IPv4 interno temporário e um endereço IPv6 temporário, especifique a sub-rede e o tipo de pilha:
POST https://compute.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", "stackType": "IPv4_IPv6" } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "SOURCE_IMAGE" } } ] }
Substitua:
INSTANCE_NAME
: um nome para a instância.HOST_PROJECT_ID
é o ID 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 ID do projeto de serviço.SOURCE_IMAGE
: uma imagem para a instância.SUBNET
: o nome da sub-rede compartilhada.ZONE
: uma zona na região especificada.
Para mais informações, consulte o método
instances.insert
.
Terraform
É possível usar um bloco de dados do Terraform para especificar as informações da sub-rede do host. Em seguida, use um recurso do Terraform para criar uma instância de VM em um projeto de serviço.
Especifique a sub-rede do host:
Crie uma instância de VM em um projeto de serviço com um endereço IPv4 temporário da sub-rede compartilhada do projeto host:
Crie uma instância de VM em um projeto de serviço com um endereço IPv4 estático reservado da sub-rede compartilhada do projeto host:
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Criar um modelo de instância
Lembre-se do seguinte ao usar a VPC compartilhada para criar um modelo de instância:
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 é selecionada na mesma região de qualquer grupo gerenciado de instâncias que use o modelo. Por definição, as redes de modo automático têm uma sub-rede em cada região.
Quando o principal do IAM cria um modelo de instância, o Google Cloud não realiza uma verificação de permissões para ver se o principal pode usar a sub-rede especificada. Essa verificação de permissões é sempre adiada quando é solicitado um grupo gerenciado de instâncias que usa o modelo.
É possível criar um modelo de instância de pilha dupla se criar o modelo em uma sub-rede de pilha dupla. As sub-redes de pilha dupla são compatíveis apenas com redes VPC de modo personalizado. O tipo de acesso IPv6 da sub-rede determina se o endereço IPv6 atribuído à VM é um endereço IPv6 interno ou externo.
Console
- Configurar VPC compartilhada.
- No console do Google Cloud, acesse a página VPC compartilhada.
Acessar a página "VPC compartilhada" - Faça login como administrador de VPC compartilhada.
- Selecione o projeto de serviço no seletor de projetos.
- Para acessar a página Criar um modelo de instância, selecione Compute Engine > Modelos de instância > Criar modelos de instância.
- Especifique um Nome para o modelo de instância.
- Na seção Opções avançadas, clique em Rede.
- Na seção Interfaces de rede, clique no botão de opção Redes compartilhadas comigo.
- Na lista Sub-rede compartilhada, selecione a sub-rede necessária em que você quer criar o modelo de instância:
- Para endereços IPv4, selecione qualquer sub-rede de pilha única.
- Para endereços IPv6, selecione uma sub-rede de pilha dupla com o tipo de acesso IPv6 necessário.
- Selecione o tipo de pilha de IP:
- Para endereços IPv4, selecione IPv4 (pilha única).
- Para endereços IPv6, selecione IPv4 e IPv6 (pilha dupla).
- Especifique todos os outros parâmetros necessários para o modelo de instância.
- Clique em Criar.
gcloud
Crie um modelo de instância somente IPv4 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
Substitua:
TEMPLATE_NAME
: o nome do modelo.SERVICE_PROJECT_ID
: o ID do projeto de serviço.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.NETWORK
: o nome da rede VPC compartilhada.
Para criar um modelo de instância somente IPv4 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
Substitua:
TEMPLATE_NAME
: o nome do modelo.SERVICE_PROJECT_ID
: o ID do projeto de serviço.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SUBNET
: o nome da sub-rede compartilhada.
Crie um modelo de instância de pilha dupla que usa uma sub-rede em uma rede VPC compartilhada em modo personalizado:
gcloud compute instance-templates create TEMPLATE_NAME \ --project SERVICE_PROJECT_ID \ --stack-type IPV4_IPV6 \ --region REGION \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
Substitua:
TEMPLATE_NAME
: o nome do modelo.SERVICE_PROJECT_ID
: o ID do projeto de serviço.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SUBNET
: o nome da sub-rede compartilhada.
API
Para criar um modelo de instância somente IPv4 que use qualquer sub-rede criada automaticamente de uma rede VPC compartilhada de modo automático, especifique a rede VPC:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates { "properties": { "networkInterfaces": [ { "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK" } ] ... }
Substitua:
HOST_PROJECT_ID
é o ID do projeto que contém a rede VPC compartilhada.SERVICE_PROJECT_ID
: o ID do projeto de serviço.NETWORK
: o nome da rede VPC compartilhada.
Para mais informações, consulte o método
instanceTemplates.insert
.Para criar um modelo de instância somente IPv4 que use uma sub-rede criada manualmente em uma rede VPC compartilhada (modo automático ou personalizado), especifique a sub-rede:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates { "properties": { "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME" } ] ... }
Substitua:
HOST_PROJECT_ID
é o ID do projeto que contém a rede VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SERVICE_PROJECT_ID
: o ID do projeto de serviço.SUBNET_NAME
: o nome da sub-rede compartilhada.
Para mais informações, consulte o método
instanceTemplates.insert
.Para criar um modelo de instância de pilha dupla que use uma sub-rede em uma rede VPC compartilhada em modo personalizado, especifique a sub-rede e o tipo de pilha:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates { "properties": { "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "stackType": "IPV4_IPV6" } ] ... }
Substitua:
HOST_PROJECT_ID
é o ID do projeto que contém a rede VPC compartilhada.REGION
: a região que contém a sub-rede compartilhada.SERVICE_PROJECT_ID
: o ID do projeto de serviço.SUBNET_NAME
: o nome da sub-rede compartilhada.
Para mais informações, consulte o método
instanceTemplates.insert
.
Terraform
É possível usar um bloco de dados do Terraform para especificar as informações da sub-rede do host. Em seguida, use um recurso do Terraform para criar um modelo de instância de VM. Os endereços IPv4 das VMs vêm da sub-rede compartilhada do projeto host.
A sub-rede precisa estar na mesma região em que as instâncias de VM serão criadas.
Especifique a sub-rede do host:
Crie um modelo de instância de VM no projeto de serviço:
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Criar um grupo gerenciado de instâncias
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, uma vez que tarefas como a criação automática de instâncias via escalonamento automático são realizadas 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 gerenciado de instâncias, ele verifica se o principal do IAM que fez a solicitação tem permissão para usar a sub-rede (na mesma região que o grupo) especificada no modelo. Se a verificação falhar, o grupo gerenciado de instâncias não será criado, e o Google Cloud retornará um erro:
Required 'compute.subnetworks.use' permission for 'projects/SUBNET_NAME
.Liste as sub-redes disponíveis para determinar quais podem ser usadas. Entre em contato com o Administrador da VPC compartilhada se a conta de serviço precisar de acesso adicional. Saiba mais em Contas de serviço como Administradores de projetos de serviço.
Para mais informações, consulte a seção Como criar grupos de instâncias gerenciadas na documentação do Compute Engine.
Criar um balanceador de carga HTTP(S)
Há muitas maneiras de configurar balanceadores de carga de aplicativo externos em uma rede VPC compartilhada. Independentemente do tipo de implantação, todos os componentes do balanceador de carga precisam estar na mesma organização e na mesma rede VPC compartilhada.
Para saber mais sobre arquiteturas de VPC compartilhada compatíveis, consulte:
- Arquitetura de VPC compartilhada para balanceadores de carga de aplicativo externos.
- Arquitetura de VPC compartilhada para balanceadores de carga de aplicativo internos.
Criar um balanceador de carga de rede de passagem interno
O exemplo a seguir ilustra o que você precisa considerar ao criar um balanceador de carga de rede de passagem interno em uma rede VPC compartilhada. Os administradores de projetos de serviço podem criar um balanceador de carga de rede de passagem interno que use uma sub-rede (no projeto host) a que eles tenham acesso. A regra de encaminhamento interno do balanceador de carga é definida no projeto de serviço, mas a respectiva 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 de rede de passagem interno em um ambiente de VPC compartilhada, consulte a arquitetura de VPC compartilhada.
Console
Acesse a página Balanceamento de carga no Console do Google Cloud.
Acessar a página "Balanceamento de carga"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.
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
Substitua:
FR_NAME
: o nome da regra de encaminhamento.SERVICE_PROJECT_ID
: o ID do projeto de serviço.REGION
: a região que contém a sub-rede compartilhada.IP_PROTOCOL
:TCP
ouUDP
, correspondentes ao protocolo do serviço de back-end do balanceador de carga.PORT
: a porta numérica ou a lista de portas do balanceador de carga.BACKEND_SERVICE_NAME
: o nome do serviço de back-end, criado como parte do procedimento geral para criar um balanceador de carga de rede de passagem interno.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.SUBNET
: o nome da sub-rede compartilhada.INTERNAL_IP
: um endereço IP interno na sub-rede compartilhada. Se não for especificado, será selecionado um que esteja disponível
Para mais opções, consulte o
comando gcloud compute forwarding-rules create
.
API
Crie a regra de encaminhamento interno e especifique uma sub-rede no projeto host.
POST https://compute.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:
BE_NAME
: o nome do serviço de back-end, já criado como parte do procedimento geral para criar um balanceador de carga de rede de passagem interno.FR_NAME
: um nome para a regra de encaminhamento.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada.IP_ADDRESS
: um endereço IP interno na sub-rede compartilhada.IP_PROTOCOL
:TCP
ouUDP
, correspondentes ao protocolo do serviço de back-end do balanceador de carga.PORT
: a porta numérica ou a lista de portas do balanceador de carga.REGION
: a região que contém a sub-rede compartilhada.SERVICE_PROJECT_ID
: o ID do projeto de serviço.SUBNET
: o nome da sub-rede compartilhada.
Para mais informações, consulte o
método forwardingRules.insert
.
Terraform
É possível usar um bloco de dados do Terraform para especificar a sub-rede do host e a rede do host. Em seguida, use um recurso do Terraform para criar a regra de encaminhamento.
Especifique a rede do host:
Especifique a sub-rede do host:
No projeto de serviço, crie uma regra de encaminhamento na rede e na sub-rede do projeto do host:
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
A seguir
- Para mais informações sobre a VPC compartilhada, consulte este link.
- Para instruções sobre como configurar clusters do Google Kubernetes Engine com a VPC compartilhada, consulte Configurar clusters com VPC compartilhada.
- Saiba como configurar o acesso a uma rede VPC compartilhada do Cloud Run, Cloud Functions ou do Ambiente padrão do App Engine.
- Para instruções sobre como excluir uma configuração de VPC compartilhada, consulte Como desprovisionar a VPC compartilhada.