Testare di carico gli endpoint protetti con Test di carico di Azure

Questo articolo illustra come usare Test di carico di Azure con gli endpoint dell'applicazione che richiedono l'autenticazione. A seconda dell'implementazione dell'applicazione, è possibile usare un token di accesso, le credenziali utente o i certificati client per l'autenticazione delle richieste.

Test di carico di Azure supporta le opzioni seguenti per gli endpoint autenticati:

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
  • Una risorsa di test di carico di Azure. Per creare una risorsa di test di carico, vedere Creare ed eseguire un test di carico.

Eseguire l'autenticazione con un segreto condiviso o credenziali

In questo scenario, l'endpoint dell'applicazione richiede l'uso di un segreto condiviso, ad esempio un token di accesso, una chiave API o credenziali utente per l'autenticazione.

Il diagramma seguente illustra come usare segreti o credenziali condivisi per l'autenticazione con un endpoint applicazione nel test di carico.

Diagram that shows how to use shared-secret authentication with Azure Load Testing.

Il flusso per l'autenticazione con un segreto condiviso o credenziali utente è:

  1. Archiviare in modo sicuro il segreto o le credenziali, ad esempio in Azure Key Vault o nell'archivio segreti CI/CD.
  2. Fare riferimento al segreto nella configurazione del test di carico.
  3. Nello script JMeter recuperare il valore del segreto con la GetSecret funzione e passare il valore del segreto alla richiesta dell'applicazione.

Archiviare in modo sicuro il segreto

Per evitare l'archiviazione e la divulgazione delle informazioni di sicurezza nello script JMeter, è possibile archiviare in modo sicuro i segreti in Azure Key Vault o nell'archivio segreti CI/CD.

È possibile aggiungere le informazioni di sicurezza in un archivio segreti in uno dei due modi seguenti:

  • Aggiungere le informazioni sui segreti in Azure Key Vault. Seguire la procedura descritta in Parametrizzare i test di carico con segreti per archiviare un segreto e autorizzare la risorsa di test di carico a leggerne il valore.

  • Aggiungere le informazioni segrete come segreto in CI/CD (segreti di GitHub Actions o variabili segrete di Azure Pipelines).

Fare riferimento al segreto nella configurazione del test di carico

Prima di poter recuperare il valore del segreto nello script di test di JMeter, è necessario fare riferimento al segreto nella configurazione del test di carico.

Nella portale di Azure è possibile fare riferimento ai segreti archiviati in Azure Key Vault. Per aggiungere e configurare un segreto di test di carico nel portale di Azure:

  1. Passare alla risorsa test di carico nella portale di Azure e quindi selezionare Test per visualizzare l'elenco dei test di carico.

  2. Selezionare il test dall'elenco e quindi selezionare Modifica per modificare la configurazione del test di carico.

    Screenshot that shows how to edit a load test in the Azure portal.

  3. Nella scheda Parametri immettere i dettagli del segreto.

    Campo valore
    Nome Nome del segreto. Specificare questo nome alla GetSecret funzione per recuperare il valore del segreto nello script JMeter.
    valore Corrisponde all'identificatore del segreto di Azure Key Vault.

    Screenshot that shows how to add secrets to a load test in the Azure portal.

  4. Selezionare Applica per salvare le modifiche alla configurazione del test di carico.

Recuperare e usare il valore del segreto nello script JMeter

È ora possibile recuperare il valore del segreto nello script JMeter usando la GetSecret funzione personalizzata e passarlo alla richiesta dell'applicazione. Ad esempio, usare un'intestazione Authorization HTTP per passare un token OAuth a una richiesta.

  1. Creare una variabile definita dall'utente che recupera il valore del segreto con la GetSecret funzione personalizzata:

    La GetSecret funzione astrae il recupero del valore da Azure Key Vault o dall'archivio segreti CI/CD.

    Screenshot that shows how to add a user-defined variable that uses the GetSecret function in JMeter.

  2. Aggiornare il componente sampler JMeter per passare il segreto nella richiesta.

    Ad esempio, per fornire un token di accesso OAuth2, configurare l'intestazione Authorization HTTP aggiungendo un :HTTP Header Manager

    Screenshot that shows how to add an authorization header to a request in JMeter.

Eseguire l'autenticazione con i certificati client

In questo scenario, l'endpoint dell'applicazione richiede l'uso di un certificato client per l'autenticazione. Test di carico di Azure supporta il tipo di certificati PKCS12 (Public Key Certificate Standard 12). È possibile usare un solo certificato client in un test di carico.

Il diagramma seguente illustra come usare un certificato client per l'autenticazione con un endpoint applicazione nel test di carico.

Diagram that shows how to use client-certificate authentication with Azure Load Testing.

Il flusso per l'autenticazione con i certificati client è:

  1. Archiviare in modo sicuro il certificato client in Azure Key Vault.
  2. Fare riferimento al certificato nella configurazione del test di carico.
  3. Test di carico di Azure passa in modo trasparente il certificato a tutte le richieste dell'applicazione in JMeter.

Archiviare il certificato client in Azure Key Vault

Per evitare l'archiviazione e la divulgazione, il certificato client insieme allo script JMeter archivia il certificato in Azure Key Vault.

Seguire la procedura descritta in Importare un certificato per archiviare il certificato in Azure Key Vault.

Importante

Test di carico di Azure supporta solo i certificati PKCS12. Caricare il certificato client in formato file PFX.

Concedere l'accesso all'insieme di credenziali delle chiavi di Azure

Quando si archivino segreti o certificati di test di carico in Azure Key Vault, la risorsa di test di carico usa un'identità gestita per l'accesso all'insieme di credenziali delle chiavi. Dopo aver configurato l'identità di gestione, è necessario concedere all'identità gestita delle risorse di test di carico le autorizzazioni per leggere questi valori dall'insieme di credenziali delle chiavi.

Per concedere alle risorse di test di carico di Azure le autorizzazioni per leggere segreti o certificati dall'insieme di credenziali delle chiavi di Azure:

  1. Nella portale di Azure passare alla risorsa dell'insieme di credenziali delle chiavi di Azure.

    Se non si ha un insieme di credenziali delle chiavi, seguire le istruzioni riportate in Avvio rapido di Azure Key Vault per crearne uno.

  2. Nel riquadro sinistro selezionare Criteri di accesso e quindi + Crea.

  3. Nella scheda Autorizzazioni, in Autorizzazioni segrete, selezionare Recupera e quindi selezionare Avanti.

    Nota

    Test di carico di Azure recupera i certificati come segreto per assicurarsi che la chiave privata per il certificato sia disponibile.

  4. Nella scheda Entità cercare e selezionare l'identità gestita per la risorsa di test di carico e quindi selezionare Avanti.

    Se si usa un'identità gestita assegnata dal sistema, il nome dell'identità gestita corrisponde a quello della risorsa di test di carico di Azure.

  5. Selezionare di nuovo Avanti.

    Quando viene eseguito il test, l'identità gestita associata alla risorsa di test di carico può ora leggere i segreti o i certificati per il test di carico dall'insieme di credenziali delle chiavi.

Fare riferimento al certificato nella configurazione del test di carico

Per passare il certificato client alle richieste dell'applicazione, è necessario fare riferimento al certificato nella configurazione del test di carico.

Per aggiungere un certificato client al test di carico nel portale di Azure:

  1. Passare alla risorsa di test di carico nella portale di Azure. Se non si dispone ancora di un test di carico, creare un nuovo test di carico usando uno script JMeter.

  2. Nel riquadro sinistro selezionare Test per visualizzare l'elenco dei test di carico.

  3. Selezionare il test dall'elenco e quindi selezionare Modifica per modificare la configurazione del test di carico.

    Screenshot that shows how to edit a load test in the Azure portal.

  4. Nella scheda Parametri immettere i dettagli del certificato.

    Campo valore
    Nome Nome del certificato.
    valore Corrisponde all'identificatore del segreto di Azure Key Vault del certificato.

    Screenshot that shows how to add a certificate to a load test in the Azure portal.

  5. Selezionare Applica per salvare le modifiche alla configurazione del test di carico.

Quando si esegue il test di carico, Test di carico di Azure recupera il certificato client da Azure Key Vault e lo inserisce automaticamente in ogni richiesta Web JMeter.