Contraintes applicables aux règles d'administration pour Cloud Load Balancing

Cette page fournit des informations supplémentaires sur les contraintes liées aux règles d'administration qui s'appliquent à Cloud Load Balancing. Utilisez des contraintes de règle d'administration pour appliquer des paramètres à l'ensemble d'un projet, d'un dossier ou d'une organisation.

Les règles d'administration ne s'appliquent qu'aux nouvelles ressources. Les contraintes ne s'appliquent pas rétroactivement. Si vous disposez de ressources d'équilibrage de charge préexistantes qui sont non conformes à une nouvelle règle d'administration, vous devez traiter ces non-respects manuellement.

Pour obtenir la liste complète des contraintes disponibles, consultez la page Contraintes liées aux règles d'administration.

Limiter les types d'équilibreurs de charge

Utilisez une règle d'administration pour limiter les types Cloud Load Balancing pouvant être créés dans votre organisation. Définissez la contrainte de règle d'administration suivante :

  • Nom : Restreindre la création d'équilibreurs de charge en fonction de leurs types
  • Identifiant : constraints/compute.restrictLoadBalancerCreationForTypes

Lorsque vous définissez la contrainte compute.restrictLoadBalancerCreationForTypes, vous spécifiez une liste d'autorisation ou une liste de blocage pour les types Cloud Load Balancing. La liste des valeurs autorisées ou refusées ne peut inclure que les valeurs comprises dans la liste suivante :

  • Équilibreurs de charge d'application
    • GLOBAL_EXTERNAL_MANAGED_HTTP_HTTPS pour l'équilibreur de charge d'application externe global
    • EXTERNAL_HTTP_HTTPS pour l'équilibreur de charge d'application classique
    • EXTERNAL_MANAGED_HTTP_HTTPS pour l'équilibreur de charge d'application externe régional
    • GLOBAL_INTERNAL_MANAGED_HTTP_HTTPS pour l'équilibreur de charge d'application interne interrégional
    • INTERNAL_HTTP_HTTPS pour l'équilibreur de charge d'application interne régional
  • Équilibreurs de charge réseau proxy
    • GLOBAL_EXTERNAL_MANAGED_TCP_PROXY pour l'équilibreur de charge réseau proxy externe global avec un proxy TCP
    • GLOBAL_EXTERNAL_MANAGED_SSL_PROXY pour l'équilibreur de charge réseau proxy externe global avec un proxy SSL
    • EXTERNAL_TCP_PROXY pour l'équilibreur de charge réseau proxy classique avec un proxy TCP
    • EXTERNAL_SSL_PROXY pour l'équilibreur de charge réseau proxy classique avec un proxy SSL
    • REGIONAL_EXTERNAL_MANAGED_TCP_PROXY pour l'équilibreur de charge réseau proxy externe régional avec un proxy TCP
    • REGIONAL_INTERNAL_MANAGED_TCP_PROXY pour l'équilibreur de charge réseau proxy interne régional avec un proxy TCP
    • GLOBAL_INTERNAL_MANAGED_TCP_PROXY pour l'équilibreur de charge réseau proxy interrégional avec un proxy TCP
  • Équilibreurs de charge réseau passthrough
    • EXTERNAL_NETWORK_TCP_UDP pour l'équilibreur de charge réseau passthrough externe
    • INTERNAL_TCP_UDP pour l'équilibreur de charge réseau passthrough interne

Pour inclure tous les types d'équilibreurs de charge internes ou externes, utilisez le préfixe in: suivi de INTERNAL ou EXTERNAL. Par exemple, en autorisant in:INTERNAL, tous les équilibreurs de charge internes de la liste précédente sont autorisés.

Pour obtenir des exemples d'instructions sur l'utilisation de cette contrainte, consultez la page Configurer des contraintes de liste avec des règles d'administration.

Une fois la règle définie, elle est appliquée lorsque vous ajoutez les règles de transfert Google Cloud correspondantes. La contrainte n'est pas appliquée aux configurations Cloud Load Balancing existantes.

Si vous tentez de créer un équilibreur de charge d'un type qui ne respecte pas la contrainte, la tentative échoue et un message d'erreur est généré. Le message d'erreur s'affiche au format suivant :

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 vous définissez plusieurs contraintes restrictLoadBalancerCreationForTypes pour différents niveaux de ressources, elles sont appliquées de manière hiérarchique. Pour cette raison, il est recommandé de définir le champ inheritFromParent sur true, ce qui garantit que les règles des niveaux supérieurs sont également prises en compte.

Messages d'erreur GKE

Si vous utilisez des objets Service et Ingress de Google Kubernetes Engine (GKE), utilisez cette règle d'administration pour restreindre la création d'un équilibreur de charge dans un message d'erreur semblable à ce qui suit :

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

Vous pouvez afficher les messages d'erreur GKE en exécutant les commandes suivantes :

kubectl get events -w
kubectl describe RESOURCE_KIND NAME

Remplacez les éléments suivants :

  • RESOURCE_KIND : genre de l'équilibreur de charge, ingress ou service
  • NAME : nom de l'équilibreur de charge

Désactiver l'équilibrage de charge mondial

Cette contrainte booléenne désactive la création de produits d'équilibrage de charge mondiaux. Lorsqu'elle est appliquée, seuls les produits d'équilibrage de charge régionaux sans dépendances mondiales peuvent être créés.

  • Nom : Désactiver l'équilibrage de charge global
  • Identifiant : constraints/compute.disableGlobalLoadBalancing

Par défaut, les utilisateurs sont autorisés à créer des produits d'équilibrage de charge mondiaux.

Pour obtenir des exemples d'instructions sur l'utilisation de cette contrainte, consultez la page Configurer des contraintes booléennes avec des règles d'administration.

Limiter les types de transfert de protocole

Utilisez une règle d'administration pour limiter les types de transfert de protocole pouvant être créés dans votre organisation. Définissez la contrainte de règle d'administration suivante :

  • Nom : Restreindre le transfert de protocole en fonction du type d'adresse IP
  • Identifiant : constraints/compute.restrictProtocolForwardingCreationForTypes

Lorsque vous définissez la contrainte compute.restrictProtocolForwardingCreationForTypes, vous spécifiez une liste d'autorisation ou une liste de blocage des types de transfert de protocole. La liste des valeurs autorisées ou refusées ne peut inclure que les valeurs comprises dans la liste suivante :

  • INTERNAL
  • EXTERNAL

Pour obtenir des exemples d'instructions sur l'utilisation de cette contrainte, consultez la page Configurer des contraintes de liste avec des règles d'administration.

Une fois la règle définie, elle est appliquée lorsque vous ajoutez les règles de transfert Google Cloud correspondantes. La contrainte n'est pas appliquée aux configurations de transfert de protocole existantes.

Si vous tentez de créer un déploiement de transfert de protocole d'un type qui ne respecte pas la contrainte, la tentative échoue et un message d'erreur est généré. Le message d'erreur s'affiche au format suivant :

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 vous définissez plusieurs contraintes restrictProtocolForwardingCreationForTypes à différents niveaux de ressources et que vous définissez le champ inheritFromParent sur true, les contraintes sont appliquées de manière hiérarchique.

Appliquer des restrictions liées au VPC partagé

Utilisez les règles d'administration suivantes pour limiter la façon dont les utilisateurs sont autorisés à configurer des déploiements de VPC partagé.

Limiter les projets hôtes VPC partagés

Cette contrainte de liste vous permet de limiter les projets hôtes VPC partagé auxquels une ressource peut s'associer.

  • Nom : limiter les projets hôtes VPC partagés
  • Identifiant : constraints/compute.restrictSharedVpcHostProjects

Par défaut, un projet peut être associé à n'importe quel projet hôte de la même organisation, ce qui en fait un projet de service. Lorsque vous définissez la contrainte compute.restrictSharedVpcHostProjects, vous spécifiez une liste d'autorisation ou de blocage de projets hôtes de différentes manières :

  • Spécifiez un projet au format suivant :
    • projects/PROJECT_ID
  • Spécifiez un projet, un dossier ou une organisation. La contrainte s'applique à tous les projets sous la ressource spécifiée dans la hiérarchie des ressources. Utilisez le format suivant :
      .
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID

Pour obtenir des exemples d'instructions sur l'utilisation de cette contrainte, consultez la page Configurer des contraintes de liste avec des règles d'administration.

Limiter les sous-réseaux VPC partagés

Cette contrainte de liste définit l'ensemble des sous-réseaux VPC partagés que les ressources éligibles peuvent utiliser. Cette contrainte ne s'applique pas aux ressources d'un même projet.

  • Nom : limiter les sous-réseaux VPC partagés
  • Identifiant : constraints/compute.restrictSharedVpcSubnetworks

Par défaut, les ressources éligibles peuvent utiliser n'importe quel sous-réseau VPC partagé. Lorsque vous définissez la contrainte compute.restrictSharedVpcSubnetworks, vous spécifiez une liste restreinte de sous-réseaux comme suit :

  • Spécifiez un sous-réseau au format suivant :
    • projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.
  • Spécifiez un projet, un dossier ou une organisation. La contrainte s'applique à tous les sous-réseaux sous la ressource spécifiée dans la hiérarchie des ressources. Utilisez le format suivant :
      .
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID
    • under:projects/PROJECT_ID

Pour obtenir des exemples d'instructions sur l'utilisation de cette contrainte, consultez la page Configurer des contraintes de liste avec des règles d'administration.

Limiter les services de backend multiprojets

Vous pouvez utiliser cette contrainte pour limiter les services de backend auxquels un mappage d'URL peut faire référence. Cette contrainte ne s'applique pas aux services de backend dans le même projet que le mappage d'URL.

  • Nom : limiter les services de backend inter-projets
  • Identifiant : constraints/compute.restrictCrossProjectServices

Par défaut, les mappages d'URL de tous les projets hôtes ou de service peuvent référencer des services de backend compatibles d'autres projets de service ou du projet hôte du même déploiement de VPC partagé, à condition que l'utilisateur effectuant l'action dispose de l'autorisation compute.backendServices.use. Lorsque vous définissez la contrainte restrictCrossProjectServices, vous spécifiez une liste d'autorisation ou de blocage des services de backend des manières suivantes :

  • Spécifiez les services de backend au format suivant :
    • projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
  • Spécifiez un projet, un dossier ou une organisation. La contrainte s'applique à tous les services de backend de la ressource spécifiée dans la hiérarchie des ressources. Utilisez le format suivant :
      .
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID
    • under:projects/PROJECT_ID

Une fois que vous avez configuré une règle d'administration avec cette contrainte, celle-ci prend effet la prochaine fois que vous utiliserez la commande gcloud compute url-maps pour associer un service de backend à un mappage d'URL. La contrainte n'affecte pas de manière rétroactive les références existantes aux services de backend inter-projets.

Pour obtenir des exemples d'instructions sur l'utilisation de cette contrainte, consultez la page Configurer des contraintes de liste avec des règles d'administration.

Restreindre la suppression des privilèges du projet VPC partagé

Lorsqu'elle est définie sur True, cette contrainte booléenne restreint le nombre d'utilisateurs pouvant supprimer un privilège lié à un projet hôte VPC partagé sans autorisation au niveau de l'organisation.

  • Nom : Restreindre la suppression des privilèges du projet VPC partagé
  • Identifiant : constraints/compute.restrictXpnProjectLienRemoval

Par défaut, tout utilisateur disposant de l'autorisation de mettre à jour des privilèges peut supprimer un privilège lié à un projet hôte VPC partagé. L'application de cette contrainte nécessite que l'autorisation soit accordée au niveau de l'organisation.

Pour obtenir des exemples d'instructions sur l'utilisation de cette contrainte, consultez la page Configurer des contraintes booléennes avec des règles d'administration.

Restreindre les fonctionnalités TLS à l'aide de contraintes personnalisées

Pour répondre à vos exigences de conformité et restreindre certaines fonctionnalités TLS (Transport Layer Security), vous pouvez créer la contrainte de règle d'administration suivante et l'utiliser avec des contraintes personnalisées pour les ressources des règles SSL:

  • Nom: Exiger une règle SSL
  • ID : constraints/compute.requireSslPolicy

En utilisant la contrainte constraints/compute.requireSslPolicy avec des contraintes personnalisées, vous pouvez effectuer les opérations suivantes:

  • Améliorez la sécurité et répondez aux exigences de conformité en limitant l'utilisation des versions antérieures de TLS (telles que 1.0 et 1.1) et des suites de chiffrement.
  • Améliorez les performances en réduisant le nombre de handshakes requis et en améliorant la compatibilité de l'équilibreur de charge avec les clients.
  • Appliquez une restriction à un nœud de ressource spécifique et à ses enfants. Par exemple, si vous refusez la version 1.0 de TLS pour une organisation, elle est également refusée pour tous les dossiers et projets (enfants) descendant de cette organisation.
  • Définissez un ensemble de proxys HTTPS cibles et de proxys SSL cibles auxquels une règle SSL est associée.

En utilisant une contrainte personnalisée pour les règles SSL, vous pouvez définir vos propres restrictions sur les champs suivants:

  • Profil de règle SSL: resource.profile
  • Version TLS minimale de la règle SSL: resource.minTlsVersion
  • Fonctionnalités des règles SSL: resource.customFeatures

Pour appliquer une règle SSL à un équilibreur de charge d'application ou à un équilibreur de charge réseau proxy, vous devez l'associer au proxy HTTPS ou SSL cible de l'équilibreur de charge.

Pour mettre à jour des règles SSL existantes, consultez la section Mettre à jour des règles SSL existantes associées à des proxys cibles.

Configurer des contraintes booléennes avec des règles d'administration

Console

Pour définir une règle d'administration à partir de la console, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page Règles d'administration

  2. Dans le champ Filtre, recherchez la contrainte par Nom ou par ID.
  3. Cliquez sur le nom de la contrainte.
  4. Cliquez sur Modifier pour modifier la contrainte.
  5. Sur la page Modifier, sélectionnez Personnaliser.
  6. Sous Application, sélectionnez une option d'application :
    • Pour activer l'application de cette contrainte, sélectionnez Activer.
    • Pour désactiver l'application de cette contrainte, sélectionnez Désactiver.
  7. Une fois les modifications effectuées, cliquez sur Enregistrer pour appliquer les paramètres de contrainte.

Pour obtenir des instructions détaillées sur la personnalisation des règles d'administration à l'aide de la console Google Cloud, consultez la page Personnaliser les règles pour les contraintes booléennes.

gcloud

Pour activer l'application d'une contrainte booléenne pour une règle d'administration, utilisez la commande gcloud resource-manager org-policies enable-enforce comme suit.

Pour activer la restriction de la suppression des privilèges du projet VPC partagé :

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

Pour désactiver l'équilibrage de charge global, procédez comme suit :

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

Pour obtenir des instructions détaillées sur l'utilisation des contraintes booléennes dans gcloud, consultez la page Utiliser des contraintes.

Configurer des contraintes de liste avec des règles d'administration

Console

Pour définir une règle d'administration à partir de la console, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page Règles d'administration

  2. Dans le champ Filtre, recherchez la contrainte par Nom ou par ID. Par exemple, pour limiter les projets hôtes de VPC partagé, recherchez l'ID : constraints/compute.restrictSharedVpcHostProjects.
  3. Cliquez sur le nom de la contrainte.
  4. Cliquez sur Modifier pour modifier la contrainte.
  5. Pour créer une règle personnalisée, sélectionnez Personnaliser et spécifiez la liste d'autorisation ou la liste de blocage des ressources. Pour obtenir des instructions plus détaillées sur la personnalisation des règles d'administration à l'aide de la console Google Cloud, consultez la page Personnaliser les règles pour les contraintes de liste.
  6. Une fois les modifications effectuées, cliquez sur Enregistrer pour appliquer les paramètres de contrainte.

gcloud

Cette section fournit quelques exemples de configuration pour vous montrer comment créer et définir un fichier de règle d'administration avec une contrainte de liste. Pour obtenir des instructions plus détaillées sur l'utilisation des contraintes de listes et des règles d'administration dans gcloud, consultez la page Utiliser des contraintes.

  1. Créez le fichier de règles. Utilisez les exemples de configuration JSON suivants pour créer votre propre fichier de règles en fonction de vos besoins.

    • Limiter les types d'équilibreurs de charge

      • Autoriser uniquement un sous-ensemble d'équilibreurs de charge

        {
        "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"
          ]
        }
        }
        
      • Refuser tous les équilibreurs de charge externes

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "deniedValues": [
            "in:EXTERNAL"
          ]
        }
        }
        
      • Refuser tous les équilibreurs de charge

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "allValues": "DENY"
        }
        }
        
    • Limiter les types de transfert de protocole

      • Refuser tous les transferts de protocole

        {
        "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes",
        "listPolicy": {
          "allValues": "DENY"
        }
        }
        
      • Autoriser uniquement le transfert de protocole interne

        {
        "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes",
        "listPolicy": {
          "deniedValues": [
            "EXTERNAL"
          ]
        }
        }
        
    • Limiter les configurations de VPC partagé

      • Limiter les projets hôtes VPC partagés

        {
        "constraint": "constraints/compute.restrictSharedVpcHostProjects",
        "listPolicy": {
          "allowedValues": [
            "under:folders/FOLDER_ID",
            "under:projects/PROJECT_ID"
          ]
        }
        }
        
      • Limiter les sous-réseaux VPC partagés

        {
        "constraint": "constraints/compute.restrictSharedVpcSubnetworks",
        "listPolicy": {
          "deniedValues": [
            "under:organizations/ORGANIZATION_ID",
            "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
          ]
        }
        }
        
      • Limiter les services de backend de VPC partagé

        {
        "constraint": "constraints/compute.restrictCrossProjectServices",
        "listPolicy": {
          "allowedValues": [
            "under:folders/FOLDER_ID",
            "under:projects/PROJECT_ID",
            "projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME"
          ]
        }
        }
        
  2. Appliquez la contrainte à une ressource : une organisation, un dossier ou un projet.

    Pour les organisations, exécutez la commande suivante :

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

    Pour les dossiers, exécutez la commande suivante :

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

    Pour les projets, exécutez la commande suivante :

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

    Remplacez les éléments suivants :

Configurer une règle d'administration pour appliquer une règle SSL afin de cibler les proxys HTTPS et les proxys SSL cibles

Console

Pour définir une règle d'administration à partir de la console, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page Règles d'administration

  2. Dans le champ Filtre, recherchez la contrainte par Nom ou par ID.

  3. Cliquez sur le nom de la contrainte.

  4. Cliquez sur Modifier pour modifier la contrainte.

  5. Pour créer une règle personnalisée, sélectionnez Personnaliser et spécifiez la liste d'autorisation ou la liste de blocage des ressources.

  6. Une fois les modifications effectuées, cliquez sur Enregistrer pour appliquer les paramètres de contrainte.

gcloud

Cette section fournit quelques exemples de configuration montrant comment créer et définir un fichier de règle d'administration avec la contrainte constraints/compute.requireSslPolicy.

  • Créez un fichier de règles pour interdire l'utilisation de règles SSL.

    {
      "constraint": "constraints/compute.requireSslPolicy",
      "listPolicy": {
        "allValues": "DENY"
      }
    }
    
  • Créez un fichier de règles pour appliquer une règle SSL à tous les proxys HTTPS et SSL cibles sous la ressource spécifiée dans la hiérarchie des ressources:

    {
      "constraint": "constraints/compute.requireSslPolicy",
      "listPolicy": {
        "allowedValues": [
          "under:folders/FOLDER_ID",
          "under:projects/PROJECT_ID"
        ]
      }
    }
    
  • Appliquez la contrainte aux proxys HTTPS et SSL cibles: une organisation, un dossier ou un projet.

    Pour les organisations, exécutez la commande suivante :

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

    Pour les dossiers, exécutez la commande suivante :

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

    Pour les projets, exécutez la commande suivante :

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

    Remplacez les éléments suivants :

  • Pour que la règle en vigueur vérifie le comportement par défaut de la ressource (organisation, dossier ou projet), exécutez les commandes suivantes:

    Pour les entreprises:

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

    Pour les dossiers:

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

    Pour les projets:

    gcloud resource-manager org-policies describe compute.requireSslPolicy \
        --effective \
        --project=PROJECT_ID
    
  • Pour supprimer la règle de la ressource (organisation, dossier ou projet), exécutez les commandes suivantes:

    Pour les entreprises:

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

    Pour les dossiers:

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

    Pour les projets:

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

Pour configurer des contraintes personnalisées, consultez la page Utiliser des contraintes personnalisées pour restreindre les fonctionnalités TLS.

Étapes suivantes