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. Tajne zmienne mogą służyć do przechowywania informacji prywatnych, takich jak hasła, identyfikatory i inne dane identyfikujące, których nie chcesz ujawniać w przepływie pracy. Zmienne tajne są szyfrowane w stanie spoczynku z 2048-bitowym kluczem RSA i są dostępne w agencie do użycia przez zadania i skrypty.
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ć tajne zmienne w skrypcie za pomocą polecenia rejestrowania, ale ta metoda nie jest zalecana, ponieważ każda osoba, która może uzyskać dostęp do pipeline'u, może również zobaczyć zmienną tajną.
Tajne zmienne ustawione w interfejsie użytkownika ustawień są przypisane do potoku, w którym zostały skonfigurowane. Możesz używać grup zmiennych do udostępniania zmiennych tajnych pomiędzy różnymi potokami.
Tajna zmienna w interfejsie użytkownika
Zmienne tajne można ustawić w edytorze potoku, gdy edytujesz pojedynczy potok. Szyfrujesz zmienną potoku i oznaczasz ją jako tajną, 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:
- Przejdź do strony Potoki , wybierz odpowiedni potok, a następnie wybierz pozycję Edytuj.
- Znajdź zmienne dla tego przepływu danych.
- Dodaj lub zaktualizuj zmienną.
- Wybierz opcję Zachowaj tę wartość w tajemnicy, aby przechowywać zmienną w zaszyfrowany sposób.
- 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 projektu.
Ważne
Staramy się ukrywać tajemnice przed pojawieniem się w wynikach usługi Azure Pipelines, ale nadal należy zachować środki ostrożności. Nigdy nie wyświetlaj sekretów jako danych wyjściowych. Niektóre systemy operacyjne rejestrują argumenty wiersza poleceń. Nigdy nie przekazuj tajemnic w linii poleceń. Zamiast tego, sugerujemy, aby przypisać swoje sekrety do zmiennych środowiskowych.
Nigdy nie maskujemy podciągów tajnych danych. Jeśli na przykład "abc123" jest ustawione jako tajne hasło, "abc" nie jest maskowane w dziennikach. 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, "bar" 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 przypisać zmienną tajną jako zmienną środowiskową, aby odwoływać się do niej 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 rurociągu:
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
Wybierz Potoki>Biblioteka>+ Grupa zmiennych.
Wprowadź nazwę i opis grupy.
Opcjonalnie: przesuń przełącznik suwakowy, aby połączyć tajne dane z magazynu kluczy Azure jako zmienne. Aby uzyskać więcej informacji, zobacz Używanie tajemnic usługi Azure Key Vault.
Wprowadź nazwę i wartość dla każdej zmiennej do uwzględnienia w grupie, klikając + Dodaj dla każdej z nich.
Aby zabezpieczyć zmienną, wybierz ikonę "lock" na końcu wiersza.
Po zakończeniu dodawania zmiennych wybierz pozycję Zapisz.
Grupy zmiennych są zgodne z modelem zabezpieczeń biblioteki.
Łączenie sekretów z magazynu kluczy Azure
Możesz utworzyć grupy zmiennych i połączyć je z istniejącym magazynem kluczy platformy Azure, co umożliwia mapowanie tajnych danych przechowywanych w magazynie kluczy. Tylko tajne nazwy są mapowane na grupę zmiennych, a nie tajne wartości. Uruchomienia potoku, które łączą się z grupą zmiennych, pobierają najnowsze wartości sekretów z repozytorium. Aby uzyskać więcej informacji, zobacz Połączyć grupę zmiennych z tajemnicami 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ć tajne dane w potoku. To zadanie umożliwia potokowi połączenie z usługą Azure Key Vault i pobranie sekretów do użycia jako zmienne potokowe.
W edytorze potoku wybierz pozycję Pokaż asystenta , aby rozwinąć panel asystenta.
vault
Wyszukaj i wybierz zadanie usługi Azure Key Vault.
Opcja Udostępnij sekrety dla całego zadania nie jest obecnie obsługiwana w Azure DevOps Server 2019 i 2020.
Aby dowiedzieć się więcej na temat zadania Azure Key Vault, zobacz Używanie sekretów Azure Key Vault w usłudze Azure Pipelines.
Ustawianie zmiennej tajnej w skrypie za pomocą poleceń rejestrowania
Możesz użyć task.setvariable
polecenia logowania, aby ustawić zmienne w skryptach PowerShell i 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
.
Gdy issecret
jest ustawione na true, wartość zmiennej zostanie zapisana w trybie tajnym i zamaskowana w dziennikach.
Uwaga
Azure Pipelines stara się maskować tajne dane przy zapisywaniu do dzienników potoków, więc mogą być także zmienne i dane, które nie są oznaczone jako tajne, ale będą zamaskowane w danych wyjściowych i dziennikach.
Ustaw zmienną tajną mySecretVal
.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
Pobierz zmienną tajną mySecretVal
.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
echo $(mySecretVal)
Dane wyjściowe zmiennej tajnej w powłoce bash.
Dowiedz się więcej na temat ustawiania zmiennych i używania ich w skryptach.