Udostępnij za pośrednictwem


Ustawianie zmiennych tajnych

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

Zmienne tajne to zaszyfrowane zmienne, których można używać w potokach bez uwidaczniania ich wartości. Zmienne tajne mogą służyć do informacji prywatnych, takich jak hasła, identyfikatory i inne dane identyfikujące, których nie chcesz ujawniać w potoku. Zmienne tajne są szyfrowane w spoczynku z 2048-bitowym kluczem RSA i są dostępne w agencie dla zadań i skryptów do użycia.

Zalecane sposoby ustawiania zmiennych tajnych znajdują się w interfejsie użytkownika, w grupie zmiennych i w grupie zmiennych z usługi Azure Key Vault. Można również ustawić zmienne tajne w skrypsie za pomocą polecenia rejestrowania, ale ta metoda nie jest zalecana, ponieważ każda osoba, która może uzyskać dostęp do potoku, może również zobaczyć wpis tajny.

Zmienne tajne ustawione w interfejsie użytkownika ustawień potoku dla potoku są ograniczone do potoku, w którym są ustawione. Grupy zmiennych umożliwiają udostępnianie zmiennych tajnych w potokach.

Zmienna wpisu tajnego w interfejsie użytkownika

Zmienne tajne można ustawić w edytorze potoku podczas edytowania pojedynczego potoku. Szyfrujesz i wprowadzasz wpis tajny zmiennej potoku, wybierając ikonę blokady.

Zmienne tajne są ustawiane w taki sam sposób, jak w przypadku języka YAML i klasycznego.

Aby ustawić wpisy tajne w interfejsie internetowym, wykonaj następujące kroki:

  1. Przejdź do strony Potoki , wybierz odpowiedni potok, a następnie wybierz pozycję Edytuj.
  2. Znajdź zmienne dla tego potoku.
  3. Dodaj lub zaktualizuj zmienną.
  4. Wybierz opcję Zachowaj ten wpis tajny wartości, aby przechowywać zmienną w zaszyfrowany sposób.
  5. Zapisz potok.

Zmienne tajne są szyfrowane w spoczynku przy użyciu 2048-bitowego klucza RSA. Wpisy tajne są dostępne w agencie dla zadań i skryptów do użycia. Uważaj, kto ma dostęp do zmiany potoku.

Ważne

Staramy się maskować wpisy tajne przed pojawieniem się w danych wyjściowych usługi Azure Pipelines, ale nadal trzeba podjąć środki ostrożności. Nigdy nie powtarzaj wpisów tajnych jako danych wyjściowych. Niektóre argumenty wiersza polecenia dziennika systemów operacyjnych. Nigdy nie przekazuj wpisów tajnych w wierszu polecenia. Zamiast tego sugerujemy mapowania wpisów tajnych na zmienne środowiskowe.

Nigdy nie maskujemy podciągów wpisów tajnych. Jeśli na przykład "abc123" jest ustawiony jako wpis tajny, "abc" nie jest maskowany z dzienników. Jest to unikanie maskowania wpisów tajnych na zbyt szczegółowym poziomie, dzięki czemu dzienniki są nieczytelne. Z tego powodu wpisy tajne nie powinny zawierać danych strukturalnych. Jeśli na przykład "{ "foo": "bar" }" jest ustawiony jako wpis tajny, "pasek" nie jest maskowany z dzienników.

W przeciwieństwie do zmiennej normalnej nie są one automatycznie odszyfrowywane do zmiennych środowiskowych dla skryptów. Musisz jawnie mapować zmienne tajne.

Używanie zmiennej tajnej w interfejsie użytkownika

Musisz mapować zmienną wpisu tajnego jako zmienne środowiskowe, aby odwoływać się do nich w potokach YAML. W tym przykładzie istnieją dwie zmienne tajne zdefiniowane w interfejsie użytkownika SecretOne i SecretTwo. Wartość parametru SecretOne to foo , a wartość parametru SecretTwo to 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) 

Dane wyjściowe potoku:

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

Uwaga

Usługa Azure Pipelines podejmuje próbę maskowania wpisów tajnych podczas emitowania danych do dzienników potoku, dzięki czemu mogą być widoczne dodatkowe zmienne i dane maskowane w danych wyjściowych i dziennikach, które nie są ustawione jako wpisy tajne.

Aby uzyskać bardziej szczegółowy przykład, zobacz Definiowanie zmiennych.

Ustawianie zmiennej tajnej w grupie zmiennych

Wpisy tajne można dodawać do grupy zmiennych lub łączyć wpisy tajne z istniejącej usługi Azure Key Vault.

Tworzenie nowych grup zmiennych

  1. Wybierz pozycję Biblioteka> potoków>i grupa zmiennych.

    Zrzut ekranu przedstawiający przycisk Dodaj grupę zmiennych wyróżniony czerwonym polem.

  2. Wprowadź nazwę i opis grupy.

  3. Opcjonalnie: przenieś przełącznik, aby połączyć wpisy tajne z magazynu kluczy platformy Azure jako zmienne. Aby uzyskać więcej informacji, zobacz Używanie wpisów tajnych usługi Azure Key Vault.

  4. Wprowadź nazwę i wartość dla każdej zmiennej do uwzględnienia w grupie, wybierając pozycję + Dodaj dla każdej z nich.

  5. Aby zabezpieczyć zmienną, wybierz ikonę "lock" na końcu wiersza.

  6. Po zakończeniu dodawania zmiennych wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający zapisywanie grupy zmiennych.

Grupy zmiennych są zgodne z modelem zabezpieczeń biblioteki.

Możesz utworzyć grupy zmiennych i połączyć je z istniejącym magazynem kluczy platformy Azure, co umożliwia mapowanie na wpisy tajne przechowywane w magazynie kluczy. Tylko nazwy wpisów tajnych są mapowane na grupę zmiennych, a nie wartości wpisów tajnych. Uruchomienia potoku, które łączą się z grupą zmiennych, pobierają najnowsze wartości wpisów tajnych z magazynu. Aby uzyskać więcej informacji, zobacz Łączenie grupy zmiennych z wpisami tajnymi w usłudze Azure Key Vault.

Korzystanie z zadania usługi Azure Key Vault

Możesz użyć zadania usługi Azure Key Vault, aby uwzględnić wpisy tajne w potoku. To zadanie umożliwia potokowi nawiązanie połączenia z usługą Azure Key Vault i pobranie wpisów tajnych do użycia jako zmiennych potoku.

  1. W edytorze potoku wybierz pozycję Pokaż asystenta , aby rozwinąć panel asystenta.

  2. vault Wyszukaj i wybierz zadanie usługi Azure Key Vault.

    Dodaj zadanie usługi Azure Key Vault.

Opcja Udostępnij wpisy tajne dla całego zadania nie jest obecnie obsługiwana w usługach Azure DevOps Server 2019 i 2020.

Aby dowiedzieć się więcej na temat zadania usługi Azure Key Vault, zobacz Używanie wpisów tajnych usługi Azure Key Vault w usłudze Azure Pipelines.

Ustawianie zmiennej tajnej w skrypie za pomocą poleceń rejestrowania

Możesz użyć polecenia rejestrowania task.setvariable , aby ustawić zmienne w skryptach programu PowerShell i powłoki Bash. Ta metoda jest najmniej bezpiecznym sposobem pracy ze zmiennymi tajnymi, ale może być przydatna do debugowania. Zalecane sposoby ustawiania zmiennych tajnych znajdują się w interfejsie użytkownika, w grupie zmiennych i w grupie zmiennych z usługi Azure Key Vault.

Aby ustawić zmienną jako skrypt za pomocą polecenia rejestrowania, należy przekazać flagę issecret .

Po issecret ustawieniu wartości true wartość zmiennej zostanie zapisana jako wpis tajny i zamaskowana z dzienników.

Uwaga

Usługa Azure Pipelines podejmuje próbę maskowania wpisów tajnych podczas emitowania danych do dzienników potoku, dzięki czemu mogą być widoczne dodatkowe zmienne i dane maskowane w danych wyjściowych i dziennikach, które nie są ustawione jako wpisy tajne.

Ustaw zmienną wpisu tajnego mySecretVal.

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

Pobierz zmienną wpisu tajnego mySecretVal.

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

Dane wyjściowe zmiennej tajnej w powłoce bash.

Zrzut ekranu przedstawiający dane wyjściowe zmiennej bash.

Dowiedz się więcej na temat ustawiania zmiennych i używania ich w skryptach.