Testa un'intestazione delle restrizioni dell'organizzazione prima di configurare un proxy in uscita

Questa pagina descrive come gli amministratori di Google Cloud possono testare le restrizioni dell'organizzazione senza dover configurare un proxy in uscita.

Per creare e testare l'intestazione delle limitazioni dell'organizzazione:

  1. Per ottenere l'ID organizzazione Google Cloud dell'organizzazione, 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 l'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 per il valore dell'intestazione viene archiviata authorized_orgs.json, la seguente è la codifica tramite basenc:

     $ 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'organizzazione Google Cloud autorizzata, crea una richiesta curl a una risorsa all'interno di un'organizzazione Google 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 esterna all'organizzazione Google Cloud autorizzata, crea una richiesta curl a una risorsa esterna a un'organizzazione Google 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