Condividi tramite


Connettersi in modo sicuro alle risorse di Azure o clonare repository privati

Quando si accede a risorse come repository o risorse di Azure durante il processo di personalizzazione, è necessario eseguire l'autenticazione in modo sicuro. È possibile fare riferimento ai segreti di Azure Key Vault nei file di personalizzazione per evitare di esporre informazioni riservate ed è possibile usare le entità servizio per l'autenticazione in Azure per proteggere l'accesso alle risorse. Questo articolo illustra come gestire e accedere alle risorse in modo sicuro durante la personalizzazione di Dev Box.

Usare i segreti dell'insieme di credenziali delle chiavi nei file di personalizzazione

Usare i segreti di Azure Key Vault nelle personalizzazioni YAML per clonare repository privati o eseguire attività che richiedono un token di accesso. Ad esempio, in un file di personalizzazione usare un token di accesso personale archiviato in Azure Key Vault per accedere a un repository privato.

Sia le personalizzazioni del team che quelle dell'utente supportano il recupero dei segreti da un insieme di credenziali delle chiavi. Le personalizzazioni del team, che usano i file di definizione dell'immagine, definiscono l'immagine di base per la casella di sviluppo con il image parametro ed elencano le attività eseguite quando viene creata una casella di sviluppo. Le personalizzazioni utente elencano le attività eseguite quando viene creata una casella di sviluppo.

Per usare un segreto, come un token di accesso personale, nei file di personalizzazione, archiviarlo come segreto dell'insieme di credenziali delle chiavi. Negli esempi seguenti viene illustrato come riferirsi a un segreto di Key Vault in entrambi i tipi di personalizzazioni.

Configurare l'accesso all'archivio chiavi per le personalizzazioni

Per configurare i segreti dell'insieme di credenziali delle chiavi da usare nelle personalizzazioni del team o dell'utente, assicurarsi che l'identità gestita del progetto nel Dev Center abbia il ruolo Utente segreti nel proprio insieme di credenziali delle chiavi.

Se il Key Vault è privato, consenti ai servizi Microsoft attendibili di bypassare il firewall perché Dev Center non supporta ancora i tag di servizio.

Lo screenshot seguente mostra l'opzione per consentire ai servizi Microsoft attendibili di ignorare il firewall nelle impostazioni di Azure Key Vault.

Screenshot dell'opzione per consentire ai servizi Microsoft attendibili di ignorare il firewall nelle impostazioni di Azure Key Vault.

Per altre informazioni su come consentire ai servizi Microsoft attendibili di ignorare il firewall, vedere Configurare le impostazioni di rete di Azure Key Vault.

Configurazione aggiuntiva per le personalizzazioni utente

Per configurare i segreti del Key Vault per le personalizzazioni degli utenti, inoltre:

  1. Assicurarsi che l'identità gestita del progetto Dev Center abbia il ruolo Lettore dell'insieme di credenziali delle chiavi e il ruolo Utente dei segreti dell'insieme di credenziali delle chiavi nell'insieme di credenziali delle chiavi.
  2. Concedere il ruolo di Utente dei segreti dell'insieme di credenziali delle chiavi a ogni utente o gruppo che ne ha bisogno durante la personalizzazione della macchina di sviluppo, inclusa l'identità gestita del Dev Center, gli account amministratore e qualsiasi altro utente o gruppo necessario.

Esempio di personalizzazioni del team

Questa sintassi utilizza un segreto di Key Vault (PAT) in un file di definizione dell'immagine. KEY_VAULT_SECRET_URI è l'URI del segreto nell'insieme di credenziali delle chiavi.

$schema: "<SCHEMA_VERSION>"
name: "<IMAGE_DEFINITION_NAME>"
image: "<BASE_IMAGE>"
description: "<DESCRIPTION>"

tasks:
  - name: <TASK_NAME>
    description: <TASK_DESCRIPTION>
    parameters:
      repositoryUrl: <REPOSITORY_URL>
      directory: <DIRECTORY_PATH>
      pat: "{{<KEY_VAULT_SECRET_URI>}}"

In questo esempio viene usata l'attività git-clone :

$schema: "1.0"
name: "example-image-definition"
image: microsoftvisualstudio_visualstudioplustools_vs-2022-ent-general-win11-m365-gen2
description: "Clones a public example Git repository"

tasks:
  - name: git-clone
    description: Clone this repository into C:\workspaces
    parameters:
      repositoryUrl: https://github.com/example-org/example-repo.git
      directory: C:\workspaces
      pat: "{{https://contoso-vault.vault.azure.net/secrets/github-pat}}"

In alternativa, è possibile fare riferimento al segreto in linea con un'attività predefinita, come illustrato nell'esempio seguente:

$schema: "1.0" 
name: "example-image-definition"
image: microsoftvisualstudio_visualstudioplustools_vs-2022-ent-general-win11-m365-gen2
description: "Clones a public example Git repository"

tasks:  
- name: git-clone
    description: Clone this repository into C:\Workspaces 
    parameters: 
    command: MyCommand –MyParam "{{KEY_VAULT_SECRET_URI}}"

Esempio di personalizzazioni utente

Le personalizzazioni utente consentono di ottenere un token di Azure DevOps per clonare repository privati senza specificare esplicitamente un token di accesso personale dall'insieme di credenziali delle chiavi. Il servizio scambia automaticamente il token di Azure per un token Di Azure DevOps in fase di esecuzione.

Questo esempio mostra la sintassi abbreviata ADO ({{ado://...}}). Il servizio scambia il token di Azure per un token di Azure DevOps in fase di esecuzione, quindi non è necessario archiviare un token di accesso personale in Key Vault.

$schema: "1.0"
tasks:
  - name: git-clone
    description: Clone this repository into C:\workspaces
    parameters:
      repositoryUrl: https://dev.azure.com/example-org/MyProject/_git/example-repo
      directory: C:\workspaces
      pat: '{{ado://example-org}}'

L'estensione Visual Studio Code di Dev Box e l'interfaccia della riga di comando di Dev Box non supportano l'idratazione dei segreti nel flusso di lavoro di test del ciclo interno per le personalizzazioni.

Eseguire l'autenticazione alle risorse di Azure con le entità servizio

I principal di servizio consentono un'autenticazione sicura alle risorse di Azure senza dover esporre le credenziali degli utenti. Crea un servizio principale, assegna i ruoli richiesti e utilizzalo per autenticarti in un'attività di personalizzazione. Caricare la password dall'insieme di credenziali delle chiavi in fase di personalizzazione sfruttando la funzionalità dei segreti esistenti.

  1. Creare un'entità servizio in Azure Active Directory (Azure AD) e assegnargli i ruoli necessari per le risorse da usare.

    L'output è un oggetto JSON contenente l'appId dell'entità servizio, displayName, password e tenant, che vengono usati per l'autenticazione e l'autorizzazione negli scenari di Automazione di Azure.

    Esempio: output dell'interfaccia della riga di comando quando si crea un principale del servizio. Archiviare la password restituita nell'insieme di credenziali delle chiavi e concedere il ruolo Utente dei segreti dell'insieme di credenziali delle chiavi all'identità del progetto Dev Center in modo che la personalizzazione possa idratare il segreto in fase di esecuzione.

    $ az ad sp create-for-rbac -n DevBoxCustomizationsTest
    
    {
      "appId": "...",
      "displayName": "DevBoxCustomizationsTest",
      "password": "...",
      "tenant": "..."
    }
    
  2. Archiviare la password restituita in precedenza in un segreto di Key Vault, come illustrato di seguito: https://mykeyvault.vault.azure.net/secrets/password

  3. Nel Key Vault, concedi il ruolo Key Vault Secrets User all'identità del progetto.

È ora possibile eseguire l'autenticazione nelle attività di personalizzazione, attivando la password dell'entità servizio da Key Vault al momento della personalizzazione.

Esempio: Scaricare un file da Archiviazione di Azure

L'esempio seguente illustra come scaricare un file da un account di archiviazione. Il frammento YAML definisce una personalizzazione di Dev Box che esegue due attività principali:

  1. Installa l'interfaccia della riga di comando di Azure usando la gestione pacchetti winget.

  2. Esegue uno script di PowerShell che:

    • Effettua l'accesso ad Azure utilizzando un account di servizio, con la password recuperata in modo sicuro da Azure Key Vault.
    • Scarica un BLOB (file) da un account di archiviazione di Azure usando la sessione autenticata.

    Esempio: la personalizzazione che idrata la password di un'entità servizio dall'insieme di credenziali delle chiavi e la utilizza per autenticare e scaricare un BLOB da Archiviazione di Azure. Archiviare la password dell'entità servizio nell'insieme di credenziali delle chiavi e assicurarsi che l'identità del progetto abbia il ruolo Utente dei segreti dell'insieme di credenziali delle chiavi.

    $schema: "1.0"
    name: "devbox-customization"
    tasks:
      - name: ~/winget
        parameters:
          package: Microsoft.AzureCLI
      - name: ~/powershell
        parameters:
          command: |
            az login --service-principal `
              --username <appId> `
              --password {{https://mykeyvault.vault.azure.net/secrets/password}} `
              --tenant <tenantId>
            az storage blob download `
              --account-name <storage_account_name> `
              --container-name <container_name> `
              --name <blob_name> `
              --file <local_file_path> `
              --auth-mode login
    

Questa configurazione consente di automatizzare l'uso sicuro delle risorse di Azure durante il provisioning di Dev Box senza esporre le credenziali nello script.

Esempio: Scaricare un artefatto da Azure DevOps

Scaricare gli artefatti di compilazione da Azure DevOps (ADO) usando un servizio principale come metodo di autenticazione. Aggiungere l'ID applicazione (appId) dell'entità servizio come utente nell'organizzazione di Azure DevOps, quindi assegnare l'entità al gruppo Lettori. Questo passaggio fornisce le autorizzazioni necessarie per l'uso degli artefatti di build.

Dopo aver configurato i seguenti passaggi, utilizzare le credenziali del principale del servizio nelle attività di personalizzazione per autenticare e scaricare in modo sicuro gli artefatti da Azure DevOps.

Aggiungere un principal del servizio a un'organizzazione Azure DevOps

Per aggiungere un service principal alla tua organizzazione di Azure DevOps:

  1. Accedere all'organizzazione di Azure DevOps e aprire Le impostazioni organizzazione.

  2. Nel menu selezionare Utenti.

  3. Nella pagina Utenti selezionare Aggiungi utenti.

  4. Nella finestra di dialogo Aggiungi nuovi utenti immettere le informazioni seguenti:

    Screenshot della finestra di dialogo Aggiungi nuovi utenti in Azure DevOps, che mostra i campi per la posta elettronica dell'utente, il livello di accesso, il progetto e l'assegnazione di gruppi.

    • Utenti: inserisci l'ID dell'applicazione (appId) dell'entità del servizio nel campo dell'email dell'utente.
    • Livello di accesso: selezionare Basic.
    • Aggiungi al progetto: selezionare il progetto in cui si vuole aggiungere il principale servizio.
    • Gruppi di Azure DevOps: assegnare l'entità servizio al gruppo Lettori.
  5. Completare il processo per concedere le autorizzazioni necessarie.

Per informazioni dettagliate su come aggiungere utenti alle organizzazioni DevOps, vedere Aggiungere utenti dell'organizzazione e gestire l'accesso.