Restricciones de las políticas de la organización para Cloud Load Balancing

En esta página, se proporciona información complementaria sobre las restricciones de las políticas de la organización que se aplican a Cloud Load Balancing. Usa restricciones de las políticas de la organización para aplicar la configuración en un proyecto, una carpeta o una organización en su totalidad.

Las políticas de la organización solo se aplican a los recursos nuevos. Las restricciones no se aplican de forma retroactiva. Si tienes recursos de balanceo de cargas preexistentes que infringen una política de la organización nueva, deberás abordar esas infracciones de forma manual.

Para obtener una lista completa de las restricciones disponibles, consulta las restricciones de las políticas de la organización.

Restringe los tipos de balanceadores de cargas

Usa una política de la organización para restringir los tipos de Cloud Load Balancing que se pueden crear en tu organización. Establece la siguiente restricción de política de la organización:

  • Nombre: Restringir la creación de balanceadores de cargas según sus tipos
  • ID: constraints/compute.restrictLoadBalancerCreationForTypes

Cuando configuras la restricción compute.restrictLoadBalancerCreationForTypes, debes especificar una lista de entidades permitidas o una lista de bloqueo de los tipos de Cloud Load Balancing. La lista de valores permitidos o denegados solo puede incluir los de la siguiente lista:

  • Balanceadores de cargas de la aplicación
    • GLOBAL_EXTERNAL_MANAGED_HTTP_HTTPS para el balanceador de cargas de aplicaciones externo global
    • EXTERNAL_HTTP_HTTPS para el balanceador de cargas de aplicaciones clásico
    • EXTERNAL_MANAGED_HTTP_HTTPS para el balanceador de cargas de aplicaciones externo regional
    • GLOBAL_INTERNAL_MANAGED_HTTP_HTTPS para el balanceador de cargas de aplicaciones interno entre regiones
    • INTERNAL_HTTP_HTTPS para el balanceador de cargas de aplicaciones interno regional
  • Balanceadores de cargas de red del proxy
    • GLOBAL_EXTERNAL_MANAGED_TCP_PROXY para el balanceador de cargas de red global del proxy externo con un proxy TCP
    • GLOBAL_EXTERNAL_MANAGED_SSL_PROXY para el balanceador de cargas de red global del proxy externo con un proxy SSL
    • EXTERNAL_TCP_PROXY para el balanceador de cargas de red del proxy externo con un proxy TCP
    • EXTERNAL_SSL_PROXY para el balanceador de cargas de red del proxy externo con un proxy SSL
    • REGIONAL_EXTERNAL_MANAGED_TCP_PROXY para el balanceador de cargas de red global del proxy externo con un proxy TCP
    • REGIONAL_INTERNAL_MANAGED_TCP_PROXY para el balanceador de cargas de red de proxy interno regional con un proxy TCP
    • GLOBAL_INTERNAL_MANAGED_TCP_PROXY para el balanceador de cargas de red de proxy interno entre regiones con un proxy TCP
  • Balanceadores de cargas de red de transferencia
    • EXTERNAL_NETWORK_TCP_UDP para el balanceador de cargas de red de transferencia externo
    • INTERNAL_TCP_UDP para el balanceador de cargas de red de transferencia interno

Para incluir todos los tipos de balanceadores de cargas internos o externos, usa el prefijo in: seguido de INTERNAL o EXTERNAL. Por ejemplo, si se permite in:INTERNAL, se permiten todos los balanceadores de cargas internos de la lista anterior.

Para obtener instrucciones de muestra sobre cómo usar esta restricción, consulta Configura restricciones de listas con políticas de la organización.

Después de configurar la política, esta se aplica cuando se agregan las reglas de reenvío correspondientes de Google Cloud. La restricción no se aplica a la configuración existente de Cloud Load Balancing.

Si intentas crear un tipo de balanceador de cargas que infrinja la restricción, el intento fallará y se generará un mensaje de error. El mensaje de error tiene el siguiente formato:

Constraint constraints/compute.restrictLoadBalancerCreationForTypes
violated for projects/PROJECT_NAME. Forwarding Rule projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME
of type SCHEME is not allowed.

Si configuras varias restricciones restrictLoadBalancerCreationForTypes en diferentes niveles de recursos, estas se aplican de manera jerárquica. Por este motivo, se recomienda establecer el campo inheritFromParent en true, lo que garantiza que también se consideran las políticas de las capas superiores.

Mensajes de error de GKE

Si usas los objetos Ingress y Service de Google Kubernetes Engine (GKE), el uso de esta política de la organización para restringir la creación del balanceador de cargas da como resultado un mensaje de error similar al siguiente:

Warning  Sync    28s   loadbalancer-controller  Error during sync: error running
load balancer syncing routine: loadbalancer FORWARDING_RULE_NAME
does not exist: googleapi: Error 412:
Constraint constraints/compute.restrictLoadBalancerCreationForTypes violated for
projects/PROJECT_ID. Forwarding Rule
projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME
of type LOAD_BALANCER_TYPE is not allowed, conditionNotMet

Puedes ver los mensajes de error de GKE si ejecutas los siguientes comandos:

kubectl get events -w
kubectl describe RESOURCE_KIND NAME

Reemplaza lo siguiente:

  • RESOURCE_KIND: Es el tipo de balanceador de cargas, ingress o service.
  • NAME: Es el nombre del balanceador de cargas.

Inhabilita el balanceo de cargas global

Esta restricción booleana inhabilita la creación de productos de balanceo de cargas global. Cuando se aplica, solo se pueden crear productos de balanceo de cargas regional sin dependencias globales.

  • Nombre: Inhabilita el balanceo de cargas global.
  • ID: constraints/compute.disableGlobalLoadBalancing

De forma predeterminada, los usuarios pueden crear productos de balanceo de cargas global.

Para obtener instrucciones de muestra sobre cómo usar esta restricción, consulta Configura restricciones booleanas con políticas de la organización.

Restringe los tipos de reenvío de protocolos

Usa una política de la organización para restringir los tipos de reenvío de protocolos que se pueden crear en tu organización. Establece la siguiente restricción de política de la organización:

  • Nombre: Restringir el reenvío de protocolo en función del tipo de dirección IP
  • ID: constraints/compute.restrictProtocolForwardingCreationForTypes

Cuando estableces la restricción compute.restrictProtocolForwardingCreationForTypes, especificas una lista de entidades permitidas o una lista de bloqueo de los tipos de reenvío de protocolos. La lista de valores permitidos o denegados solo puede incluir los de la siguiente lista:

  • INTERNAL
  • EXTERNAL

Para obtener instrucciones de muestra sobre cómo usar esta restricción, consulta Configura restricciones de listas con políticas de la organización.

Después de configurar la política, esta se aplica cuando se agregan las reglas de reenvío correspondientes de Google Cloud. La restricción no se aplica en las opciones de configuración de reenvío de protocolos existentes.

Si intentas crear una implementación de reenvío de protocolos de un tipo que infringe la restricción, el intento falla y se genera un mensaje de error. El mensaje de error tiene el siguiente formato:

Constraint constraints/compute.restrictProtocolForwardingCreationForTypes
violated for projects/PROJECT_NAME. Forwarding Rule
projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME
of type SCHEME is not allowed.

Si configuras varias restricciones restrictProtocolForwardingCreationForTypes en diferentes niveles de recursos y si estableces el campo inheritFromParent en true, las restricciones se aplicarán de manera jerárquica.

Aplica restricciones de VPC compartida

Usa las siguientes políticas de la organización para restringir la forma en la que los usuarios pueden configurar implementaciones de VPC compartida.

Restringe los proyectos host de VPC compartida

En esta restricción de lista, puedes restringir los proyectos host de VPC compartida a los que se puede adjuntar un recurso.

  • Nombre: Restringir proyectos host de VPC compartida
  • ID: constraints/compute.restrictSharedVpcHostProjects

De forma predeterminada, un proyecto puede adjuntarse a cualquier proyecto de host dentro de la misma organización, lo que lo convierte en un proyecto de servicio. Cuando configuras la restricción compute.restrictSharedVpcHostProjects, debes especificar una lista de entidades permitidas o una lista de bloqueo de proyectos de host de las maneras siguientes:

  • Especifica un proyecto en el siguiente formato:
    • projects/PROJECT_ID
  • Especifica un proyecto, una carpeta o una organización. La restricción se aplica a todos los proyectos del recurso especificado en la jerarquía de recursos. Usa el siguiente formato:
      .
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID

Para obtener instrucciones de muestra sobre cómo usar esta restricción, consulta Configura restricciones de listas con políticas de la organización.

Restringe las subredes de VPC compartidas

En esta restricción de lista, se define el conjunto de subredes de VPC compartidas que pueden usar los recursos aptos. Esta restricción no se aplica a los recursos dentro del mismo proyecto.

  • Nombre: Restringir subredes de VPC compartida
  • ID: constraints/compute.restrictSharedVpcSubnetworks

De forma predeterminada, los recursos aptos pueden usar cualquier subred de VPC compartida. Cuando configuras la restricción compute.restrictSharedVpcSubnetworks, debes especificar una lista restringida de subredes de las siguientes maneras:

  • Especifica una subred con el siguiente formato:
    • projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.
  • Especifica un proyecto, una carpeta o una organización. La restricción se aplica a todas las subredes del recurso especificado en la jerarquía de recursos. Usa el siguiente formato:
      .
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID
    • under:projects/PROJECT_ID

Para obtener instrucciones de muestra sobre cómo usar esta restricción, consulta Configura restricciones de listas con políticas de la organización.

Restringe los servicios de backend entre proyectos

Puedes usar esta restricción para limitar los servicios de backend a los que puede hacer referencia un mapa de URL. Esta restricción no se aplica a los servicios de backend dentro del mismo proyecto que el mapa de URL.

  • Nombre: Restringir servicios de backend entre proyectos
  • ID: constraints/compute.restrictCrossProjectServices

De forma predeterminada, los mapas de URL en todos los proyectos host o de servicio pueden hacer referencia a los servicios de backend compatibles de otros proyectos de servicio o al proyecto host en la misma implementación de VPC compartida, siempre que el usuario que realice la acción tenga el permiso compute.backendServices.use. Cuando configuras la restricción restrictCrossProjectServices, debes especificar una lista de entidades permitidas o una lista de bloqueo de los servicios de backend de las maneras siguientes:

  • Especifica los servicios de backend en el siguiente formato:
    • projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
  • Especifica un proyecto, una carpeta o una organización. La restricción se aplica a todos los servicios de backend del recurso especificado en la jerarquía de recursos. Usa el siguiente formato:
      .
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID
    • under:projects/PROJECT_ID

Después de configurar una política de la organización con esta restricción, esta se aplicará la próxima vez que uses el comando gcloud compute url-maps para vincular un servicio de backend a un mapa de URL. La restricción no afecta de forma retroactiva las referencias existentes a ningún servicio de backend entre proyectos.

Para obtener instrucciones de muestra sobre cómo usar esta restricción, consulta Configura restricciones de listas con políticas de la organización.

Restringe la eliminación de la retención del proyecto de VPC compartida

En esta restricción booleana, se limita el conjunto de usuarios mediante el cual se puede quitar una retención de proyecto host de VPC compartida sin el permiso de nivel de organización en el que esta restricción ya se establece en True.

  • Nombre: Restringe la eliminación de la retención del proyecto de VPC compartida
  • ID: constraints/compute.restrictXpnProjectLienRemoval

De forma predeterminada, cualquier usuario con permiso para actualizar retenciones puede quitar una retención de proyecto host de VPC compartida. Para aplicar esta restricción, se debe otorgar permiso a nivel de la organización.

Para obtener instrucciones de muestra sobre cómo usar esta restricción, consulta Configura restricciones booleanas con políticas de la organización.

Restringe las capacidades de TLS con restricciones personalizadas

Para satisfacer los requisitos de cumplimiento y restringir ciertas funciones de seguridad de la capa de transporte (TLS), puedes crear la siguiente restricción de política de la organización y usarla junto con restricciones personalizadas para los recursos de la política de SSL:

  • Nombre: Exigir política de SSL
  • ID: constraints/compute.requireSslPolicy

Si usas la restricción constraints/compute.requireSslPolicy junto con las restricciones personalizadas, puedes hacer lo siguiente:

  • Restringe el uso de versiones anteriores de TLS (como 1.0 y 1.1) y conjuntos de algoritmos de cifrado para mejorar la seguridad y cumplir con los requisitos de cumplimiento.
  • Mejora el rendimiento mediante la reducción de la cantidad de protocolos de enlace necesarios y la mejora de la compatibilidad del balanceador de cargas con los clientes.
  • Aplica la restricción a un nodo de recursos específico y a sus elementos secundarios. Por ejemplo, si rechazas la versión 1.0 de TLS para una organización, también se denegará en todas las carpetas y proyectos (secundarios) que descienden de esa organización.
  • Define un conjunto de proxies HTTPS de destino y proxies SSL de destino que tengan una política de SSL adjunta.

Cuando usas una restricción personalizada para las políticas de SSL, puedes definir tus propias restricciones en los siguientes campos:

  • Perfil de la política de SSL: resource.profile
  • Versión mínima de TLS de la política de SSL: resource.minTlsVersion
  • Características de la política de SSL: resource.customFeatures

Si quieres aplicar una política de SSL para un balanceador de cargas de aplicaciones o un balanceador de cargas de red del proxy, debes adjuntarla al proxy HTTPS o SSL de destino del balanceador de cargas.

Para actualizar las políticas de SSL existentes, consulta Actualiza las políticas de SSL existentes adjuntas a los proxies de destino.

Configura restricciones booleanas con políticas de la organización

Console

Para establecer una política de la organización desde la consola, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. En el campo Filtro, busca la restricción por Nombre o ID.
  3. Haz clic en el nombre de la restricción.
  4. Haz clic en Editar para editar la restricción.
  5. En la página Editar, selecciona Personalizar.
  6. En Aplicación, selecciona una opción de aplicación:
    • Para habilitar la aplicación forzosa de esta restricción, selecciona Habilitado.
    • Para inhabilitar la aplicación forzosa de esta restricción, selecciona Inhabilitar (Off).
  7. Después de realizar cambios, haz clic en Guardar para aplicar la configuración de la restricción.

Si deseas obtener instrucciones detalladas para personalizar las políticas de la organización mediante la consola de Google Cloud, consulta Personaliza las políticas de restricciones booleanas.

gcloud

A fin de habilitar la aplicación de una restricción booleana para una política de la organización, usa el comando gcloud resource-manager org-policies enable-enforce de la siguiente manera.

Para habilitar la restricción de la eliminación de la retención del proyecto de VPC compartida, sigue estos pasos:

gcloud resource-manager org-policies enable-enforce \
    --organization ORGANIZATION_ID \
    constraints/compute.restrictXpnProjectLienRemoval

Para inhabilitar el balanceo de cargas global, sigue estos pasos:

gcloud resource-manager org-policies enable-enforce \
    --organization ORGANIZATION_ID \
    constraints/compute.disableGlobalLoadBalancing

A fin de obtener instrucciones detalladas para trabajar con restricciones booleanas en gcloud, consulta Usa restricciones.

Configura restricciones de listas con políticas de la organización

Console

Para establecer una política de la organización desde la consola, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. En el campo Filtro, busca la restricción por Nombre o ID. Por ejemplo, para restringir los proyectos host de VPC compartida, busca el ID: constraints/compute.restrictSharedVpcHostProjects.
  3. Haz clic en el nombre de la restricción.
  4. Haz clic en Editar para editar la restricción.
  5. Para crear una política personalizada, selecciona Personalizar y especifica la lista de entidades permitidas o la lista de bloqueo de recursos. Si deseas obtener instrucciones más detalladas sobre cómo personalizar las políticas de la organización mediante la consola de Google Cloud, consulta Personaliza las políticas de restricciones de listas.
  6. Después de realizar cambios, haz clic en Guardar para aplicar la configuración de la restricción.

gcloud

En esta sección, se proporcionan algunos ejemplos de configuración para mostrarte cómo crear y configurar un archivo de políticas de la organización con restricción de listas. Para obtener instrucciones más detalladas sobre cómo trabajar con restricciones de listas y políticas de la organización en gcloud, consulta Usa restricciones.

  1. Crea el archivo de políticas. Usa las siguientes muestras de configuración JSON para crear tu propio archivo de políticas según tus requisitos.

    • Restringir los tipos de balanceadores de cargas

      • Permite solo un subconjunto de balanceadores de cargas

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "allowedValues": [
            "INTERNAL_TCP_UDP",
            "INTERNAL_HTTP_HTTPS",
            "EXTERNAL_NETWORK_TCP_UDP",
            "EXTERNAL_TCP_PROXY",
            "EXTERNAL_SSL_PROXY",
            "EXTERNAL_HTTP_HTTPS"
          ]
        }
        }
        
      • Rechaza todos los balanceadores de cargas externos

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "deniedValues": [
            "in:EXTERNAL"
          ]
        }
        }
        
      • Rechaza todos los balanceadores de cargas

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "allValues": "DENY"
        }
        }
        
    • Restringir los tipos de reenvío de protocolos

      • Rechazar todo el reenvío de protocolos

        {
        "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes",
        "listPolicy": {
          "allValues": "DENY"
        }
        }
        
      • Solo permitir el reenvío de protocolo interno

        {
        "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes",
        "listPolicy": {
          "deniedValues": [
            "EXTERNAL"
          ]
        }
        }
        
    • Restringir las configuraciones de VPC compartida

      • Restringir los proyectos host de VPC compartida

        {
        "constraint": "constraints/compute.restrictSharedVpcHostProjects",
        "listPolicy": {
          "allowedValues": [
            "under:folders/FOLDER_ID",
            "under:projects/PROJECT_ID"
          ]
        }
        }
        
      • Restringir las subredes de VPC compartidas

        {
        "constraint": "constraints/compute.restrictSharedVpcSubnetworks",
        "listPolicy": {
          "deniedValues": [
            "under:organizations/ORGANIZATION_ID",
            "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
          ]
        }
        }
        
      • Restringir los servicios de backend de VPC compartida

        {
        "constraint": "constraints/compute.restrictCrossProjectServices",
        "listPolicy": {
          "allowedValues": [
            "under:folders/FOLDER_ID",
            "under:projects/PROJECT_ID",
            "projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME"
          ]
        }
        }
        
  2. Aplica la restricción a un recurso: ya sea una organización, una carpeta o un proyecto.

    Para las organizaciones, ejecuta el siguiente comando:

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --organization=ORGANIZATION_ID
    

    Para las carpetas, ejecuta el siguiente comando:

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --folder=FOLDER_ID
    

    Para los proyectos, ejecuta el siguiente comando:

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

Configura una política de la organización para aplicar una política de SSL a los proxies HTTPS y SSL de destino

Console

Para establecer una política de la organización desde la consola, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. En el campo Filtro, busca la restricción por Nombre o ID.

  3. Haz clic en el nombre de la restricción.

  4. Haz clic en Editar para editar la restricción.

  5. Para crear una política personalizada, selecciona Personalizar y especifica la lista de entidades permitidas o la lista de bloqueo de recursos.

  6. Después de realizar cambios, haz clic en Guardar para aplicar la configuración de la restricción.

gcloud

En esta sección, se proporcionan algunos ejemplos de configuración que muestran cómo crear y configurar un archivo de políticas de la organización con la restricción constraints/compute.requireSslPolicy.

  • Crea un archivo de política para inhabilitar el uso de políticas de SSL.

    {
      "constraint": "constraints/compute.requireSslPolicy",
      "listPolicy": {
        "allValues": "DENY"
      }
    }
    
  • Crea un archivo de política para aplicar una política de SSL a todos los proxies HTTPS y SSL de destino del recurso especificado en la jerarquía de recursos:

    {
      "constraint": "constraints/compute.requireSslPolicy",
      "listPolicy": {
        "allowedValues": [
          "under:folders/FOLDER_ID",
          "under:projects/PROJECT_ID"
        ]
      }
    }
    
  • Aplica la restricción a los proxies HTTPS y SSL de destino: ya sea una organización, una carpeta o un proyecto.

    Para las organizaciones, ejecuta el siguiente comando:

    gcloud resource-manager org-policies set-policy PATH_TO_POLICY_FILE \
        --organization=ORGANIZATION_ID
    

    Para las carpetas, ejecuta el siguiente comando:

    gcloud resource-manager org-policies set-policy PATH_TO_POLICY_FILE \
        --folder=FOLDER_ID
    

    Para los proyectos, ejecuta el siguiente comando:

    gcloud resource-manager org-policies set-policy PATH_TO_POLICY_FILE \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

  • Para obtener la política vigente para verificar el comportamiento predeterminado del recurso (organización, carpeta o proyecto), ejecuta los siguientes comandos:

    Para organizaciones:

    gcloud resource-manager org-policies describe compute.requireSslPolicy \
        --effective \
        --organization=ORGANIZATION_ID
    

    Para carpetas:

    gcloud resource-manager org-policies describe compute.requireSslPolicy \
        --effective \
        --folder=FOLDER_ID
    

    Para los proyectos:

    gcloud resource-manager org-policies describe compute.requireSslPolicy \
        --effective \
        --project=PROJECT_ID
    
  • Para borrar la política del recurso (organización, carpeta o proyecto), ejecuta los siguientes comandos:

    Para organizaciones:

    gcloud resource-manager org-policies delete compute.requireSslPolicy \
        --organization=ORGANIZATION_ID
    

    Para carpetas:

    gcloud resource-manager org-policies delete compute.requireSslPolicy \
        --folder=FOLDER_ID
    

    Para los proyectos:

    gcloud resource-manager org-policies delete compute.requireSslPolicy \
        --project=PROJECT_ID
    

A fin de configurar restricciones personalizadas, consulta Usa restricciones personalizadas para restringir las capacidades de TLS.

¿Qué sigue?