Configurer des restrictions sur les organisations

Cette page décrit les conditions préalables à la configuration du proxy de sortie, explique comment obtenir l'ID de l'organisation, ajouter l'en-tête "restrictions sur les organisations" et configurer le proxy avec la liste des URL cibles.

Les administrateurs Google Cloud qui administrent Google Cloud et les administrateurs de proxy de sortie qui configurent le proxy de sortie doivent collaborer pour configurer les restrictions sur les organisations. Pour en savoir plus sur les solutions partenaires validées avec des restrictions sur les organisations, consultez la section Solutions partenaires validées.

Avant de commencer

Si vous êtes un administrateur du proxy de sortie, avant de configurer le proxy de sortie pour ajouter l'en-tête de restrictions d'organisation, vous devez remplir les conditions préalables suivantes:

  • Si les rôles d'administrateur Google Cloud et d'administrateur de proxy de sortie sont différents dans votre organisation, assurez-vous que l'administrateur Google Cloud collabore avec l'administrateur du proxy de sortie pour configurer le proxy de sortie.

  • Configurez des règles de pare-feu pour votre organisation ou configurez les appareils gérés pour vous assurer que le trafic sortant de tous les utilisateurs de votre organisation passe par le proxy de sortie.

  • Assurez-vous que le proxy de sortie de votre organisation dispose des fonctionnalités suivantes:

    • Insérer des en-têtes. Insère un en-tête HTTP personnalisé dans les requêtes sortantes traversant le proxy de sortie.
    • Inspection TLS. Si le trafic vers le proxy de sortie est chiffré, le proxy de sortie doit déchiffrer les paquets, insérer l'en-tête et rechiffrer le paquet avant de l'envoyer à la cible.
    • Filtrer et insérer des en-têtes Facultatif. Acceptez un ou plusieurs des filtres suivants, puis n'ajoutez l'en-tête que pour les requêtes qui correspondent à la condition de filtre:

      • URL cibles : liste des URL cibles pouvant être mises en correspondance avec le proxy de sortie.
      • ID des appareils : Liste des ID d'appareils auxquels le proxy de sortie peut correspondre. Les ID d'appareil doivent être transmis au proxy de sortie.
      • ID utilisateur : Une liste d'ID utilisateur auxquels le proxy de sortie peut correspondre. Les ID utilisateur doivent être propagés vers le proxy de sortie.

Obtenir l'ID de l'organisation

En tant qu'administrateur Google Cloud, vous devez obtenir l'ID de l'organisation Google Cloud pour qu'il puisse être ajouté à l'en-tête des restrictions sur les organisations.

Pour trouver l'ID de ressource de votre organisation, exécutez la commande suivante:

   gcloud organizations list

Cette commande répertorie toutes les ressources d'organisation auxquelles vous appartenez, ainsi que les ID de ressource d'organisation correspondants.

Après avoir obtenu l'ID de l'organisation, vous pouvez ajouter l'en-tête des restrictions sur les organisations ou contacter l'administrateur du proxy de sortie pour ajouter l'en-tête.

Ajouter l'en-tête des restrictions sur les organisations

En tant qu'administrateur proxy de sortie, procédez comme suit pour ajouter l'en-tête des restrictions sur les organisations aux requêtes sortantes:

  • Créez l'en-tête.
  • Encodez l'en-tête.
  • Configurez le proxy de sortie.

Créer l'en-tête

Créez la représentation JSON de l'en-tête au format suivant : X-Goog-Allowed-Resources: HEADER_VALUE

HEADER_VALUE contient une liste d'ID d'organisation Google Cloud autorisés séparés par une virgule. La valeur doit ensuite être encodée selon l'encodage base64 adapté au Web.

HEADER_VALUE présente la structure JSON suivante:

  {
  "resources": [string,..],
  "options": string
  }
  • resources : liste de chaînes. Chaque chaîne de cette liste doit faire référence à un ID d'organisation Google Cloud. Les ID d'organisation de cette liste sont considérés comme des organisations autorisées lors de l'évaluation.
  • options : chaîne contenant l'une des valeurs suivantes :
    • "strict" : applique l'en-tête des restrictions sur les organisations pour tous les types de requêtes envoyées aux services Google Cloud compatibles.
    • "cloudStorageReadAllowed" : autorise les requêtes de lecture à Cloud Storage, mais applique un en-tête de restrictions sur les organisations pour tous les types de requêtes adressées aux services Google Cloud compatibles. Cette option permet d'accéder aux opérations de lecture Cloud Storage suivantes :
      • storage.objects.get
      • storage.objects.list
      • storage.objects.getIamPolicy
      • storage.buckets.get
      • storage.buckets.list
      • storage.buckets.getIamPolicy

Pour illustrer cette option, prenons l'exemple d'Alex comme administrateur de l'organisation fictive et de Lee, un employé de cette organisation. Prenons l'exemple d'un site Web, tel qu'altostrat.com, qui stocke du contenu statique dans des buckets Cloud Storage publics et ne se trouve pas dans l'exemple d'organisation. Si Alex utilise l'option strict pour limiter l'accès de Lee à l'organisation exemple uniquement, Lee n'a pas accès au contenu statique d'altostrat.com, qui existe dans des buckets Cloud Storage publics appartenant à altostrat.com. Ce comportement affecte la capacité de Lee à naviguer efficacement sur le site Web, et le même comportement se produit pour tout site Web qui utilise un service Cloud Storage public pour stocker du contenu statique. Pour permettre à Lee d'afficher le contenu statique sur altostrat.com et de limiter tous les autres accès Google Cloud à l'organisation fictive uniquement, Alex utilise l'option cloudStorageReadAllowed.

Voici un exemple d'en-tête de restrictions d'organisation valide:

  {
  "resources": ["organizations/1234", "organizations/3456"],
  "options": "strict"
  }

Encoder l'en-tête

Encodez les ID d'organisation au format base64 Web sécurisé. L'encodage doit respecter les spécifications de la section 5 de la norme RFC 4648.

Par exemple, si la représentation JSON de la valeur d'en-tête est stockée dans le fichier authorized_orgs.json, exécutez la commande basenc suivante pour encoder le fichier:

     $ cat authorized_orgs.json | basenc --base64url -w0
ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiLCAib3JnYW5pemF0aW9ucy8xMDExMTIxMzE0Il0sCiAib3B0aW9ucyI6ICJzdHJpY3QiCn0K

Voici un exemple d'en-tête après l'encodage de l'ID de l'organisation:

// Encoded representation
X-Goog-Allowed-Resources: ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiLCAib3JnYW5pemF0aW9ucy8xMDExMTIxMzE0Il0sCiAib3B0aW9ucyI6ICJzdHJpY3QiCn0K

// Plain-text representation (As HTTP disallows some characters, encode the organization ID)
// Plain-text representation is included here only for readability
X-Goog-Allowed-Resources: {"resources": ["organizations/1234", "organizations/3456"], "options": "strict"}

Configurer le proxy de sortie

Pour insérer l'en-tête aux requêtes provenant des appareils gérés, configurez le proxy de sortie.

Assurez-vous que si un utilisateur Google Cloud de votre organisation fournit explicitement un en-tête HTTP, le proxy de sortie remplace les valeurs fournies par l'utilisateur par celles fournies par l'administrateur Google Cloud.

Pour éviter d'ajouter cet en-tête à des cibles extérieures à Google Cloud, configurez le proxy de sortie pour qu'il ajoute l'en-tête de restrictions sur les organisations aux requêtes ciblant uniquement les cibles suivantes:

  • *.google.com
  • *.googleapis.com
  • *.gcr.io
  • *.pkg.dev
  • *.cloudfunctions.net
  • *.run.app
  • *.tunnel.cloudproxy.app
  • *.datafusion.googleusercontent.com

Pour en savoir plus sur les messages d'erreur dus à des cas de non-respect des restrictions sur les organisations, consultez la section Messages d'erreur.

Étapes suivantes