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- oder Locust-Skript bearbeiten zu müssen. 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 Testskript hartcodieren.

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

  • Geheimnisse: Enthalten vertrauliche Informationen und werden sicher an die Auslastungstest-Engine übergeben. Geheime Schlüssel stellen beispielsweise Webdienstanmeldeinformationen 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 die Anwendungsendpunkt-URL beispielsweise konfigurierbar. Weitere Informationen finden Sie unter Konfigurieren von Auslastungstests mit Umgebungsvariablen.

Sie können Parameter in der Auslastungstestkonfiguration 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 Konfigurationsdatei zum Ladentest oder in der CI/CD-Workflowdefinition.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch kein Azure-Abonnement haben, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.

  • Eine Azure Load Testing-Ressource. Wenn Sie eine Azure Load Testing-Ressource erstellen müssen, lesen Sie den Schnellstart Erstellen und Ausführen eines Auslastungstests.

Konfigurieren von Auslastungstests mit Geheimnissen

In diesem Abschnitt erfahren Sie, wie Sie geheime Schlüssel an Ihr Ladetestskript in Azure Load Testing übergeben. Sie können beispielsweise ein Geheimnis verwenden, um den API-Schlüssel an einen Webdienstendpunkt zu übergeben, den Sie einem Lasttest unterziehen. Anstatt den API-Schlüssel in der Konfiguration zu speichern oder ihn im Skript hart zu codieren, können Sie ihn in einem geheimen Speicher ablegen, um den Zugriff streng zu kontrollieren.

Azure Load Testing ermöglicht es Ihnen, geheime Schlüssel in Azure Key Vault zu 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.

Um geheime Schlüssel mit Azure Load Testing zu verwenden, führen Sie die folgenden Schritte aus:

  1. Speichern Sie den Geheimniswert im Geheimnisspeicher (Azure Key Vault oder im CI/CD-Geheimnisspeicher).
  2. Übergeben Sie einen Verweis auf das Geheimnis in das Apache JMeter-Testskript.
  3. Verwenden Sie für JMeter-basierte Tests den geheimen Wert im Apache JMeter-Testskript mithilfe der GetSecret benutzerdefinierten Funktion. Verwenden Sie für Locust-basierte Tests den geheimen Wert, indem Sie ihn aus den Umgebungsvariablen lesen.

Von Bedeutung

Sie können die GetSecret benutzerdefinierte Funktion 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 geheimen Wert im Testskript abzurufen.

Außerdem müssen Sie Azure Load Testing Zugriff auf Ihren Azure Key Vault gewähren, um den geheimen Wert 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.

    Von Bedeutung

    Wenn Sie den Zugriff auf Ihren Azure Key Vault 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 geheime Bezeichner ist der vollständige URI des geheimen Schlüssels im Azure Key Vault. 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 Testskript verweisen. Der Parametername sollte mit dem geheimen Namen übereinstimmen, den Sie im 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 Referenzidentität eines Schlüsseltresors.

    • 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 Key Vault

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 gewähren Sie die Berechtigungen für Ihre Azure Load Testing-Ressource zum Lesen von Geheimnissen oder Zertifikaten aus Ihrem 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-Repositoryschlüsselverwenden.

    Screenshot, der zeigt, wie Ein GitHub-Repositoryschlüssel hinzugefügt wird.

    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 sie den geheimen Schlüssel an die GitHub-Aktion "Laden testen"übergeben:

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

    Von Bedeutung

    Der Name des geheimen Eingabeparameters 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 geheimen Schlüsseln im Testskript

Als Nächstes aktualisieren Sie das Testskript, um den geheimen Schlüssel zu verwenden, den Sie zuvor angegeben haben.

Sie erstellen zunächst eine benutzerdefinierte Variable, die den geheimen Wert 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 ihm den geheimen Wert mithilfe der GetSecret benutzerdefinierten Funktion zu.

    Die GetSecret(<my-secret-name>)-Funktion verwendet den geheimen Namen als Argument. Sie verwenden diesen Namen, wenn Sie den Ladetest 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, der zeigt, wie Sie Ihrem Apache JMeter-Skript benutzerdefinierte Variablen hinzufügen.

    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 auf die Variable im Skript 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 den 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 so, dass Umgebungsvariablen verwendet werden, um das Skriptverhalten zu steuern.

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 ihm den Wert der Umgebungsvariablen mithilfe der System.getenv-Funktion zu.

    Die System.getenv("<my-variable-name>")-Funktion verwendet den Namen der Umgebungsvariable als Argument. 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, der zeigt, wie Benutzerdefinierte Variablen für Umgebungsvariablen zu Ihrem JMeter-Skript hinzugefügt werden.

    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 auf die Variable im Skript 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 Testskript zu übergeben, können Sie den Auslastungstest im Azure-Portal, in der YAML-Testkonfigurationsdatei oder direkt im CI/CD-Workflow konfigurieren.

Von Bedeutung

Wenn Sie die Umgebungsvariable für den Ladetest definieren, muss der Name mit dem Variablennamen übereinstimmen, den Sie im Testskript 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 azure Pipelines-Aufgabe, um Umgebungsvariablen an das Testskript zu übergeben.

Der folgende YAML-Codeausschnitt zeigt ein Beispiel für GitHub-Aktionen:

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