Se uma instância de máquina virtual (VM) exigir um endereço IP externo fixo que não muda, será possível conseguir um endereço IP externo estático para ela usando uma das opções a seguir:
- Reserve um novo endereço IP externo estático e atribua-o a uma nova instância de VM.
- Promova um endereço IP externo temporário atual a um endereço IP externo estático.
Se você precisa de um endereço IP estático na rede interna do Compute Engine, leia Como reservar um endereço interno estático.
No Compute Engine, cada instância de VM pode ter várias interfaces de rede. Cada interface pode ter endereços IP internos e externos. As regras de encaminhamento podem ter endereços IP externos para balanceamento de carga externo ou endereços internos para balanceamento de carga interno. Para saber mais sobre endereços IP, leia a documentação Endereços IP.
Antes de começar
- Para usar os exemplos de linha de comando deste guia, siga estas etapas:
- Instale ou atualize a ferramenta de linha de comando gcloud para a versão mais recente.
- Defina uma região e uma zona padrão.
- Para usar os exemplos da API deste guia, configure o acesso a ela.
- Leia Endereços IP.
Reservar um novo endereço IP externo estático
Um endereço IP externo estático é um endereço reservado para seu projeto até que você decida liberá-lo. Se você tiver um endereço IP que seus clientes ou usuários usam para acessar seu serviço, reserve-o para que apenas seu projeto possa usá-lo. Também é possível promover um endereço IP externo temporário para um endereço IP externo estático.
Você pode reservar dois tipos de endereços IP externos:
- Um endereço IP regional que pode ser usado por instâncias de VM com uma ou mais interfaces de rede ou por balanceadores de carga de rede
- Um endereço IP global que pode ser usado em balanceadores de carga globais: HTTP(S), proxy SSL e proxy TCP
Para reservar um endereço IP externo estático, use a ferramenta de linha de comando gcloud
ou a API. Depois disso, atribua-o a uma instância nova durante a criação dela ou a uma instância atual.
Restrições
Apenas um recurso por vez usa um endereço IP externo estático.
Não há como saber se um endereço IP é estático ou temporário depois de ele ter sido atribuído a um recurso, exceto se compará-lo com a lista de endereços IP externos estáticos reservados para esse projeto. Use o subcomando
addresses list
para ver uma lista de endereços IP externos estáticos disponíveis para o projeto.Cada instância de VM pode ter várias interfaces de rede, mas cada interface pode ter apenas um endereço IP externo temporário ou estático.
Observação: as interfaces de rede podem receber tráfego de várias regras de encaminhamento, que também disponibilizam outros endereços IP externos. Qualquer número de endereços IP externos pode fazer referência a uma interface de rede por meio dessas regras de encaminhamento, mas cada interface de rede pode ter apenas um endereço IP externo que converte pacotes para o endereço IP interno da interface.
Para mais informações sobre as regras de balanceamento de carga e encaminhamento, leia a documentação sobre balanceamento de carga.
Console
No Console do Cloud, acesse a página Reservar um endereço estático.
Escolha um nome para o novo endereço.
Especifique se o endereço é
IPv4
ouIPv6
. Os endereçosIPv6
só podem ser globais. Também só podem ser usados com balanceadores de carga globais HTTP(S) e de proxy SSL/TCP.Escolha se esse endereço IP é regional ou global. Se você estiver reservando um endereço IP estático para uma instância ou para um balanceador de carga de rede, escolha Regional. Se estiver reservando um endereço IP estático para um balanceador de carga HTTP(S) ou de proxy SSL/TCP, escolha Global.
Se o endereço IP for regional, selecione a região para criar o endereço.
Opcional: selecione um recurso para anexar o IP.
Clique em Reservar para reservar o IP.
gcloud
Para reservar um endereço IP externo estático usando gcloud compute
,
use o comando compute addresses create
.
Se você quiser reservar um endereço IP global, use os campos --global
e
--ip-version
. No campo --ip-version
, especifique IPV4
ou IPV6
. Os endereços IPv6
só podem ser globais. Também só podem ser usados com
balanceadores de carga globais HTTP(S) e de proxy SSL/TCP.
Substitua ADDRESS_NAME
pelo nome escolhido para
chamar esse endereço.
gcloud compute addresses create ADDRESS_NAME \ --global \ --ip-version [IPV4 | IPV6]
Se você quiser reservar um endereço IP regional, use o campo --region
:
gcloud compute addresses create ADDRESS_NAME \ --region REGION
Substitua:
ADDRESS_NAME
: o nome que você quer atribuir a esse endereço;REGION
: o endereço IP para a solicitação. Ele deve pertencer à mesma região do recurso ao qual o endereço IP será anexado. Todos os endereços IP regionais sãoIPV4
.
Use o comando compute addresses describe
para ver o resultado:
gcloud compute addresses describe ADDRESS_NAME
API
Para criar um endereço IPv4 regional, chame o método addresses.insert
regional:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
O corpo da sua solicitação precisa ter:
{ name: "ADDRESS_NAME" }
Substitua:
ADDRESS_NAME
: o nome que você quer atribuir ao endereço;REGION
: o nome da região para essa solicitação;PROJECT_ID
: o ID do projeto para essa solicitação.
Para endereços IPv4 estáticos globais, chame o método globalAddresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
O corpo da sua solicitação precisa ter:
{ name: "ADDRESS_NAME" }
Para endereços IPv6 estáticos globais, chame o método globalAddresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
O corpo da sua solicitação precisa ter:
{ "name": "ADDRESS_NAME", "ipVersion": "IPV6" }
Use o método addresses.get
para ver o resultado.
Como atribuir um endereço IP externo estático a uma nova instância de VM
Quando você cria uma instância de VM, um endereço IP externo temporário é atribuído automaticamente. Se você não quiser um endereço IP externo temporário, atribua explicitamente um estático à instância.
Console
- No Console do Cloud, acesse a página Instâncias de VM.
- Clique em Criar instância.
- Na página Criar uma nova instância, preencha as propriedades da sua instância.
- Expanda a seção Gerenciamento, segurança, discos, rede, locatário único.
- Clique em Rede.
- Em Interfaces de rede, clique na interface de rede padrão para editá-la.
- Na seção IP externo, selecione o endereço IP externo estático que você reservou no menu suspenso.
- Clique em Concluído para concluir a modificação da interface de rede padrão.
- Clique em Criar para criar a instância.
gcloud
Para atribuir um endereço IP externo estático, use a sinalização --address
durante a criação da instância e informe o endereço IP externo estático:
gcloud compute instances create INSTANCE_NAME --address IP_ADDRESS
Faça estas substituições:
INSTANCE_NAME
: o nome da instância.IP_ADDRESS
: o endereço IP a ser atribuído à instância. Use o endereço IP, não o nome do endereço.
API
Na solicitação para criar uma instância nova, informe explicitamente a propriedade networkInterfaces[].accessConfigs[].natIP
e o IP externo que pretende usar. Por exemplo:
{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT", "natIP": "IP_ADDRESS" }], "network": "global/networks/default" }], "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/v20150818" } }] }
Como alterar ou atribuir um endereço IP externo a uma instância atual
Atribua ou altere um endereço IP externo, temporário ou estático, a uma instância atual modificando a configuração de acesso da instância.
Uma instância pode ter várias interfaces e cada interface pode ter um endereço IP externo. Se ela já tiver um, remova esse endereço primeiro excluindo a configuração de acesso antiga. Depois adicione uma nova configuração de acesso com o novo endereço IP externo.
Console
- No Console do Cloud, acesse a página Instâncias de VM.
- Clique no nome da instância à qual pretende atribuir um IP externo. A página "Detalhes da instância" é aberta.
Na página "Detalhes da instância", conclua as etapas a seguir:
- Clique em Editar.
Em Interfaces de rede, clique no botão de edição.
Em IP externo, selecione um endereço IP externo temporário ou estático para atribuir à instância.
Clique em Concluir.
Clique em Salvar.
gcloud
[Opcional] Reserve um endereço IP externo estático.
Para atribuir um endereço IP externo estático, reserve um endereço e verifique se ele não está em uso. Se necessário, siga as instruções para reservar um novo endereço IP externo estático ou para cancelar a atribuição de um endereço desse tipo.
Se você pretende usar um endereço IP externo temporário, pule esta etapa e um endereço IP externo temporário será atribuído aleatoriamente pelo Compute Engine.
Exclua configurações de acesso atuais.
É possível definir uma configuração de acesso para cada instância. Antes de tentar atribuir uma nova configuração de acesso a uma instância, faça uma solicitação
gcloud compute instances describe
para verificar se a instância tem uma configuração de acesso:gcloud compute instances describe INSTANCE_NAME
Se já houver uma configuração de acesso, ela aparecerá no formato a seguir:
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 130.211.181.55 type: ONE_TO_ONE_NAT
Antes de adicionar uma nova configuração de acesso, use o subcomando
instances delete-access-config
para excluir a configuração atual:gcloud compute instances delete-access-config INSTANCE_NAME \ --access-config-name "ACCESS_CONFIG_NAME"
Faça estas substituições:
INSTANCE_NAME
: o nome da instância.ACCESS_CONFIG_NAME
: a configuração de acesso a ser excluída. Inclua o nome completo entre aspas.
Adicione o novo endereço IP externo.
Use o subcomando
instances add-access-config
para adicionar um novo endereço IP externo:Observação: não substituaIP_ADDRESS
pelo nome do IP estático. É necessário usar o endereço IP real.gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name "ACCESS_CONFIG_NAME" --address IP_ADDRESS
Faça estas substituições:
INSTANCE_NAME
: o nome da instância.ACCESS_CONFIG_NAME
: o nome a ser atribuído a essa configuração de acesso. Inclua o nome completo entre aspas.IP_ADDRESS
: o endereço IP a ser adicionado.
Se você quiser que o Compute Engine atribua um endereço IP externo temporário em vez de usar um endereço IP externo estático, omita a propriedade
--address IP_ADDRESS
:gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name "ACCESS_CONFIG_NAME"
Promover um endereço IP externo temporário
Se a instância tiver um endereço IP externo temporário e você quiser atribuir o IP permanentemente ao projeto, promova o endereço IP externo temporário a um endereço IP externo estático. Promover um endereço IP externo temporário a reservado não faz com que o Google Cloud ignore pacotes enviados para a instância. Isso inclui pacotes enviados para a instância diretamente ou por meio de um balanceador de carga.
Console
- No Console do Cloud, acesse a página Endereços IP externos.
- Na coluna Tipo, altere o tipo de endereço para Estático no endereço IP que você quer promover.
- Atribua um nome ao novo endereço IP estático e clique em Reservar.
gcloud
Para promover um endereço IP externo temporário para um estático, forneça o endereço IP externo temporário usando a sinalização --addresses
com o comando compute addresses create
.
Use a sinalização region
para promover um endereço IP regional temporário ou a sinalização global
para promover um endereço IP global temporário.
gcloud compute addresses create ADDRESS_NAME \ --addresses IP_ADDRESS \ [--region REGION | --global]
Faça estas substituições:
ADDRESS_NAME
: o nome que você quer atribuir a esse endereço;IP_ADDRESS
: o endereço IP que você quer promover.REGION
: a região a que o endereço IP regional pertence.
API
Para promover um endereço IP regional temporário, chame o método addresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
O corpo da sua solicitação precisa ter:
{ name: "ADDRESS_NAME", address: "IP_ADDRESS" }
Faça estas substituições:
ADDRESS_NAME
: o nome que você quer atribuir a esse endereço;IP_ADDRESS
: o endereço IP que você quer promover.REGION
: a região à qual o endereço IP pertence.PROJECT_ID
: o ID do projeto para essa solicitação.
Para promover um endereço IP global temporário, faça uma solicitação POST
para o URI a seguir:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
O corpo da sua solicitação precisa ter:
{ name: "ADDRESS_NAME", address: "IP_ADDRESS" }
Faça estas substituições:
ADDRESS_NAME
: o nome que você quer atribuir a esse endereço;IP_ADDRESS
: o endereço IP que você quer promover.PROJECT_ID
: o ID do projeto para essa solicitação.
O endereço IP externo permanece anexado à instância, mesmo depois de ser sido promovido para um endereço IP externo estático. Se você precisar atribuir o endereço estático recém-promovido a outro recurso, cancele a atribuição do endereço IP externo estático da instância existente.
Como listar endereços IP externos estáticos
Para listar endereços IP externos estáticos que você reservou para o projeto, execute addresses list
ou faça uma solicitação GET
para a API.
Console
No Console do Cloud, acesse a página Endereços IP externos para ver uma lista de endereços IP do seu projeto.
gcloud
Use o comando compute addresses list
.
gcloud compute addresses list
API
Chame o método addresses.list
:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
Faça estas substituições:
REGION
: o nome da região para essa solicitação;PROJECT_ID
: o ID do projeto para essa solicitação.
Para listar todos os endereços em todas as regiões, chame o método aggregatedList
.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
Como descrever um endereço IP externo estático
Para informações sobre um endereço IP externo estático, use o console, a ferramenta gcloud
ou a API.
Console
- No Console do Cloud, acesse a página Endereços IP externos:
- Clique em um endereço IP para ver mais informações sobre ele.
gcloud
Use o comando addresses describe
e substitua ADDRESS_NAME
pelo nome do endereço IP externo que você quer descrever.
gcloud compute addresses describe ADDRESS_NAME
API
Chame o método addresses.get
:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
Faça estas substituições:
ADDRESS_NAME
: o nome do endereço IP.REGION
: o nome da região para essa solicitação;PROJECT_ID
: o ID do projeto para essa solicitação.
Cancelar a atribuição de um endereço IP externo estático
Cancele a atribuição de um endereço IP externo estático excluindo a instância ou a configuração de acesso anexada à instância que está usando o endereço. O cancelamento da atribuição de um endereço IP externo estático permite que você reatribua o endereço IP externo estático a outro recurso.
O cancelamento da atribuição de um endereço IP remove-o do recurso, mas mantém o endereço IP reservado para o projeto. Para saber se um endereço IP estático está sendo usado, faça uma solicitação gcloud compute addresses list
:
gcloud compute addresses list
A resposta pode ser semelhante a esta:
NAME REGION ADDRESS STATUS example-address REGION 130.211.160.207 RESERVED example-address-new REGION 130.211.114.137 IN_USE
Neste exemplo, example-address-new
está em uso no momento.
Para excluir uma configuração de acesso à instância e cancelar a atribuição de um endereço IP externo estático, siga estas etapas:
Encontre o nome da configuração de acesso a ser excluída. Para encontrar o nome, use o comando
gcloud compute instances describe
. SubstituaINSTANCE_NAME
pelo nome da instância.gcloud compute instances describe INSTANCE_NAME
A configuração de acesso aparece no formato a seguir:
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 130.211.181.55 type: ONE_TO_ONE_NAT
Exclua a configuração de acesso.
Use o comando
instances delete-access-config
:gcloud compute instances delete-access-config INSTANCE_NAME \ --access-config-name "ACCESS_CONFIG_NAME"
Faça estas substituições:
INSTANCE_NAME
: o nome da instância.ACCESS_CONFIG_NAME
: o nome da configuração de acesso a ser excluída. Inclua o nome completo entre aspas.
Verifique se o endereço IP externo estático está disponível e marcado como
RESERVED
vez deIN_USE
.gcloud compute addresses list
Exemplo:
NAME REGION ADDRESS STATUS example-address REGION 130.211.160.207 RESERVED example-address-new REGION 130.211.114.137 RESERVED
Agora que o endereço IP externo estático está disponível, atribua-o a outra instância.
Como liberar um endereço IP externo estático
Se o endereço IP externo estático não for mais necessário, libere-o para que ele retorne ao pool geral de IPs para outros usuários do Google Compute Engine.
Console
- No Console do Cloud, acesse a página Endereços IP externos.
- Marque a caixa ao lado do endereço IP a ser liberado.
- Clique em Liberar endereço IP.
gcloud
Use o comando compute addresses delete
.
Substitua ADDRESS_NAME
pelo nome do endereço IP a ser liberado.
gcloud compute addresses delete ADDRESS_NAME
API
Chame o método addresses.delete
:
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
Faça estas substituições:
ADDRESS_NAME
: o nome do endereço IP.REGION
: o nome da região para essa solicitação;PROJECT_ID
: o ID do projeto para essa solicitação.
Como restringir endereços IP externos a instâncias de VMs específicas
Determinadas cargas de trabalho podem exigir requisitos essenciais que incluam restrições de segurança e rede. Por exemplo, talvez você queira restringir o endereço IP externo para que apenas instâncias de VM específicas possam usá-lo. Essa opção pode ajudar a evitar a exfiltração de dados ou a manter o isolamento da rede. É possível usar uma política da organização para restringir endereços IP externos a instâncias de VM específicas com limitações para controlar o uso de endereços IP externos para suas instâncias de VM dentro de uma organização ou um projeto.
A restrição para controlar o endereço IP externo nas instâncias da VM é:
constraints/compute.vmExternalIpAccess
Para usar a restrição, especifique uma política com uma allowedList
de instâncias de VM que podem ter endereços IP externos. Se nenhuma política for especificada, todos os endereços IP externos serão permitidos para todas as instâncias de VM. Quando a política estiver em
vigor, somente as instâncias de VM relacionadas na lista allowedValues
poderão
ser atribuídas a um endereço IP externo, instável ou estático. As
instâncias de VM do Compute Engine que não forem
definidas explicitamente na política não poderão usar endereços
IP externos.
As VMs são identificadas nas listas de permissão e negação usando o URI da instância:
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Especificações
- Você só pode aplicar essa restrição de lista às instâncias de VM.
- Não é possível aplicar a restrição retroativamente. Todas as instâncias de VM que tenham endereços IP externos antes da política ser ativada manterão o endereço IP externo.
- Essa restrição aceita uma
allowedList
ou umadeniedList
, mas não ambas na mesma política. - Cabe a você ou a um administrador com as permissões corretas gerenciar e manter o ciclo de vida e a integridade da instância. A restrição apenas verifica o URI da instância e não impede que as VMs da lista de permissões sejam alteradas, excluídas ou recriadas.
Permissões
Para definir uma restrição no nível do projeto ou da organização, você precisa ter recebido o papel orgpolicy.policyAdmin
na organização.
Como definir a restrição de política no nível da organização
Para definir uma restrição de acesso de IP externo, você precisa saber o código da organização.
Encontrar o ID da organização
Console
Também é possível encontrar o ID no Console do Google Cloud :
- Faça login no Console do Google Cloud .
Clique no seletor de projetos.
Selecione uma organização e procure o ID dela.
gcloud
O n numérico pode ser encontrado executando o comando organizations list
e procurando pelo ID na resposta:
gcloud organizations list
A ferramenta gcloud
retorna algo como:
DISPLAY_NAME ID example-organization 29252605212
Definir a restrição de política
Console
- Acesse a página Políticas da organização.
- Se for necessário, escolha a organização no menu suspenso do projeto.
- Clique em Definir os IPs externos para instâncias de VM permitidas.
- Clique em Editar para editar a política de IP externo. É necessário ter as permissões corretas para poder acessar a ferramenta Editar.
Selecione Plataforma de CPU e GPU para definir a política da organização específica para instâncias de VM específicas.
Escolha a Aplicação da política e o Tipo de política desejados.
Em Valores da política, selecione Personalizada.
Insira um URI para uma instância de VM e pressione enter. O URI precisa ter o formato a seguir:
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Continue a inserir as instâncias de VM conforme necessário.
Clique em Salvar.
gcloud
Use o comando gcloud beta resource-manager org-policies set-policy
para definir a política. Será preciso fornecer a política como um arquivo JSON.
Crie um arquivo JSON semelhante a este:
{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } }
Faça estas substituições:
PROJECT_ID
: o ID do projeto para esta solicitação, comoexample-project
. Observe que isso é diferente de configurar políticas organizacionais, que exigem o ID numérico da organização.ZONE
: a zona da instância.INSTANCE_NAME
: o nome da instância.
Como alternativa, é possível especificar uma lista de deniedValues
para expressar instâncias de VM proibidas explicitamente de ter um endereço IP externo. Qualquer instância que não esteja na lista poderia, implicitamente, ter um endereço IP externo. É possível especificar allowedValues
ou deniedValues
, mas não ambos.
Depois, passe o arquivo com sua solicitação :
gcloud beta resource-manager org-policies set-policy MY_POLICY.JSON --organization ORGANIZATION_ID
Substitua ORGANIZATION_ID
pelo ID numérico da organização.
Se você não quiser que nenhuma instância tenha acesso de IP externo, configure uma política com allValues
definido como DENY
:
{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } }
API
Use a API setOrgPolicy()
para definir a restrição. As VMs na lista allowedValue
especificada terão permissão para ter endereços IP externos. Como alternativa, é possível especificar uma lista de deniedValues
para expressar instâncias de VM proibidas explicitamente de ter um endereço IP externo. Qualquer instância que não esteja na lista poderia, implicitamente, ter um endereço IP externo. É possível especificar allowedValues
ou deniedValues
, mas não ambos.
Por exemplo, a seguir há uma solicitação para definir a restrição compute.vmExternalIpAccess
em uma organização em que as instâncias de VM de determinados projetos dentro da organização têm permissão para ter endereços IP externos:
POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy
ORGANIZATION_ID
é o ID numérico da organização.
No corpo da solicitação, forneça a política desejada para essa restrição:
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } } }
Se você não quiser que nenhuma instância tenha acesso de IP externo, configure uma política com allValues
definido como DENY
:
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } } }
Como definir a política para envolvidos no projeto
A definição de uma política no nível do projeto substitui a política no nível da organização. Por exemplo, se o nível da organização tiver example-vm-1
na lista allowedValues
, mas a política no projeto tiver a mesma VM na lista deniedValues
, a instância de VM não poderá ter um endereço IP externo.
Console
Siga o mesmo processo documentado em Como definir a restrição de política no nível da organização, mas escolha o projeto desejado no seletor de projetos, em vez da organização.
gcloud
Use o comando gcloud beta resource-manager org-policies set-policy
para definir a política. Será preciso fornecer a política como um arquivo JSON. Crie um arquivo JSON semelhante a este:
{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } }
Faça estas substituições:
PROJECT_ID
: o ID do projeto para esta solicitação, comoexample-project
. Observe que isso é diferente de configurar políticas da organização, que exigem o ID numérico da organização.ZONE
: a zona da instância.INSTANCE_NAME
: o nome da instância.
Como alternativa, é possível especificar uma deniedValues
de instâncias de VM proibidas explicitamente de ter um endereço IP externo. Qualquer instância que não esteja na lista poderia, implicitamente, ter um endereço IP externo. É possível especificar allowedValues
ou deniedValues
, mas não ambos.
Depois, passe o arquivo com sua solicitação :
gcloud beta resource-manager org-policies set-policy MY_POLICY.JSON --project example-project
API
Use a API setOrgPolicy()
para definir a restrição. As VMs na lista allowedValue
especificada terão permissão para ter endereços IP externos. Como alternativa, é possível especificar uma lista de deniedValues
para expressar instâncias de VM proibidas explicitamente de ter um endereço IP externo. Qualquer instância que não esteja na lista está implicitamente autorizada a ter um endereço IP externo. É possível especificar allowedValues
ou deniedValues
, mas não ambos.
Por exemplo, a seguir há uma solicitação para definir a restrição compute.vmExternalIpAccess
em um projeto para permitir que instâncias de VM específicas tenham endereços IP externos:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy
Substitua PROJECT_ID
pelo ID do projeto para esta solicitação.
O corpo da solicitação contém a política pretendida para esta restrição:
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } } }
Práticas recomendadas
O Google recomenda que você evite usar a lista
deniedValues
com essa restrição. Se você definir valores na listadeniedValues
, significa que apenas as instâncias de VM na listadeniedValues
estarão restritas de usar endereços IP externos. Essa pode ser uma preocupação de segurança se você quer controlar exatamente quais instâncias podem ter endereços IP externos. Se você quiser remover determinadas instâncias da listaallowedValues
, atualize a política atual para remover as instâncias daallowedList
em vez de colocar as instâncias na listadeniedValues
em uma hierarquia inferior.Se você quiser definir uma política em grande parte da hierarquia de recursos, mas excluir determinados projetos, restaure a política padrão usando o método
setOrgPolicy
. Para isso, especifique o objetorestoreDefault
para permitir que todas as VMs nos projetos sejam associadas a endereços IP externos. As políticas atualmente em vigor para projetos não serão afetadas por esta configuração padrão.Use esta política organizacional com os papéis do IAM para controlar melhor o ambiente. Essa política se aplica somente a instâncias de VM, mas se você quiser controlar melhor e restringir endereços IP externos em dispositivos de rede, conceda o papel
compute.networkAdmin
para as partes apropriadas.Todos os serviços e produtos em execução no Compute Engine na organização ou no projeto com a política ativada estão sujeitos a essa política organizacional. Especificamente, serviços como o Google Kubernetes Engine, Dataflow, Dataproc e Cloud SQL são afetados por essa política. Se isso for um problema, recomendamos configurar outros serviços e produtos em um projeto diferente sem a aplicação da política da organização. Se necessário, use a Rede de projetos cruzados.
A seguir
- Saiba mais sobre endereços IP.
- Saiba mais sobre redes e firewalls.
- Saiba como lidar com instâncias de VM usando DNS interno.
- Revise os preços da VPC.