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 externe à stratégie directe
    • INTERNAL_TCP_UDP pour l'équilibreur de charge réseau interne à stratégie directe

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
  • * ID : 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.

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 Google Cloud Console, 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 Google Cloud Console, 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 :

Étapes suivantes