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żesz również ustawić zmienne tajne w skrypsie za pomocą polecenia rejestrowania, ale nie jest to zalecane, ponieważ każdy, kto 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 utworzysz 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ć grupę zmiennych, która łączy się z istniejącym magazynem kluczy platformy Azure i mapować wybrane wpisy tajne usługi Key Vault do grupy zmiennych. 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.

Wszelkie zmiany wprowadzone w istniejących wpisach tajnych w magazynie kluczy są automatycznie dostępne dla wszystkich potoków korzystających z grupy zmiennych. Jeśli jednak wpisy tajne są dodawane do magazynu lub usuwane z magazynu, skojarzone grupy zmiennych nie aktualizują się automatycznie. Należy jawnie zaktualizować wpisy tajne, aby uwzględnić je w grupie zmiennych.

Mimo że usługa Key Vault obsługuje przechowywanie kluczy kryptograficznych i certyfikatów oraz zarządzanie nimi na platformie Azure, integracja grup zmiennych usługi Azure Pipelines obsługuje tylko wpisy tajne magazynu kluczy mapowania. Klucze kryptograficzne i certyfikaty nie są obsługiwane.

Uwaga

Magazyny kluczy korzystające z kontroli dostępu opartej na rolach (RBAC) platformy Azure nie są obsługiwane.

Wymagania wstępne

Tworzenie grupy zmiennych

  1. W projekcie usługi Azure DevOps wybierz pozycję Biblioteka> potoków>i grupa zmiennych.
  2. Na stronie Grupy zmiennych wprowadź nazwę i opcjonalny opis grupy zmiennych.
  3. Włącz przełącznik Połącz wpisy tajne z magazynu kluczy platformy Azure jako przełącznik zmiennych.
  4. Wybierz punkt końcowy subskrypcji platformy Azure i nazwę magazynu kluczy.
  5. Włącz usługę Azure DevOps, aby uzyskać dostęp do magazynu kluczy, wybierając pozycję Autoryzuj obok nazwy magazynu.
  6. Na ekranie Wybieranie wpisów tajnych wybierz określone wpisy tajne z magazynu, aby zamapować tę grupę zmiennych, a następnie wybierz przycisk OK.
  7. Wybierz pozycję Zapisz , aby zapisać grupę zmiennych tajnych.

Zrzut ekranu przedstawiający grupę zmiennych z integracją usługi Azure Key Vault.

Uwaga

Połączenie usługi platformy Azure musi mieć co najmniej uprawnienia Pobierz i Wyświetl w magazynie kluczy, które można autoryzować w poprzednich krokach. Te uprawnienia można również podać w witrynie Azure Portal, wykonując następujące kroki:

  1. Otwórz pozycję Ustawienia magazynu kluczy, a następnie wybierz pozycję Konfiguracja>dostępu Przejdź do zasad dostępu.
  2. Na stronie Zasady dostępu, jeśli projekt usługi Azure Pipelines nie znajduje się na liście w obszarze Aplikacje z co najmniej uprawnieniami Pobierz i Wyświetl, wybierz pozycję Utwórz.
  3. W obszarze Uprawnienia wpisu tajnego wybierz pozycję Pobierz i wyświetl, a następnie wybierz pozycję Dalej.
  4. Wybierz jednostkę usługi, a następnie wybierz pozycję Dalej.
  5. Ponownie wybierz pozycję Dalej , przejrzyj ustawienia, a następnie wybierz pozycję Utwórz.

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. Jest to najmniej bezpieczny sposób pracy ze zmiennymi tajnymi, ale może być przydatny 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.