Como reservar um endereço IP externo estático

Se uma instância exigir um endereço IP externo fixo que não é alterado, será possível conseguir um endereço IP externo estático para ela usando uma das seguintes opções:

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

Como 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 confiam 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.

É possível reservar dois tipos de endereços IP externos:

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 referir-se 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

  1. Acesse a página "Reservar um endereço estático" no Console do GCP.

    Acessar a página "Reservar um endereço estático"

  2. Escolha um nome para o novo endereço.
  3. Especifique se o endereço é 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.
  4. 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.
  5. Se o endereço IP for regional, selecione a região para criar o endereço.
  6. [Opcional] Selecione um recurso para anexar o IP.
  7. Clique em Reservar para reservar o IP.

gcloud

Para reservar um novo endereço IP externo estático usando gcloud compute, use o subcomando addresses create e especifique se quer reservar um endereço IP global ou regional:

gcloud compute addresses create [ADDRESS_NAME] \
    [--region [REGION] | --global ] \
    [--ip-version [IPV4 | IPV6]]

em que:

  • [ADDRESS_NAME] é o nome que você quer atribuir a esse endereço;
  • se você estiver especificando um endereço IP regional, forneça a [REGION] desejada para a solicitação. Ela precisa ser a mesma região do recurso ao qual o endereço IP será anexado;
  • se for um endereço IP global, especifique a sinalização --global. se você quiser um endereço IPv6, especifique as sinalizações --global e --ip-version 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.

API

Para solicitar uma API diretamente para um endereço IPv4 regional, envie a solicitação POST para o seguinte URI:

https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/addresses

O corpo da sua solicitação precisa ter:

{
  name: "[ADDRESS_NAME]"
}

em que:

  • [ADDRESS_NAME] é o nome que você quer atribuir a esse endereço;
  • [REGION] é o nome da região da solicitação;
  • [PROJECT_ID] é o ID do projeto da solicitação.

Para endereços IPv4 estáticos globais, envie a solicitação para:

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, envie a solicitação para:

https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/addresses

O corpo da sua solicitação precisa ter:

{
  "name": "[ADDRESS_NAME]",
  "ipVersion": "IPV6"
}

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

  1. No Console do GCP, acesse a página Instâncias de VM.

    Acessar a página "Instâncias da VM"

  2. Clique em Criar instância.
  3. Na página Criar uma nova instância, preencha as propriedades da sua instância.
  4. Expanda a seção Gerenciamento, segurança, discos, rede, locatário único.
  5. Clique em Rede.
  6. Em Interfaces de rede, clique na interface de rede padrão para editá-la.
  7. Na seção IP externo, selecione o endereço IP externo estático que você reservou no menu suspenso.
  8. Clique em Concluído para concluir a modificação da interface de rede padrão.
  9. 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]

em que:

  • [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 existente

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

  1. Acesse a página "Instâncias de VMs" no Console do GCP.

    Acessar a página "Instâncias de VMs"

  2. Clique no nome da instância à qual pretende atribuir um IP externo. A página "Detalhes da instância" é aberta.
  3. Na página "Detalhes da instância", siga estas etapas:

    1. Clique em Editar.
    2. Em Interfaces de rede, clique no botão de edição.

      Seção

    3. Em IP externo, selecione um endereço IP externo temporário ou estático para atribuir à instância.

      Opções de IP interno e externo.

    4. Clique em Concluir.

    5. Clique em Salvar.

gcloud

  1. [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.

  2. Exclua configurações de acesso existentes.

    Uma instância só pode ter uma configuração de acesso. 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]"
    

    em que:

    • [INSTANCE_NAME] é o nome da instância;
    • [ACCESS_CONFIG_NAME] é a configuração de acesso a ser excluído. Certifique-se de incluir o nome completo entre aspas.
  3. 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 substitua [IP_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]
    

    em que:

    • [INSTANCE_NAME] é o nome da instância;
    • [ACCESS_CONFIG_NAME] é o nome a ser atribuído a essa configuração de acesso. Certifique-se de incluir 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]"
    

Como 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. A promoção de um endereço IP externo temporário para reservado não faz com que o GCP elimine pacotes enviados para a instância. Isso inclui pacotes enviados para a instância diretamente ou por meio de um balanceador de carga.

Console

  1. Acesse a página "Endereços IP externos" no Console do GCP.

    Acessar a página "Endereços IP externos"

  2. Na coluna Tipo, altere o tipo de endereço para Estático no endereço IP que você quer promover.
  3. Atribua um nome ao novo endereço IP estático e clique em Reservar.

gcloud

Para promover um endereço IP externo temporário a um estático, forneça o endereço IP externo temporário usando a sinalização --addresses ao criar um novo endereço: 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]

em que:

  • [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 regional pertence.

API

Para promover um endereço IP regional temporário, faça uma solicitação PUT para o URI a seguir:

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]"
}

em que:

  • [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 da solicitação.

Para promover um endereço IP global temporário, faça uma solicitação PUT para o URI a seguir:

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]"
}

em que:

  • [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 da 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

Acesse a página "Endereços IP externos" no Console do GCP para ver a lista de endereços IP do seu projeto.

Acessar a página "Endereços IP externos"

gcloud

Com a ferramenta de linha de comando gcloud:

gcloud compute addresses list

API

Para fazer uma solicitação direta à API, execute uma solicitação GET para este URI com um corpo de solicitação vazio:

https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/addresses

em que:

  • [REGION] é o nome da região da solicitação;
  • [PROJECT_ID] é o ID do projeto da solicitação.

Para listar todos os endereços de todas as regiões, faça uma solicitação a este URI:

https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/aggregated/addresses

Como descrever um endereço IP externo estático

Para saber mais sobre um endereço IP externo estático, use o comando gcloud compute addresses describe e informe o nome do endereço ou faça uma solicitação GET à API.

Console

  1. Acesse a página "Endereços IP externos" no Console do GCP.

    Acessar a página "Endereços IP externos"

  2. Clique em um endereço IP para ver mais informações sobre ele.

gcloud

Para usar gcloud compute addresses describe:

gcloud compute addresses describe [ADDRESS_NAME]

em que [ADDRESS_NAME] é o nome do endereço IP externo que você quer descrever.

API

Para fazer uma solicitação direta à API, faça uma solicitação GET ao este URI:

https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/addresses/[ADDRESS_NAME]

em que:

  • [ADDRESS_NAME] é o nome do endereço IP;
  • [REGION] é o nome da região da solicitação;
  • [PROJECT_ID] é o ID do projeto da solicitação.

Como 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:

  1. Encontre o nome da configuração de acesso a ser excluída. Para encontrar o nome, execute uma solicitação gcloud compute instances describe:

    gcloud compute instances describe [INSTANCE_NAME]
    

    em que [INSTANCE_NAME] é o nome da instância.

    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
    
  2. Exclua a configuração de acesso.

    Use o subcomando instances delete-access-config:

    gcloud compute instances delete-access-config [INSTANCE_NAME] \
        --access-config-name "[ACCESS_CONFIG_NAME]"
    

    em que:

    • [INSTANCE_NAME] é o nome da instância;
    • [ACCESS_CONFIG_NAME] é o nome da configuração de acesso a ser excluída. Certifique-se de incluir o nome completo entre aspas.
  3. Verifique se o endereço IP externo estático está disponível e marcado como RESERVED vez de IN_USE.

    gcloud compute addresses list
    

    Por 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

  1. Acesse a página "Endereços IP externos" no Console do GCP.

    Acessar a página "Endereços IP externos"

  2. Marque a caixa ao lado do endereço IP a ser liberado.
  3. Clique em Liberar endereço IP.

gcloud

Com a ferramenta de linha de comando gcloud:

gcloud compute addresses delete [ADDRESS_NAME]

em que [ADDRESS_NAME] é o nome do endereço IP.

API

Para fazer uma solicitação direta à API, execute uma solicitação DELETE a este URI com um corpo de solicitação vazio:

https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/addresses/[ADDRESS_NAME]

em que:

  • [ADDRESS_NAME] é o nome do endereço IP;
  • [REGION] é o nome da região da solicitação;
  • [PROJECT_ID] é o ID do projeto da solicitação.

Como especificar um endereço IP interno na criação da instância

Opcionalmente, atribua um endereço IP interno específico a uma instância ao criá-la. Ele precisa ser um endereço IP válido da sub-rede da instância e não pode estar em uso. Ele permanece anexado à instância até ela ser excluída. Isso libera o endereço IP de volta ao pool. Se você parar e reiniciar a instância, ela manterá o mesmo endereço IP interno.

O Google Compute Engine alocará um endereço IP automaticamente da sub-rede ou da rede caso ele não seja especificado por você. É possível especificar um endereço IP interno usando a ferramenta de linha de comando gcloud ou a API.

gcloud

Em gcloud, execute:

gcloud compute instances create [INSTANCE_NAME]
     --private-network-ip [IP_ADDRESS]

em que:

  • [INSTANCE_NAME] é o nome da instância que você quer criar;
  • [IP_ADDRESS] é o endereço IP que você quer atribuir.

Se você estiver usando uma rede com o modo de sub-rede personalizado, você precisará especificar a sub-rede usando o parâmetro --subnet [SUBNET].

API

Para criar uma instância com um endereço IP interno estático, use a API Compute Engine. Faça uma solicitação para criar uma instância nova normalmente, mas forneça explicitamente a propriedade networkInterfaces[].networkIP com o IP interno que pretende usar. Por exemplo:

{
  "name": "[INSTANCE_NAME]",
  "machineType": "zones/us-central1-f/machineTypes/f1-micro",
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT",
     }],
    "network": "global/networks/default",
    "networkIP": "[IP_ADDRESS]"
  }],
  "disks": [{
     "autoDelete": "true",
     "boot": "true",
     "type": "PERSISTENT",
     "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/v20150818"
     }
   }]
 }

em que:

  • [INSTANCE_NAME] é o nome da instância;
  • [IP_ADDRESS] é o endereço IP a ser atribuído à instância.

Se você exclui uma instância com um endereço IP especificado, o endereço retorna ao pool de endereços não alocados. Se você precisa que um endereço IP interno persista além do período da instância, reserve um endereço IP interno estático.

Como desativar o acesso de IP externo para instâncias de VM

Determinadas cargas de trabalho podem exigir requisitos essenciais que incluam restrições de segurança e rede. Por exemplo, é possível querer restringir o acesso de endereço IP externo em instâncias de VM para evitar a filtração externa de dados ou manter o isolamento da rede, e todas essas são restrições comuns e necessárias para muitos clientes. Usando uma Política da organização, agora é possível desativar o acesso de IP externo com uma restrição de política que facilita e é conveniente para o controle de acesso de endereço IP externo 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 listadas 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 URL da instância:

projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]

Especificações

  • Essa restrição de lista só pode ser aplicada à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 uma deniedList, 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 URL da instância e não impede que as VMs listadas 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 Platform:

  1. Faça login no Console do Google Cloud Platform.
  2. Clique no seletor de projetos.

    Seletor de organização e projeto.

  3. Selecione uma organização e procure o ID dela.

    ID da organização.

gcloud

O n numérico pode ser encontrado executando o comando gcloud a seguir e procurando pelo ID:

gcloud organizations list

gcloud retorna algo semelhante a isto:

DISPLAY_NAME           ID
example-organization   29252605212

Definir a restrição de política

Console

  1. Acesse a página "Políticas organizacionais".

    Acessar a página "Políticas organizacionais"

  2. Se necessário, escolha a organização no menu suspenso do projeto.
  3. Clique em Definir os IPs externos permitidos para instâncias de VM.
  4. Clique em Editar para editar a política de IP externo. É necessário ter as permissões corretas para poder acessar a ferramenta Editar.
  5. Selecione Plataforma de CPU e GPU para definir a política da organização específica para instâncias de VM específicas.

    Como personalizar a política da organização.

  6. Escolha a Aplicação da política e o Tipo de política desejados.

  7. Em Valores da política, selecione Personalizado.

  8. Digite um URL parcial para uma instância de VM e pressione a tecla "Enter". Continue a inserir as instâncias de VM como quiser.

    Como adicionar instâncias de VM à política da organização.

  9. Clique em Salvar.

gcloud

Use o comando gcloud 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]"
  ]
 }
}

em que:

  • [PROJECT_ID] é o ID do projeto para esta solicitação, como example-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:

gcloud beta resource-manager org-policies set-policy my-policy.json --organization [ORGANIZATION_ID]

em que [ORGANIZATION_ID] é o 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

em que [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 no nível do 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.

Seletor de projetos.

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]"
  ]
 }
}

em que:

  • [PROJECT_ID] é o ID do projeto para esta solicitação, como example-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 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:

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

[PROJECT_ID] é o ID do projeto desta 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 lista deniedValues, significa que apenas as instâncias de VM na lista deniedValues 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 lista allowedValues, atualize a política atual para remover as instâncias da allowedList em vez de colocar as instâncias na lista deniedValues 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 objeto restoreDefault 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 Google Kubernetes Engine, Cloud Dataflow, Cloud 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

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

Enviar comentários sobre…

Documentação do Compute Engine