Tester un en-tête de restrictions d'organisation avant de configurer un proxy de sortie

Avant de configurer un proxy de sortie, vous pouvez tester l'en-tête de vos restrictions sur les organisations directement à l'aide d'un outil tel que curl. Ces tests vous permettent de vérifier que les requêtes adressées aux organisationsGoogle Cloud autorisées aboutissent et que les requêtes adressées aux organisations non autorisées sont bloquées.

Tester l'en-tête de restrictions sur les organisations

Pour créer et tester l'en-tête de restrictions sur les organisations, procédez comme suit :

  1. Pour obtenir l'ID d'organisation Google Cloud de l'organisation, utilisez la commande gcloud organizations list :

        gcloud organizations list
    

    Voici un exemple de résultat :

        DISPLAY_NAME: Organization A
        ID: 123456789
        DIRECTORY_CUSTOMER_ID: a1b2c3d4
    
  2. Après avoir obtenu l'ID d'organisation, composez la représentation JSON de la valeur d'en-tête au format suivant :

     {
     "resources": ["organizations/123456789"],
      "options": "strict"
     }
    
  3. Encodez la valeur de l'en-tête de requête en suivant les spécifications de la section 5 de la 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, l'encodage via basenc est le suivant :

     $ OR_HEADER=`cat authorized_orgs.json | basenc --base64url -w0`
     $ echo $OR_HEADER
    ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiXQogIm9wdGlvbnMiOiAic3RyaWN0Igp9Cgo=
    
  4. Pour vérifier si la configuration de l'en-tête autorise l'accès à une ressource au sein d'une organisationGoogle Cloud autorisée, créez une requête curl vers une ressource au sein d'une organisationGoogle Cloud autorisée. Voici un exemple de requête curl :

    # Get auth token
    $ TOKEN=$(gcloud auth print-access-token)
    
    # Make a request that includes the organization restriction header; this call makes a request to the logging API for a project within the same organization listed in the header
    $ curl -H "X-Goog-Allowed-Resources: ${OR_HEADER}" -X POST -d '{"projectIds":
    ["my-project-123"]}' -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" "https://logging.googleapis.com/v2/entries:list"
    # A successful request returns log entries in this project
    
  5. Pour vérifier si la configuration de l'en-tête refuse l'accès à une ressource qui se trouve en dehors de l'organisationGoogle Cloud autorisée, créez une requête curl vers une ressource située en dehors d'une organisationGoogle Cloud autorisée. Voici un exemple de requête curl :

    # Get auth token
    $ TOKEN=$(gcloud auth print-access-token)
    
    # Make a request that includes the organization restriction header; this call makes a request to the logging API for a project not within the same organization listed in the header
    $ curl -H "X-Goog-Allowed-Resources: ${OR_HEADER}" -X POST -d '{"projectIds": ["other-project-123"]}' -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" "https://logging.googleapis.com/v2/entries:list" 
    {
      "error": {
     "code": 403,
        "message": "Access denied by organization restriction. Contact your administrator for additional information.",
        "status": "PERMISSION_DENIED",
        "details": [
          {
            "@type": "type.googleapis.com/google.rpc.ErrorInfo",
            "reason": "ORG_RESTRICTION_VIOLATION",
            "domain": "googleapis.com",
            "metadata": {
              "service": "logging.googleapis.com",
              "consumer": "other-project-123"
            }
          }
        ]
      }
    }
    
    

    Un message d'erreur d'accès refusé indique que la requête d'accès à la ressource est refusée.

Étapes suivantes