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.
Pobieranie przykładowego kodu
Jeśli masz już własne repozytorium, przejdź do następnego kroku. W przeciwnym razie zaimportuj następujące przykładowe repozytorium do repozytorium platformy Azure.
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Repozytoria, a następnie wybierz pozycję Importuj. Wprowadź następujący adres URL repozytorium, a następnie wybierz pozycję Importuj.
https://github.com/MicrosoftDocs/pipelines-dotnet-core
Tworzenie usługi Azure Key Vault
Zaloguj się do witryny Azure Portal, a następnie wybierz przycisk Cloud Shell w prawym górnym rogu.
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>
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>
Tworzenie nowej grupy zasobów
az group create --name <YOUR_RESOURCE_GROUP_NAME>
Utwórz nową usługę Azure Key Vault.
az keyvault create \ --name <YOUR_KEY_VAULT_NAME> \ --resource-group <YOUR_RESOURCE_GROUP_NAME>
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 uwierzytelniania
Tworzenie tożsamości zarządzanej przypisanej przez użytkownika
Zaloguj się do witryny Azure Portal, a następnie wyszukaj usługę Tożsamości zarządzane na pasku wyszukiwania.
Wybierz pozycję Utwórz i wypełnij wymagane pola w następujący sposób:
- Subskrypcja: wybierz swoją subskrypcję z menu rozwijanego.
- Grupa zasobów: wybierz istniejącą grupę zasobów lub utwórz nową.
- Region: wybierz region z menu rozwijanego.
- Nazwa: Wprowadź nazwę przypisanej do użytkownika tożsamości zarządzanej.
Po zakończeniu wybierz pozycję Przejrzyj i utwórz .
Po zakończeniu wdrażania wybierz pozycję Przejdź do zasobu, a następnie skopiuj wartości Subscription (Subskrypcja ) i Client ID (Identyfikator klienta), które będą używane w kolejnych krokach.
Przejdź do pozycji Właściwości ustawień>i skopiuj wartość identyfikatora dzierżawy tożsamości zarządzanej do późniejszego użycia.
Konfigurowanie zasad dostępu do magazynu kluczy
Przejdź do witryny Azure Portal i użyj paska wyszukiwania, aby znaleźć utworzony wcześniej magazyn kluczy.
Wybierz pozycję Zasady dostępu, a następnie wybierz pozycję Utwórz , aby dodać nowe zasady.
W obszarze Uprawnienia wpisu tajnego zaznacz pola wyboru Pobierz i Lista .
Wybierz pozycję Dalej, a następnie wklej identyfikator klienta tożsamości zarządzanej utworzonej wcześniej na pasku wyszukiwania. Wybierz tożsamość zarządzaną.
Wybierz przycisk Dalej, a następnie ponownie przycisk Dalej .
Przejrzyj nowe zasady, a następnie wybierz pozycję Utwórz po zakończeniu.
Tworzenie połączenia z usługą
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
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ą.
Wybierz pozycję Azure Resource Manager, a następnie wybierz pozycję Dalej.
W obszarze Typ tożsamości wybierz pozycję Tożsamość zarządzana z menu rozwijanego.
W kroku 1. Szczegóły tożsamości zarządzanej wypełnij pola w następujący sposób:
Subskrypcja tożsamości zarządzanej: wybierz subskrypcję zawierającą tożsamość zarządzaną.
Grupa zasobów dla tożsamości zarządzanej: wybierz grupę zasobów hostująca tożsamość zarządzaną.
Tożsamość zarządzana: wybierz tożsamość zarządzaną z menu rozwijanego.
W przypadku kroku 2. Zakres platformy Azure wypełnij pola w następujący sposób:
Poziom zakresu połączenia z usługą: wybierz pozycję Subskrypcja.
Subskrypcja połączenia z usługą: wybierz subskrypcję, do których będzie uzyskiwana tożsamość zarządzana.
Grupa zasobów dla połączenia z usługą: (opcjonalnie) Określ, aby ograniczyć dostęp tożsamości zarządzanej do jednej grupy zasobów.
W kroku 3. Szczegóły połączenia z usługą:
Nazwa połączenia z usługą: podaj nazwę połączenia z usługą.
Dokumentacja zarządzania usługami: (opcjonalnie) informacje kontekstowe z bazy danych ITSM.
Opis: (Opcjonalnie) Dodaj opis.
W obszarze Zabezpieczenia zaznacz pole wyboru Udziel uprawnień dostępu do wszystkich potoków, aby zezwolić wszystkim potokom na korzystanie z tego połączenia z usługą. Jeśli nie wybierzesz tej opcji, musisz ręcznie udzielić dostępu do każdego potoku korzystającego z tego połączenia z usługą.
Wybierz pozycję Zapisz , aby zweryfikować i utworzyć połączenie usługi.
Uzyskiwanie dostępu do wpisów tajnych magazynu kluczy z potoku
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Potoki, a następnie wybierz pozycję Nowy potok.
Wybierz pozycję Azure Repos Git (YAML), a następnie wybierz repozytorium.
Wybierz szablon potoku startowego .
Domyślny potok będzie zawierać skrypt, który uruchamia polecenia echo. Nie są one potrzebne, aby można je było usunąć.
Dodaj zadanie AzureKeyVault, zastępując symbole zastępcze nazwą utworzonego wcześniej połączenia usługi i nazwą magazynu kluczy. Plik YAML powinien przypominać następujący fragment kodu:
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'SERVICE_CONNECTION_NAME' KeyVaultName: 'KEY_VAULT_NAME' SecretsFilter: '*' RunAsPreJob: false
Dodajmy następujące zadania, aby skopiować i opublikować nasz wpis tajny. Ten przykład jest przeznaczony tylko do celów demonstracyjnych i nie powinien być implementowany w środowisku produkcyjnym.
trigger: - main pool: vmImage: ubuntu-latest steps: - task: AzureKeyVault@2 displayName: Azure Key Vault inputs: azureSubscription: 'SERVICE_CONNECTION_NAME' KeyVaultName: 'KEY_VAULT_NAME' SecretsFilter: '*' RunAsPreJob: false - task: CmdLine@2 displayName: Create file inputs: script: 'echo $(SECRET_NAME) > secret.txt' - task: CopyFiles@2 displayName: Copy file inputs: Contents: secret.txt targetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 displayName: Publish Artifact inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'
Wybierz pozycję Zapisz i uruchom, a następnie wybierz go jeszcze raz, aby zatwierdzić zmiany i wyzwolić potok. Może zostać wyświetlony monit o zezwolenie potokowi na dostęp do zasobów platformy Azure, jeśli zostanie wyświetlony monit o wybranie pozycji Zezwalaj. Potok będzie musiał być zatwierdzany tylko raz.
Wybierz zadanie CmdLine, aby wyświetlić dzienniki.
Po zakończeniu przebiegu potoku wróć do podsumowania potoku i wybierz opublikowany artefakt.
Wybierz pozycję upuść>secret.txt, aby go pobrać.
Otwórz pobrany plik tekstowy. Plik tekstowy 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:
Jeśli utworzono nową organizację do hostowania projektu, zobacz , jak usunąć organizację, w przeciwnym razie usuń projekt.
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
.: 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:
az account set --subscription <YOUR_SUBSCRIPTION_ID>
az login
$spnObjectId = az ad sp show --id <YOUR_SERVICE_PRINCIPAL_ID>
az keyvault set-policy --name <YOUR_KEY_VAULT_NAME> --object-id $spnObjectId --secret-permissions get list