Geheimen en omgevingsvariabelen gebruiken in Azure Load Testing

In dit artikel leert u hoe u geheimen en omgevingen als parameters doorgeeft aan een belastingstest in Azure Load Testing. U kunt parameters gebruiken om het gedrag van een belastingstest te wijzigen zonder het Apache JMeter-script te hoeven bewerken. Als u bijvoorbeeld een webtoepassing wilt testen, geeft u de eindpunt-URL op als parameter voor het hergebruik van uw testscript in meerdere omgevingen. U kunt ook parameters gebruiken om te voorkomen dat u gevoelige informatie moet coderen in het JMeter-testscript.

De Azure Load Testing-service ondersteunt twee typen parameters:

  • Geheimen: Bevatten gevoelige informatie en worden veilig doorgegeven aan de load test-engine. Geheimen bieden bijvoorbeeld referenties voor de webservice in plaats van ze hard te coderen in het testscript. Zie Belastingstests configureren met geheimen voor meer informatie.

  • Omgevingsvariabelen: bevatten niet-gevoelige informatie en zijn beschikbaar als omgevingsvariabelen in de engine voor belastingtests. Omgevingsvariabelen maken de URL van het toepassingseindpunt bijvoorbeeld configureerbaar. Zie Belastingstests configureren met omgevingsvariabelen voor meer informatie.

U kunt parameters opgeven in de configuratie van de belastingtest wanneer u een nieuwe test maakt of een bestaande test bijwerkt. Als u een belastingstest uitvoert in uw CI/CD-werkstroom, definieert u parameters in het configuratiebestand voor de belastingtest of in de CI/CD-werkstroomdefinitie.

Vereisten

  • Een Azure-account met een actief abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

  • Een Azure Load Testing-resource. Als u een Azure Load Testing-resource wilt maken, raadpleegt u de quickstart : Een belastingstest maken en uitvoeren.

Belastingstests configureren met geheimen

In deze sectie leert u hoe u geheimen doorgeeft aan uw belastingtestscript in Azure Load Testing. U kunt bijvoorbeeld een geheim gebruiken om de API-sleutel door te geven aan een webservice-eindpunt dat u laadt. In plaats van de API-sleutel op te slaan in de configuratie of hardcodering in het script, kunt u deze opslaan in een geheim archief om de toegang tot het geheim strikt te beheren.

Met Azure Load Testing kunt u geheimen opslaan in Azure Key Vault. Als u uw belastingstest uitvoert in een CI/CD-pijplijn, kunt u ook het geheime archief gebruiken dat is gekoppeld aan uw CI/CD-technologie, zoals Azure Pipelines of GitHub Actions.

Als u geheimen wilt gebruiken met Azure Load Testing, voert u de volgende stappen uit:

  1. Sla de geheime waarde op in het geheime archief (Azure Key Vault of het CI/CD-geheimarchief).
  2. Geef een verwijzing naar het geheim door in het Apache JMeter-testscript.
  3. Gebruik de geheime waarde in het Apache JMeter-testscript met behulp van de GetSecret aangepaste functie.

Belangrijk

U kunt de GetSecret aangepaste functie alleen gebruiken wanneer u uw JMeter-testscript uitvoert met Azure Load Testing. Als u uw testscript lokaal uitvoert, moet u het testscript bijwerken en geheime waarden op een andere manier lezen.

Azure Key Vault gebruiken om belastingtestgeheimen op te slaan

U kunt Azure Key Vault gebruiken om geheime waarden door te geven aan uw testscript in Azure Load Testing. U voegt een verwijzing naar het geheim toe in de configuratie van Azure Load Testing. Azure Load Testing gebruikt vervolgens deze verwijzing om de geheime waarde op te halen in het Apache JMeter-script.

U moet ook Azure Load Testing toegang verlenen tot uw Azure-sleutelkluis om de geheime waarde op te halen.

Notitie

Als u een belastingstest uitvoert als onderdeel van uw CI/CD-proces, kunt u ook het gerelateerde geheime archief gebruiken. Ga verder met het CI/CD-geheimarchief.

Een geheim maken in Azure Key Vault

  1. Voeg de geheime waarde toe aan uw sleutelkluis als u dit nog niet hebt gedaan.

    Belangrijk

    Als u de toegang tot uw Azure-sleutelkluis beperkt door een firewall of virtueel netwerk, volgt u deze stappen om toegang te verlenen tot vertrouwde Azure-services.

  2. Haal de sleutelkluisgeheim-id voor uw geheim op. U gebruikt deze geheime id om uw belastingtest te configureren.

    Screenshot that shows the details of a secret in an Azure key vault.

    De geheime id is de volledige URI van het geheim in de Azure-sleutelkluis. U kunt eventueel ook een versienummer opnemen. Bijvoorbeeld https://myvault.vault.azure.net/secrets/mysecret/ of https://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678.

Het geheim toevoegen aan uw belastingstest

  1. Verwijs naar het geheim in de configuratie van de belastingtest.

    U definieert een parameter voor het belastingstestgeheim voor elk geheim waarnaar u verwijst in het Apache JMeter-script. De parameternaam moet overeenkomen met de geheime naam die u gebruikt in het Apache JMeter-testscript. De parameterwaarde is de sleutelkluisbeveiligings-id.

    U kunt op een van de volgende manieren geheime parameters opgeven:

    • Selecteer uw belastingstest in Azure Portal, selecteer Configureren, selecteer het tabblad Parameters en voer vervolgens de parametergegevens in.

      Screenshot that shows where to add secret details to a load test in the Azure portal.

    • Als u een CI/CD-werkstroom configureert en Azure Key Vault gebruikt, kunt u een geheim opgeven in het YAML-configuratiebestand met behulp van de secrets eigenschap. Zie de YAML-verwijzing testconfiguratie voor meer informatie over de syntaxis.

  2. Geef de identiteit op die Azure Load Testing gebruikt voor toegang tot uw geheimen in Azure Key Vault.

    De identiteit kan de door het systeem toegewezen identiteit zijn van de resource voor belastingtests of een van de door de gebruiker toegewezen identiteiten. Zorg ervoor dat u dezelfde identiteit gebruikt die u eerder toegang hebt verleend.

    U kunt de referentie-id van de sleutelkluis opgeven door een van de volgende handelingen uit te voeren:

    • Selecteer uw belastingstest in Azure Portal, selecteer Configureren, selecteer het tabblad Parameters en configureer vervolgens de Key Vault-referentie-id.

      Screenshot that shows how to select key vault reference identity.

    • Als u een CI/CD-werkstroom configureert en Azure Key Vault gebruikt, kunt u de referentie-identiteit opgeven in het YAML-configuratiebestand met behulp van de keyVaultReferenceIdentity eigenschap. Zie de YAML-verwijzing testconfiguratie voor meer informatie over de syntaxis.

Toegang verlenen tot uw Azure-sleutelkluis

Wanneer u belastingtestgeheimen of -certificaten opslaat in Azure Key Vault, gebruikt uw resource voor belastingstests een beheerde identiteit voor toegang tot de sleutelkluis. Nadat u de beheerde identiteit hebt geconfigureerd, moet u de beheerde identiteit van uw load testing-resourcemachtigingen verlenen om deze waarden uit de sleutelkluis te lezen.

Resourcemachtigingen voor het testen van Azure-belasting verlenen om geheimen of certificaten uit uw Azure-sleutelkluis te lezen:

  1. Ga in Azure Portal naar uw Azure Key Vault-resource.

    Als u geen sleutelkluis hebt, volgt u de instructies in de quickstart van Azure Key Vault om er een te maken.

  2. Selecteer in het linkerdeelvenster Toegangsbeleid en selecteer vervolgens + Maken.

  3. Selecteer Op het tabblad Machtigingen onder Geheime machtigingen de optie Ophalen en selecteer vervolgens Volgende.

    Notitie

    Azure Load Testing haalt certificaten op als geheim om ervoor te zorgen dat de persoonlijke sleutel voor het certificaat beschikbaar is.

  4. Zoek en selecteer op het tabblad Principal de beheerde identiteit voor de resource voor belastingtests en selecteer vervolgens Volgende.

    Als u een door het systeem toegewezen beheerde identiteit gebruikt, komt de naam van de beheerde identiteit overeen met die van uw Azure-resource voor belastingstests.

  5. Selecteer Volgende opnieuw.

    Wanneer uw test wordt uitgevoerd, kan de beheerde identiteit die is gekoppeld aan uw load testing-resource, nu de geheimen of certificaten voor uw belastingstest lezen vanuit uw sleutelkluis.

Nu u een geheim hebt toegevoegd in Azure Key Vault, een geheim hebt geconfigureerd voor uw belastingstest, kunt u nu overstappen op Geheimen gebruiken in Apache JMeter.

Het CI/CD-geheimarchief gebruiken om belastingtestgeheimen op te slaan

Als u Azure Load Testing gebruikt in uw CI/CD-werkstroom, kunt u ook het bijbehorende geheime archief gebruiken. U kunt bijvoorbeeld gitHub-opslagplaatsgeheimen of geheime variabelen gebruiken in Azure Pipelines.

Notitie

Als u al een sleutelkluis gebruikt, kunt u deze ook gebruiken om de geheimen van de belastingtest op te slaan. Ga verder met Azure Key Vault.

Als u geheimen in het CI/CD-geheimarchief wilt gebruiken en deze wilt doorgeven aan uw belastingstest in CI/CD:

  1. Voeg de geheime waarde toe aan het CI/CD-geheimarchief, als deze nog niet bestaat.

    In Azure Pipelines kunt u de pijplijn bewerken en een variabele toevoegen.

    Screenshot that shows how to add a variable to Azure Pipelines.

    In GitHub kunt u geheimen van gitHub-opslagplaatsen gebruiken.

    Screenshot that shows how to add a GitHub repository secret.

    Notitie

    Zorg ervoor dat u de werkelijke geheime waarde gebruikt en niet de geheime id van de sleutelkluis als de waarde.

  2. Geef het geheim door als invoerparameter aan de taak/actie Belasting testen in de CI/CD-werkstroom.

    In het volgende YAML-fragment ziet u hoe u het geheim doorgeeft aan de GitHub-actie Laden testen:

    - name: 'Azure Load Testing'
      uses: azure/load-testing@v1
      with:
        loadtestConfigFile: 'SampleApp.yaml'
        loadtestResource: 'MyTest'
        resourceGroup: 'loadtests-rg'
        secrets: |
        [
            {
            "name": "appToken",
            "value": "${{ secrets.MY_SECRET }}"
            }
        ]
    

    In het volgende YAML-fragment ziet u hoe u het geheim doorgeeft aan de Azure Pipelines-taak:

    - task: AzureLoadTest@1
      inputs:
        azureSubscription: 'MyAzureLoadTestingRG'
        loadTestConfigFile: 'SampleApp.yaml'
        loadTestResource: 'MyTest'
        resourceGroup: 'loadtests-rg'
        secrets: |
          [
              {
              "name": "appToken",
              "value": "$(mySecret)"
              }
          ]
    

    Belangrijk

    De naam van de geheime invoerparameter moet overeenkomen met de naam die wordt gebruikt in het Apache JMeter-script.

U hebt nu een geheim opgegeven in het CI/CD-geheimarchief en een verwijzing naar Azure Load Testing doorgegeven. U kunt nu het geheim gebruiken in het Apache JMeter-script.

Geheimen gebruiken in Apache JMeter

Vervolgens werkt u het Apache JMeter-script bij om het geheim te gebruiken dat u eerder hebt opgegeven.

U maakt eerst een door de gebruiker gedefinieerde variabele waarmee de geheime waarde wordt opgehaald. Vervolgens kunt u deze variabele in uw test gebruiken (bijvoorbeeld om een API-token door te geven in een HTTP-aanvraagheader).

  1. Maak een door de gebruiker gedefinieerde variabele in uw JMX-bestand en wijs de geheime waarde eraan toe met behulp van de GetSecret aangepaste functie.

    De GetSecret(<my-secret-name>) functie gebruikt de geheime naam als argument. U gebruikt dezelfde naam wanneer u de belastingstest in een latere stap configureert.

    U kunt de door de gebruiker gedefinieerde variabele maken met behulp van de Apache JMeter IDE, zoals wordt weergegeven in de volgende afbeelding:

    Screenshot that shows how to add user-defined variables to your Apache JMeter script.

    U kunt het JMX-bestand ook rechtstreeks bewerken, zoals wordt weergegeven in dit voorbeeldcodefragment:

    <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
      <collectionProp name="Arguments.arguments">
        <elementProp name="appToken" elementType="Argument">
          <stringProp name="Argument.name">udv_appToken</stringProp>
          <stringProp name="Argument.value">${__GetSecret(appToken)}</stringProp>
          <stringProp name="Argument.desc">Value for x-secret header </stringProp>
          <stringProp name="Argument.metadata">=</stringProp>
        </elementProp>
      </collectionProp>
    </Arguments>
    
  2. Verwijs naar de door de gebruiker gedefinieerde variabele in het testscript.

    U kunt de ${} syntaxis gebruiken om te verwijzen naar de variabele in het script. In het volgende voorbeeld gebruikt u de udv_appToken variabele om een HTTP-header in te stellen.

      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">api-key</stringProp>
            <stringProp name="Header.value">${udv_appToken}</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
    

Belastingstests configureren met omgevingsvariabelen

In deze sectie gebruikt u omgevingsvariabelen om parameters door te geven aan uw belastingstest.

  1. Werk het Apache JMeter-script bij om de omgevingsvariabele te gebruiken (bijvoorbeeld om de hostnaam van het toepassingseindpunt te configureren).

  2. Configureer de belastingstest en geef de omgevingsvariabele door aan het testscript.

Omgevingsvariabelen gebruiken in Apache JMeter

In deze sectie werkt u het Apache JMeter-script bij om omgevingsvariabelen te gebruiken om het scriptgedrag te beheren.

U definieert eerst een door de gebruiker gedefinieerde variabele die de omgevingsvariabele leest en vervolgens kunt u deze variabele gebruiken tijdens de testuitvoering (bijvoorbeeld om het HTTP-domein bij te werken).

  1. Maak een door de gebruiker gedefinieerde variabele in uw JMX-bestand en wijs de waarde van de omgevingsvariabele eraan toe met behulp van de System.getenv functie.

    De System.getenv("<my-variable-name>") functie gebruikt de naam van de omgevingsvariabele als argument. U gebruikt dezelfde naam wanneer u de belastingtest configureert.

    U kunt een door de gebruiker gedefinieerde variabele maken met behulp van de Apache JMeter IDE, zoals wordt weergegeven in de volgende afbeelding:

    Screenshot that shows how to add user-defined variables for environment variables to your JMeter script.

    U kunt het JMX-bestand ook rechtstreeks bewerken, zoals wordt weergegeven in dit voorbeeldcodefragment:

    <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
      <collectionProp name="Arguments.arguments">
        <elementProp name="appToken" elementType="Argument">
          <stringProp name="Argument.name">udv_webapp</stringProp>
          <stringProp name="Argument.value">${__BeanShell( System.getenv("webapp") )}</stringProp>
          <stringProp name="Argument.desc">Web app URL</stringProp>
          <stringProp name="Argument.metadata">=</stringProp>
        </elementProp>
      </collectionProp>
    </Arguments>
    
  2. Verwijs naar de door de gebruiker gedefinieerde variabele in het testscript.

    U kunt de ${} syntaxis gebruiken om te verwijzen naar de variabele in het script. In het volgende voorbeeld gebruikt u de udv_webapp variabele om de URL van het toepassingseindpunt te configureren.

    <stringProp name="HTTPSampler.domain">${udv_webapp}</stringProp>
    

Omgevingsvariabelen configureren in Azure Load Testing

Als u omgevingsvariabelen wilt doorgeven aan het Apache JMeter-script, kunt u de belastingstest configureren in Azure Portal, in het YAML-testconfiguratiebestand of rechtstreeks in de CI/CD-werkstroom.

Belangrijk

Wanneer u de omgevingsvariabele voor de belastingtest definieert, moet de naam overeenkomen met de naam van de variabele die u in het Apache JMeter-script hebt gebruikt.

Ga als volgt te werk om een omgevingsvariabele op te geven voor de belastingstest met behulp van Azure Portal:

  1. Selecteer op de pagina testconfiguratie het tabblad Parameters .

  2. Voer in de sectie Omgevingsvariabelen de naam en waarde van de omgevingsvariabelein en selecteer vervolgens Toepassen.

    Screenshot that shows how to add an environment variable to a load test in the Azure portal.

Als u de belastingstest uitvoert in een CI/CD-werkstroom, kunt u omgevingsvariabelen definiƫren in het YAML-testconfiguratiebestand. Zie de YAML-verwijzing testconfiguratie voor meer informatie over de syntaxis.

U kunt ook rechtstreeks omgevingsvariabelen opgeven in de CI/CD-werkstroomdefinitie. U gebruikt invoerparameters voor de Azure Load Testing-actie of Azure Pipelines-taak om omgevingsvariabelen door te geven aan het Apache JMeter-script.

In het volgende YAML-fragment ziet u een voorbeeld van GitHub Actions:

- name: 'Azure Load Testing'
  uses: azure/load-testing
  with:
    loadtestConfigFile: 'SampleApp.yaml'
    loadtestResource: 'MyTest'
    resourceGroup: 'loadtests-rg'
    env: |
    [
        {
        "name": "webapp",
        "value": "myapplication.contoso.com"
        }
    ]

In het volgende YAML-fragment ziet u een Azure Pipelines-voorbeeld:

- task: AzureLoadTest@1
  inputs:
    azureSubscription: 'MyAzureLoadTestingRG'
    loadTestConfigFile: 'SampleApp.yaml'
    loadTestResource: 'MyTest'
    resourceGroup: 'loadtests-rg'
    env: |
      [
          {
          "name": "webapp",
          "value": "myapplication.contoso.com"
          }
      ]

Veelgestelde vragen

Worden mijn geheime waarden opgeslagen in de Azure Load Testing-service?

Nee De Azure Load Testing-service slaat de waarden van geheimen niet op. Wanneer u een sleutelkluisgeheim-URI gebruikt, slaat de service alleen de geheime URI op en haalt deze de waarde van het geheim op voor elke testuitvoering. Als u de waarde van geheimen in een CI/CD-werkstroom opgeeft, zijn de geheime waarden niet beschikbaar na de testuitvoering. U geeft deze waarden op voor elke testuitvoering.

Wat gebeurt er als ik parameters heb in zowel mijn YAML-configuratiebestand als de CI/CD-werkstroom?

Als er een parameter bestaat in zowel het YAML-configuratiebestand als de Azure Load Testing-taak of de Azure Pipelines-taak, wordt de waarde van de CI/CD-werkstroom gebruikt voor de testuitvoering.

Ik heb een test gemaakt en uitgevoerd vanuit mijn CI/CD-werkstroom door parameters door te geven met behulp van de Azure Load Testing-taak of -actie. Kan ik deze test uitvoeren vanuit Azure Portal met dezelfde parameters?

De waarden van de parameters worden niet opgeslagen wanneer ze worden doorgegeven vanuit de CI/CD-werkstroom. U moet de parameterwaarden opnieuw opgeven wanneer u de test uitvoert vanuit Azure Portal. U krijgt een prompt om de ontbrekende waarden in te voeren. Voor geheime waarden voert u de geheime URI van de sleutelkluis in. De waarden die u invoert bij de testuitvoering of de pagina voor opnieuw uitvoeren, zijn alleen geldig voor die testuitvoering. Als u wijzigingen wilt aanbrengen op testniveau, gaat u naar Test configureren en voert u de parameterwaarden in.