Udostępnij za pośrednictwem


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.

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

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

  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 uwierzytelniania

Tworzenie tożsamości zarządzanej przypisanej przez użytkownika

  1. Zaloguj się do witryny Azure Portal, a następnie wyszukaj usługę Tożsamości zarządzane na pasku wyszukiwania.

  2. 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.
  3. Po zakończeniu wybierz pozycję Przejrzyj i utwórz .

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

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

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

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

  3. W obszarze Uprawnienia wpisu tajnego zaznacz pola wyboru Pobierz i Lista .

  4. 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ą.

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

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

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. W obszarze Typ tożsamości wybierz pozycję Tożsamość zarządzana z menu rozwijanego.

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

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

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

  8. 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ą.

  9. Wybierz pozycję Zapisz , aby zweryfikować i utworzyć połączenie usługi.

    Zrzut ekranu przedstawiający sposób tworzenia połączenia usługi ARM tożsamości zarządzanej.

Uzyskiwanie dostępu do wpisów tajnych magazynu kluczy z 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ę Azure Repos Git (YAML), a następnie wybierz repozytorium.

  4. Wybierz szablon potoku startowego .

  5. Domyślny potok będzie zawierać skrypt, który uruchamia polecenia echo. Nie są one potrzebne, aby można je było usunąć.

  6. 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
    
  7. 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'
    
  8. 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.

  9. Wybierz zadanie CmdLine, aby wyświetlić dzienniki.

    Zrzut ekranu przedstawiający dzienniki zadań wiersza polecenia.

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

    Zrzut ekranu przedstawiający opublikowany artefakt na karcie podsumowania.

  11. Wybierz pozycję upuść>secret.txt, aby go pobrać.

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

  12. 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:

  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

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