Testare un'intestazione per le restrizioni dell'organizzazione prima di configurare un proxy in uscita

Prima di configurare un proxy in uscita, puoi testare l'intestazione delle restrizioni dell'organizzazione direttamente utilizzando uno strumento come curl. Questi test ti aiutano a verificare che le richieste alle organizzazioniGoogle Cloud autorizzate vadano a buon fine e che le richieste alle organizzazioni non autorizzate vengano bloccate.

Per creare e testare l'intestazione restrizioni dell'organizzazione#39;organizzazione, segui questi passaggi:

  1. Per ottenere l'ID organizzazione Google Cloud , utilizza il comando gcloud organizations list:

        gcloud organizations list
    

    Di seguito è riportato l'output di esempio:

        DISPLAY_NAME: Organization A
        ID: 123456789
        DIRECTORY_CUSTOMER_ID: a1b2c3d4
    
  2. Dopo aver ottenuto l'ID organizzazione, componi la rappresentazione JSON per il valore dell'intestazione nel seguente formato:

     {
     "resources": ["organizations/123456789"],
      "options": "strict"
     }
    
  3. Codifica il valore per l'intestazione della richiesta seguendo le specifiche della sezione 5 del documento RFC 4648.

    Ad esempio, se la rappresentazione JSON del valore dell'intestazione è archiviata nel file authorized_orgs.json, la codifica tramite basenc è la seguente:

     $ OR_HEADER=`cat authorized_orgs.json | basenc --base64url -w0`
     $ echo $OR_HEADER
    ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiXQogIm9wdGlvbnMiOiAic3RyaWN0Igp9Cgo=
    
  4. Per verificare se la configurazione dell'intestazione consente l'accesso a una risorsa all'interno di un'organizzazioneGoogle Cloud autorizzata, crea una richiesta curl a una risorsa all'interno di un'organizzazioneGoogle Cloud autorizzata. Ecco un esempio di richiesta 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. Per verificare se la configurazione dell'intestazione nega l'accesso a una risorsa che si trova al di fuori dell'organizzazioneGoogle Cloud autorizzata, crea una richiesta curl a una risorsa al di fuori di un'organizzazioneGoogle Cloud autorizzata. Ecco un esempio di richiesta 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 messaggio di errore di accesso negato indica che la richiesta alla risorsa è stata rifiutata.

Passaggi successivi