Controllare le build in base ai criteri dell'organizzazione

Cloud Build consente di definire una policy dell'organizzazione (constraints/cloudbuild.allowedIntegrations) per controllare quali servizi esterni possono richiamare i trigger di build. Ad esempio, se il trigger è in ascolto delle modifiche a un repository GitHub e GitHub è negato nella policy dell'organizzazione, il trigger non verrà eseguito. Puoi specificare un numero qualsiasi di valori consentiti o negati per la tua organizzazione o il tuo progetto.

Questa pagina spiega come configurare la policy dell'organizzazione (constraints/cloudbuild.allowedIntegrations) per le integrazioni utilizzando Google Cloud la console e lo strumento a riga di comando gcloud.

Prima di iniziare

  • Abilita le API Cloud Build e Policy dell'organizzazione.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilita le API

  • Per utilizzare gli esempi di riga di comando in questa guida, installa e configura Google Cloud SDK.

  • Per impostare, modificare o eliminare una policy dell'organizzazione, devi disporre del ruolo Amministratore policy dell'organizzazione (roles/orgpolicy.policyAdmin). Per scoprire come aggiungere il ruolo al tuo account, consulta Aggiungere un amministratore delle policy dell'organizzazione.

Configurare la policy dell'organizzazione per le integrazioni consentite

Questa sezione spiega come configurare la policy dell'organizzazione (constraints/cloudbuild.allowedIntegrations) per definire le build per le integrazioni consentite.

Console

  1. Apri la pagina Policy dell'organizzazione nella Google Cloud console.

    Apri la pagina Policy dell'organizzazione

  2. Fai clic sulla riga contenente la policy Integrazioni consentite (Cloud Build).

    Viene visualizzata la pagina Dettagli policy.

  3. Per modificare la policy, fai clic su Modifica.

    Viene visualizzata la pagina Modifica policy.

  4. Nella sezione Si applica a, seleziona Personalizza per impostare la definizione della policy.

  5. Nella sezione Applicazione policy, seleziona Sostituisci per definire le tue regole per la policy. In caso contrario, seleziona Unisci con il padre per assicurarti che le regole della risorsa padre vengano applicate alle tue impostazioni. Per saperne di più, consulta Informazioni sulla valutazione della gerarchia.

  6. Nella sezione Regole, fai clic su Aggiungi regola per aggiungere una nuova regola alla policy.

  7. In Valori policy, seleziona Consenti tutto per consentire le build da tutti i servizi, Nega tutto per negare le build da tutti i servizi o Personalizzato per consentire o negare le build da servizi specifici.

    Se selezioni Personalizzato come valore, completa i seguenti passaggi:

    1. Nella sezione Tipo di policy, seleziona Consenti o Nega.

    2. Nella sezione Valori personalizzati, inserisci l'URL dell'host dell'istanza o del repository da cui vuoi consentire o negare le build. Ad esempio, per consentire o negare le build da GitHub, inserisci l'URL come github.com o www.github.com.

      Puoi anche inserire più URL separati da uno spazio. Ad esempio, github.com ghe.staging-test.com.

      A seconda dell'evento, l'URL dell'host specificato è uno dei seguenti:

      • Evento RepoSync: l'host è source.developers.google.com.
      • Evento dell'app GitHub: l'host viene derivato dal campo repository.html_url nel payload JSON, che è sempre github.com.
      • Evento GitHub Enterprise: l'host viene derivato dal campo repository.html_url nel payload JSON. Ad esempio, ghe.staging-test.com.
      • Evento Pub/Sub: l'host viene derivato dall'origine specificata nel trigger. Se non è specificata alcuna origine nel trigger, non viene eseguito alcun controllo della policy dell'organizzazione.
      • Evento webhook: l'host viene derivato dall'origine specificata nel trigger. Se non è specificata alcuna origine nel trigger, viene eseguito il controllo della policy dell'organizzazione.
  8. Per salvare la regola, fai clic su Fine.

  9. Per aggiungere un'altra regola, fai clic su Aggiungi regola. In caso contrario, per salvare la policy, fai clic su Salva.

gcloud

  1. Apri una finestra del terminale.

  2. Se vuoi consentire o negare le build da tutti i servizi, crea un file YAML con i seguenti contenuti:

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - ALLOW_OR_DENY: true
    

    Dove:

    • PROJECT_NUMBER è il numero del progetto.
    • INHERIT è true se vuoi che le regole della policy vengano ereditate dalla risorsa padre. In caso contrario, false.
    • ALLOW_OR_DENY è allowAll se vuoi consentire le build da tutti gli URL host. In caso contrario, denyAll.
    • HOST_URL è l'URL dell'host. Ad esempio, github.com. Puoi anche specificare URL aggiuntivi nelle righe seguenti.

    Se vuoi consentire o negare le build da servizi selezionati, crea un file YAML con i seguenti contenuti:

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - values:
            ALLOW_OR_DENY:
              HOST_URL
              ...
    

    Dove:

    • PROJECT_NUMBER è il numero del progetto.
    • INHERIT è true se vuoi che le regole della policy vengano ereditate dalla risorsa padre. In caso contrario, false.
    • ALLOW_OR_DENY è allowedValues se vuoi specificare gli URL host da cui consentire le build. In caso contrario, deniedValues.
    • HOST_URL è l'URL dell'host. Ad esempio, github.com. Puoi anche specificare URL aggiuntivi nelle righe seguenti.
  3. Imposta la policy dell'organizzazione eseguendo il comando seguente, dove FILE_NAME è il nome del file YAML:

     gcloud org-policies set-policy FILE_NAME
    
  4. Per verificare che la policy sia stata impostata, esegui il comando seguente, dove PROJECT_ID è l'ID del progetto:

     gcloud org-policies describe cloudbuild.allowedIntegrations --effective --project PROJECT_ID
    

Testare la policy dell'organizzazione per le integrazioni consentite

Questa sezione spiega come testare la policy dell'organizzazione (constraints/cloudbuild.allowedIntegrations) utilizzando i trigger di build.

  1. Se non l'hai ancora fatto, crea un trigger di build.

  2. Esegui il push di una modifica all'origine.

  3. Se la policy è configurata per consentire le build dall'origine, potrai visualizzare le esecuzioni delle build dal trigger nella pagina Cronologia build. In caso contrario, la build non verrà eseguita. Per visualizzare la cronologia delle build limitate dalla definizione della policy, consulta la pagina Esplora log per il motivo del payload JSON e il motivo del rifiuto.

Passaggi successivi