Freigeben über


Verwenden von Geheimnissen und Umgebungsvariablen in Azure Load Testing

In diesem Artikel erfahren Sie, wie Sie Geheimnisse und Umgebungen als Parameter an einen Auslastungstest in Azure Load Testing übergeben. Sie können Parameter verwenden, um das Verhalten eines Auslastungstests zu ändern, ohne das Apache JMeter-Skript zu bearbeiten. Um beispielsweise eine Webanwendung zu testen, geben Sie die Endpunkt-URL als Parameter an, um Ihr Testskript in mehreren Umgebungen wiederzuverwenden. Sie können auch Parameter verwenden, um zu vermeiden, dass Sie vertrauliche Informationen im JMeter-Testskript hartcodieren müssen.

Der Azure Load Testing-Dienst unterstützt zwei Arten von Parametern:

  • Geheimnisse: Enthalten vertrauliche Informationen und werden sicher an die Auslastungstest-Engine übergeben. Geheimnisse stellen beispielsweise Webdienst-Anmeldeinformationen bereit, anstatt sie im Testskript hart zu codieren. Weitere Informationen finden Sie unter Konfigurieren von Auslastungstests mit Geheimnissen.

  • Umgebungsvariablen: Enthalten nicht vertrauliche Informationen und sind als Umgebungsvariablen in der Auslastungstest-Engine verfügbar. Umgebungsvariablen machen beispielsweise die Anwendungsendpunkt-URL konfigurierbar. Weitere Informationen finden Sie unter Konfigurieren von Auslastungstests mit Umgebungsvariablen.

Sie können Parameter in der Konfiguration des Auslastungstests angeben, wenn Sie einen neuen Test erstellen oder einen vorhandenen Test aktualisieren. Wenn Sie einen Auslastungstest in Ihrem CI/CD-Workflow ausführen, definieren Sie Parameter in der Konfiguration des Auslastungstests oder in der CI/CD-Workflow-Definition.

Voraussetzungen

Konfigurieren von Auslastungstests mit Geheimnissen

In diesem Abschnitt erfahren Sie, wie Sie Geheimnisse an Ihr Auslastungstestskript in Azure Load Testing übergeben. Beispielsweise können Sie mithilfe eines Geheimnisses den API-Schlüssel an einen Webdienstendpunkt übergeben, für den Sie einen Auslastungstest durchführen. Anstatt den API-Schlüssel in der Konfiguration zu speichern oder im Skript hartzucodieren, können Sie ihn in einem Geheimnisspeicher speichern, um den Zugriff auf das Geheimnis streng zu steuern.

Mit Azure Load Testing können Sie Geheimnisse in Azure Key Vault speichern. Alternativ können Sie beim Ausführen des Auslastungstests in einer CI/CD-Pipeline auch den Geheimnisspeicher verwenden, der Ihrer CI/CD-Technologie zugeordnet ist, z. B. Azure Pipelines oder GitHub Actions.

Führen Sie die folgenden Schritte aus, um Geheimnisse mit Azure Load Testing zu verwenden:

  1. Speichern Sie den Geheimniswert im Geheimnisspeicher (Azure Key Vault oder im CI/CD-Geheimnisspeicher).
  2. Übergeben Sie einen Verweis auf das Geheimnis an das Apache JMeter-Testskript.
  3. Verwenden Sie den Geheimniswert im Apache JMeter-Testskript mithilfe der benutzerdefinierten Funktion GetSecret.

Wichtig

Sie können die benutzerdefinierte Funktion GetSecret nur verwenden, wenn Sie Ihr JMeter-Testskript mit Azure Load Testing ausführen. Wenn Sie Ihr Testskript lokal ausführen, müssen Sie das Testskript aktualisieren und geheime Werte auf eine andere Weise lesen.

Speichern von Auslastungstestgeheimnissen mit Azure Key Vault

Mit Azure Key Vault können Sie Geheimniswerte an Ihr Testskript in Azure Load Testing übergeben. Fügen Sie einen Verweis auf das Geheimnis in der Azure Load Testing-Konfiguration hinzu. Azure Load Testing verwendet dann diesen Verweis, um den Geheimniswert im Apache JMeter-Skript abzurufen.

Außerdem müssen Sie Azure Load Testing Zugriff auf Ihre Azure Key Vault-Instanz gewähren, um den Geheimniswert abzurufen.

Hinweis

Wenn Sie einen Auslastungstest im Rahmen Ihres CI/CD-Prozesses ausführen, können Sie auch den zugehörigen Geheimnisspeicher verwenden. Fahren Sie mit Verwenden des CI/CD-Geheimnisspeichers fort.

Erstellen eines Geheimnisses in Azure Key Vault

  1. Fügen Sie Ihrem Schlüsseltresor den Geheimniswert hinzu, falls Sie dies noch nicht getan haben.

    Wichtig

    Wenn Sie den Zugriff auf Ihre Azure Key Vault-Instanz durch eine Firewall oder ein virtuelles Netzwerk eingeschränkt haben, führen Sie die folgenden Schritte aus, um Zugriff auf vertrauenswürdige Azure-Dienste zu gewähren.

  2. Rufen Sie den Geheimnisbezeichner des Schlüsseltresors für Ihr Geheimnis ab. Verwenden Sie diesen Geheimnisbezeichner, um Ihren Auslastungstest zu konfigurieren.

    Der Geheimnisbezeichner ist der vollständige URI des Geheimnisses im Azure-Schlüsseltresor. Optional können Sie auch eine Versionsnummer einschließen. Zum Beispiel: https://myvault.vault.azure.net/secrets/mysecret/ oder https://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678.

Hinzufügen des Geheimnisses zum Auslastungstest

  1. Verweisen Sie in der Auslastungstestkonfiguration auf das Geheimnis.

    Sie definieren einen Auslastungstest-Geheimnisparameter für jedes Geheimnis, auf das Sie im Apache JMeter-Skript verweisen. Der Parametername sollte mit dem Geheimnisnamen übereinstimmen, den Sie im Apache JMeter-Testskript verwenden. Der Parameterwert ist die Sicherheits-ID des Schlüsseltresors.

    Sie können Geheimnisparameter angeben, indem Sie einen der folgenden Schritte ausführen:

    • Wählen Sie im Azure-Portal Ihren Auslastungstest aus, wählen Sie Konfigurieren und die Registerkarte Parameter aus, und geben Sie dann die Parameterdetails ein.

      Screenshot: Hinzufügen von Geheimnisdetails zu einem Auslastungstest im Azure-Portal.

    • Wenn Sie einen CI/CD-Workflow konfigurieren und Azure Key Vault verwenden, können Sie mithilfe der secrets-Eigenschaft ein Geheimnis in der YAML-Konfigurationsdatei angeben. Weitere Informationen zur Syntax finden Sie in der YAML-Referenz zur Testkonfiguration.

  2. Geben Sie die Identität an, die Azure Load Testing für den Zugriff auf Ihre Geheimnisse in Azure Key Vault verwendet.

    Die Identität kann die vom System zugewiesene Identität der Auslastungstestressource oder eine der vom Benutzer zugewiesenen Identitäten sein. Stellen Sie sicher, dass Sie dieselbe Identität verwenden, der Sie zuvor Zugriff gewährt haben.

    Sie können die Verweisidentität des Schlüsseltresors folgendermaßen angeben:

    • Wählen Sie im Azure-Portal Ihren Auslastungstest aus, klicken Sie auf Konfigurieren und dann auf die Registerkarte Parameter, und konfigurieren Sie dann die Key Vault-Verweisidentität.

      Screenshot: Auswählen der Schlüsseltresor-Referenzidentität.

    • Wenn Sie einen CI/CD-Workflow konfigurieren und Azure Key Vault verwenden, können Sie mithilfe der keyVaultReferenceIdentity-Eigenschaft die Verweisidentität in der YAML-Konfigurationsdatei angeben. Weitere Informationen zur Syntax finden Sie in der YAML-Referenz zur Testkonfiguration.

Gewähren des Zugriffs auf Ihren Azure-Schlüsseltresor

Wenn Sie Auslastungstestgeheimnisse oder Zertifikate in Azure Key Vault speichern, verwendet Ihre Auslastungstestressource eine verwaltete Identität für den Zugriff auf die Instanz. Nachdem Sie die verwaltete Identität konfiguriert haben, müssen Sie der verwalteten Identität Ihrer Auslastungstestressource Berechtigungen erteilen, diese Werte aus der Key Vault-Instanz zu lesen.

So erteilen Sie Ihrer Azure Load Testing-Ressource Berechtigungen zum Lesen von Geheimnissen oder Zertifikaten aus Azure Key Vault:

  1. Wechseln Sie im Azure-Portal zu Ihrer Azure Key Vault-Ressource.

    Wenn Sie nicht über einen Schlüsseltresor verfügen, befolgen Sie die Anweisungen unter Azure Key Vault: Schnellstart, um einen zu erstellen.

  2. Wählen Sie im linken Bereich Zugriffsrichtlinien aus, und wählen Sie dann + Erstellen aus.

  3. Wählen Sie auf der Registerkarte Berechtigungen unter Geheimnisberechtigungen die Option Abrufen aus, und wählen Sie dann Weiter aus.

    Hinweis

    Azure Load Testing ruft Zertifikate als Geheimnis ab, um sicherzustellen, dass der private Schlüssel für das Zertifikat verfügbar ist.

  4. Suchen Sie auf der Registerkarte Prinzipal nach der verwalteten Identität für die Auslastungstestressource, wählen Sie sie aus, und wählen Sie dann Weiter aus.

    Wenn Sie eine systemseitig zugewiesene verwaltete Identität verwenden, entspricht der Name dem Ihrer Azure Load Testing-Ressource.

  5. Wählen Sie erneut Weiter aus.

    Wenn Ihr Test ausgeführt wird, kann die verwaltete Identität, die Ihrer Auslastungstestressource zugeordnet ist, die Geheimnisse oder Zertifikate für den Auslastungstest aus der Key Vault-Instanz lesen.

Nachdem Sie ein Geheimnis in Azure Key Vault hinzugefügt und ein Geheimnis für Ihren Auslastungstest konfiguriert haben, können Sie jetzt zu Verwenden von Geheimnissen in Apache JMeter wechseln.

Speichern von Auslastungstestgeheimnissen mithilfe des CI/CD-Geheimnisspeichers

Wenn Sie Azure Load Testing in Ihrem CI/CD-Workflow verwenden, können Sie auch den zugehörigen Geheimnisspeicher verwenden. Sie können z. B. GitHub-Repositorygeheimnisse oder Geheimnisvariablen in Azure Pipelines verwenden.

Hinweis

Wenn Sie bereits einen Schlüsseltresor verwenden, können Sie ihn auch zum Speichern der Auslastungstestgeheimnisse verwenden. Fahren Sie mit Verwenden von Azure Key Vault fort.

So verwenden Sie Geheimnisse im CI/CD-Geheimnisspeicher und übergeben sie an Ihren Auslastungstest in CI/CD:

  1. Fügen Sie den Geheimniswert dem CI/CD-Geheimnisspeicher hinzu, falls er noch nicht vorhanden ist.

    In Azure Pipelines können Sie die Pipeline bearbeiten und eine Variable hinzufügen.

    Screenshot: Hinzufügen einer Variablen zu Azure Pipelines.

    In GitHub können Sie GitHub-Repositorygeheimnisse verwenden.

    Screenshot: Hinzufügen eines GitHub-Repositorygeheimnisses

    Hinweis

    Achten Sie darauf, den tatsächlichen Geheimniswert und nicht den Schlüsseltresor-Geheimnisbezeichner als Wert zu verwenden.

  2. Übergeben Sie das Geheimnis als Eingabeparameter an die Aufgabe/Aktion für Auslastungstests im CI/CD-Workflow.

    Der folgende YAML-Codeausschnitt zeigt, wie das Geheimnis an die GitHub-Aktion für Auslastungstests übergeben wird:

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

    Der folgende YAML-Codeausschnitt zeigt, wie das Geheimnis an die Azure Pipelines-Aufgabe übergeben wird:

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

    Wichtig

    Der Name des Geheimniseingabeparameters muss mit dem Namen übereinstimmen, der im Apache JMeter-Skript verwendet wird.

Sie haben nun ein Geheimnis im CI/CD-Geheimnisspeicher angegeben und einen Verweis an Azure Load Testing übergeben. Sie können jetzt das Geheimnis im Apache JMeter-Skript verwenden.

Verwenden von Geheimnissen in Apache JMeter

Als Nächstes aktualisieren Sie das Apache JMeter-Skript, um das Geheimnis zu verwenden, das Sie zuvor angegeben haben.

Zunächst erstellen Sie eine benutzerdefinierte Variable, die den Geheimniswert abruft. Anschließend können Sie diese Variable in Ihrem Test verwenden (z. B. um ein API-Token in einem HTTP-Anforderungsheader zu übergeben).

  1. Erstellen Sie eine benutzerdefinierte Variable in Ihrer JMX-Datei, und weisen Sie ihr den Geheimniswert mithilfe der benutzerdefinierten Funktion GetSecret zu.

    Die Funktion GetSecret(<my-secret-name>) verwendet den Geheimnisnamen als Argument. Sie verwenden diesen Namen auch, wenn Sie den Auslastungstest in einem späteren Schritt konfigurieren.

    Sie können die benutzerdefinierte Variable mithilfe der Apache JMeter-IDE erstellen, wie in der folgenden Abbildung dargestellt:

    Screenshot: Hinzufügen von benutzerdefinierten Variablen zu Ihrem Apache JMeter-Skript

    Alternativ können Sie die JMX-Datei direkt bearbeiten, wie in diesem Beispielcodeausschnitt gezeigt:

    <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. Verweisen Sie im Testskript auf die benutzerdefinierte Variable.

    Sie können die ${}-Syntax verwenden, um im Skript auf die Variable zu verweisen. Im folgenden Beispiel verwenden Sie die udv_appToken-Variable, um einen HTTP-Header festzulegen.

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

Konfigurieren von Auslastungstests mit Umgebungsvariablen

In diesem Abschnitt verwenden Sie Umgebungsvariablen, um Parameter an Ihren Auslastungstest zu übergeben.

  1. Aktualisieren Sie das Apache JMeter-Skript, um die Umgebungsvariable zu verwenden (z. B. um den Hostnamen des Anwendungsendpunkts zu konfigurieren).

  2. Konfigurieren Sie den Auslastungstest, und übergeben Sie die Umgebungsvariable an das Testskript.

Verwenden von Umgebungsvariablen in Apache JMeter

In diesem Abschnitt aktualisieren Sie das Apache JMeter-Skript, um Umgebungsvariablen zum Steuern des Skriptverhaltens zu verwenden.

Sie definieren zuerst eine benutzerdefinierte Variable, die die Umgebungsvariable liest, und dann können Sie diese Variable in der Testausführung verwenden (z. B. zum Aktualisieren der HTTP-Domäne).

  1. Erstellen Sie eine benutzerdefinierte Variable in Ihrer JMX-Datei, und weisen Sie ihr den Wert der Umgebungsvariablen mithilfe der benutzerdefinierten Funktion System.getenv zu.

    Die System.getenv("<my-variable-name>")-Funktion nimmt den Namen der Umgebungsvariablen als Argument an. Sie verwenden diesen Namen, wenn Sie den Auslastungstest konfigurieren.

    Sie können eine benutzerdefinierte Variable mithilfe der Apache JMeter-IDE erstellen, wie in der folgenden Abbildung dargestellt:

    Screenshot: Hinzufügen benutzerdefinierter Variablen für Umgebungsvariablen zu Ihrem JMeter-Skript.

    Alternativ können Sie die JMX-Datei direkt bearbeiten, wie in diesem Beispielcodeausschnitt gezeigt:

    <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. Verweisen Sie im Testskript auf die benutzerdefinierte Variable.

    Sie können die ${}-Syntax verwenden, um im Skript auf die Variable zu verweisen. Im folgenden Beispiel verwenden Sie die udv_webapp-Variable, um die Anwendungsendpunkt-URL zu konfigurieren.

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

Konfigurieren von Umgebungsvariablen in Azure Load Testing

Um Umgebungsvariablen an das Apache JMeter-Skript zu übergeben, können Sie den Auslastungstest im Azure-Portal, in der YAML-Testkonfigurationsdatei oder direkt im CI/CD-Workflow konfigurieren.

Wichtig

Wenn Sie die Umgebungsvariable für den Auslastungstest definieren, muss ihr Name mit dem Variablennamen übereinstimmen, den Sie im Apache JMeter-Skript verwendet haben.

Gehen Sie wie folgt vor, um eine Umgebungsvariable für den Auslastungstest im Azure-Portal anzugeben:

  1. Wählen Sie auf der Testkonfigurationseite die Registerkarte Parameter aus.

  2. Geben Sie im Abschnitt Umgebungsvariablen die Umgebungsvariablen Name und Wert ein, und wählen Sie dann Anwenden aus.

    Screenshot: Hinzufügen einer Umgebungsvariablen zu einem Auslastungstest im Azure-Portal.

Wenn Sie den Auslastungstest in einem CI/CD-Workflow ausführen, können Sie Umgebungsvariablen in der YAML-Testkonfigurationsdatei definieren. Weitere Informationen zur Syntax finden Sie in der YAML-Referenz zur Testkonfiguration.

Alternativ können Sie Umgebungsvariablen direkt in der CI/CD-Workflowdefinition angeben. Sie verwenden Eingabeparameter für die Azure Load Testing-Aktion oder den Azure Pipelines-Task, um Umgebungsvariablen an das Apache JMeter-Skript zu übergeben.

Der folgende YAML-Codeausschnitt zeigt ein GitHub Actions-Beispiel:

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

Der folgende YAML-Codeausschnitt zeigt ein Azure Pipelines-Beispiel:

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

Häufig gestellte Fragen

Werden meine Geheimniswerte vom Azure Load Testing-Dienst gespeichert?

Nein Im Azure Load Testing-Dienst werden die Werte von Geheimnissen nicht gespeichert. Wenn Sie einen geheimen Schlüsseltresor-URI verwenden, speichert der Dienst nur den geheimen URI und ruft den Wert des Geheimnisses für jeden Testlauf ab. Wenn Sie den Wert von Geheimnissen in einem CI/CD-Workflow bereitstellen, sind die Geheimniswerte nach dem Testlauf nicht verfügbar. Sie geben diese Werte für jede Testausführung an.

Was geschieht, wenn sowohl in meiner YAML-Konfigurationsdatei als auch im CI/CD-Workflow Parameter enthalten sind?

Wenn ein Parameter sowohl in der YAML-Konfigurationsdatei als auch in der Azure Load Testing-Aktion oder im Azure Pipelines-Task vorhanden ist, wird der Wert aus dem CI/CD-Workflow für die Testausführung verwendet.

Ich habe einen Test in meinem CI/CD-Workflow erstellt und ausgeführt, indem ich Parameter mithilfe des Azure Load Testing-Tasks oder der Aktion übergeben habe. Kann ich diesen Test im Azure-Portal mit denselben Parametern ausführen?

Die Werte der Parameter werden nicht gespeichert, wenn sie vom CI/CD-Workflow übergeben werden. Sie müssen die Parameterwerte erneut angeben, wenn Sie den Test im Azure-Portal ausführen. Sie erhalten eine Eingabeaufforderung für die fehlenden Werte. Für Geheimniswerte geben Sie den Key Vault-Geheimnis-URI ein. Die Werte, die Sie auf der Seite für den Testlauf oder erneutes Ausführen eingeben, sind nur für diesen Testlauf gültig. Wenn Sie Änderungen auf Testebene vornehmen möchten, wechseln Sie zu Test konfigurieren, und geben Sie Ihre Parameterwerte ein.