Używanie wpisów tajnych usługi Azure Key Vault w usłudze Azure Pipelines

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

Usługa Azure Key Vault umożliwia deweloperom bezpieczne przechowywanie poufnych informacji, takich jak klucze interfejsu API, poświadczenia lub certyfikaty, oraz zarządzanie nimi. Usługa Azure Key Vault obsługuje dwa typy kontenerów: magazyny i zarządzane pule modułów HSM (sprzętowego modułu zabezpieczeń). Magazyny mogą przechowywać zarówno klucze oprogramowania, jak i klucze oparte na module HSM, wpisy tajne i certyfikaty, a zarządzane pule modułów HSM obsługują wyłącznie klucze oparte na module HSM.

Niniejszy samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Tworzenie usługi Azure Key Vault przy użyciu interfejsu wiersza polecenia platformy Azure
  • Dodawanie wpisu tajnego i konfigurowanie dostępu do usługi Azure Key Vault
  • Używanie wpisów tajnych w potoku

Wymagania wstępne

  • Organizacja i projekt usługi Azure DevOps. Utwórz organizację lub projekt, jeśli jeszcze tego nie zrobiono.

  • Subskrypcja Azure. Utwórz bezpłatne konto platformy Azure, jeśli jeszcze go nie masz.

Tworzenie repozytorium

Jeśli masz już własne repozytorium, przejdź do następnego kroku. W przeciwnym razie postępuj zgodnie z poniższymi instrukcjami, aby zainicjować repozytorium. Użyjemy tego repozytorium platformy Azure do skonfigurowania potoku.

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Repozytoria, a następnie wybierz pozycję Zainicjuj , aby zainicjować gałąź główną za pomocą pliku README.

    Zrzut ekranu przedstawiający sposób inicjowania repozytorium za pomocą pliku README.

Tworzenie usługi Azure Key Vault

  1. Zaloguj się do witryny Azure Portal, a następnie wybierz przycisk Cloud Shell w prawym górnym rogu.

  2. Jeśli masz więcej niż jedną subskrypcję platformy Azure skojarzona z kontem, użyj poniższego polecenia, aby określić subskrypcję domyślną. Możesz użyć az account list polecenia , aby wygenerować listę subskrypcji.

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Ustaw domyślny region świadczenia usługi Azure. Możesz użyć az account list-locations polecenia , aby wygenerować listę dostępnych regionów.

    az config set defaults.location=<YOUR_REGION>
    
  4. Tworzenie nowej grupy zasobów

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Utwórz nową usługę Azure Key Vault.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Utwórz nowy wpis tajny w magazynie kluczy platformy Azure.

    az keyvault secret set \
      --name <YOUR_SECRET_NAME> \
      --value <YOUR_ACTUAL_SECRET> \
      --vault-name <YOUR_KEY_VAULT_NAME>
    

Konfigurowanie zasad dostępu do magazynu kluczy

Aby uzyskać dostęp do usługi Azure Key Vault, musimy skonfigurować jednostkę usługi w celu udzielenia dostępu do usługi Azure Pipelines. Postępuj zgodnie z tym przewodnikiem , aby utworzyć jednostkę usługi za pomocą interfejsu wiersza polecenia platformy Azure, a następnie przejść do następnych kroków w tej sekcji.

  1. Przejdź do witryny Azure Portal, a następnie użyj paska wyszukiwania, aby znaleźć utworzony wcześniej magazyn kluczy.

    Zrzut ekranu przedstawiający sposób wyszukiwania usługi Azure Key Vault.

  2. Wybierz pozycję Zasady dostępu, a następnie wybierz pozycję Utwórz , aby utworzyć nowe zasady.

  3. W obszarze Uprawnienia wpisu tajnego wybierz pozycję Pobierz i Wyświetl.

  4. Wybierz pozycję Dalej, a następnie wybierz utworzoną wcześniej jednostkę usługi. Jednostka usługi to obiekt reprezentujący aplikację lub usługę żądającą dostępu do zasobów platformy Azure.

  5. Wybierz przycisk Dalej, a następnie ponownie przycisk Dalej .

  6. Przejrzyj zasady, a następnie wybierz pozycję Utwórz po zakończeniu.

Uwaga

Usługi Azure Key Vault korzystające z kontroli dostępu opartej na rolach (RBAC) platformy Azure nie są obsługiwane.

Dodaj przypisanie roli

W następnym kroku utworzymy połączenie usługi ARM przy użyciu jednostki usługi. Aby można było zweryfikować połączenie, musimy udzielić jednostce usługi dostępu do odczytu na poziomie subskrypcji:

  1. Przejdź do witryny Azure Portal

  2. Wybierz pozycję Subskrypcje z panelu nawigacji po lewej stronie, a następnie znajdź i wybierz swoją subskrypcję.

  3. Wybierz pozycję Kontrola dostępu, a następnie wybierz pozycję Dodaj>przypisanie roli.

    Zrzut ekranu przedstawiający sposób dodawania nowego przypisania roli na poziomie subskrypcji.

  4. Wybierz pozycję Czytelnik na karcie Rola , a następnie wybierz pozycję Dalej.

  5. Wybierz pozycję Użytkownik, grupa lub jednostka usługi, a następnie wybierz pozycję Wybierz członków.

    Zrzut ekranu przedstawiający sposób dodawania członków do przypisania roli na platformie Azure.

  6. Użyj paska wyszukiwania, aby znaleźć jednostkę usługi, a następnie wybierz znak "+", aby go zaznaczyć, a następnie kliknij przycisk Wybierz .

  7. Wybierz pozycję Przejrzyj i przypisz, przejrzyj ustawienia, a następnie wybierz pozycję Przejrzyj i przypisz jeszcze raz, aby potwierdzić wybrane opcje i dodać przypisanie roli.

Tworzenie połączenia z usługą

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Połączenia usługi Ustawień>projektu, a następnie wybierz pozycję Nowe połączenie z usługą, aby utworzyć nowe połączenie z usługą.

  3. Wybierz pozycję Azure Resource Manager, a następnie wybierz pozycję Dalej.

  4. Wybierz pozycję Jednostka usługi (ręcznie), a następnie wybierz pozycję Dalej.

  5. Wybierz pozycję Chmura platformy Azure dla środowiska i subskrypcji dla poziomu zakresu, a następnie wprowadź identyfikator subskrypcji i nazwę subskrypcji.

  6. Wypełnij następujące pola informacjami uzyskanymi podczas tworzenia jednostki usługi, a następnie wybierz pozycję Weryfikuj po zakończeniu pracy:

    • Identyfikator jednostki usługi: Identyfikator jednostki usługi appId.
    • Klucz jednostki usługi: Hasło jednostki usługi.
    • Identyfikator dzierżawy: Dzierżawa jednostki usługi.
  7. Po pomyślnym zakończeniu weryfikacji podaj nazwę i opis (opcjonalnie) dla połączenia z usługą, a następnie zaznacz pole wyboru Udziel uprawnień dostępu do wszystkich potoków .

  8. Po zakończeniu wybierz pozycję Weryfikuj i zapisz .

    Zrzut ekranu przedstawiający sposób tworzenia nowego połączenia usługi Azure Resource Manager przy użyciu jednostki usługi.

  1. Zaloguj się do kolekcji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Ustawienia projektu>Połączenia>usługi Nowe połączenie z usługą, a następnie wybierz pozycję Azure Resource Manager, aby utworzyć nowe połączenie usługi ARM.

  3. Nadaj połączeniu usługi nazwę, a następnie wybierz pozycję Chmura platformy Azure dla środowiska i subskrypcji dla poziomu zakresu.

  4. Wprowadź identyfikator subskrypcji i nazwę subskrypcji.

  5. Wypełnij następujące pola informacjami uzyskanymi podczas tworzenia jednostki usługi, a następnie wybierz pozycję Weryfikuj połączenie po zakończeniu pracy:

    • Identyfikator klienta jednostki usługi: Identyfikator jednostki usługi appId.
    • Klucz jednostki usługi: Hasło jednostki usługi.
    • Identyfikator dzierżawy: Dzierżawa jednostki usługi.
  6. Zaznacz pole wyboru Zezwalaj wszystkim potokom na używanie tego połączenia, a następnie po zakończeniu wybierz przycisk OK.

    Zrzut ekranu przedstawiający sposób tworzenia nowego połączenia usługi ARM przy użyciu jednostki usługi w usłudze Azure DevOps Server 2019.

Tworzenie nowego potoku

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Potoki, a następnie wybierz pozycję Nowy potok.

  3. Wybierz pozycję Użyj edytora klasycznego, aby utworzyć potok klasyczny.

  4. Wybierz pozycję Azure Repos Git, wybierz repozytorium i gałąź domyślną, a następnie wybierz pozycję Kontynuuj.

  5. Wybierz szablon potoku .Net Desktop .

  6. W tym przykładzie będziemy potrzebować tylko dwóch ostatnich zadań. Naciśnij klawisze CTRL, a następnie wybierz pierwsze pięć zadań, kliknij prawym przyciskiem myszy i wybierz polecenie Usuń wybrane zadania , aby je usunąć.

    Zrzut ekranu przedstawiający sposób usuwania wielu zadań potoku.

  7. Wybierz, + aby dodać nowe zadanie. Wyszukaj zadanie Wiersza polecenia, wybierz je, a następnie wybierz pozycję Dodaj, aby dodać je do potoku. Po dodaniu skonfiguruj ją w następujący sposób:

    • Nazwa wyświetlana: Tworzenie pliku
    • Skrypt: echo $(YOUR_SECRET_NAME) > secret.txt

    Zrzut ekranu przedstawiający sposób konfigurowania zadania wiersza polecenia.

  8. Wybierz, + aby dodać nowe zadanie. Wyszukaj zadanie usługi Azure Key Vault, wybierz je, a następnie wybierz pozycję Dodaj*, aby dodać je do potoku. Po dodaniu skonfiguruj ją w następujący sposób:

    • Nazwa wyświetlana: Azure Key Vault
    • Subskrypcja platformy Azure: wybierz utworzone wcześniej połączenie usługi jednostki usługi
    • Magazyn kluczy: wybierz magazyn kluczy
    • Filtr wpisu tajnego: rozdzielona przecinkami lista nazw wpisów tajnych lub pozostaw * w celu pobrania wszystkich wpisów tajnych z wybranego magazynu kluczy

    Zrzut ekranu przedstawiający sposób konfigurowania zadania usługi Azure Key Vault w potokach klasycznych.

  9. Wybierz zadanie Kopiuj pliki i wypełnij wymagane pola w następujący sposób:

    • Nazwa wyświetlana: Kopiuj plik
    • Zawartość: secret.txt
    • Folder docelowy: $(build.artifactstagingdirectory)

    Zrzut ekranu przedstawiający sposób konfigurowania zadania kopiowania plików w potokach klasycznych.

  10. Wybierz zadanie Publikuj artefakty i wypełnij wymagane pola w następujący sposób:

    • Nazwa wyświetlana: Publikowanie artefaktu
    • Ścieżka do opublikowania: $(build.artifactstagingdirectory)
    • Nazwa artefaktu: drop
    • Lokalizacja publikowania artefaktu: Azure Pipelines

    Zrzut ekranu przedstawiający sposób konfigurowania zadania publikowania artefaktów w potokach klasycznych.

  11. Wybierz pozycję Zapisz i kolejkę, a następnie wybierz pozycję Uruchom , aby uruchomić potok.

  12. Po zakończeniu przebiegu potoku wróć do podsumowania potoku i wybierz opublikowany artefakt.

  13. Wybierz pozycję upuść>secret.txt, aby pobrać opublikowany artefakt.

    Zrzut ekranu przedstawiający sposób pobierania opublikowanego artefaktu.

  14. Otwórz pobrany plik tekstowy. Plik tekstowy powinien zawierać wpis tajny z usługi Azure Key Vault.

  1. Zaloguj się do kolekcji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Potoki, a następnie wybierz pozycję Kompilacje.

  3. Wybierz pozycję Nowy>potok kompilacji.

  4. Wybierz pozycję Użyj edytora klasycznego, aby utworzyć nowy klasyczny potok kompilacji.

  5. Wybierz pozycję Azure Repos Git, wybierz repozytorium i gałąź domyślną, a następnie wybierz pozycję Kontynuuj.

  6. Wybierz szablon potoku .Net Desktop , a następnie wybierz pozycję Zastosuj.

  7. W tym przykładzie będziemy potrzebować tylko dwóch ostatnich zadań. Naciśnij klawisze CTRL, a następnie wybierz pierwsze pięć zadań, kliknij prawym przyciskiem myszy i wybierz polecenie Usuń wybrane zadania , aby je usunąć.

    Zrzut ekranu przedstawiający sposób usuwania wielu zadań potoku w potokach klasycznych w usłudze Azure DevOps Server 2019.

  8. Wybierz, + aby dodać nowe zadanie. Wyszukaj zadanie Wiersza polecenia, wybierz je, a następnie wybierz pozycję Dodaj, aby dodać je do potoku. Po dodaniu skonfiguruj ją w następujący sposób:

    • Nazwa wyświetlana: Tworzenie pliku
    • Skrypt: echo $(YOUR_SECRET_NAME) > secret.txt

    Zrzut ekranu przedstawiający sposób konfigurowania zadania wiersza polecenia w potokach klasycznych w usłudze Azure DevOps Server 2019.

  9. Wybierz, + aby dodać nowe zadanie. Wyszukaj zadanie usługi Azure Key Vault, wybierz je, a następnie wybierz pozycję Dodaj*, aby dodać je do potoku. Po dodaniu skonfiguruj ją w następujący sposób:

    • Nazwa wyświetlana: Azure Key Vault
    • Subskrypcja platformy Azure: wybierz utworzone wcześniej połączenie usługi jednostki usługi
    • Magazyn kluczy: wybierz magazyn kluczy
    • Filtr wpisu tajnego: rozdzielona przecinkami lista nazw wpisów tajnych lub pozostaw * w celu pobrania wszystkich wpisów tajnych z wybranego magazynu kluczy

    Zrzut ekranu przedstawiający sposób konfigurowania zadania usługi Azure Key Vault w klasycznym potoku w usłudze Azure DevOps Server 2019.

  10. Wybierz zadanie Kopiuj pliki i wypełnij wymagane pola w następujący sposób:

    • Nazwa wyświetlana: Kopiuj plik
    • Zawartość: secret.txt
    • Folder docelowy: $(build.artifactstagingdirectory)

    Zrzut ekranu przedstawiający sposób konfigurowania zadania kopiowania plików w klasycznych potokach w usłudze Azure DevOps Server 2019.

  11. Wybierz zadanie Publikuj artefakty i wypełnij wymagane pola w następujący sposób:

    • Nazwa wyświetlana: Publikowanie artefaktu
    • Ścieżka do opublikowania: $(build.artifactstagingdirectory)
    • Nazwa artefaktu: drop
    • Lokalizacja publikowania artefaktu: Azure Pipelines

    Zrzut ekranu przedstawiający sposób konfigurowania zadania publikowania artefaktów w klasycznych potokach w usłudze Azure DevOps Server 2019.

  12. Wybierz pozycję Zapisz i kolejkę, a następnie wybierz pozycję Zapisz i kolejkę, aby uruchomić potok kompilacji .

  13. Po zakończeniu przebiegu potoku wybierz pozycję Artefakty , a następnie wybierz pozycję Upuść.

  14. W nowo otwartym oknie wybierz pozycję upuść>secret.txt, wybierz ikonę wielokropka (...), a następnie wybierz pozycję Pobierz , aby zapisać plik tekstowy.

  15. Otwórz pobrany plik tekstowy, który powinien zawierać wpis tajny z usługi Azure Key Vault.

Ostrzeżenie

Ten samouczek jest przeznaczony tylko do celów edukacyjnych. Aby uzyskać najlepsze rozwiązania w zakresie zabezpieczeń i sposób bezpiecznej pracy z wpisami tajnymi, zobacz Zarządzanie wpisami tajnymi w aplikacjach serwera za pomocą usługi Azure Key Vault.

Czyszczenie zasobów

Wykonaj poniższe kroki, aby usunąć utworzone zasoby:

  1. Jeśli utworzono nową organizację do hostowania projektu, zobacz , jak usunąć organizację, w przeciwnym razie usuń projekt.

  2. Wszystkie zasoby platformy Azure utworzone w ramach tego samouczka są hostowane w ramach jednej grupy zasobów. Uruchom następujące polecenie, aby usunąć grupę zasobów i wszystkie jej zasoby.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

Często zadawane pytania

Pyt.: Otrzymuję następujący błąd: "użytkownik lub grupa nie ma uprawnień do listy wpisów tajnych", co należy zrobić?

1: Jeśli wystąpi błąd wskazujący, że użytkownik lub grupa nie ma uprawnień do listy wpisów tajnych w magazynie kluczy, uruchom następujące polecenia, aby autoryzować aplikację do uzyskiwania dostępu do klucza lub wpisu tajnego w usłudze Azure Key Vault:

$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;