Reserva una dirección IP externa estática

Si una instancia requiere una dirección IP externa fija que no cambie, puedes obtener una dirección IP estática para esa instancia con uno de los siguientes métodos:

Si necesitas una dirección IP estática en tu red interna de Compute Engine, consulta la sección sobre cómo reservar una dirección interna estática, en su lugar.

En Compute Engine, cada instancia de VM puede tener varias interfaces de red. Cada interfaz puede tener direcciones IP internas y externas. Las reglas de reenvío pueden tener direcciones IP externas destinadas al balanceo de cargas externo o direcciones internas para el balanceo de cargas interno. Para conocer las direcciones IP, consulta la documentación de Direcciones IP.

Antes de comenzar

Reserva una dirección IP externa estática nueva

Una dirección IP externa estática es una dirección IP externa que se reserva para tu proyecto hasta que decides liberarla. Si tienes una dirección IP en la que tus clientes o usuarios confíen a fin de acceder a tu servicio, puedes reservarla para que solo tu proyecto pueda usarla. También es posible promover una dirección IP externa efímera a una dirección IP externa estática.

Puedes reservar dos tipos de direcciones IP externas:

Reserva una dirección IP externa estática en la herramienta de línea de comandos de gcloud o mediante la API. Después de reservar la dirección, asígnala a una instancia durante la creación de una instancia o a una instancia existente.

Restricciones

  • Solo un recurso a la vez puede usar una dirección IP externa estática.

  • Es imposible saber si una dirección IP es estática o efímera después de que se asignó a un recurso, excepto si se compara la dirección IP con la lista de direcciones IP externas estáticas reservadas para ese proyecto. Usa el subcomando addresses list a fin de ver una lista de direcciones IP externas estáticas disponibles para el proyecto.

  • Cada instancia de VM puede tener varias interfaces de red, pero cada interfaz puede tener solo una dirección IP externa que sea efímera o estática.

Nota: Las interfaces de red pueden recibir tráfico de varias reglas de reenvío, que pueden entregar a otras direcciones IP externas. Cualquier número de direcciones IP externas puede hacer referencia a una interfaz de red a través de estas reglas de reenvío, sin embargo, cada interfaz de red puede tener solo una dirección IP externa que convierta los paquetes en la dirección IP interna de la interfaz.

Para obtener más información sobre el balanceo de cargas y las reglas de reenvío, consulta la documentación sobre el balanceo de cargas.

Console

  1. Ve a la página Reservar una dirección estática en Cloud Console.

    Ir a la página Reservar una dirección estática

  2. Elige un nombre para la dirección nueva.
  3. Especifica si se trata de una dirección IPv4 o IPv6. Las direcciones IPv6 solo pueden ser globales y solo se pueden usar con balanceadores de cargas globales de HTTP(S), proxy SSL y proxy TCP.
  4. Elige si esta dirección IP será regional o global. Si reservas una dirección IP estática para una instancia o un balanceador de cargas de red, elige Regional. Si reservas una dirección IP estática para un balanceador de cargas HTTP(S), proxy SSL o de proxy TCP, elige Global.
  5. Si se trata de una dirección IP regional, selecciona la región a fin de crear la dirección.
  6. Como alternativa, puedes seleccionar un recurso para conectar la IP.
  7. Haz clic en Reservar si deseas reservar la IP.

gcloud

Para reservar una nueva dirección IP externa estática con gcloud compute, usa el subcomando addresses create y especifica si deseas reservar una dirección IP global o regional:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [ADDRESS_NAME] es el nombre que quieres asignar a esta dirección.
  • Si especificas una dirección IP regional, debes proporcionar la [REGION] deseada para la solicitud. Esta debe ser la misma región que el recurso al que deseas adjuntar la dirección IP.
  • Si es una dirección IP global, debes especificar la marca --global Si deseas una dirección IPv6, especifica las marcas --global y --ip-version IPV6. Las direcciones IPv6 solo pueden ser globales y solo se pueden usar con balanceadores de cargas de HTTP(S), proxy SSL y proxy TCP globales.

API

Si quieres realizar una solicitud a la API de forma directa para una dirección IPv4 regional, debes generar una solicitud POST al URI siguiente:

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

El cuerpo de la solicitud debe contener la información siguiente:

{
  name: "[ADDRESS_NAME]"
}

En el ejemplo anterior, se ilustra lo siguiente:

  • [ADDRESS_NAME] es el nombre que quieres asignar a esta dirección.
  • [REGION] es el nombre de la región para esta solicitud.
  • [PROJECT_ID] es el ID del proyecto de esta solicitud.

Para direcciones IPv4 estáticas globales, realiza una solicitud a la siguiente dirección:

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

El cuerpo de la solicitud debe contener la información siguiente:

{
  name: "[ADDRESS_NAME]"
}

Para direcciones IPv6 estáticas globales, realiza una solicitud a la dirección siguiente:

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

El cuerpo de la solicitud debe contener la información siguiente:

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

Asigna una dirección IP externa estática a una instancia de VM nueva

Cuando creas una instancia de VM, se le asigna una dirección IP externa efímera de forma automática. Si no quieres una dirección IP externa efímera, puedes asignar una dirección IP externa estática a la instancia de forma explícita.

Console

  1. En GCP Console, ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia.
  3. En la página Crear una instancia nueva, completa las propiedades que quieras para tu instancia.
  4. Expande la sección Administración, seguridad, discos, herramientas de redes, instancia única.
  5. Haz clic en Herramientas de redes.
  6. En Interfaces de redes, haz clic en la interfaz de red predeterminada para editarla.
  7. En la sección IP externa, selecciona la dirección IP externa estática que reservaste en el menú desplegable.
  8. Haz clic en Listo para terminar la modificación de la interfaz de red predeterminada.
  9. Haz clic en Create para crear la instancia.

gcloud

Para asignar una dirección IP externa estática, usa la marca --address durante la creación de la instancia y proporciona la dirección IP externa estática:

gcloud compute instances create [INSTANCE_NAME] --address [IP_ADDRESS]

En el ejemplo anterior, se ilustra lo siguiente:

  • [INSTANCE_NAME] es el nombre de la instancia.
  • [IP_ADDRESS] es la dirección IP que se asignará a la instancia. Usa la dirección IP, no el nombre de la dirección.

API

En tu solicitud para crear una instancia nueva, debes proporcionar la propiedad networkInterfaces[].accessConfigs[].natIP y la IP externa que deseas usar de forma explícita. Por ejemplo:

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

Cambia o asigna una dirección IP externa a una instancia existente

Puedes cambiar o asignar una dirección IP externa, efímera o estática, a una instancia existente si modificas la configuración de acceso de la instancia.

Una instancia puede tener varias interfaces y cada una de estas puede tener una dirección IP externa. Si la instancia ya tiene una dirección IP externa, primero debes quitar esa dirección mediante la operación de borrado de la configuración de acceso anterior. Así podrás agregar una configuración de acceso nueva con la dirección IP externa nueva.

Console

  1. Ve a la página Instancias de VM en Cloud Console.

    Ir a la página Instancias de VM

  2. Haz clic en el nombre de la instancia a la que quieres asignar una IP externa. Se mostrará la página de detalles de la instancia.
  3. En la página de detalles de la instancia, completa los pasos siguientes:

    1. Haz clic en Editar.
    2. En Interfaces de redes (Network interfaces), haz clic en el botón Editar.

      Sección de interfaz de red.

    3. En IP externa (External IP), selecciona una dirección IP externa efímera o estática para asignar a la instancia.

      Opciones de IP internas y externas.

    4. Haz clic en Listo.

    5. Haz clic en Guardar.

En gcloud

  1. Reserva una dirección IP externa estática (opcional).

    Si quieres asignar una dirección IP externa estática, debes reservar una dirección y asegurarte de que no la use otro recurso. Si es necesario, sigue las instrucciones si necesitas reservar una nueva dirección IP externa estática o si deseas anular la asignación de una dirección IP externa estática.

    Si planeas usar una dirección IP externa efímera, puedes omitir este paso y Compute Engine asignará de manera aleatoria una dirección IP externa efímera.

  2. Borra la configuración de acceso existente.

    Solo es posible que una instancia tenga una configuración de acceso. Antes de que intentes asignar una configuración de acceso nueva a una instancia, verifica si tu instancia tiene una configuración de acceso mediante una solicitud de gcloud compute instances describe:

    gcloud compute instances describe [INSTANCE_NAME]
    

    Si hay una configuración de acceso existente, esta aparecerá con el siguiente formato:

    networkInterfaces:
    - accessConfigs:
      - kind: compute#accessConfig
        name: external-nat
        natIP: 130.211.181.55
        type: ONE_TO_ONE_NAT
    

    Antes de agregar una nueva configuración de acceso, debes borrar la existente con el subcomando instances delete-access-config:

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

    En el ejemplo anterior, se ilustra lo siguiente:

    • [INSTANCE_NAME] es el nombre de la instancia.
    • [ACCESS_CONFIG_NAME] es la configuración de acceso que quieres borrar. Asegúrate de incluir el nombre completo entre comillas.
  3. Agrega la dirección IP externa nueva.

    Agrega una nueva dirección IP externa con el subcomando instances add-access-config:

    Nota: No reemplaces [IP_ADDRESS] con el nombre de la IP estática. Debes usar la dirección IP real.
    gcloud compute instances add-access-config [INSTANCE_NAME] \
       --access-config-name "[ACCESS_CONFIG_NAME]" --address [IP_ADDRESS]
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • [INSTANCE_NAME] es el nombre de la instancia.
    • [ACCESS_CONFIG_NAME] es el nombre que le debes asignar a esta configuración de acceso. Asegúrate de incluir el nombre completo entre comillas.
    • [IP_ADDRESS] es la dirección IP que debes agregar.

    Si deseas que Compute Engine asigne una dirección IP externa efímera en lugar de usar una dirección IP externa estática, omite la propiedad --address [IP_ADDRESS]:

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

Promueve una dirección IP externa efímera

Si tu instancia tiene una dirección IP externa efímera y deseas asignar la IP a tu proyecto de manera permanente, debes promover la dirección IP externa efímera a una dirección IP externa estática. Promover una dirección IP externa efímera a una reservada no implica que Google Cloud descarte los paquetes enviados a la instancia. Esto incluye los paquetes que se enviaron a la instancia directamente o mediante un balanceador de cargas.

Console

  1. Ve a la página Direcciones IP externas en Cloud Console.

    Ir a la página Direcciones IP externas

  2. En la columna Tipo, debes cambiar el tipo de la dirección IP que quieres promocionar a Estática.
  3. Proporciona un nombre a la dirección IP estática nueva y haz clic en Reservar.

gcloud

Si deseas promocionar una dirección IP externa efímera a una dirección IP externa estática, debes proporcionar la dirección IP externa efímera mediante la marca --addresses al momento de crear una dirección nueva. Usa la marca region a fin de promover una dirección IP regional efímera o la marca global para promover una dirección IP global efímera.

gcloud compute addresses create [ADDRESS_NAME] \
  --addresses [IP_ADDRESS] \
  [--region [REGION] | --global]

En el ejemplo anterior, se ilustra lo siguiente:

  • [ADDRESS_NAME] es el nombre que quieres asignar a esta dirección.
  • [IP_ADDRESS] es la dirección IP que deseas promocionar.
  • [REGION] es la región a la que pertenece la dirección IP regional.

API

Si quieres promover una dirección IP regional efímera, realiza una solicitud PUT al URI siguiente:

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

El cuerpo de la solicitud debe contener la información siguiente:

{
  name: "[ADDRESS_NAME]",
  address: "[IP_ADDRESS]"
}

En el ejemplo anterior, se ilustra lo siguiente:

  • [ADDRESS_NAME] es el nombre que quieres asignar a esta dirección.
  • [IP_ADDRESS] es la dirección IP que deseas promocionar.
  • [REGION] es la región a la que pertenece la dirección IP.
  • [PROJECT_ID] es el ID del proyecto de esta solicitud.

Si quieres promover una dirección IP global efímera, debes realizar una solicitud PUT al siguiente URI:

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

El cuerpo de la solicitud debe contener la información siguiente:

{
  name: "[ADDRESS_NAME]",
  address: "[IP_ADDRESS]"
}

En el ejemplo anterior, se ilustra lo siguiente:

  • [ADDRESS_NAME] es el nombre que quieres asignar a esta dirección.
  • [IP_ADDRESS] es la dirección IP que deseas promocionar.
  • [PROJECT_ID] es el ID del proyecto de esta solicitud.

La dirección IP externa permanece adjunta a la instancia incluso después de que se asigne a una dirección IP externa estática. Si necesitas asignar la dirección IP externa estática nueva a otro recurso, anula la asignación de la dirección IP externa estática de la instancia existente.

Listado de direcciones IP externas estáticas

Si quieres crear una lista de las direcciones IP externas estáticas que reservaste para tu proyecto, ejecuta addresses list o realiza una solicitud GET a la API.

Console

Ve a la página Direcciones IP externas en Cloud Console si deseas ver una lista de direcciones IP para tu proyecto.

Ir a la página Direcciones IP externas

gcloud

Con la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando:

gcloud compute addresses list

API

Si deseas realizar una solicitud a la API de manera directa, realiza una solicitud GET al URI siguiente con un cuerpo de solicitud vacío:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [REGION] es el nombre de la región para esta solicitud.
  • [PROJECT_ID] es el ID del proyecto de esta solicitud.

Si deseas mostrar la lista de todas las direcciones en todas las regiones, realiza una solicitud al siguiente URI:

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

Describe una dirección IP externa estática

Para obtener información sobre una dirección IP externa estática, usa el comando gcloud compute addresses describe y proporciona el nombre de la dirección o realiza una solicitud GET a la API.

Console

  1. Ve a la página Direcciones IP externas en Cloud Console.

    Ir a la página Direcciones IP externas

  2. Haz clic en la dirección IP que la que quieres obtener más información.

gcloud

Para usar gcloud compute addresses describe, ingresa el siguiente comando:

gcloud compute addresses describe [ADDRESS_NAME]

En el comando anterior, [ADDRESS_NAME] es el nombre de la dirección IP externa que deseas describir.

API

Si deseas realizar una solicitud a la API de forma directa, debes realizar una solicitud GET con un cuerpo de solicitud vacío al URI siguiente:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [ADDRESS_NAME] es el nombre de la dirección IP.
  • [REGION] es el nombre de la región para esta solicitud.
  • [PROJECT_ID] es el ID del proyecto de esta solicitud.

Anula la asignación de una dirección IP externa estática

Si deseas anular la asignación de una dirección IP externa estática, debes borrar la instancia o borrar la configuración de acceso adjunta a la instancia que usa la dirección. Anular la asignación de una dirección IP externa estática te permite reasignarla a otro recurso.

Anular la asignación de una dirección IP la quita del recurso, pero conserva la dirección IP reservada para tu proyecto. Puedes saber que una dirección IP estática está en uso si realizas una solicitud gcloud compute addresses list:

gcloud compute addresses list

La respuesta podría ser similar a la que se muestra a continuación:

NAME                 REGION      ADDRESS            STATUS
example-address      [REGION]    130.211.160.207    RESERVED
example-address-new  [REGION]    130.211.114.137    IN_USE

En este ejemplo, example-address-new se encuentra en uso.

Si quieres borrar la configuración de acceso de una instancia y anular la asignación de una dirección IP externa estática, sigue estos pasos:

  1. Obtén el nombre de la configuración de acceso que quieres borrar. Para obtener el nombre, realiza una solicitud gcloud compute instances describe:

    gcloud compute instances describe [INSTANCE_NAME]
    

    [INSTANCE_NAME] es el nombre de la instancia.

    La configuración de acceso aparece en el siguiente formato:

    networkInterfaces:
    - accessConfigs:
     - kind: compute#accessConfig
       name: external-nat
       natIP: 130.211.181.55
       type: ONE_TO_ONE_NAT
    
  2. Borra la configuración de acceso.

    Use el subcomando instances delete-access-config:

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

    En el ejemplo anterior, se ilustra lo siguiente:

    • [INSTANCE_NAME] es el nombre de la instancia.
    • [ACCESS_CONFIG_NAME] es el nombre de la configuración de acceso que se deseas borrar. Asegúrate de incluir el nombre completo entre comillas.
  3. Comprueba que tu dirección IP externa estática ahora esté disponible y marcada como RESERVED, en lugar de IN_USE.

    gcloud compute addresses list
    

    Por ejemplo:

    NAME                 REGION      ADDRESS            STATUS
    example-address      [REGION]    130.211.160.207    RESERVED
    example-address-new  [REGION]    130.211.114.137    RESERVED
    

Ya que tu dirección IP externa estática está disponible, puedes elegir asignarla a otra instancia.

Libera una dirección IP externa estática

Si ya no necesitas una dirección IP externa estática, puedes liberarla a fin de que se muestre al grupo de IP general para otros usuarios de Compute Engine.

Console

  1. Ve a la página Direcciones IP externas en Cloud Console.

    Ir a la página Direcciones IP externas

  2. Marca la casilla que aparece junto a la dirección IP que deseas liberar.
  3. Haz clic en Liberar dirección IP.

gcloud

Con la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando:

gcloud compute addresses delete [ADDRESS_NAME]

En el comando anterior, [ADDRESS_NAME] es el nombre de la dirección IP.

API

Si deseas realizar una solicitud a la API de forma directa, realiza una solicitud DELETE al URI siguiente con un cuerpo de solicitud vacío:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [ADDRESS_NAME] es el nombre de la dirección IP.
  • [REGION] es el nombre de la región para esta solicitud.
  • [PROJECT_ID] es el ID del proyecto de esta solicitud.

Elige una dirección IP interna durante la creación de la instancia

De manera opcional, puedes elegir una dirección IP interna específica a fin de asignar a una instancia cuando la creas. La dirección IP debe ser una dirección IP válida de la subred de la instancia y la dirección IP no debe estar en uso. La dirección IP permanece adjunta a la instancia hasta que borres la instancia, lo que libera la dirección IP de nuevo al grupo. Si detienes y reinicias la instancia, esta conserva la misma dirección IP interna.

Si no especificas una dirección IP, Compute Engine asigna de forma automática una desde la subred o la red. Puedes especificar una dirección IP interna con la herramienta de línea de comandos de gcloud o la API.

gcloud

En la herramienta gcloud, ejecuta el siguiente comando:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [INSTANCE_NAME] es el nombre de la instancia que deseas crear.
  • [IP_ADDRESS] es la dirección IP que quieres asignar.

Si usas una red de modo de subred personalizado, también debes especificar la subred con el parámetro --subnet [SUBNET].

API

Si quieres crear una instancia con una dirección IP interna estática, debes usar la API de Compute Engine. Realiza una solicitud a fin de crear una instancia nueva como harías normalmente, pero proporciona la propiedad networkInterfaces[].networkIP de manera explícita con la IP interna que quieres usar. Por ejemplo:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [INSTANCE_NAME] es el nombre de la instancia.
  • [IP_ADDRESS] es la dirección IP que se asignará a la instancia.

Si borras una instancia con una dirección IP especificada, la dirección vuelve al grupo de direcciones no asignadas. Si necesitas una dirección IP interna para conservar más allá de la vida útil de la instancia, puedes reservar una dirección IP interna estática.

Inhabilita el acceso a IP externas para instancias de VM

Para ciertas cargas de trabajo, puede que tengas requisitos esenciales que incluyen restricciones de seguridad y de red. Por ejemplo, es posible que necesites restringir el acceso a la dirección IP externa en las instancias de VM a fin de evitar el robot de datos o mantener el aislamiento de la red, que son restricciones comunes y necesarias para muchos clientes. Con una Política de la organización, ahora puedes inhabilitar el acceso IP externo con una restricción de política que hace que sea fácil y conveniente controlar el acceso a la dirección IP externa de tus instancias de VM dentro de una organización o proyecto.

La restricción para controlar la dirección IP externa en instancias de VM es la que se muestra a continuación:

constraints/compute.vmExternalIpAccess

Para usar la restricción, debes especificar una política con una lista allowedList de instancias de VM que pueden tener direcciones IP externas. Si no se especifica ninguna política, se pueden usar todas las direcciones IP externas para todas las instancias de VM. Cuando la política está vigente, solo a las instancias de VM que aparecen en la lista de allowedValues se les puede asignar una dirección IP externa, ya sea efímera o estática, y otras instancias de VM de Compute Engine en la organización o proyecto que no están definidas de forma explícita en la política tienen prohibido el uso de direcciones IP externas.

Se identifican las VM en las listas permitidas y denegadas con la URL de la instancia:

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

Especificaciones

  • Solo puedes aplicar esta restricción de lista a instancias de VM.
  • No puedes aplicar la restricción de forma retroactiva. Todas las instancias de VM que tienen direcciones IP externas antes de que se habilite la política mantendrán su dirección IP externa.
  • Esta restricción acepta una allowedList o una deniedList, pero no ambas en la misma política.
  • Depende de ti o de un administrador que cuente con los permisos correctos para administrar y mantener el ciclo de vida y la integridad de la instancia. La restricción solo verifica la URL de la instancia y no evita que se alteren, borren o se vuelvan a crear las VM de la lista blanca.

Permisos

Para establecer una restricción en el proyecto o en el nivel de la organización, debes tener la función orgpolicy.policyAdmin en la organización.

Establece la restricción de políticas a nivel de la organización

Primero necesitas el ID de tu organización si quieres establecer una restricción a fin de acceder a la IP externa.

Busca el ID de tu organización

Console

También puedes buscar el ID en Google Cloud Console:

  1. Accede a Google Cloud Console.
  2. Haz clic en el selector de proyectos.

    Selector de organización y proyecto

  3. Selecciona una organización y busca el ID de la organización.

    ID de la organización

gcloud

Puedes buscar la n numérica si ejecutas el siguiente comando de gcloud y buscas el ID:

gcloud organizations list

gcloud muestra un resultado similar al siguiente:

DISPLAY_NAME           ID
example-organization   29252605212

Establece tu restricción de política

En Console

  1. Ve a la página Políticas de la organización.

    Ir a la página de Políticas de organización

  2. Si es necesario, elige la organización deseada en el menú desplegable del proyecto.
  3. Haz clic en Definir IP externas permitidas para instancias de VM.
  4. Haz clic en Editar para editar la política de IP externa. Si no puedes acceder a la herramienta Editar, no tienes los permisos correctos.
  5. Selecciona la Plataforma de CPU y GPU para establecer la política de la organización específica de las instancias de VM específicas.

    Personalización de la política de la organización.

  6. Elige la Aplicación de la política (Policy enforcement) deseada y el Tipo de política.

  7. En Valores de la política (Policy values), selecciona Personalizado (Custom).

  8. Ingresa una URL parcial a una instancia de VM y presiona Intro. Continúa ingresando instancias de VM como desees.

    Agregar instancias de VM a la política de la organización.

  9. Haz clic en Guardar para guardar los cambios.

gcloud

Usa el comando gcloud resource-manager org-policies set-policy para establecer la política. Deberás proporcionar tu política como un archivo JSON. Crea un archivo JSON similar al siguiente:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [PROJECT_ID] es el ID del proyecto de esta solicitud, como example-project. Ten en cuenta que esto es diferente de la configuración de políticas de la organización, que requieren el ID numérico de la organización.
  • [ZONE] es la zona de la instancia.
  • [INSTANCE_NAME] es el nombre de la instancia.

De manera alternativa, puedes especificar una lista deniedValues en la que se expresen las instancias de VM que no quieres que tengan una dirección IP externa. A cualquier instancia que no esté en la lista se le permitirá de manera implícita tener una dirección IP externa. Solo puedes especificar allowedValues o deniedValues, pero no ambos.

Luego, debes ingresar el archivo con tu solicitud gcloud:

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

en la que [ORGANIZATION_ID] es el ID numérico de la organización.

Si no quieres que ninguna instancia tenga acceso a una IP externa, puedes establecer una política con allValues establecido en DENY:

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

API

Usa la API de setOrgPolicy() para definir tu restricción. Las VM en la lista allowedValue que especificas podrán tener direcciones IP externas. De manera alternativa, puedes especificar una lista deniedValues para expresar instancias de VM que no quieres que tengan una dirección IP externa de manera explícita. A cualquier instancia que no esté en la lista se le permitirá de manera implícita tener una dirección IP externa. Solo puedes especificar allowedValues o deniedValues, pero no ambos.

Por ejemplo, la siguiente es una solicitud para establecer la restricción compute.vmExternalIpAccess en una organización en la que las instancias de VM de determinados proyectos dentro de la organización pueden tener direcciones IP externas:

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

en la que [ORGANIZATION_ID] es el ID numérico de la organización.

Ahora, en el cuerpo de la solicitud, debes proporcionar la política deseada para esta restricción:

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

Si no quieres que ninguna instancia tenga acceso a una IP externa, puedes establecer una política con allValues establecido en DENY:

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

Establece la política en el nivel de proyecto

Establecer una política a nivel de proyecto anula la política a nivel de organización. Por ejemplo, si el nivel de la organización tiene example-vm-1 en la lista allowedValues, pero la política en el nivel de proyecto tiene la misma VM en la lista deniedValues, la instancia de VM no podrá tener una dirección IP externa.

Console

Sigue el mismo proceso documentado en Establece una restricción de política a nivel de la organización, pero elige el proyecto deseado del selector de proyectos, en lugar de la organización.

Selector de proyectos.

gcloud

Usa el comando gcloud beta resource-manager org-policies set-policy para establecer la política. Deberás proporcionar tu política como un archivo JSON. Crea un archivo JSON similar al siguiente:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • [PROJECT_ID] es el ID del proyecto de esta solicitud, como example-project. Ten en cuenta que esto es diferente de la configuración de políticas de la organización, que requieren el ID numérico de la organización.
  • [ZONE] es la zona de la instancia.
  • [INSTANCE_NAME] es el nombre de la instancia.

De manera alternativa, puedes especificar una lista deniedValues de instancias de VM a las que deseas prohibir de manera explícita que tengan una dirección IP externa. A cualquier instancia que no esté en la lista se le permitirá de manera implícita tener una dirección IP externa. Solo puedes especificar allowedValues o deniedValues, pero no ambos.

Luego, debes pasar el archivo con tu solicitud gcloud:

gcloud beta resource-manager org-policies set-policy my-policy.json --project example-project

API

Usa la API de setOrgPolicy() para definir tu restricción. Las VM en la lista allowedValue que especificas podrán tener direcciones IP externas. De manera alternativa, puedes especificar una lista deniedValues para expresar instancias de VM que no quieres que tengan una dirección IP externa de manera explícita. Cualquier instancia que no esté en la lista, está autorizada de forma implícita a tener una dirección IP externa. Solo puedes especificar allowedValues o deniedValues, pero no ambos.

Por ejemplo, la siguiente es una solicitud a fin de establecer la restricción compute.vmExternalIpAccess en un proyecto para permitir que las instancias de VM específicas tengan direcciones IP externas:

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

en la que [PROJECT_ID] es el ID del proyecto para esta solicitud.

El cuerpo de la solicitud contiene la política deseada de esta restricción:

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

Prácticas recomendadas

  • Google recomienda que evites usar la lista deniedValues con esta restricción. Definir los valores en la lista deniedValues implica que solo las instancias de VM en la lista deniedValues tienen restringido el uso de direcciones IP externas. Esto podría representar un problema de seguridad si quieres controlar con precisión qué instancias pueden tener direcciones IP externas. Si quieres quitar determinadas instancias de la lista allowedValues, debes actualizar la política existente para quitar las instancias de allowedList, en lugar de colocar las instancias en la lista deniedValues en una jerarquía inferior.

  • Si deseas establecer una política en una gran parte de la jerarquía de recursos, pero eximir determinados proyectos, debes restablecer la política predeterminada con el método setOrgPolicy mediante la especificación del objeto restoreDefault a fin de permitir que todas las VM en los proyectos se asocien con direcciones IP externas. Las políticas vigentes en la actualidad para los proyectos no se verán afectadas por esta configuración predeterminada.

  • Usa esta política de organización junto con las funciones de IAM si quieres controlar mejor tu entorno. Esta política solo aplica a las instancias de VM, pero si deseas controlar y restringir mejor las direcciones IP externas en los dispositivos de red, puedes otorgar la función compute.networkAdmin a las partes correspondientes.

  • Todos los servicios y productos que se ejecutan en Compute Engine dentro de la organización o proyecto con la política habilitada están sujetos a esta política de la organización. En particular, los servicios como Google Kubernetes Engine, Dataflow, Dataproc y Cloud SQL se ven afectados por esta política. Si esto genera algún problema, Google recomienda configurar otros servicios y productos en un proyecto diferente que no tenga aplicada la política de la organización, y usar Cross Project Networking si es necesario.

Próximos pasos

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine