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

    Screenshot of Add variable group button highlighted with red box.

  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.

    Screenshot of saving a variable group.

Grupy zmiennych są zgodne z modelem zabezpieczeń biblioteki.

Połącz istniejący magazyn kluczy platformy Azure z grupą zmiennych i zamapuj wpisy tajne selektywnego magazynu na grupę zmiennych.

  1. Na stronie Grupy zmiennych włącz opcję Połącz wpisy tajne z magazynu kluczy platformy Azure jako zmienne. Będziesz potrzebować istniejącego magazynu kluczy zawierającego wpisy tajne. Utwórz magazyn kluczy przy użyciu witryny Azure Portal.

    Screenshot of variable group with Azure key vault integration.

  2. Określ punkt końcowy subskrypcji platformy Azure i nazwę magazynu zawierającego wpisy tajne.

    Upewnij się, że połączenie usługi platformy Azure ma co najmniej uprawnienia do zarządzania uzyskiwaniem i wyświetlaniem listy w magazynie dla wpisów tajnych. Włącz usługę Azure Pipelines, aby ustawić te uprawnienia, wybierając pozycję Autoryzuj obok nazwy magazynu. Możesz też ręcznie ustawić uprawnienia w witrynie Azure Portal:

    1. Otwórz Ustawienia dla magazynu, a następnie wybierz pozycję Zasady>dostępu Dodaj nowe.
    2. Wybierz pozycję Wybierz jednostkę, a następnie wybierz jednostkę usługi dla konta klienta.
    3. Wybierz pozycję Uprawnienia wpisu tajnego i upewnij się, że opcje Pobierz i Lista mają znaczniki wyboru.
    4. Wybierz przycisk OK , aby zapisać zmiany.
  3. Na stronie Grupy zmiennych wybierz pozycję + Dodaj, aby wybrać określone wpisy tajne z magazynu do mapowania do tej grupy zmiennych.

Zarządzanie wpisami tajnymi magazynu kluczy

Zapoznaj się z poniższą listą przydatnych wskazówek dotyczących zarządzania wpisami tajnymi.

  • Tylko nazwy wpisów tajnych są mapowane na grupę zmiennych, a nie wartości wpisów tajnych. Najnowsza wartość wpisu tajnego pobrana z magazynu jest używana w przebiegu potoku połączonego z grupą zmiennych.

  • Wszelkie zmiany wprowadzone w istniejących wpisach tajnych w magazynie kluczy są automatycznie dostępne dla wszystkich potoków używanych przez grupę zmiennych.

  • Po dodaniu lub usunięciu nowych wpisów tajnych z magazynu skojarzone grupy zmiennych nie zostaną automatycznie zaktualizowane. Wpisy tajne zawarte w grupie zmiennych muszą być jawnie zaktualizowane, aby potoki korzystające z grupy zmiennych były wykonywane poprawnie.

  • Usługa Azure Key Vault obsługuje przechowywanie kluczy kryptograficznych i wpisów tajnych oraz zarządzanie nimi na platformie Azure. Obecnie integracja grup zmiennych usługi Azure Pipelines obsługuje mapowanie tylko wpisów tajnych z usługi Azure Key Vault. Klucze kryptograficzne i certyfikaty nie są obsługiwane.

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.

    Add the Azure Key Vault task.

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.

Screenshot of bash variable output.

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