Puedes asignar direcciones IP externas estáticas a tus instancias de máquina virtual (VM) y de metal desnudo. También puedes cambiar, enumerar y liberar direcciones IP estáticas para tus instancias. Para reservar una dirección IP externa estática, consulta Reserva una dirección IP externa estática.
Las direcciones IP externas pueden ser estáticas o efímeras. Si una instancia requiere una dirección IP externa fija que no cambie, haz lo siguiente:
- Obtén una dirección IP externa estática. Puedes reservar direcciones IP externas nuevas o ascender direcciones IP externas efímeras existentes.
- Asigna la dirección IP reservada a una instancia existente o asígnala cuando crees una instancia nueva.
Si necesitas una dirección IP estática en tu red interna de Compute Engine, consulta Reserva una dirección IP interna estática, en su lugar.
Para obtener información sobre cómo reservar una dirección IP externa estática o crear una dirección IP externa global, consulta Reserva una dirección IP externa estática.
Antes de comenzar
- Lee sobre las direcciones IP.
- Lee sobre cuotas y límites para direcciones IP externas estáticas.
- Lee sobre los precios de las direcciones IP externas.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Cloud de Confiance by S3NS . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:
Console
Cuando usas la consola de Cloud de Confiance para acceder a los servicios y las APIs de Cloud de Confiance by S3NS , no necesitas configurar la autenticación.
gcloud
-
Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:
gcloud init
-
- Configura una región y una zona predeterminadas.
-
Instala Google Cloud CLI.
-
Configura gcloud CLI para usar tu identidad federada.
Para obtener más información, consulta Accede a la gcloud CLI con tu identidad federada.
-
Crea credenciales de autenticación locales para tu cuenta de usuario:
gcloud auth application-default login
Si se devuelve un error de autenticación y usas un proveedor de identidad (IdP) externo, confirma que accediste a la gcloud CLI con tu identidad federada.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa la gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Cloud de Confiance .
Roles obligatorios
Para obtener los permisos que necesitas para configurar y administrar direcciones IP estáticas, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
-
Para crear y actualizar instancias, usa el rol de Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1). -
Para establecer restricciones de políticas para una organización:
Administrador de políticas de la organización (
roles/orgpolicy.policyAdmin)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para configurar y administrar direcciones IP estáticas. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para reservar y administrar direcciones IP estáticas:
-
compute.instances.update -
compute.instances.updateNetworkInterface -
compute.instances.addAccessConfig -
compute.instances.deleteAccessConfig -
compute.networks.list -
compute.subnetworks.use -
compute.subnetworks.list -
Para crear instancias, haz lo siguiente:
compute.instances.createen el proyecto- Para usar una imagen personalizada con el fin de crear la VM, sigue estos pasos:
compute.images.useReadOnlyen la imagen - Si deseas usar una instantánea para crear la VM, sigue estos pasos:
compute.snapshots.useReadOnlyen la instantánea - Para usar una plantilla de instancias a fin de crear la VM, haz lo siguiente:
compute.instanceTemplates.useReadOnlyen la plantilla de instancias - Para asignar una red heredada a la VM:
compute.networks.useen el proyecto - Si deseas especificar una dirección IP estática para la VM;
compute.addresses.useen el proyecto - Para asignar una dirección IP externa a la VM cuando se usa una red y punto heredado;
compute.networks.useExternalIpen el proyecto - A fin de especificar una subred para la VM:
compute.subnetworks.useen el proyecto o en la subred elegida - Para asignar una dirección IP externa a la VM cuando se usa una red de VPC,
compute.subnetworks.useExternalIpen el proyecto o en la subred elegida - A fin de configurar los metadatos de la instancia de VM para la VM y los puntos, sigue estos pasos:
compute.instances.setMetadataen el proyecto - A fin de configurar etiquetas para la VM y los puntos;
compute.instances.setTagsen la VM - Si deseas configurar etiquetas para la VM, haz lo siguiente:
compute.instances.setLabelsen la VM - A fin de configurar una cuenta de servicio para que la VM la use
compute.instances.setServiceAccounten la VM - Si deseas crear un disco nuevo para la VM:
compute.disks.createen el proyecto - Para conectar un disco existente en modo de solo lectura o de lectura y escritura, haz lo siguiente:
compute.disks.useen el disco - Para conectar un disco existente en modo de solo lectura y dos puntos, sigue estos pasos:
compute.disks.useReadOnlyen el disco
-
Para editar las políticas de la organización, sigue estos pasos:
-
orgpolicy.policy.get -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.update
-
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Limitaciones
Solo un recurso a la vez puede usar una dirección IP externa estática.
Cada instancia de procesamiento puede tener varias interfaces de red, y cada interfaz puede tener las siguientes direcciones IP asignadas según su tipo de pila:
- Interfaces solo IPv4:
- Una dirección IPv4 interna (obligatoria)
- Una dirección IPv4 externa (opcional)
- Interfaces de pila doble (IPv4 e IPv6):
- Una dirección IPv4 interna (obligatoria)
- Una dirección IPv4 externa (opcional)
- Un rango de direcciones IPv6
/96, ya sean internas o externas, pero no ambas (obligatorio)
- Interfaces solo IPv6:
- Un rango de direcciones IPv6
/96, ya sean internas o externas, pero no ambas (obligatorio)
- Un rango de direcciones IPv6
- Interfaces solo IPv4:
No puedes anular la asignación ni cambiar la dirección IPv6 externa de una instancia de procesamiento con una interfaz de red solo IPv6. Sin embargo, puedes promover una dirección IP externa efímera de un recurso a una dirección IP externa estática para que la dirección permanezca reservada incluso después de que se borre el recurso.
No puedes cambiar el nombre de una dirección IP 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 cantidad de direcciones IP externas puede hacer referencia a una interfaz de red a través de estas reglas de reenvío, sin embargo, a cada interfaz de red se le puede asignar solo una dirección IPv4 externa y un rango de direcciones IPv6 /96 externas.
Para obtener más información sobre el balanceo de cargas y las reglas de reenvío, consulta la documentación de balanceo de cargas.
Consulta las direcciones IP externas estáticas disponibles
Para crear una lista de las direcciones IP externas estáticas que reservaste para tu proyecto, sigue estos pasos.
Console
En la consola de Cloud de Confiance , ve a la página Direcciones IP.
Haz clic en Direcciones IP externas.
gcloud
Usa el comando gcloud compute addresses list:
Para enumerar todas las direcciones IP, usa el siguiente comando:
gcloud compute addresses list
Para enumerar todas las direcciones IP globales, usa el siguiente comando:
gcloud compute addresses list --global
Para enumerar todas las direcciones IP regionales en una región determinada, usa el siguiente comando:
gcloud compute addresses list \ --regions=REGIONReemplaza
REGIONpor la región de la que deseas enumerar las direcciones. Puedes enumerar direcciones de varias regiones si especificas nombres de región separados por comas:gcloud compute addresses list \ --regions=REGION1,REGION2,..REGION_n_
API
Para enumerar las direcciones IPv4 o IPv6 regionales, llama al método
addresses.list:GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de esta solicitud.REGION: El nombre de la región para esta solicitud
Para enumerar todas las direcciones de todas las regiones, llama al método
addresses.aggregatedList:GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/aggregated/addresses
Para enumerar las direcciones IPv4 o IPv6 globales, llama al método
globalAddresses.list:GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/global/addresses
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de esta solicitud.
Go
Java
Python
Configura direcciones IP externas estáticas
En las siguientes secciones, se describe cómo configurar direcciones IP externas estáticas para tus instancias.
Crea una instancia que use una dirección IP externa estática
Después de reservar una dirección IP externa estática, puedes asignarla a una instancia.
Console
En la consola de Cloud de Confiance , ve a la página Crear una instancia.
Para asignar una dirección IP externa estática a la instancia, haz lo siguiente:
En el menú de navegación, haz clic en Herramientas de redes.
En la sección Interfaces de red, especifica las interfaces de red que deseas para la instancia con las siguientes opciones:
Para agregar una interfaz de red, haz clic en Agregar una interfaz de red. Luego, en la lista Red, selecciona una red.
Para borrar una interfaz de red, haz clic en Borrar.
Selecciona una de las siguientes opciones:
Para asignar una dirección IPv4 externa estática, haz lo siguiente:
- Expande una interfaz de red.
- Elige la dirección IP de la lista Dirección IPv4 externa.
Para asignar una dirección IPv6 externa estática, haz lo siguiente:
- Expande una interfaz de red que contenga una subred con un rango de direcciones IPv6 externo.
- Selecciona esa subred en la lista Subred.
- En Tipo de pila IP, selecciona IPv4 e IPv6 (pila doble) o IPv6 (pila única).
- Elige la dirección IPv6 externa recién reservada de la lista Dirección IPv6 externa. Como alternativa, elige Reservar dirección IPv6 externa estática y reserva una dirección IPv6 externa estática nueva.
- En Nivel de servicio de red, selecciona Premium.
Para terminar de modificar la interfaz de red, haz clic en Listo.
Continúa con el proceso de creación de la instancia.
gcloud
Puedes crear una instancia y asignarle una dirección IP externa regional estática que ya hayas reservado.
Para asignar una dirección IPv4 externa estática, haz lo siguiente:
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --address=IPV4_ADDRESSPara asignar una dirección IPv6 externa estática, haz lo siguiente:
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --subnet=SUBNET \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --ipv6-network-tier=PREMIUMReemplaza lo siguiente:
INSTANCE_NAME: Es el nombre de la instancia de procesamiento.ZONE: la zona en la cual se creará la instancia.IPV4_ADDRESS: Es la dirección IPv4 que se asignará a la instancia. Usa la dirección IP externa estática reservada, no el nombre de la dirección.SUBNET: Una subred que contiene direcciones IPv6 externasSTACK_TYPE: Es el tipo de pila de la instancia, que puede serIPV4_IPV6(pila doble) oIPV6_ONLY.IPV6_ADDRESS: Es la dirección IPv6 que se asignará a la instancia. Usa la dirección IP externa estática reservada, no el nombre de la dirección.
Terraform
Puedes usar el recurso google_compute_instance
para asignar una dirección IP externa.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
REST
Para asignar una dirección IPv4 externa estática a una instancia de procesamiento nueva, haz lo siguiente:
En tu solicitud para crear una instancia nueva, debes proporcionar explícitamente la propiedad
networkInterfaces[].accessConfigs[].natIPy la dirección IPv4 externa que quieres usar, por ejemplo:{ "name": "INSTANCE_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" } }] }Reemplaza lo siguiente:
INSTANCE_NAME: el nombre de la instancia de procesamientoZONE: la zona en la cual se creará la instancia.MACHINE_TYPE: Es una URL completa o parcial del recurso de tipo de máquina que se usará cuando se cree la instancia (opcional), en el siguiente formato:zones/ZONE/machineTypes/MACHINE_TYPEIPV4_ADDRESS: Es la dirección IPv4 que se asignará a la instancia. Usa la dirección IP externa estática reservada, no el nombre de la dirección.SOURCE_IMAGE: Una versión específica de una imagen pública, comoprojects/debian-cloud/global/images/debian-10-buster-v20200309, o una familia de imágenes, comoprojects/debian-cloud/global/images/family/debian-10
Para asignar una dirección IPv6 externa estática a una instancia nueva, haz lo siguiente:
En tu solicitud para crear una instancia nueva, debes proporcionar la propiedad
networkInterfaces[].ipv6AccessConfigs[].externalIpv6y la dirección IPv6 externa que quieres usar de forma explícita, por ejemplo:{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "ipv6AccessConfigs": [{ "externalIpv6": "IPV6_ADDRESS", "externalIpv6PrefixLength": 96, "name": "external-ipv6-access-config", "networkTier": "PREMIUM", "type": "DIRECT_IPV6" }], "stackType": "STACK_TYPE", "subnetwork":"SUBNETWORK" }], "disks": [{ "autoDelete": "true", "boot": "true", "mode": "READ_WRITE", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" }, }], }Reemplaza lo siguiente:
INSTANCE_NAME: el nombre de la instancia de procesamientoZONE: la zona en la cual se creará la instancia.MACHINE_TYPE: Es una URL completa o parcial del recurso de tipo de máquina que se usará cuando se cree la instancia, en el formatozones/ZONE/machineTypes/MACHINE_TYPE(opcional).IPV6_ADDRESS: Es la dirección IPv6 que se asignará a la instancia. Usa la dirección IP externa estática reservada, no el nombre de la dirección.STACK_TYPE: Es el tipo de pila de la instancia, ya seaIPV4_IPV6(pila doble) oIPV6_ONLY.SUBNET: Una subred que contiene direcciones IPv6 externasSOURCE_IMAGE: Una versión específica de una imagen pública, como"projects/debian-cloud/global/images/debian-10-buster-v20200309", o una familia de imágenes, como"projects/debian-cloud/global/images/family/debian-10"
Go
Java
Python
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 de solo IPv4 o de pila doble. Este procedimiento no es compatible con instancias que solo admiten IPv6.
Una instancia de procesamiento puede tener varias interfaces. Una interfaz de pila única puede tener una dirección IP externa. Una interfaz de pila doble puede tener una dirección IPv4 externa y una dirección IPv6 externa. Si la instancia ya tiene una dirección IP externa, primero debes quitar esa dirección. Luego, puedes asignar una dirección IP externa nueva a la instancia existente.
Console
En la consola de Cloud de Confiance , ve a la página Instancias de VM.
Haz clic en el nombre de la instancia a la que quieres asignar una IP externa. Se mostrará la página Detalles de la instancia.
En la página Detalles de la instancia, completa los siguientes pasos:
- Haz clic en Editar.
- Expande Interfaces de red.
- Selecciona la dirección IP externa requerida para asignar a la instancia.
Si la instancia es solo IPv4 y quieres asignarle una dirección IPv6, primero debes cambiar el tipo de pila a pila doble.
- En Dirección IPv4 externa, elige Dirección IPv4 efímera o una dirección IPv4 externa estática.
- En Dirección IPv6 externa, elige Efímera (automática), Efímera (personalizada) o una dirección IPv6 externa estática.
- Haz clic en Listo.
Haz clic en Guardar.
gcloud
Opcional: Reserva una dirección IP externa estática.
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 asigna de manera aleatoria una dirección IP externa efímera.
Quita cualquier asignación de dirección IP existente, como se describe en Anula la asignación de una dirección IP externa estática.
Asigna la nueva dirección IP externa.
Para asignar una dirección IPv4, usa el subcomando
instances add-access-config:Nota: No reemplacesIP_ADDRESScon 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
Reemplaza lo siguiente:
INSTANCE_NAME: El nombre de la instancia.ACCESS_CONFIG_NAME: El nombre para llamar a esta configuración de acceso. Asegúrate de incluir el nombre completo entre comillas.IP_ADDRESS: La dirección IP que se 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"
Para cambiar una instancia a pila doble y asignarle una dirección IPv6, usa el subcomando
instance network-interfaces update:gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=NIC \ --ipv6-network-tier=PREMIUM \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --zone=ZONE
Reemplaza lo siguiente:
INSTANCE_NAME: El nombre de la instancia.NIC: el nombre de la interfaz de redSTACK_TYPE: Es el tipo de pila de la instancia, que debe serIPV4_IPV6. No puedes cambiar el tipo de pila a IPV6_ONLY.IPV6_ADDRESS: Es la dirección IPv6 que se asignará a la instancia. Especifica la primera dirección IPv6 en el rango/96.ZONE: La zona de la instancia.
REST
Si deseas cambiar la dirección IPv4 o IPv6 externa de una instancia, puedes agregar una configuración de acceso nueva para esa instancia.
Quita cualquier asignación de dirección IP existente, como se describe en Anula la asignación de una dirección IP externa estática.
Borra la configuración de acceso existente mediante una solicitud
POSTal métodoinstances.deleteAccessConfig.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
Para agregar una nueva configuración de acceso a la interfaz de red de la instancia, realiza una solicitud
POSTal métodoinstances.addAccessConfig.Para las direcciones IPv4, realiza la siguiente solicitud:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addAccessConfig { "natIP": "IPV4_ADDRESS", "name": "ACCESS_CONFIG_NAME" }En el caso de las direcciones IPv6, actualiza el
stackTypede la interfaz de red aIPV4_IPV6y actualiza la propiedadnetworkInterfaces[].ipv6AccessConfigs[].externalIpv6y la dirección IPv6 externa que deseas usar.Para obtener más información, consulta Asigna una dirección IP externa estática a una instancia nueva.
Go
Java
Python
Restringe direcciones IP externas a instancias específicas
Para ciertas cargas de trabajo, puede que tengas requisitos esenciales que incluyen restricciones de seguridad y de red. Por ejemplo, es posible que desees restringir las direcciones IP externas para que solo instancias específicas de Compute Engine puedan usarlas. Esta opción puede ayudar a evitar el robo de datos o mantener el aislamiento de red.
Con una política de la organización, puedes restringir las direcciones IP externas a instancias específicas con restricciones para controlar el uso de direcciones IP externas para tus instancias dentro de una organización o un proyecto.
La restricción para controlar la dirección IP externa en las instancias es la siguiente:
constraints/compute.vmExternalIpAccess
Si no especificas una política de la organización para las direcciones IP externas, se permitirán las direcciones IP externas para todas las instancias. Para usar la restricción, debes especificar una política de la organización con una de las siguientes configuraciones:
- Especifica una lista
allowedValuesvacía para que se bloquee que todas las instancias de procesamiento tengan una dirección IP externa. - Especifica una lista
allowedValuesde instancias de procesamiento que pueden tener direcciones IP externas.- Solo a las instancias de procesamiento que aparecen en la lista de
allowedValuesse les puede asignar una dirección IP externa, ya sea efímera o estática. - Todas las demás instancias de procesamiento de la organización o el proyecto que no estén definidas de forma explícita en la política tienen prohibido tener direcciones IP externas.
- Solo a las instancias de procesamiento que aparecen en la lista de
- Como alternativa, especifica la lista
deniedValuespara evitar que solo las instancias de procesamiento designadas tengan direcciones IP externas. Usa este enfoque con precaución, en especial si la restricción de la política de la organización se aplica a un proyecto en el que anula una restricción aplicada en una carpeta o una organización principal. Dado que solo se impide que las instancias de procesamiento especificadas en una lista dedeniedValuestengan direcciones IP externas, cualquier instancia de procesamiento creada recientemente en el proyecto puede tener direcciones IP externas.
Las instancias se identifican en las listas de entidades permitidas y de denegación con el URI de la instancia:
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Especificaciones para restringir direcciones IP externas
- Solo puedes aplicar la
compute.vmExternalIpAccessrestricción de lista a instancias de procesamiento. - No puedes aplicar la restricción de forma retroactiva. Todas las instancias de procesamiento que tienen direcciones IP externas antes de que habilites la política conservarán sus direcciones IP externas.
- Esta restricción acepta una lista de
allowedValuesodeniedValues, pero no ambas en la misma política. - Depende de ti o de un administrador que cuente con los permisos necesarios para administrar y mantener el ciclo de vida y la integridad de la instancia de procesamiento. La restricción solo verifica el URI de la instancia y no evita que se alteren, borren o se vuelvan a crear las instancias incluidas en la lista de anunciantes permitidos.
Lineamientos para restringir direcciones IP externas
Usa los siguientes lineamientos para permitir o denegar direcciones IP externas para instancias de procesamiento:
Si tu objetivo de seguridad es permitir la creación de solo algunas instancias de procesamiento con direcciones IP externas, pero impedir la creación de otras instancias con direcciones IP externas, ten en cuenta lo siguiente cuando uses una lista de
allowedValueso una lista dedeniedValuesen una restricción de política de la organizaciónconstraints/compute.vmExternalIpAccess:Verifica que la restricción de política de organización
constraints/compute.vmExternalIpAccessno se anule con una restricción de política de organizaciónconstraints/compute.vmExternalIpAccessdefinida en un recurso secundario.Recomendación: Usa una lista
allowedValuesen una restricción de política de la organizaciónconstraints/compute.vmExternalIpAccesspara especificar solo las instancias de procesamiento que pueden tener direcciones IP externas. Las instancias recién creadas en el proyecto se excluyen automáticamente de tener direcciones IP externas porque no se encuentran en la listaallowedValuesde la restricción de la política de la organización. Para ver un ejemplo, consulta Establece la política a nivel de proyecto.
Puedes eximir proyectos específicos en una jerarquía de recursos de la restricción de la política de la organización
constraints/compute.vmExternalIpAccesscon el métodosetOrgPolicyy especificandorestoreDefault.Cuando se usa la VPC compartida, aplicar la restricción de la política de organización
constraints/compute.vmExternalIpAccessal proyecto host de la VPC compartida solo se aplica a las instancias de procesamiento ubicadas en el proyecto host. Las instancias ubicadas en proyectos de servicio no se ven afectadas, a menos que apliques la restricción de la política de la organizaciónconstraints/compute.vmExternalIpAccessa cada proyecto de servicio.Usa la política de organización junto con los roles de IAM para controlar mejor tu entorno. Esta política solo se aplica a las instancias de procesamiento. Para controlar y restringir mejor las direcciones IP externas en los dispositivos de red, puedes otorgar el rol
compute.networkAdminsolo a las partes correspondientes.
Usa una política de la organización de direcciones IP externas con servicios administrados
La restricción de la política de la organización constraints/compute.vmExternalIpAccess se aplica a las instancias de procesamiento recién creadas que se encuentran en un proyecto que está dentro del alcance de la restricción de la política de la organización. Las instancias afectadas incluyen los nodos de Google Kubernetes Engine, las instancias de Dataflow y las instancias de Managed Service para Apache Spark si se crean en tu proyecto y si tu proyecto está dentro del alcance de esta restricción de la política de la organización.
Los servicios administrados basados en instancias que usan el acceso privado a servicios se ejecutan en instancias de procesamiento ubicadas en proyectos del productor de servicios que son independientes de tu proyecto. Las instancias de procesamiento de los servicios administrados tienen interfaces de red en una red de productor de servicios que se interconecta con tu red de VPC. Si la restricción de política de la organización constraints/compute.vmExternalIpAccess se aplica a tu proyecto (el proyecto que contiene tu red de VPC), la restricción de política de la organización no tendrá ningún efecto en las instancias de procesamiento de los servicios administrados fuera de tu proyecto.
Algunos servicios administrados ofrecen sus propias restricciones de políticas de la organización que brindan capacidades similares. Por ejemplo, Cloud SQL tiene constraints/sql.restrictPublicIp.
Permisos necesarios para restringir direcciones IP externas
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
Console
- Ve a la página Políticas de organización.
- Si es necesario, elige la organización requerida en el menú desplegable del proyecto.
En el menú Filtro, ingresa el texto
Define allowed.Deberías ver dos filas en la tabla Políticas.
Selecciona la política Define allowed external IPs for VM instances haciendo clic en el nombre de la política en la columna Name de la tabla.
En la página de detalles de la política, haz clic en Administrar política para editar la política de IP externa. Si no puedes acceder al vínculo Administrar política, no tienes los permisos correctos.
Haz clic en Administrar política.
Se abrirá la página Editar política.
En Se aplica a, selecciona Anular la política del elemento superior.
En Aplicación de la política, elige Combinar con superior.
Haz clic en Agregar una regla.
En Valores de la política, elige Personalizado.
En Tipo de política, selecciona si la política de la organización debe aceptar o rechazar los valores proporcionados.
En el campo Valor personalizado, ingresa un URI para una instancia. El URI debe tener el siguiente formato:
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Para agregar más instancias de procesamiento, haz clic en Agregar valor y, luego, ingresa los URIs de las instancias adicionales.
Para aplicar la política, haz clic en Establecer política.
gcloud
Primero necesitas el ID de tu organización si quieres establecer una restricción para el acceso de IP externas. Puedes encontrar el ID de organización si ejecutas el comando organizations list y buscas el ID numérico en la respuesta:
gcloud organizations list
Gcloud CLI muestra una lista de organizaciones en el siguiente formato:
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
Usa el comando gcloud resource-manager org-policies set-policy para establecer la política. Debes proporcionar tu política como un archivo JSON.
Crea un archivo JSON en el siguiente formato:
{
"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"
]
}
}
Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto de esta solicitud, comoexample-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 para indicar las instancias 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 pasar el archivo con la solicitud:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID
Reemplaza ORGANIZATION_ID por 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"
}
}
REST
Usa la API de setOrgPolicy() para definir la restricción. Las instancias que aparecen en la lista allowedValues que especificas pueden tener direcciones IP externas. De manera alternativa, puedes especificar una lista deniedValues en la que se expresen las instancias 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.
Por ejemplo, la siguiente es una solicitud para establecer la restricción compute.vmExternalIpAccess en una organización en la que las instancias de determinados proyectos dentro de la organización pueden tener direcciones IP externas:
POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy
En el ejemplo anterior, 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 a 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 instancia en la lista deniedValues, la instancia 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.
gcloud
Usa el comando gcloud resource-manager org-policies set-policy para establecer la política. Debes proporcionar tu política como un archivo JSON. Crea un archivo JSON en el siguiente formato:
{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
"allowedValues": [
"projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME"
]
}
}Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto de esta solicitud, comoexample-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: La zona de la instancia.INSTANCE_NAME: El nombre de la instancia.
De manera alternativa, puedes especificar una lista deniedValues de instancias a las que deseas prohibirles 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 la solicitud:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project
REST
Usa la API de setOrgPolicy para definir la restricción. Las instancias que aparecen en la lista allowedValues que especificas pueden tener direcciones IP externas. De manera alternativa, puedes especificar una lista deniedValues en la que se expresen las instancias que no quieres que tengan una dirección IP externa. 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 para establecer la restricción compute.vmExternalIpAccess en un proyecto a fin de permitir que instancias específicas tengan direcciones IP externas:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy
Reemplaza PROJECT_ID por 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"
]
}
}
}
Administra direcciones IP externas estáticas
En las siguientes secciones, se describe cómo administrar direcciones IP externas estáticas para tus instancias.
Determina si una dirección IP externa es efímera o estática
Las direcciones IP externas estáticas y efímeras se comportan y se ven iguales en la mayoría de los contextos. Sin embargo, con las direcciones IP externas estáticas, puedes usar la misma dirección IP para el mismo recurso, incluso si borras y vuelves a crear el recurso.En general, una dirección IP efímera se libera si detienes o borras el recurso.
Para determinar si una dirección es estática o efímera, haz lo siguiente:
En la consola de Cloud de Confiance , ve a la página Direcciones IP.
Busca la dirección en la lista y verifica la columna Tipo para el tipo de dirección IP.
Anula la asignación de una dirección IP externa estática
Anular la asignación de una dirección IP la quita del recurso, pero conserva la dirección IP reservada. Una vez que se anula la asignación de la dirección IP, puedes reasignarla a otro recurso. Este procedimiento es compatible con las instancias de pila doble, pero no con las instancias que solo admiten IPv6.
Para anular la asignación de la dirección IPv4 o IPv6, también puedes borrar la instancia.
Console
En la consola de Cloud de Confiance , ve a la página Direcciones IP.
Haz clic en Direcciones IP externas.
Elige la dirección IP estática para la que deseas anular la asignación.
Haz clic en Ver acciones y selecciona la opción Reasignar a otro recurso.
En la lista desplegable Adjuntar a, elige Ninguna.
Haz clic en Aceptar.
gcloud
Comprueba si una dirección IP estática está en uso mediante el comando
gcloud compute addresses list:gcloud compute addresses list
El resultado es similar a este:
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
- Si la dirección IP no está en uso, el estado es
RESERVED. - Si la dirección IP está en uso, el estado es
IN_USE.
- Si la dirección IP no está en uso, el estado es
Recupera el nombre de la instancia que usa la dirección IP:
gcloud compute addresses describe ADDRESS_NAME \ --region=REGION
Reemplaza lo siguiente:
ADDRESS_NAME: el nombre del recurso de dirección IPv6.REGION: la región del recurso de dirección IPv6.
El resultado es similar a lo siguiente:
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/INSTANCE_NAME
El campo
usersmuestra el nombre de la instancia que usa la dirección IP.Anula la asignación de la dirección IP de la instancia.
Para anular la asignación de una dirección IPv4, borra el archivo de configuración de acceso de la instancia:
Obtén el nombre de la configuración de acceso que quieres borrar. Para obtener el nombre, usa el comando
gcloud compute instances describe. ReemplazaINSTANCE_NAMEpor el nombre de la instancia.gcloud compute instances describe INSTANCE_NAME
La configuración de acceso aparece en el siguiente formato:
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 203.0.113.1 type: ONE_TO_ONE_NATBorra la configuración de acceso con el comando
gcloud compute instances delete-access-config:gcloud compute instances delete-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
Reemplaza lo siguiente:
INSTANCE_NAME: El nombre de la instancia.ACCESS_CONFIG_NAME: El nombre de la configuración de acceso que se borrará. Asegúrate de incluir el nombre completo entre comillas.
Para anular la asignación de un rango de direcciones IPv6, usa el comando
instance network-interfaces update:gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=nic0 \ --stack-type=IPV4_ONLY \ --zone=ZONE
Reemplaza lo siguiente:
INSTANCE_NAME: Es el nombre de la instancia que usa la dirección IP.ZONE: La zona de la instancia.
Comprueba que tu dirección IP externa estática ahora esté disponible y marcada como
RESERVED, en lugar deIN_USE.gcloud compute addresses list \ --filter="ADDRESS_NAME AND region=REGION"
Reemplaza lo siguiente:
ADDRESS_NAME: el nombre del recurso de dirección IP.REGION: la región del recurso de la dirección IP.
Ya que tu dirección IP externa estática está disponible, puedes elegir asignarla a otra instancia.
REST
Para anular la asignación de una dirección IPv4 o IPv6 externa estática, sigue estos pasos:
En el caso de las direcciones IPv4, borra la configuración de acceso adjunta a la instancia que usa la dirección.
Para verificar los detalles de configuración de acceso de una instancia, realiza una solicitud
GETal métodoinstances.get.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Borra la configuración de acceso existente mediante una solicitud
POSTal métodoinstances.deleteAccessConfig.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
Reemplaza lo siguiente:
PROJECT_ID: El ID del proyecto de esta solicitudZONE: Es la zona en la que se encuentra la instancia.INSTANCE_NAME: Es el nombre de la instancia.
Para las direcciones IPv6, actualiza el tipo de pila de la interfaz de red de la instancia a la que se adjunta la dirección IPv6.
Realiza una solicitud
PATCHal métodoinstances.updateNetworkInterface.En el cuerpo de la solicitud, actualiza el valor del campo
stackTypeaIPV4_ONLY.Por ejemplo:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface { "networkInterfaces": [{ ... "stackType" : "IPV4_ONLY" ... }] }
Java
Python
Liberar una dirección IP externa estática
Si ya no necesitas una dirección IPv4 o IPv6 externa estática, puedes borrar el recurso de dirección IP para liberarla. Borrar una instancia no libera automáticamente una dirección IP externa estática. Debes liberar las direcciones IP internas estáticas de forma manual cuando ya no las necesites.
Para liberar una dirección IP externa estática, consulta Libera una dirección IP externa estática en la documentación de VPC.
¿Qué sigue?
- Obtén más información sobre direcciones IP.
- Obtén más información sobre redes y firewalls.
- Obtén más información para acceder a instancias de Compute Engine con DNS interno.
- Revisa los precios de VPC.