Titkos kódok és környezeti változók használata az Azure Load Testingben

Ebben a cikkben megtudhatja, hogyan adhat át titkos kulcsokat és környezeteket paraméterekként egy terheléstesztnek az Azure Load Testingben. Paraméterekkel módosíthatja a terheléses tesztek viselkedését anélkül, hogy szerkesztenie kellene az Apache JMeter-szkriptet. Egy webalkalmazás teszteléséhez például adja meg a végpont URL-címét paraméterként a tesztszkript több környezetben való újrafelhasználásához. Paraméterekkel is elkerülheti, hogy a JMeter-tesztszkriptben ne kelljen kódérzékeny információkat megadnia.

Az Azure Load Testing szolgáltatás kétféle paramétert támogat:

  • Titkos kódok: Bizalmas információkat tartalmaznak, és biztonságosan átadják a terheléstesztelő motornak. A titkos kódok például a tesztszkriptben való kemény kódolás helyett a webszolgáltatás hitelesítő adatait adják meg. További információ: Terheléses tesztek konfigurálása titkos kódokkal.

  • Környezeti változók: Nem bizalmas információkat tartalmaznak, és környezeti változókként érhetők el a terheléstesztelési motorban. A környezeti változók például konfigurálhatóvá teszik az alkalmazásvégpont URL-címét. További információ: Terheléstesztek konfigurálása környezeti változókkal.

Új teszt létrehozásakor vagy meglévő teszt frissítésekor paramétereket adhat meg a terhelésteszt-konfigurációban. Ha betöltési tesztet futtat a CI/CD-munkafolyamatban, paramétereket határoz meg a terhelésteszt konfigurációs fájljában vagy a CI/CD munkafolyamat-definíciójában.

Előfeltételek

  • Egy Azure-fiók, aktív előfizetéssel. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

  • Azure-beli terheléstesztelési erőforrás. Ha azure-beli terheléstesztelési erőforrást kell létrehoznia, tekintse meg a terheléstesztek létrehozásának és futtatásának rövid útmutatóit.

Terheléstesztek konfigurálása titkos kódokkal

Ebben a szakaszban megtudhatja, hogyan adhat át titkos kulcsokat a terheléstesztelési szkriptnek az Azure Load Testingben. Előfordulhat például, hogy titkos kóddal továbbítja az API-kulcsot egy webszolgáltatás-végpontnak, amelyet tesztel. Az API-kulcs konfigurációban való tárolása vagy a szkriptben való kemény kódolása helyett egy titkos tárba mentheti, hogy szigorúan szabályozhassa a titkos kódhoz való hozzáférést.

Az Azure Load Testing segítségével titkos kulcsokat tárolhat az Azure Key Vaultban. Ha a terheléstesztet CI/CD-folyamatban futtatja, használhatja a CI/CD-technológiához társított titkos tárat is, például az Azure Pipelinest vagy a GitHub Actionst.

Ha titkos kulcsokat szeretne használni az Azure Load Testingben, hajtsa végre a következő lépéseket:

  1. A titkos kulcs értékét tárolja a titkos tárban (Azure Key Vault vagy a CI/CD titkos tár).
  2. Adjon át egy hivatkozást a titkos kódra az Apache JMeter tesztszkriptben.
  3. Használja a titkos értéket az Apache JMeter tesztszkriptben az GetSecret egyéni függvény használatával.

Fontos

Az egyéni függvényt csak akkor használhatja GetSecret , ha JMeter-tesztszkriptet futtat az Azure Load Testing használatával. Ha helyileg futtatja a tesztszkriptet, frissítenie kell a tesztszkriptet, és más módon kell olvasnia a titkos értékeket.

Az Azure Key Vault használata terheléstesztelési titkos kulcsok tárolására

Az Azure Key Vault használatával titkos értékeket adhat át a tesztszkriptnek az Azure Load Testingben. Az Azure Load Testing konfigurációjában hivatkozhat a titkos kódra. Az Azure Load Testing ezt a hivatkozást használja a titkos érték lekéréséhez az Apache JMeter-szkriptben.

Emellett hozzáférést kell adnia az Azure Load Testingnek az Azure Key Vaulthoz a titkos érték lekéréséhez.

Feljegyzés

Ha a CI/CD-folyamat részeként futtat terheléstesztet, a kapcsolódó titkos kódtárat is használhatja. Ugrás a CI/CD titkos kódtár használatára.

Titkos kód létrehozása az Azure Key Vaultban

  1. Ha még nem tette meg, adja hozzá a titkos kulcs értékét a kulcstartóhoz.

    Fontos

    Ha tűzfal vagy virtuális hálózat korlátozza az Azure Key Vaulthoz való hozzáférést, kövesse az alábbi lépéseket a megbízható Azure-szolgáltatásokhoz való hozzáférés biztosításához.

  2. Kérje le a titkos kulcstartó titkos azonosítóját . Ezzel a titkos azonosítóval konfigurálhatja a terhelési tesztet.

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

    A titkos azonosító az Azure Key Vault titkos kulcsainak teljes URI-ja. Opcionálisan egy verziószámot is megadhat. Például, https://myvault.vault.azure.net/secrets/mysecret/ vagy https://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678.

Titkos kód hozzáadása a terhelési teszthez

  1. A terhelésteszt konfigurációjában hivatkozzon a titkos kódra.

    Az Apache JMeter-szkriptben hivatkozott titkos kódokhoz egy terhelésteszt titkos paramétert határoz meg. A paraméter nevének meg kell egyeznie az Apache JMeter tesztszkriptben használt titkos névvel. A paraméter értéke a kulcstartó biztonsági azonosítója.

    Titkos paramétereket az alábbi műveletek egyikével adhat meg:

    • Az Azure Portalon válassza ki a terhelési tesztet, válassza a Konfigurálás lehetőséget, válassza a Paraméterek lapot, majd adja meg a paraméter részleteit.

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

    • Ha CI/CD-munkafolyamatot konfigurál, és az Azure Key Vaultot használja, a tulajdonság használatával secrets megadhat egy titkos kulcsot a YAML konfigurációs fájljában. A szintaxissal kapcsolatos további információkért tekintse meg a konfigurációs YAML-referencia tesztelését.

  2. Adja meg azt az identitást, amelyet az Azure Load Testing használ a titkos kulcsok eléréséhez az Azure Key Vaultban.

    Az identitás lehet a terheléstesztelési erőforrás rendszer által hozzárendelt identitása, vagy a felhasználó által hozzárendelt identitások egyike. Győződjön meg arról, hogy ugyanazt az identitást használja, amelyet korábban megadott.

    A kulcstartó referencia-identitását az alábbiak egyikével adhatja meg:

    • Az Azure Portalon válassza ki a terhelési tesztet, válassza a Konfigurálás lehetőséget, válassza a Paraméterek lapot, majd konfigurálja a Key Vault referencia-identitását.

      Screenshot that shows how to select key vault reference identity.

    • Ha CI/CD-munkafolyamatot konfigurál, és az Azure Key Vaultot használja, a tulajdonság használatával keyVaultReferenceIdentity megadhatja a referencia-identitást a YAML konfigurációs fájljában. A szintaxissal kapcsolatos további információkért tekintse meg a konfigurációs YAML-referencia tesztelését.

Hozzáférés biztosítása az Azure Key Vaulthoz

Amikor betöltési teszt titkos kulcsait vagy tanúsítványait az Azure Key Vaultban tárolja, a terheléstesztelési erőforrás egy felügyelt identitást használ a kulcstartó eléréséhez. A kezelési identitás konfigurálása után meg kell adnia a terheléstesztelési erőforrás felügyelt identitásának engedélyeit, hogy beolvassa ezeket az értékeket a kulcstartóból.

Az Azure-beli terheléstesztelési erőforrás engedélyeinek megadása titkos kulcsok vagy tanúsítványok azure-kulcstartóból való olvasásához:

  1. Az Azure Portalon nyissa meg az Azure Key Vault-erőforrást.

    Ha nem rendelkezik kulcstartóval, kövesse az Azure Key Vault rövid útmutatójában található utasításokat a kulcstartó létrehozásához.

  2. A bal oldali panelen válassza a Hozzáférési szabályzatok, majd a + Létrehozás lehetőséget.

  3. Az Engedélyek lap Titkos engedélyek csoportjában válassza a Beolvasás, majd a Tovább gombot.

    Feljegyzés

    Az Azure Load Testing titkos kódként kéri le a tanúsítványokat, hogy a tanúsítvány titkos kulcsa elérhető legyen.

  4. Az Egyszerű lapon keresse meg és válassza ki a terheléstesztelési erőforrás felügyelt identitását, majd kattintson a Tovább gombra.

    Ha rendszer által hozzárendelt felügyelt identitást használ, a felügyelt identitás neve megegyezik az Azure-beli terheléstesztelési erőforrás nevével.

  5. Kattintson ismét a Tovább gombra.

    A teszt futtatásakor a terheléstesztelési erőforráshoz társított felügyelt identitás mostantól beolvassa a terhelésteszt titkos kulcsait vagy tanúsítványait a kulcstartóból.

Most, hogy hozzáadott egy titkos kulcsot az Azure Key Vaultban, és konfigurált egy titkos kulcsot a terhelési teszthez, áttérhet az Apache JMeter titkos kulcsainak használatára.

A CI/CD titkos kódtár használata a terhelésteszt titkos kulcsainak mentéséhez

Ha az Azure Load Testing szolgáltatást használja a CI/CD-munkafolyamatban, a társított titkos tárat is használhatja. Használhatja például a GitHub-adattár titkos kulcsait vagy titkos változóit az Azure Pipelinesban.

Feljegyzés

Ha már használ kulcstartót, a terhelésteszt titkos kulcsainak tárolására is használhatja. Ugorjon az Azure Key Vault használatára.

Titkos kódok használata a CI/CD titkos kódtárban, és továbbítása a CI/CD-ben végzett terhelési teszthez:

  1. Adja hozzá a titkos kulcs értékét a CI/CD titkos tárolóhoz, ha még nem létezik.

    Az Azure Pipelinesban szerkesztheti a folyamatot, és hozzáadhat egy változót.

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

    A GitHubon használhatja a GitHub-adattár titkos kulcsokat.

    Screenshot that shows how to add a GitHub repository secret.

    Feljegyzés

    Ügyeljen arra, hogy a titkos kulcs tényleges értékét használja, és ne a kulcstartó titkos azonosítót értékként.

  2. Adja át a titkos kulcsot bemeneti paraméterként a CI/CD munkafolyamat terheléstesztelési feladatának/műveletének.

    Az alábbi YAML-kódrészlet bemutatja, hogyan adhatja át a titkos kódot a Terheléstesztelési GitHub-műveletnek:

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

    Az alábbi YAML-kódrészlet bemutatja, hogyan adhatja át a titkos kulcsot az Azure Pipelines-feladatnak:

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

    Fontos

    A titkos bemeneti paraméter nevének meg kell egyeznie az Apache JMeter-szkriptben használt névvel.

Most megadott egy titkos kulcsot a CI/CD titkos tárolóban, és átadta az Azure Load Testingre mutató hivatkozást. Most már használhatja a titkos kulcsot az Apache JMeter szkriptben.

Titkos kódok használata az Apache JMeterben

Ezután frissíti az Apache JMeter-szkriptet a korábban megadott titkos kód használatára.

Először létre kell hoznia egy felhasználó által definiált változót, amely lekéri a titkos értéket. Ezután ezt a változót használhatja a tesztben (például egy API-jogkivonat http-kérés fejlécében való átadásához).

  1. Hozzon létre egy felhasználó által definiált változót a JMX-fájlban, és rendelje hozzá a titkos értéket az GetSecret egyéni függvény használatával.

    A GetSecret(<my-secret-name>) függvény argumentumként a titkos nevet veszi fel. Ezt a nevet akkor használja, amikor egy későbbi lépésben konfigurálja a terhelési tesztet.

    A felhasználó által definiált változót az Apache JMeter IDE használatával hozhatja létre az alábbi képen látható módon:

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

    Másik lehetőségként közvetlenül is szerkesztheti a JMX-fájlt, ahogyan az ebben a példakódrészletben látható:

    <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. A tesztszkriptben hivatkozzon a felhasználó által definiált változóra.

    A szintaxissal ${} hivatkozhat a változóra a szkriptben. Az alábbi példában a változóval udv_appToken állít be EGY HTTP-fejlécet.

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

Terheléstesztek konfigurálása környezeti változókkal

Ebben a szakaszban környezeti változókkal adja át a paramétereket a terhelési tesztnek.

  1. Frissítse az Apache JMeter-szkriptet a környezeti változó használatára (például az alkalmazásvégpont gazdagépnevének konfigurálásához).

  2. Konfigurálja a terhelési tesztet, és adja át a környezeti változót a tesztszkriptnek.

Környezeti változók használata az Apache JMeterben

Ebben a szakaszban az Apache JMeter-szkriptet úgy frissíti, hogy környezeti változók használatával szabályozza a szkript viselkedését.

Először definiálhat egy felhasználó által definiált változót, amely beolvassa a környezeti változót, majd ezt a változót használhatja a teszt végrehajtásában (például a HTTP-tartomány frissítéséhez).

  1. Hozzon létre egy felhasználó által definiált változót a JMX-fájlban, és rendelje hozzá a környezeti változó értékét a System.getenv függvény használatával.

    A System.getenv("<my-variable-name>") függvény argumentumként a környezeti változó nevét veszi figyelembe. Ugyanezt a nevet használja a terhelési teszt konfigurálásakor.

    A felhasználó által definiált változókat az Apache JMeter IDE használatával hozhatja létre, ahogyan az alábbi képen is látható:

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

    Másik lehetőségként közvetlenül is szerkesztheti a JMX-fájlt, ahogyan az ebben a példakódrészletben látható:

    <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. A tesztszkriptben hivatkozzon a felhasználó által definiált változóra.

    A szintaxissal ${} hivatkozhat a változóra a szkriptben. Az alábbi példában a változóval konfigurálja az udv_webapp alkalmazásvégpont URL-címét.

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

Környezeti változók konfigurálása az Azure Load Testingben

Ha környezeti változókat szeretne átadni az Apache JMeter-szkriptnek, konfigurálhatja a terhelési tesztet az Azure Portalon, a YAML-tesztkonfigurációs fájlban vagy közvetlenül a CI/CD munkafolyamatban.

Fontos

A terhelési teszt környezeti változójának meghatározásakor a névnek meg kell egyeznie az Apache JMeter-szkriptben használt változó nevével.

Ha környezeti változót szeretne megadni a terhelési teszthez az Azure Portal használatával, tegye a következőket:

  1. A tesztkonfigurációs lapon válassza a Paraméterek lapot.

  2. A Környezeti változók szakaszban adja meg a Név és érték környezeti változót, majd válassza az Alkalmaz lehetőséget.

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

Ha ci-/CD-munkafolyamatban futtatja a terhelési tesztet, környezeti változókat határozhat meg a YAML-teszt konfigurációs fájljában. A szintaxissal kapcsolatos további információkért tekintse meg a konfigurációs YAML-referencia tesztelését.

Másik lehetőségként közvetlenül megadhatja a környezeti változókat a CI/CD munkafolyamat-definíciójában. Az Azure Load Testing művelet vagy az Azure Pipelines feladat bemeneti paramétereit használva környezeti változókat ad át az Apache JMeter-szkriptnek.

Az alábbi YAML-kódrészlet egy GitHub Actions-példát mutat be:

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

Az alábbi YAML-kódrészlet egy Azure Pipelines-példát mutat be:

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

GYIK

Az Azure Load Testing szolgáltatás tárolja a titkos értékeimet?

Szám Az Azure Load Testing szolgáltatás nem tárolja a titkos kódok értékeit. Key Vault titkos URI használatakor a szolgáltatás csak a titkos URI-t tárolja, és minden tesztfuttatáshoz lekéri a titkos kód értékét. Ha egy CI/CD-munkafolyamatban megadja a titkos kulcsok értékét, a titkos kódok értékei nem érhetők el a teszt futtatása után. Ezeket az értékeket minden tesztfuttatáshoz meg kell adnia.

Mi történik, ha a YAML-konfigurációs fájlban és a CI/CD-munkafolyamatban is vannak paraméterek?

Ha a YAML-konfigurációs fájlban és az Azure Load Testing műveletben vagy az Azure Pipelines-feladatban is létezik paraméter, a rendszer a CI/CD-munkafolyamatból származó értéket használja a tesztfuttatáshoz.

Létrehoztam és futtattam egy tesztet a CI/CD-munkafolyamatomból úgy, hogy paramétereket adtam át az Azure Load Testing feladat vagy művelet használatával. Futtathatom ezt a tesztet az Azure Portalon ugyanazokkal a paraméterekkel?

A paraméterek értékei nem lesznek tárolva a CI/CD munkafolyamatból való továbbításkor. A paraméterértékeket újra meg kell adnia, amikor a tesztet az Azure Portalon futtatja. A rendszer kéri a hiányzó értékek megadását. Titkos értékek esetén adja meg a key vault titkos URI-jának értékét. A tesztfuttatás vagy újrafuttatás lapon megadott értékek csak az adott tesztfuttatásra érvényesek. Ha a teszt szintjén szeretne módosításokat végezni, lépjen a Tesztelés konfigurálása elemre, és adja meg a paraméterértékeket.

  • Titkos kódok használata a biztonságos végpontok teszteléséhez.
  • A CSV-fájlok olvasásáról további információt a CSV-fájlok olvasása a terheléses tesztekben című témakörben talál.