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:
- A titkos kulcs értékét tárolja a titkos tárban (Azure Key Vault vagy a CI/CD titkos tár).
- Adjon át egy hivatkozást a titkos kódra az Apache JMeter tesztszkriptben.
- 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
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.
Kérje le a titkos kulcstartó titkos azonosítóját . Ezzel a titkos azonosítóval konfigurálhatja a terhelési tesztet.
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/
vagyhttps://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678
.
Titkos kód hozzáadása a terhelési teszthez
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.
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.
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.
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:
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.
A bal oldali panelen válassza a Hozzáférési szabályzatok, majd a + Létrehozás lehetőséget.
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.
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.
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:
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.
A GitHubon használhatja a GitHub-adattár titkos kulcsokat.
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.
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).
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:
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>
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óvaludv_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.
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).
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).
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ó:
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>
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 azudv_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:
A tesztkonfigurációs lapon válassza a Paraméterek lapot.
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.
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.