Configura indirizzi IP esterni statici

Puoi assegnare indirizzi IP esterni statici alle istanze di macchine virtuali (VM). Puoi anche modificare, elencare e rilasciare indirizzi IP statici per le tue VM. Per prenotare un indirizzo IP esterno statico, consulta Prenotare un indirizzo IP esterno statico.

Gli indirizzi IP esterni possono essere statici o temporanei. Se una VM richiede un indirizzo IP esterno fisso che non cambia:

  1. Ottieni un indirizzo IP esterno statico. Puoi prenotare nuovi indirizzi IP esterni o promuovere indirizzi IP esterni temporanei esistenti.
  2. Assegna l'indirizzo IP riservato a una VM esistente o durante la creazione di una nuova VM.

Se hai bisogno di un indirizzo IP statico sulla tua rete Compute Engine interna, consulta Prenotare un indirizzo IP interno statico.

Prima di iniziare

  • Ulteriori informazioni sugli indirizzi IP.
  • Ulteriori informazioni su quote e limiti per indirizzi IP esterni statici.
  • Scopri di più sui prezzi degli indirizzi IP esterni.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Imposta una regione e una zona predefinite.

    Terraform

    Per utilizzare gli esempi Terraform in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Installa Google Cloud CLI.
    2. Per initialize gcloud CLI, esegui questo comando:

      gcloud init
    3. Crea credenziali di autenticazione locali per il tuo Account Google:

      gcloud auth application-default login

    Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare e gestire gli indirizzi IP statici, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per configurare e gestire gli indirizzi IP statici. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per configurare e gestire gli indirizzi IP statici sono necessarie le seguenti autorizzazioni:

  • compute.instances.update sull'istanza VM
  • compute.instances.updateNetworkInterface sull'istanza VM
  • compute.instances.addAccessConfig sull'istanza VM
  • compute.instances.deleteAccessConfig sull'istanza VM
  • compute.networks.list sulla rete
  • compute.subnetworks.use sulla subnet
  • compute.subnetworks.list sulla subnet
  • Per creare delle VM:
    • compute.instances.create sul progetto
    • Per utilizzare un'immagine personalizzata per creare la VM&: compute.images.useReadOnly nell'immagine
    • a utilizzare uno snapshot per creare la VM con i due punti compute.snapshots.useReadOnly nello snapshot
    • a utilizzare un modello di istanza per creare la VM&: compute.instanceTemplates.useReadOnly nel modello di istanza
    • ad assegnare una rete legacy alla VM e ai due punti compute.networks.use del progetto
    • Per specificare un indirizzo IP statico per la VM&: compute.addresses.use nel progetto
    • Per assegnare un indirizzo IP esterno alla VM quando si utilizza una rete legacy&due punti compute.networks.useExternalIp nel progetto
    • Per specificare una subnet per la VM&: compute.subnetworks.use nel progetto o nella subnet scelta
    • Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC&;compute.subnetworks.useExternalIp nel progetto o nella subnet scelta
    • a impostare i metadati dell'istanza VM per VM&: compute.instances.setMetadata nel progetto
    • a impostare i tag per la VM con i due punti compute.instances.setTags sulla VM
    • a impostare le etichette per la VM con i due punti compute.instances.setLabels sulla VM
    • Per impostare un account di servizio affinché la VM utilizzi i due punti compute.instances.setServiceAccount sulla VM
    • a creare un nuovo disco per la VM&: compute.disks.create nel progetto
    • Per collegare un disco esistente in modalità di sola lettura o lettura/scrittura&due punti, compute.disks.use sul disco
    • Per collegare un disco esistente in modalità di sola lettura&due punti compute.disks.useReadOnly sul disco

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Limitazioni

  • Solo una risorsa alla volta può utilizzare un indirizzo IP esterno statico.

  • Non è possibile verificare se un indirizzo IP è statico o temporaneo dopo che è stato assegnato a una risorsa. Puoi confrontare l'indirizzo IP con l'elenco di indirizzi IP esterni statici riservati al progetto. Utilizza il sottocomando gcloud compute addresses list per visualizzare un elenco di indirizzi IP esterni statici disponibili per il progetto.

  • Ogni VM può avere più interfacce di rete e a ogni interfaccia possono essere assegnati i seguenti indirizzi IP:

    • Un indirizzo IPv4 interno (obbligatorio)
    • Un indirizzo IPv4 esterno
    • Un intervallo di indirizzi IPv6, interno o esterno, ma non entrambi
  • Non puoi modificare il nome di un indirizzo IP statico.

  • Gli indirizzi IP esterni assegnati si trovano sullo stesso host fisico della VM e si trovano nella stessa regione della VM per tutti gli scopi, inclusi routing, latenza e prezzi. Ciò vale indipendentemente dalle informazioni di ricerca di geolocalizzazione internet.

Nota: le interfacce di rete possono ricevere traffico da più regole di forwarding, che potrebbero gestire altri indirizzi IP esterni. Qualsiasi numero di indirizzi IP esterni può fare riferimento a un'interfaccia di rete tramite queste regole di forwarding, ma a ogni interfaccia di rete può essere assegnato un solo indirizzo IPv4 esterno e un intervallo di indirizzi IPv6 esterni.

Per ulteriori informazioni sul bilanciamento del carico e sulle regole di forwarding, leggi la documentazione sul bilanciamento del carico.

Visualizza gli indirizzi IP esterni statici disponibili

Per elencare gli indirizzi IP esterni statici che hai prenotato per il tuo progetto, segui questi passaggi.

Console

  1. Nella console Google Cloud, vai alla pagina Indirizzi IP.

    Vai agli indirizzi IP

  2. Fai clic su Indirizzi IP esterni.

gcloud

Utilizza il comando gcloud compute addresses list:

  • Per elencare tutti gli indirizzi IP, utilizza il seguente comando:

    gcloud compute addresses list
  • Per elencare tutti gli indirizzi IP globali, utilizza il seguente comando:

    gcloud compute addresses list --global
  • Per elencare tutti gli indirizzi IP a livello di regione in una determinata regione, utilizza il seguente comando:

    gcloud compute addresses list \
        --regions=REGION
    

    Sostituisci REGION con la regione per cui vuoi elencare gli indirizzi. Puoi elencare gli indirizzi di più regioni specificando nomi di regioni separati da virgole:

    gcloud compute addresses list \
        --regions=REGION1,REGION2,..REGION_n_
    

API

  • Per elencare gli indirizzi IPv4 o IPv6 a livello di regione, chiama il metodo addresses.list:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta
    • REGION: il nome della regione per questa richiesta
  • Per elencare tutti gli indirizzi in tutte le regioni, chiama il metodo addresses.aggregatedList:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
    
  • Per elencare gli indirizzi IPv4 o IPv6 globali, chiama il metodo globalAddresses.list:

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

    Sostituisci quanto segue:

    PROJECT_ID: l'ID progetto per questa richiesta

Configura indirizzi IP esterni statici

Le seguenti sezioni descrivono come configurare indirizzi IP esterni statici per le VM.

Crea una VM che utilizza un indirizzo IP esterno statico

Dopo aver prenotato un indirizzo IP esterno statico, puoi assegnarlo a una VM.

Console

  1. Nella console Google Cloud, vai alla pagina Crea un'istanza.

    Vai a Crea un'istanza

  2. Specifica i dettagli della VM.

  3. Espandi la sezione Opzioni avanzate.

  4. Espandi la sezione Networking.

  5. Nella sezione Interfacce di rete, espandi un'interfaccia di rete per modificarla.

  6. Per assegnare un indirizzo IPv4, segui questi passaggi:

    1. Seleziona una rete.
    2. Seleziona l'indirizzo IP dall'elenco Indirizzo IPv4 esterno.
  7. Per assegnare un indirizzo IPv6, segui questi passaggi:

    1. Seleziona una rete contenente una subnet IPv6.
    2. Seleziona una subnet a doppio stack dall'elenco Subnet.
    3. Per Tipo di stack IP, seleziona IPv4 e IPv6 (stack doppio).
    4. Seleziona l'indirizzo IPv6 esterno riservato appena prenotato dall'elenco Indirizzo IPv6 esterno. In alternativa, seleziona CREA INDIRIZZO IP e prenota un nuovo indirizzo IPv6 esterno statico.
    5. In Network Service Tiers, seleziona Premium.
  8. Per completare la modifica dell'interfaccia di rete predefinita, fai clic su Fine.

  9. Continua con il processo di creazione della VM.

gcloud

Puoi creare una VM e assegnare un indirizzo IP esterno a livello di regione statico che hai già prenotato.

  • Per assegnare un indirizzo IPv4 esterno statico:

    gcloud compute instances create VM_NAME --address=IP_ADDRESS
    

    Sostituisci quanto segue:

    • VM_NAME: il nome della VM.
    • IP_ADDRESS: l'indirizzo IP da assegnare alla VM. Utilizza l'indirizzo IP esterno statico riservato, non il nome dell'indirizzo.
  • Per assegnare un indirizzo IPv6 esterno statico:

    gcloud compute instances create VM_NAME \
        --subnet=SUBNET \
        --stack-type=IPV4_IPV6 \
        --external-ipv6-address=IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --ipv6-network-tier=PREMIUM \
        --zone=ZONE
    

Terraform

Puoi utilizzare la risorsa google_compute_instance per assegnare un indirizzo IP esterno.

resource "google_compute_instance" "default" {
  name         = "dns-proxy-nfs"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-1404-trusty-v20160627"
    }
  }

  network_interface {
    network = "default"
    access_config {
      nat_ip = google_compute_address.default.address
    }
  }
}

REST

Per assegnare un indirizzo IPv4 esterno statico a una nuova VM:

Nella richiesta di creazione di una nuova VM, fornisci esplicitamente la proprietà networkInterfaces[].accessConfigs[].natIP e l'indirizzo IPv4 esterno che vuoi utilizzare. Ad esempio:

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT",
      "natIP": "IPV4_ADDRESS"
     }],
    "network": "global/networks/default"
  }],
  "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "SOURCE_IMAGE"
      }
}]
}

Per assegnare un indirizzo IPv6 esterno statico a una nuova VM:

Nella richiesta di creazione di una nuova VM, fornisci esplicitamente la proprietà networkInterfaces[].ipv6AccessConfigs[].externalIpv6 e l'indirizzo IPv6 esterno che vuoi utilizzare. Ad esempio:

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
          "accessConfigs": [{
              "name": "external-nat",
              "type": "ONE_TO_ONE_NAT"
          }],
          "ipv6AccessConfigs": [{
        "externalIpv6": "IOV6_ADDRESS",
        "externalIpv6PrefixLength": 96,
        "name": "external-ipv6-access-config",
        "networkTier": "PREMIUM",
        "type": "DIRECT_IPV6"
          }],
      "stackType": "IPV4_IPV6",
      "subnetwork":"SUBNETWORK
  }],
  "disks": [{
    "autoDelete": "true",
    "boot": "true",
    "mode": "READ_WRITE",
    "type": "PERSISTENT",
    "initializeParams": {
        "sourceImage": "SOURCE_IMAGE"
    },
  }],
 }

Modificare o assegnare un indirizzo IP esterno a una VM esistente

Puoi modificare o assegnare un indirizzo IP esterno, temporaneo o statico, a una VM esistente.

Una VM può avere più interfacce e ciascuna può avere un indirizzo IP esterno. Se la VM ha già un indirizzo IP esterno, devi prima rimuovere quell'indirizzo. Poi puoi assegnare un nuovo indirizzo IP esterno alla VM esistente.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome della VM a cui vuoi assegnare un IP esterno. Viene visualizzata la pagina Dettagli istanza.
  3. Nella pagina Dettagli istanza, completa i seguenti passaggi:

    1. Fai clic su Modifica.
    2. Espandi Interfacce di rete.
    3. Seleziona l'indirizzo IP esterno richiesto da assegnare alla VM:
      1. Per Indirizzo IPv4 esterno, seleziona Temporaneo o un indirizzo IPv4 esterno statico.
      2. Per Indirizzo IPv6 esterno, seleziona Temporaneo o un indirizzo IPv6 esterno statico.
    4. Fai clic su Fine.
  4. Fai clic su Salva.

gcloud

  1. (Facoltativo) Prenota un indirizzo IP esterno statico.

    Se vuoi assegnare un indirizzo IP esterno statico, devi prenotare un indirizzo e assicurarti che l'indirizzo non sia utilizzato da un'altra risorsa. Se necessario, segui le istruzioni per prenotare un nuovo indirizzo IP esterno statico o per annullare l'assegnazione di un indirizzo IP esterno statico.

    Se intendi utilizzare un indirizzo IP esterno temporaneo, puoi saltare questo passaggio e Compute Engine assegna in modo casuale un indirizzo IP esterno temporaneo.

  2. Rimuovi qualsiasi assegnazione di indirizzi IP esistente, come descritto in Annullare l'assegnazione di un indirizzo IP esterno statico.

  3. Assegna il nuovo indirizzo IP esterno.

    • Per assegnare un indirizzo IPv4, utilizza il sottocomando instances add-access-config:

      Nota: non sostituire IP_ADDRESS con il nome dell'indirizzo IP statico. Devi usare l'indirizzo IP effettivo.
      gcloud compute instances add-access-config VM_NAME \
        --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
      

      Sostituisci quanto segue:

      • VM_NAME: il nome della VM.
      • ACCESS_CONFIG_NAME: il nome per chiamare questa configurazione di accesso. Assicurati di inserire il nome completo tra virgolette.
      • IP_ADDRESS: l'indirizzo IP da aggiungere.

      Se vuoi che Compute Engine assegni un indirizzo IP esterno temporaneo anziché utilizzare un indirizzo IP esterno statico, ometti la proprietà --address IP_ADDRESS:

      gcloud compute instances add-access-config VM_NAME \
        --access-config-name="ACCESS_CONFIG_NAME"
      
    • Per assegnare un intervallo di indirizzi IPv6, utilizza il sottocomando instance network-interfaces update:

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface==NIC \
        --ipv6-network-tier=PREMIUM \
        --stack-type=IPV4_IPV6 \
        --external-ipv6-address=IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --zone=ZONE
      

      Sostituisci quanto segue:

      • VM_NAME: il nome della VM.
      • NIC: il nome dell'interfaccia di rete.
      • IPV6_ADDRESS: l'indirizzo IPv6 da assegnare alla VM. Specifica il primo indirizzo IPv6 nell'intervallo /96.
      • ZONE: la zona della VM.

REST

Puoi modificare l'indirizzo IPv4 o IPv6 esterno di una VM aggiungendo una nuova configurazione di accesso per quella VM.

  1. Rimuovi qualsiasi assegnazione di indirizzi IP esistente, come descritto in Annullare l'assegnazione di un indirizzo IP esterno statico.

  2. Elimina la configurazione di accesso esistente inviando una richiesta POST al metodo instances.deleteAccessConfig.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
    
  3. Aggiungi una nuova configurazione di accesso all'interfaccia di rete della VM effettuando una richiesta POST al metodo instances.addAccessConfig.

Limita gli indirizzi IP esterni a VM specifiche

Per determinati carichi di lavoro, potresti avere requisiti essenziali che includono limitazioni di sicurezza e di rete. Ad esempio, potresti voler limitare gli indirizzi IP esterni in modo che possano essere utilizzati solo da VM specifiche. Questa opzione può aiutare a prevenire l'esfiltrazione di dati o a mantenere l'isolamento della rete. Utilizzando un criterio dell'organizzazione, puoi limitare gli indirizzi IP esterni a VM specifiche con vincoli per controllare l'utilizzo degli indirizzi IP esterni delle VM all'interno di un'organizzazione o di un progetto.

Il vincolo per controllare l'indirizzo IP esterno sulle VM è:

constraints/compute.vmExternalIpAccess

Per utilizzare il vincolo, devi specificare un criterio con un allowedList di VM che possono avere indirizzi IP esterni. Se non specifichi un criterio, tutti gli indirizzi IP esterni sono consentiti per tutte le VM. Se il criterio viene applicato, è possibile assegnare un indirizzo IP esterno (temporaneo o statico) solo alle VM elencate nell'elenco allowedValues. Inoltre, alle altre VM di Compute Engine nell'organizzazione o nel progetto non esplicitamente definite nel criterio è vietato l'utilizzo di indirizzi IP esterni.

Le VM sono identificate nelle liste di autorizzazione e di negazione utilizzando l'URI della VM:

projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Specifiche per la limitazione degli indirizzi IP esterni

  • Puoi applicare questo vincolo dell'elenco solo alle VM.
  • Non puoi applicare il vincolo in modo retroattivo. Tutte le VM che hanno indirizzi IP esterni prima dell'abilitazione del criterio conservano gli indirizzi IP esterni.
  • Questo vincolo accetta un allowedList o un deniedList, ma non entrambi nello stesso criterio.
  • Spetta a te o a un amministratore con le autorizzazioni necessarie gestire e mantenere l'integrità e il ciclo di vita della VM. Il vincolo verifica solo l'URI della VM e non impedisce che le VM nella lista consentita vengano modificate, eliminate o ricreate.

Autorizzazioni necessarie per la limitazione degli indirizzi IP esterni

Per impostare un vincolo a livello di progetto o di organizzazione, devi aver ricevuto il ruolo orgpolicy.policyAdmin nell'organizzazione.

Imposta il vincolo del criterio a livello di organizzazione

Console

  1. Vai alla pagina Criteri dell'organizzazione.

    Vai a Criteri dell'organizzazione

  2. Se necessario, seleziona l'organizzazione richiesta dal menu a discesa del progetto.
  3. Fai clic su Definisci IP esterni consentiti per le istanze VM.
  4. Fai clic su Modifica per modificare il criterio IP esterno. Se non riesci ad accedere allo strumento Modifica, non disponi delle autorizzazioni corrette.
  5. Seleziona Personalizza per impostare il criterio dell'organizzazione per VM specifiche.

    Personalizza l'opzione nella pagina di modifica del criterio dell'organizzazione.

  6. Seleziona le opzioni Applicazione delle norme e Tipo di criterio obbligatorie.

  7. In Valori del criterio, seleziona Personalizzato.

  8. Inserisci un URI per una VM e premi Invio. L'URI deve essere nel seguente formato:

    projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    
  9. Fai clic su Nuovo valore del criterio e inserisci gli URI delle VM in base alle tue esigenze.

  10. Fai clic su Salva per applicare il vincolo.

gcloud

Per impostare un vincolo per l'accesso IP esterno, devi prima disporre dell'ID organizzazione. Per trovare l'ID organizzazione, esegui il comando organizations list e cerca l'ID numerico nella risposta:

gcloud organizations list

Gcloud CLI restituisce un elenco di organizzazioni nel seguente formato:

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

Utilizza il comando gcloud resource-manager org-policies set-policy per impostare il criterio. Devi fornire il criterio come file JSON. Crea un file JSON nel seguente formato:

{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
  "allowedValues": [
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per questa richiesta, ad esempio example-project. Tieni presente che questa operazione è diversa dalla configurazione dei criteri dell'organizzazione, che richiedono l'ID numerico dell'organizzazione.
  • ZONE: la zona della VM
  • VM_NAME: il nome della VM

In alternativa, puoi specificare un elenco deniedValues per indicare alle VM per cui vuoi vietare esplicitamente di avere un indirizzo IP esterno. Qualsiasi VM non presente nell'elenco sarebbe implicitamente autorizzata ad avere un indirizzo IP esterno. Puoi specificare solo allowedValues o deniedValues, ma non entrambi.

Quindi, trasmetti il file con la tua richiesta:

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID

Sostituisci ORGANIZATION_ID con l'ID numerico dell'organizzazione.

Se non vuoi che nessuna VM abbia accesso IP esterno, puoi impostare un criterio con allValues impostato su DENY:

{
  "constraint": "constraints/compute.vmExternalIpAccess",
  "listPolicy": {
    "allValues": "DENY"
  }
}

REST

Utilizza l'API setOrgPolicy() per definire il vincolo. Le VM nell'elenco allowedValue da te specificato sono autorizzate ad avere indirizzi IP esterni. In alternativa, puoi specificare un elenco deniedValues per indicare le VM a cui vuoi vietare esplicitamente di avere un indirizzo IP esterno. Qualsiasi VM non presente nell'elenco sarebbe implicitamente autorizzata ad avere un indirizzo IP esterno. Puoi specificare solo allowedValues o deniedValues, ma non entrambi.

Ad esempio, di seguito è riportata una richiesta per applicare il vincolo compute.vmExternalIpAccess a un'organizzazione in cui le VM di determinati progetti all'interno dell'organizzazione possono avere indirizzi IP esterni:

POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy

dove ORGANIZATION_ID è l'ID numerico dell'organizzazione.

Ora, nel corpo della richiesta, indica il criterio per questo vincolo:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
        ]
      }
    }
 }

Se non vuoi che nessuna VM abbia accesso IP esterno, puoi impostare un criterio con allValues impostato su DENY:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allValues": "DENY"
      }
    }
 }

Imposta il criterio a livello di progetto

L'impostazione di un criterio a livello di progetto sostituisce il criterio a livello di organizzazione. Ad esempio, se a livello di organizzazione example-vm-1 è presente nell'elenco allowedValues, ma il criterio a livello di progetto include la stessa VM nell'elenco deniedValues, la VM non può avere un indirizzo IP esterno.

Console

Segui la stessa procedura documentata in Impostare un vincolo del criterio a livello di organizzazione, ma scegli il tuo progetto dal selettore di progetti anziché dall'organizzazione.

Selettore di progetto.

gcloud

Utilizza il comando gcloud resource-manager org-policies set-policy per impostare il criterio. Devi fornire il criterio come file JSON. Crea un file JSON nel seguente formato:

{
 "constraint": "constraints/compute.vmExternalIpAccess",
 "listPolicy": {
  "allowedValues": [
   "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto per questa richiesta, ad esempio example-project. Tieni presente che questa operazione è diversa dalla configurazione dei criteri dell'organizzazione, che richiedono l'ID numerico dell'organizzazione.
  • ZONE: la zona della VM.
  • VM_NAME: il nome della VM.

In alternativa, puoi specificare un elenco deniedValues di VM per le quali vuoi esplicitamente di vietare l'uso di un indirizzo IP esterno. Qualsiasi VM non presente nell'elenco potrebbe avere implicitamente un indirizzo IP esterno. Puoi specificare solo allowedValues o deniedValues, ma non entrambi.

Quindi, trasmetti il file con la tua richiesta:

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project

REST

Utilizza l'API setOrgPolicy per definire il vincolo. Le VM nell'elenco allowedValue specificato sono autorizzate ad avere indirizzi IP esterni. In alternativa, puoi specificare un elenco deniedValues per indicare le VM a cui vuoi vietare esplicitamente di avere un indirizzo IP esterno. A qualsiasi VM non presente nell'elenco è implicitamente consentito avere un indirizzo IP esterno. Puoi specificare solo allowedValues o deniedValues, ma non entrambi.

Ad esempio, di seguito è riportata una richiesta per impostare il vincolo compute.vmExternalIpAccess su un progetto per consentire a VM specifiche di avere indirizzi IP esterni:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy

Sostituisci PROJECT_ID con l'ID progetto per questa richiesta.

Il corpo della richiesta contiene il criterio per questo vincolo:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
      ]
    }
  }
}

Best practice per la limitazione degli indirizzi IP esterni

  • Evita di utilizzare l'elenco deniedValues con questo vincolo. Se definisci valori nell'elenco deniedValues, significa che solo le VM nell'elenco deniedValues non possono utilizzare indirizzi IP esterni. Questo potrebbe rappresentare un rischio per la sicurezza se vuoi controllare esattamente quali VM possono avere indirizzi IP esterni. Se vuoi rimuovere determinate VM dall'elenco allowedValues, aggiorna il criterio esistente per rimuovere le VM da allowedList anziché inserirle nell'elenco deniedValues a una gerarchia inferiore.

  • Se vuoi impostare un criterio su gran parte della gerarchia delle risorse, ma escludere determinati progetti, ripristina il criterio predefinito utilizzando il metodo setOrgPolicy specificando l'oggetto restoreDefault per consentire a tutte le VM nei progetti di essere associate a indirizzi IP esterni. L'impostazione predefinita non influisce sui criteri attuali per i progetti.

  • Utilizza il criterio dell'organizzazione insieme ai ruoli IAM per controllare meglio il tuo ambiente. Questo criterio si applica solo alle VM, ma se vuoi controllare e limitare meglio gli indirizzi IP esterni sui dispositivi di rete, puoi concedere il ruolo compute.networkAdmin alle parti appropriate.

  • Tutti i servizi e prodotti in esecuzione su Compute Engine all'interno dell'organizzazione o del progetto con il criterio abilitato sono soggetti a questo criterio dell'organizzazione. In particolare, servizi come Google Kubernetes Engine, Dataflow, Dataproc e Cloud SQL sono interessati da questo criterio. Se si tratta di un problema, Google consiglia di configurare altri servizi e prodotti in un progetto diverso a cui non è applicato il criterio dell'organizzazione e di utilizzare il VPC condiviso, se necessario.

Gestisci indirizzi IP esterni statici

Le seguenti sezioni descrivono come gestire gli indirizzi IP esterni statici per le VM.

Determinare se un indirizzo IP interno è temporaneo o statico

Gli indirizzi IP interni statici e temporanei si comportano e vengono visualizzati allo stesso modo nella maggior parte dei contesti. Tuttavia, con gli indirizzi IP interni statici, puoi utilizzare lo stesso indirizzo IP per la stessa risorsa anche se la elimini e ricrei. In generale, un indirizzo IP temporaneo viene rilasciato se arresti o elimini la risorsa.

Per determinare se un indirizzo è statico o temporaneo:

  1. Nella console Google Cloud, vai alla pagina Indirizzi IP.

    Vai agli indirizzi IP

  2. Trova l'indirizzo nell'elenco e verifica il tipo di indirizzo IP nella colonna Type (Tipo).

Annullare l'assegnazione di un indirizzo IP esterno statico

L'annullamento dell'assegnazione di un indirizzo IP ne comporta la rimozione dalla risorsa, ma l'indirizzo IP rimane riservato. Dopo l'annullamento dell'assegnazione dell'indirizzo IP, puoi riassegnarlo a un'altra risorsa.

Puoi anche annullare l'assegnazione dell'indirizzo IPv4 o IPv6 eliminando la VM.

Console

  1. Nella console Google Cloud, vai alla pagina Indirizzi IP.

    Vai agli indirizzi IP

  2. Fai clic su Indirizzi IP esterni.

  3. Seleziona l'indirizzo IP statico di cui vuoi annullare l'assegnazione.

  4. Fai clic su Cambia per aprire la finestra di dialogo Allega indirizzo IP.

  5. Nell'elenco a discesa Allega a, seleziona Nessuno.

  6. Fai clic su Ok.

gcloud

  1. Controlla se è in uso un indirizzo IP statico utilizzando il comando gcloud compute addresses list:

    gcloud compute addresses list
    

    L'output è simile al seguente:

    NAME                      REGION    ADDRESS                  STATUS
    example-address-ipv4      REGION    198.51.100.1             RESERVED
    example-address-new-ipv4  REGION    203.0.113.1              IN_USE
    example-address-ipv6      REGION    2001:db8:1:1:1:1:1:1     RESERVED
    example-address-new-ipv6  REGION    2001:db8:4:4:4:4:4:4     IN_USE
    
    • Se l'indirizzo IP non è in uso, lo stato è RESERVED.
    • Se l'indirizzo IP è in uso, lo stato è IN_USE.
  2. Recupera il nome della VM che utilizza l'indirizzo IP:

    gcloud compute addresses describe ADDRESS_NAME \
      --region=REGION
    

    Sostituisci quanto segue:

    • ADDRESS_NAME: il nome della risorsa indirizzo IPv6.
    • REGION: la regione della risorsa di indirizzo IPv6.

    L'output è simile al seguente:

    address: IP_ADDRESS
    addressType: EXTERNAL
    ...
    region: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/addresses/ADDRESS_NAME
    status: IN_USE
    subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET
    users:
    - https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME
    

    Il campo users mostra il nome della VM che utilizza l'indirizzo IP.

  3. Annulla l'assegnazione dell'indirizzo IP alla VM.

    • Per annullare l'assegnazione di un indirizzo IPv4, elimina il file di configurazione dell'accesso della VM:

      1. Recupera il nome della configurazione di accesso da eliminare. Per recuperarlo, utilizza il comando gcloud compute instances describe. Sostituisci VM_NAME con il nome della VM.

        gcloud compute instances describe VM_NAME
        

        La configurazione dell'accesso viene visualizzata nel seguente formato:

        networkInterfaces:
          - accessConfigs:
            - kind: compute#accessConfig
              name: external-nat
              natIP: 203.0.113.1
              type: ONE_TO_ONE_NAT
        
      2. Elimina la configurazione dell'accesso utilizzando il comando gcloud compute instances delete-access-config:

        gcloud compute instances delete-access-config VM_NAME \
          --access-config-name="ACCESS_CONFIG_NAME"
        

        Sostituisci quanto segue:

        • VM_NAME: il nome della VM.
        • ACCESS_CONFIG_NAME: il nome della configurazione di accesso da eliminare. Ricorda di inserire il nome completo tra virgolette.
    • Per annullare l'assegnazione di un intervallo di indirizzi IPv6, utilizza il comando instance network-interfaces update:

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface=nic0 \
        --stack-type=IPV4_ONLY \
        --zone=ZONE
      

      Sostituisci quanto segue:

      • VM_NAME: il nome della VM che utilizza l'indirizzo IP.
      • ZONE: la zona della VM.
  4. Controlla che il tuo indirizzo IP esterno statico sia ora disponibile e contrassegnato come RESERVED anziché IN_USE.

    gcloud compute addresses list \
      --filter="ADDRESS_NAME AND region=REGION"
    

    Sostituisci quanto segue:

    • ADDRESS_NAME: il nome della risorsa dell'indirizzo IP.
    • REGION: la regione della risorsa indirizzo IP.

Ora che il tuo indirizzo IP esterno statico è disponibile, puoi scegliere di assegnarlo a un'altra VM.

REST

Per annullare l'assegnazione di un indirizzo IPv4 o IPv6 esterno statico, segui questi passaggi:

  • Per gli indirizzi IPv4, elimina la configurazione dell'accesso collegata alla VM che utilizza l'indirizzo.

    1. Per controllare i dettagli di configurazione dell'accesso di una VM, effettua una richiesta GET al metodo instances.get.

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
      
    2. Elimina la configurazione di accesso esistente inviando una richiesta POST al metodo instances.deleteAccessConfig.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
      

      Sostituisci quanto segue:

      • PROJECT_ID: l'ID progetto per questa richiesta
      • ZONE: la zona in cui si trova la VM
      • VM_NAME: il nome della VM
  • Per gli indirizzi IPv6, aggiorna il tipo di stack dell'interfaccia di rete per la VM a cui è collegato l'indirizzo IPv6.

    1. Invia una richiesta PATCH al metodo instances.updateNetworkInterface.

    2. Nel corpo della richiesta, aggiorna il valore del campo stackType in IPV4_ONLY.

      Ad esempio:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateNetworkInterface
      
      {
        "networkInterfaces": [{
          ...
          "stackType" : "IPV4_ONLY"
          ...
          }]
      }
      

Rilascia un indirizzo IP esterno statico

Se non hai più bisogno di un indirizzo IPv4 o IPv6 esterno statico, puoi rilasciare l'indirizzo IP eliminando la risorsa indirizzo IP. L'eliminazione di una VM non rilascia automaticamente un indirizzo IP esterno statico. Devi rilasciare manualmente gli indirizzi IP esterni statici quando non sono più necessari.

Per rilasciare un indirizzo IP esterno statico, consulta Rilasciare un indirizzo IP esterno statico nella documentazione di VPC.

Passaggi successivi