Ochrona wpisów tajnych w usłudze Azure Pipelines

Ten artykuł zawiera najlepsze rozwiązania dotyczące ochrony wpisów tajnych w usłudze Azure Pipelines. Wpis tajny to wszystko, do czego chcesz ściśle kontrolować dostęp, na przykład klucze interfejsu API, hasła, certyfikaty lub klucze kryptograficzne.

Usługa Azure Pipelines nie generuje wartości wpisów tajnych. Może jednak być konieczne dodanie wpisu tajnego do potoku w celu przechowywania poufnych danych, takich jak klucz interfejsu API. Aby dowiedzieć się więcej na temat ustawiania zmiennych tajnych, zobacz Ustawianie zmiennych tajnych.

Nie używaj wpisów tajnych, jeśli jest dostępna inna metoda

Najlepszą metodą ochrony wpisu tajnego nie jest posiadanie wpisu tajnego w pierwszej kolejności. Sprawdź, czy potok może używać innej metody niż używanie wpisu tajnego do wykonania zadania.

Używanie zmiennych tajnych

Poufne wartości nigdy nie powinny być przechowywane jako zwykły tekst w pliku usługi Azure Pipelines .yml .

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. Zalecanym sposobem ustawiania zmiennych tajnych jest użycie usługi Azure Key Vault. Można również ustawić zmienne tajne w interfejsie użytkownika lub w grupie zmiennych. Używanie polecenia rejestrowania w celu ustawienia zmiennej tajnej nie jest zalecane. Po ustawieniu wpisu tajnego za pomocą polecenia rejestrowania każdy, kto może uzyskać dostęp do potoku, będzie również mógł zobaczyć wpis tajny.

Zmienne tajne są szyfrowane i mogą być używane w potokach bez ujawniania ich wartości. Chociaż ich wartości nie są ujawniane, nigdy nie echo wpisów tajnych jako danych wyjściowych i nie przekazują wpisów tajnych w wierszu polecenia. Zamiast tego sugerujemy mapowania wpisów tajnych na zmienne środowiskowe.

Podczas tworzenia wpisu tajnego postępuj zgodnie ze wskazówkami dotyczącymi nazewnictwa zmiennych i upewnij się, że nazwa wpisu tajnego nie ujawnia poufnych informacji.

Ograniczanie dostępu do zmiennych tajnych

Aby ograniczyć dostęp do wpisów tajnych w usłudze Azure DevOps, możesz:

  • Przechowywanie wpisów tajnych w usłudze Azure Key Vault. Za pomocą usługi Azure Key Vault można następnie użyć modelu kontroli dostępu opartego na rolach platformy Azure, aby ograniczyć dostęp do wpisu tajnego lub grupy wpisów tajnych.
  • Ustaw zmienne tajne w interfejsie użytkownika dla potoku. Zmienne tajne ustawione w interfejsie użytkownika ustawień potoku dla potoku są ograniczone do potoku, w którym są ustawione. W związku z tym można mieć wpisy tajne widoczne tylko dla użytkowników z dostępem do tego potoku.
  • Ustaw wpisy tajne w grupie zmiennych. Grupy zmiennych są zgodne z modelem zabezpieczeń biblioteki. Możesz kontrolować, kto może definiować nowe elementy w bibliotece i kto może używać istniejącego elementu.

Nie zapisuj wpisów tajnych w dziennikach

Usługa Azure Pipelines próbuje wyczyścić wpisy tajne z dzienników wszędzie tam, gdzie to możliwe. To filtrowanie jest na zasadzie najlepszego wysiłku i nie może przechwytywać każdego sposobu, w jaki wpisy tajne mogą być wyciekane. Unikaj powtarzania wpisów tajnych w konsoli, używania ich w parametrach wiersza polecenia lub rejestrowania ich w plikach. Na przykład niektóre polecenia interfejsu wiersza polecenia platformy Azure zawierają informacje wyjściowe, które należy chronić. Jeśli wywołasz interfejs wiersza polecenia platformy Azure z potoku, użyj formatu danych wyjściowych None, a jeśli chcesz pobrać wpis tajny z wywołania interfejsu wiersza polecenia platformy Azure, użyj żadnego formatu wyjściowego i pobierz informacje zabezpieczające do zmiennej tajnej.

Nie używaj danych strukturalnych jako wpisów tajnych

Dane ustrukturyzowane mogą spowodować niepowodzenie ponownego działania wpisów tajnych w dziennikach, ponieważ redaction w dużej mierze polega na znalezieniu dokładnego dopasowania dla określonej wartości wpisu tajnego. Na przykład nie należy używać obiektu blob JSON, XML lub YAML (lub podobnego) do hermetyzacji wartości wpisu tajnego, w tym znaków kontrolnych, takich jak powrót karetki (\r) i źródło wiersza (\n), ponieważ znacznie zmniejsza to prawdopodobieństwo, że wpisy tajne są prawidłowo redagowane. Zamiast tego należy utworzyć poszczególne wpisy tajne dla każdej poufnej wartości.

Inspekcja obsługi wpisów tajnych

Przeprowadź inspekcję sposobu użycia wpisów tajnych, aby upewnić się, że są one obsługiwane zgodnie z oczekiwaniami. Można to zrobić, przeglądając kod źródłowy repozytorium hostujące potok i sprawdzając wszystkie zadania używane w potoku. Na przykład sprawdź, czy nie są one wysyłane do niezamierzonych hostów lub jawnie drukowane w celu rejestrowania danych wyjściowych.

Wyświetl dzienniki uruchamiania potoku po przetestowaniu prawidłowych/nieprawidłowych danych wejściowych i sprawdź, czy wpisy tajne są prawidłowo redagowane lub nie są wyświetlane. Nie zawsze jest oczywiste, jak wywoływane polecenie lub narzędzie będzie emitować błędy, a wpisy tajne mogą później znajdować się w dziennikach błędów. Usługa Azure Pipelines próbuje wyczyścić wpisy tajne z dzienników wszędzie tam, gdzie to możliwe. To filtrowanie jest na zasadzie najlepszego wysiłku i nie może przechwytywać każdego sposobu, w jaki wpisy tajne mogą być wyciekane. W związku z tym dobrym rozwiązaniem jest ręczne przejrzenie dzienników potoku po przetestowaniu prawidłowych i nieprawidłowych danych wejściowych.

Inspekcja i rotacja wpisów tajnych

Okresowo przejrzyj zarejestrowane wpisy tajne używane przez potoki, aby potwierdzić, że są one nadal wymagane, i usuń te, które nie są już potrzebne.

Okresowe obracanie wpisów tajnych w celu skrócenia czasu, w którym naruszony wpis tajny jest prawidłowy.

Typy wpisów tajnych używanych przez potoki mogą obejmować:

Następne kroki