Použití tajných kódů a proměnných prostředí ve službě Azure Load Testing

V tomto článku se dozvíte, jak předat tajné kódy a prostředí jako parametry zátěžovým testům ve službě Azure Load Testing. Pomocí parametrů můžete změnit chování zátěžového testu, aniž byste museli upravovat skript Apache JMeter. Pokud chcete například otestovat webovou aplikaci, zadejte adresu URL koncového bodu jako parametr pro opakované použití testovacího skriptu ve více prostředích. Můžete také použít parametry, abyste se vyhnuli tomu, že v testovacím skriptu JMeter musíte pevně zakódovat citlivé informace.

Služba Azure Load Testing podporuje dva typy parametrů:

  • Tajné kódy: Obsahují citlivé informace a bezpečně se předávají do modulu zátěžového testu. Tajné kódy například poskytují přihlašovací údaje webové služby místo jejich pevného kódování v testovacím skriptu. Další informace najdete v tématu Konfigurace zátěžových testů s tajnými kódy.

  • Proměnné prostředí: Obsahují necitlivé informace a jsou k dispozici jako proměnné prostředí v modulu zátěžového testu. Například proměnné prostředí umožňují konfigurovat adresu URL koncového bodu aplikace. Další informace najdete v tématu Konfigurace zátěžových testů s proměnnými prostředí.

Parametry v konfiguraci zátěžového testu můžete zadat při vytváření nového testu nebo aktualizaci existujícího testu. Pokud spustíte zátěžový test v pracovním postupu CI/CD, definujete parametry v konfiguračním souboru zátěžového testu nebo v definici pracovního postupu CI/CD.

Požadavky

Konfigurace zátěžových testů s tajnými kódy

V této části se dozvíte, jak předat tajné kódy do skriptu zátěžového testu ve službě Azure Load Testing. Můžete například použít tajný klíč k předání klíče rozhraní API do koncového bodu webové služby, který testujete. Místo uložení klíče rozhraní API v konfiguraci nebo jeho pevném kódování ve skriptu ho můžete uložit do úložiště tajných kódů, abyste mohli pevně řídit přístup k tajnému kódu.

Azure Load Testing umožňuje ukládat tajné kódy ve službě Azure Key Vault. Alternativně můžete při spuštění zátěžového testu v kanálu CI/CD použít také úložiště tajných kódů, které je přidružené k technologii CI/CD, jako jsou Azure Pipelines nebo GitHub Actions.

Pokud chcete používat tajné kódy se službou Azure Load Testing, proveďte následující kroky:

  1. Uložte hodnotu tajného kódu do úložiště tajných kódů (Azure Key Vault nebo úložiště tajných kódů CI/CD).
  2. Předejte odkaz na tajný kód do testovacího skriptu Apache JMeter.
  3. Použijte hodnotu tajného kódu v testovacím skriptu Apache JMeter pomocí GetSecret vlastní funkce.

Důležité

Vlastní funkci můžete použít pouze při spuštění testovacího GetSecret skriptu JMeter pomocí služby Azure Load Testing. Pokud testovací skript spustíte místně, musíte testovací skript aktualizovat a číst tajné hodnoty jiným způsobem.

Použití služby Azure Key Vault k ukládání tajných kódů zátěžového testu

Službu Azure Key Vault můžete použít k předání tajných kódů do testovacího skriptu ve službě Azure Load Testing. Do konfigurace azure Load Testing přidáte odkaz na tajný kód. Azure Load Testing pak pomocí tohoto odkazu načte hodnotu tajného kódu ve skriptu Apache JMeter.

Abyste mohli načíst hodnotu tajného kódu, musíte také službě Azure Load Testing udělit přístup k trezoru klíčů Azure.

Poznámka:

Pokud v rámci procesu CI/CD spustíte zátěžový test, můžete také použít související úložiště tajných kódů. Přeskočte k použití úložiště tajných kódů CI/CD.

Vytvoření tajného kódu ve službě Azure Key Vault

  1. Pokud jste to ještě neudělali, přidejte do trezoru klíčů hodnotu tajného kódu.

    Důležité

    Pokud jste omezili přístup k trezoru klíčů Azure bránou firewall nebo virtuálními sítěmi, pomocí těchto kroků udělte přístup k důvěryhodným službám Azure.

  2. Načtěte identifikátor tajného klíče trezoru klíčů pro váš tajný klíč. Tento identifikátor tajného kódu použijete ke konfiguraci zátěžového testu.

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

    Identifikátor tajného kódu je úplný identifikátor URI tajného klíče v trezoru klíčů Azure. Volitelně můžete také zahrnout číslo verze. Například https://myvault.vault.azure.net/secrets/mysecret/ nebo https://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678.

Přidání tajného kódu do zátěžového testu

  1. Odkazujte na tajný klíč v konfiguraci zátěžového testu.

    Definujete parametr tajného klíče zátěžového testu pro každý tajný klíč, na který odkazujete ve skriptu Apache JMeter. Název parametru by měl odpovídat názvu tajného kódu, který používáte v testovacím skriptu Apache JMeter. Hodnota parametru je identifikátor zabezpečení trezoru klíčů.

    Parametry tajného kódu můžete zadat jedním z následujících způsobů:

    • Na webu Azure Portal vyberte zátěžový test, vyberte Konfigurovat, vyberte kartu Parametry a zadejte podrobnosti o parametru.

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

    • Pokud konfigurujete pracovní postup CI/CD a používáte Azure Key Vault, můžete pomocí vlastnosti zadat tajný kód v konfiguračním souboru secrets YAML. Další informace o syntaxi najdete v referenční dokumentaci YAML konfigurace testování.

  2. Zadejte identitu, kterou Azure Load Testing používá pro přístup k tajným kódům ve službě Azure Key Vault.

    Identitou může být identita přiřazená systémem prostředku zátěžového testování nebo jedna z identit přiřazených uživatelem. Ujistěte se, že používáte stejnou identitu, kterou jste předtím udělili.

    Referenční identitu trezoru klíčů můžete zadat jedním z následujících způsobů:

    • Na webu Azure Portal vyberte zátěžový test, vyberte Konfigurovat, vyberte kartu Parametry a pak nakonfigurujte referenční identitu služby Key Vault.

      Screenshot that shows how to select key vault reference identity.

    • Pokud konfigurujete pracovní postup CI/CD a používáte Azure Key Vault, můžete pomocí vlastnosti zadat referenční identitu v konfiguračním keyVaultReferenceIdentity souboru YAML. Další informace o syntaxi najdete v referenční dokumentaci YAML konfigurace testování.

Udělení přístupu k trezoru klíčů Azure

Při ukládání tajných kódů nebo certifikátů zátěžového testu ve službě Azure Key Vault používá váš prostředek zátěžového testování spravovanou identitu pro přístup k trezoru klíčů. Po konfiguraci identity správy musíte udělit spravovanou identitu prostředku zátěžového testování, abyste mohli číst tyto hodnoty z trezoru klíčů.

Udělení oprávnění prostředků zátěžového testování Azure ke čtení tajných kódů nebo certifikátů z trezoru klíčů Azure:

  1. Na webu Azure Portal přejděte k prostředku služby Azure Key Vault.

    Pokud trezor klíčů nemáte, vytvořte ho podle pokynů v rychlém startu pro Azure Key Vault.

  2. V levém podokně vyberte Zásady přístupu a pak vyberte + Vytvořit.

  3. Na kartě Oprávnění v části Oprávnění vyberte Získat a pak vyberte Další.

    Poznámka:

    Azure Load Testing načte certifikáty jako tajný klíč , aby byl k dispozici privátní klíč certifikátu.

  4. Na kartě Objekt zabezpečení vyhledejte a vyberte spravovanou identitu prostředku zátěžového testování a pak vyberte Další.

    Pokud používáte spravovanou identitu přiřazenou systémem, název spravované identity odpovídá názvu spravované identity prostředku zátěžového testování Azure.

  5. Znovu vyberte Další .

    Když se test spustí, spravovaná identita přidružená k vašemu prostředku zátěžového testování teď může číst tajné kódy nebo certifikáty pro zátěžový test z vašeho trezoru klíčů.

Teď, když jste do služby Azure Key Vault přidali tajný kód, nakonfigurovali jste tajný kód pro zátěžový test, teď můžete přejít na Použití tajných kódů v Apache JMeteru.

Uložení tajných kódů zátěžového testu pomocí úložiště tajných kódů CI/CD

Pokud v pracovním postupu CI/CD používáte Zátěžové testování Azure, můžete také použít přidružené úložiště tajných kódů. Můžete například použít tajné kódy úložiště GitHub nebo proměnné tajných kódů ve službě Azure Pipelines.

Poznámka:

Pokud už trezor klíčů používáte, můžete ho použít také k uložení tajných kódů zátěžového testu. Přeskočte na používání služby Azure Key Vault.

Použití tajných kódů v úložišti tajných kódů CI/CD a jejich předání do zátěžového testu v CI/CD:

  1. Pokud ještě neexistuje, přidejte hodnotu tajného kódu do úložiště tajných kódů CI/CD.

    V Azure Pipelines můžete kanál upravit a přidat proměnnou.

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

    Na GitHubu můžete použít tajné kódy úložiště GitHub.

    Screenshot that shows how to add a GitHub repository secret.

    Poznámka:

    Nezapomeňte jako hodnotu použít skutečnou hodnotu tajného kódu, nikoli identifikátor tajného klíče trezoru klíčů.

  2. Předejte tajný kód jako vstupní parametr úkolu nebo akce zátěžového testování v pracovním postupu CI/CD.

    Následující fragment kódu YAML ukazuje, jak předat tajný kód akci GitHubu pro zátěžové testování:

    - 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 }}"
            }
        ]
    

    Následující fragment kódu YAML ukazuje, jak předat tajný kód úloze Azure Pipelines:

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

    Důležité

    Název vstupního parametru tajného kódu musí odpovídat názvu použitému ve skriptu Apache JMeter.

Teď jste zadali tajný kód v úložišti tajných kódů CI/CD a předali jste odkaz na Azure Load Testing. Teď můžete tajný kód použít ve skriptu Apache JMeter.

Použití tajných kódů v Apache JMeteru

Dále aktualizujete skript Apache JMeter tak, aby používal tajný kód, který jste zadali dříve.

Nejprve vytvoříte uživatelem definovanou proměnnou, která načte hodnotu tajného kódu. Tuto proměnnou pak můžete použít v testu (například k předání tokenu rozhraní API v hlavičce požadavku HTTP).

  1. Vytvořte v souboru JMX uživatelsky definovanou proměnnou a pomocí vlastní funkce k ní přiřaďte hodnotu tajného GetSecret kódu.

    Funkce GetSecret(<my-secret-name>) přebírá název tajného kódu jako argument. Stejný název použijete při konfiguraci zátěžového testu v pozdějším kroku.

    Proměnnou definovanou uživatelem můžete vytvořit pomocí integrovaného vývojového prostředí Apache JMeter, jak je znázorněno na následujícím obrázku:

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

    Případně můžete přímo upravit soubor JMX, jak je znázorněno v tomto ukázkovém fragmentu kódu:

    <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. Odkazujte na uživatelsky definovanou proměnnou v testovacím skriptu.

    Syntaxi můžete použít ${} k odkazování na proměnnou ve skriptu. V následujícím příkladu udv_appToken použijete proměnnou k nastavení hlavičky HTTP.

      <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>
    

Konfigurace zátěžových testů s proměnnými prostředí

V této části použijete proměnné prostředí k předání parametrů zátěžového testu.

  1. Aktualizujte skript Apache JMeter tak, aby používal proměnnou prostředí (například ke konfiguraci názvu hostitele koncového bodu aplikace).

  2. Nakonfigurujte zátěžový test a předejte proměnnou prostředí do testovacího skriptu.

Použití proměnných prostředí v Apache JMeteru

V této části aktualizujete skript Apache JMeter tak, aby používal proměnné prostředí k řízení chování skriptu.

Nejprve definujete uživatelsky definovanou proměnnou, která čte proměnnou prostředí, a pak ji můžete použít při testovacím spuštění (například k aktualizaci domény HTTP).

  1. Vytvořte v souboru JMX uživatelsky definovanou proměnnou a pomocí funkce jí System.getenv přiřaďte hodnotu proměnné prostředí.

    Funkce System.getenv("<my-variable-name>") přebírá název proměnné prostředí jako argument. Stejný název použijete při konfiguraci zátěžového testu.

    Proměnnou definovanou uživatelem můžete vytvořit pomocí integrovaného vývojového prostředí Apache JMeter, jak je znázorněno na následujícím obrázku:

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

    Případně můžete přímo upravit soubor JMX, jak je znázorněno v tomto ukázkovém fragmentu kódu:

    <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. Odkazujte na uživatelsky definovanou proměnnou v testovacím skriptu.

    Syntaxi můžete použít ${} k odkazování na proměnnou ve skriptu. V následujícím příkladu použijete proměnnou udv_webapp ke konfiguraci adresy URL koncového bodu aplikace.

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

Konfigurace proměnných prostředí ve službě Azure Load Testing

Pokud chcete předat proměnné prostředí do skriptu Apache JMeter, můžete nakonfigurovat zátěžový test na webu Azure Portal, v konfiguračním souboru testu YAML nebo přímo v pracovním postupu CI/CD.

Důležité

Při definování proměnné prostředí pro zátěžový test musí jeho název odpovídat názvu proměnné, kterou jste použili ve skriptu Apache JMeter.

Pokud chcete zadat proměnnou prostředí pro zátěžový test pomocí webu Azure Portal, postupujte takto:

  1. Na stránce konfigurace testu vyberte kartu Parametry .

  2. V části Proměnné prostředí zadejte název a hodnotu proměnné prostředí a pak vyberte Použít.

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

Pokud zátěžový test spustíte v pracovním postupu CI/CD, můžete definovat proměnné prostředí v konfiguračním souboru testu YAML. Další informace o syntaxi najdete v referenční dokumentaci YAML konfigurace testování.

Případně můžete přímo zadat proměnné prostředí v definici pracovního postupu CI/CD. Vstupní parametry pro akci Azure Load Testing nebo úlohu Azure Pipelines použijete k předání proměnných prostředí do skriptu Apache JMeter.

Následující fragment kódu YAML ukazuje příklad 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"
        }
    ]

Následující fragment kódu YAML ukazuje příklad služby Azure Pipelines:

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

Často kladené dotazy

Ukládá služba Azure Load Testing hodnoty tajných kódů?

Ne. Služba Azure Load Testing neukládá hodnoty tajných kódů. Při použití identifikátoru URI tajného klíče trezoru klíčů ukládá služba pouze identifikátor URI tajného kódu a načte hodnotu tajného klíče pro každé testovací spuštění. Pokud zadáte hodnotu tajných kódů v pracovním postupu CI/CD, nebudou hodnoty tajných kódů po testovacím spuštění dostupné. Tyto hodnoty zadáte pro každé testovací spuštění.

Co se stane, když mám parametry v konfiguračním souboru YAML i pracovním postupu CI/CD?

Pokud parametr existuje v konfiguračním souboru YAML i v akci Azure Load Testing nebo v úloze Azure Pipelines, použije se hodnota pracovního postupu CI/CD pro testovací běh.

Vytvořil(a) jsem a spustil(a) test z pracovního postupu CI/CD předáním parametrů pomocí úlohy nebo akce Azure Load Testing. Můžu tento test spustit na webu Azure Portal se stejnými parametry?

Hodnoty parametrů se neukládají, když jsou předány z pracovního postupu CI/CD. Při spuštění testu z webu Azure Portal musíte hodnoty parametrů zadat znovu. Zobrazí se výzva k zadání chybějících hodnot. Pro hodnoty tajných kódů zadáte identifikátor URI tajného klíče trezoru klíčů. Hodnoty zadané na testovacím běhu nebo na stránce opětovného spuštění jsou platné pouze pro toto testovací spuštění. Pokud chcete provést změny na úrovni testu, přejděte na Konfigurovat test a zadejte hodnoty parametrů.