Esercitazione: Implementare Criteri di Azure come codice con GitHub

Un flusso di lavoro di Criteri di Azure come codice consente di gestire le definizioni e le assegnazioni dei criteri come codice, controllare il ciclo di vita dell'aggiornamento di tali definizioni e automatizzare la convalida dei risultati di conformità. In questa esercitazione si apprenderà come usare le funzionalità di Criteri di Azure con GitHub per creare un processo del ciclo di vita. Queste attività includono:

  • Esportare le definizioni e le assegnazioni dei criteri in GitHub
  • Eseguire il push degli oggetti criteri aggiornati in GitHub ad Azure
  • Attivare un'analisi di conformità dal GitHub Actions

Se si vuole assegnare un criterio per identificare lo stato di conformità corrente delle risorse esistenti, gli articoli di avvio rapido spiegano come fare.

Prerequisiti

Esportare oggetti Criteri di Azure dal portale di Azure

Nota

Le autorizzazioni di proprietario sono necessarie nell'ambito degli oggetti criteri da esportare in GitHub.

Per esportare una definizione di criteri dal portale di Azure, seguire questa procedura:

  1. Avviare il servizio Criteri di Azure nel portale di Azure facendo clic su Tutti i servizi e quindi cercando e selezionando Criteri.

  2. Selezionare Definizioni a sinistra nella pagina Criteri di Azure.

  3. Usare il pulsante Esporta definizioni oppure selezionare i puntini di sospensione nella riga di una definizione di criteri, quindi selezionare Esporta definizione.

  4. Selezionare il pulsante Accedi con GitHub. Se non è ancora stata eseguita l'autenticazione con GitHub per autorizzare Criteri di Azure a esportare la risorsa, esaminare l'accesso alle GitHub Actions necessarie nella nuova finestra visualizzata e selezionare Autorizza AzureGitHubActions per continuare con il processo di esportazione. Al termine, la nuova finestra si chiude automaticamente.

  5. Nella scheda Informazioni di base impostare le opzioni seguenti, quindi selezionare la scheda Criteri o il pulsante Avanti: Criteri nella parte inferiore della pagina.

    • Filtro repository: impostare su Repository personali per visualizzare solo i repository di cui si è proprietari o Tutti i repository per visualizzare tutto ciò a cui è stato concesso l'accesso al GitHub Actions.
    • Repository: impostare sul repository in cui si vogliono esportare le risorse di Criteri di Azure.
    • Ramo: impostare il ramo nel repository. L'uso di un ramo diverso da quello predefinito è un modo efficace per convalidare gli aggiornamenti prima di eseguire ulteriori unioni nel codice sorgente.
    • Directory: cartella di livello radice in cui esportare le risorse di Criteri di Azure. Le sottocartelle di questa directory vengono create in base alle risorse esportate.
  6. Nella scheda Criteri impostare l'ambito per la ricerca selezionando i puntini di sospensione e scegliendo una combinazione di gruppi di gestione, sottoscrizioni o gruppi di risorse.

  7. Usare il pulsante Aggiungi definizione/i dei criteri per cercare nell'ambito gli oggetti da esportare. Nella finestra che si aprirà a lato selezionare ogni oggetto da esportare. Filtrare la selezione in base alla casella di ricerca o al tipo. Dopo aver selezionato tutti gli oggetti da esportare, usare il pulsante Aggiungi in fondo alla pagina.

  8. Per ogni oggetto selezionato selezionare le opzioni di esportazione desiderate, ad esempio Solo definizione o Definizione e assegnazione/i, per una definizione di criteri. Selezionare quindi la scheda Rivedi ed esporta o il pulsante Avanti: Rivedi ed esporta nella parte inferiore della pagina.

    Nota

    Se si sceglie l'opzione Definizione e assegnazione/i, vengono esportate solo le assegnazioni dei criteri all'interno dell'ambito impostato dal filtro al momento dell'aggiunta della definizione di criteri.

  9. Nella scheda Rivedi ed esporta controllare che i dettagli corrispondano e quindi usare il pulsante Esporta nella parte inferiore della pagina.

  10. Controllare il repository GitHub, il ramo e la cartella di livello radice per verificare che le risorse selezionate siano state esportate nel controllo del codice sorgente.

Le risorse di Criteri di Azure vengono esportate nella struttura seguente all'interno del repository GitHub selezionato e della cartella di livello radice:

|
|- <root level folder>/  ________________ # Root level folder set by Directory property
|  |- policies/  ________________________ # Subfolder for policy objects
|     |- <displayName>_<name>____________ # Subfolder based on policy displayName and name properties
|        |- policy.json _________________ # Policy definition
|        |- assign.<displayName>_<name>__ # Each assignment (if selected) based on displayName and name properties
|

Eseguire il push degli oggetti criteri aggiornati in GitHub ad Azure

  1. Al momento dell'esportazione di oggetti criteri, viene creato anche un file di flusso di lavoro GitHub denominato .github/workflows/manage-azure-policy-<randomLetters>.yml per iniziare.

    Nota

    Il file di flusso di lavoro GitHub viene creato ogni volta che si usa il comando di esportazione. Ogni istanza del file è specifica delle opzioni durante l'azione di esportazione.

  2. Questo file di flusso di lavoro usa l'azione Gestisci Criteri di Azure per eseguire di nuovo in Criteri di Azure il push delle modifiche apportate agli oggetti criteri esportati nel repository GitHub. Per impostazione predefinita, l'azione considera e sincronizza solo i file diversi da quelli esistenti in Azure. Si può anche usare il parametro assignments nell'azione per sincronizzare solo le modifiche apportate a file di assegnazione specifici. Questo parametro può essere usato per applicare le assegnazioni di criteri solo per un ambiente specifico. Per altre informazioni, vedere il file Leggimi sull'azione di gestione di Criteri di Azure.

  3. Per impostazione predefinita, il flusso di lavoro deve essere attivato manualmente. A questo scopo, usare Actions in GitHub, selezionare il flusso di lavoro manage-azure-policy-<randomLetters>, selezionare Run workflow (Esegui flusso di lavoro) e quindi di nuovo Run workflow.

    Screenshot dell'interfaccia Web di GitHub con la scheda Actions, il flusso di lavoro e il pulsante Run workflow evidenziati.

    Nota

    Il file di flusso di lavoro deve trovarsi nel ramo predefinito per poter essere rilevato ed eseguito manualmente.

  4. Il flusso di lavoro sincronizza le modifiche apportate agli oggetti criteri con Azure e restituisce lo stato nei log.

    Screenshot del flusso di lavoro in Actions e dettagli registrati nei log.

  5. Il flusso di lavoro aggiunge anche dettagli in properties.metadata degli oggetti di Criteri di Azure per consentire di tenerne traccia.

    Screenshot della definizione di Criteri di Azure in portale di Azure aggiornata con i metadati specifici del GitHub Actions.

Attivare le analisi di conformità usando GitHub Actions

Usando l'azione di analisi della conformità di Criteri di Azure è possibile attivare un'analisi di valutazione della conformità su richiesta dal flusso di lavoro di GitHub su una o più risorse, gruppi di risorse o sottoscrizioni e modificare il percorso del flusso di lavoro in base allo stato di conformità di tali risorse. Si può anche configurare il flusso di lavoro per l'esecuzione a un'ora pianificata per ottenere lo stato di conformità più recente in un momento appropriato. Facoltativamente, questa GitHub Actions può anche generare un report sullo stato di conformità delle risorse analizzate per ulteriori analisi o per l'archiviazione.

L'esempio seguente esegue un'analisi della conformità per una sottoscrizione.


on:
  schedule:
    - cron:  '0 8 * * *'  # runs every morning 8am
jobs:
  assess-policy-compliance:
    runs-on: ubuntu-latest
    steps:
    - name: Login to Azure
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}

    - name: Check for resource compliance
      uses: azure/policy-compliance-scan@v0
      with:
        scopes: |
          /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Verifica

In questa esercitazione sono state eseguite le attività seguenti:

  • Sono state esportate le definizioni e le assegnazioni dei criteri in GitHub
  • È stato eseguito il push degli oggetti criteri aggiornati in GitHub ad Azure
  • È stata attivata un'analisi di conformità dal GitHub Actions

Passaggi successivi

Per altre informazioni sulle strutture delle definizioni di criteri, vedere: