Freigeben über


Festlegen von Geheimnisvariablen

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Geheimnisvariablen sind verschlüsselte Variablen, die Sie in Pipelines verwenden können, ohne deren Wert verfügbar zu halten. Geheime Variablen können für private Informationen wie Kennwörter, IDs und andere personenbezogene Daten verwendet werden, die Sie nicht in einer Pipeline verfügbar machen möchten. Geheimnisvariablen werden im Ruhezustand mit einem 2048-Bit-RSA-Schlüssel verschlüsselt und stehen auf dem Agent für Aufgaben und Skripts zur Verfügung.

Es wird empfohlen, die Geheimnisvariablen über die Benutzeroberfläche, in einer Variablengruppe oder in einer Variablengruppe über Azure Key Vault festzulegen. Sie können auch geheime Variablen in einem Skript mit einem Protokollierungsbefehl festlegen, diese Methode wird jedoch nicht empfohlen, da jeder, der auf Ihre Pipeline zugreifen kann, auch den geheimen Schlüssel sehen kann.

Geheime Variablen, die in der Benutzeroberfläche der Pipelineeinstellungen für eine Pipeline festgelegt sind, sind auf die Pipeline begrenzt, in der sie festgelegt sind. Sie können Variablengruppen verwenden, um Geheimnisvariablen über Pipelines hinweg gemeinsam zu nutzen.

Geheimnisvariable auf der Benutzeroberfläche

Sie können Geheimnisvariablen im Pipeline-Editor festlegen, wenn Sie eine einzelne Pipeline bearbeiten. Sie verschlüsseln und erstellen einen geheimen Schlüssel für eine Pipelinevariable, indem Sie das Sperrsymbol auswählen.

Für YAML- und klassische Pipelines legen Sie Geheimnisvariablen auf die gleiche Weise fest.

Führen Sie die folgenden Schritte aus, um Geheimnisse über die Weboberfläche festzulegen:

  1. Wechseln Sie zur Seite Pipelines, wählen Sie die entsprechende Pipeline aus und klicken Sie dann auf Bearbeiten.
  2. Suchen Sie die Variablen für diese Pipeline.
  3. Fügen Sie die Variable hinzu oder aktualisieren Sie sie.
  4. Wählen Sie die Option Diesen Wert geheim halten, um die Variable verschlüsselt zu speichern.
  5. Speichern Sie die Pipeline.

Geheimnisvariablen werden im Ruhezustand mit einem 2048-Bit-RSA-Schlüssel verschlüsselt. Geheimnisse sind auf dem Agent für verwendbare Aufgaben und Skripts verfügbar. Achten Sie darauf, wer zum Ändern Ihrer Pipeline berechtigt ist.

Wichtig

Wir versuchen zwar, die in der Azure Pipelines-Ausgabe angezeigten Geheimnisse zu maskieren, Sie müssen aber trotzdem Vorkehrungen treffen. Geben Sie Geheimnisse niemals als Ausgabe zurück. Einige Betriebssysteme protokollieren Befehlszeilenargumente. Geben Sie niemals Geheimnisse über die Befehlszeile weiter. Stattdessen wird empfohlen, Ihre Geheimnisse Umgebungsvariablen zuzuordnen.

Wir maskieren niemals Teilzeichenfolgen von Geheimnissen. Wenn beispielsweise „abc123“ als Geheimnis festgelegt ist, wird „abc“ in den Protokollen nicht maskiert. Dadurch soll vermieden werden, dass Geheimnisse zu detailliert maskiert werden, sodass die Protokolle nicht mehr lesbar sind. Aus diesem Grund sollten Geheimnisse keine strukturierten Daten enthalten. Wenn beispielsweise „{ "foo": "bar" }“ als Geheimnis festgelegt ist, wird „bar“ nicht in den Protokollen maskiert.

Im Gegensatz zu einer normalen Variablen werden sie nicht automatisch zu Umgebungsvariablen für Skripts entschlüsselt. Geheime Variablen müssen explizit zugeordnet werden.

Verwenden einer Geheimnisvariable über die Benutzeroberfläche

Sie müssen geheime Variable als Umgebungsvariable zuordnen, um sie in YAML-Pipelines zu referenzieren. In diesem Beispiel wurden zwei Geheimnisvariablen über der Benutzeroberfläche definiert: SecretOne und SecretTwo. Der Wert von SecretOne ist foo und der Wert von SecretTwo ist bar.

steps:
- powershell: |
      Write-Host "My first secret variable is $env:FOO_ONE"
      $env:FOO_ONE -eq "foo"
  env:
    FOO_ONE: $(SecretOne)
- bash: |
    echo "My second secret variable: $FOO_TWO"
    if [ "$FOO_TWO" = "bar" ]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
  env:
    FOO_TWO: $(SecretTwo) 

Die Pipelineausgaben:

My first secret variable is ***
True
My second secret variable: ***
Strings are equal.

Hinweis

Azure Pipelines bemüht sich, geheime Schlüssel beim Ausgeben von Daten an Pipelineprotokolle zu maskieren, sodass möglicherweise zusätzliche Variablen und Daten in Ausgabe- und Protokollen maskiert werden, die nicht als geheime Schlüssel festgelegt sind.

Ein ausführlicheres Beispiel finden Sie unter Definieren von Variablen.

Festlegen einer Geheimnisvariable in einer Variablengruppe

Sie können einer Variablengruppe Geheimnisse hinzufügen oder Geheimnisse aus einer vorhandenen Azure Key Vault verknüpfen.

Neue Variablengruppen erstellen

  1. Wählen Sie Pipelines>Bibliothek (Library)>Variablengruppe hinzufügen (+ Variable group) aus.

    Screenshot mit der Schaltfläche „Variablengruppe hinzufügen“ im roten Feld hervorgehoben.

  2. Geben Sie einen Namen und eine Beschreibung für die Gruppe ein.

  3. Optional: Verschieben Sie den Umschalter, um Geheimnisse aus einem Azure-Schlüsseltresor als Variablen zu verknüpfen. Weitere Informationen finden Sie unter Verwenden von Azure Key Vault-Geheimnissen.

  4. Geben Sie Namen und Wert für jede Variable ein, die in die Gruppe aufgenommen werden soll, und wählen Sie für jede Variable + Hinzufügen (+ Add) aus.

  5. Wählen Sie das Sperrsymbol am Ende der Zeile aus, um ihre Variable zu schützen.

  6. Wählen Sie Speichern (Save) aus, nachdem Sie die gewünschten Erweiterungen hinzugefügt haben.

    Screenshot: Speichern einer Variablengruppe.

Variablengruppen befolgen das Modell für Bibliotheksicherheit.

Sie können variable Gruppen erstellen und mit einem vorhandenen Azure Key Vault verknüpfen, sodass Sie geheime Schlüssel im Schlüsseltresor zuordnen können. Der Variablengruppe werden nur die Geheimnisnamen zugeordnet, nicht die Geheimniswerte. Pipelineausführungen, die mit der Variablengruppe verknüpft sind, rufen die neuesten Geheimniswerte aus dem Tresor ab. Weitere Informationen finden Sie unter Verknüpfen einer Variablengruppe mit geheimen Schlüsseln in Azure Key Vault.

Verwenden der Azure Key Vault-Aufgabe

Sie können die Azure Key Vault-Aufgabe verwenden, um Geheimnisse in Ihre Pipeline einzuschließen. Mit dieser Aufgabe kann die Pipeline eine Verbindung mit Ihrem Azure Key Vault herstellen und Geheimnisse zur Verwendung als Pipelinevariablen abrufen.

  1. Wählen Sie im Pipeline-Editor Assistenten anzeigen aus, um den Assistentenbereich zu auszuklappen.

  2. Suchen Sie nach vault und wählen Sie die Azure Key Vault-Aufgabe aus.

    Hinzufügen der Azure Key Vault-Aufgabe.

Die Option Geheimnisse für ganze Aufträge verfügbar machen wird aktuell in Azure DevOps Server 2019 und 2020 nicht unterstützt.

Weitere Informationen zur Azure Key Vault-Aufgabe finden Sie unter Verwenden von Azure Key Vault-Geheimnissen in Azure Pipelines.

Festlegen einer Geheimnisvariable in einem Skript mit Protokollierungsbefehlen

Sie können den task.setvariable-Protokollierungsbefehl verwenden, um Variablen in PowerShell- und Bash-Skripts festzulegen. Diese Methode ist die am wenigsten sichere Methode, um mit geheimen Variablen zu arbeiten, kann aber für das Debuggen nützlich sein. Es wird empfohlen, die Geheimnisvariablen über die Benutzeroberfläche, in einer Variablengruppe oder in einer Variablengruppe über Azure Key Vault festzulegen.

Um diese Variable als Skript mit einem Protokollierungsbefehl festzulegen, müssen Sie das Flag issecret übergeben.

Wenn issecret auf „true“ festgelegt ist, wird der Wert der Variable als Geheimnis gespeichert und im Protokoll maskiert.

Hinweis

Azure Pipelines bemüht sich, geheime Schlüssel beim Ausgeben von Daten an Pipelineprotokolle zu maskieren, sodass möglicherweise zusätzliche Variablen und Daten in Ausgabe- und Protokollen maskiert werden, die nicht als geheime Schlüssel festgelegt sind.

Legen Sie die Geheimnisvariable mySecretVal fest:

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"

Ruft die geheime Variable mySecretVal ab.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
    echo $(mySecretVal)

Ausgabe der Geheimnisvariable in Bash.

Screenshot: Ausgabe der Bash-Variable.

Erfahren Sie mehr über das Festlegen und Verwenden von Variablen in Skripts.