Udostępnij za pośrednictwem


Bezpieczne uzyskiwanie dostępu do usługi Azure Key Vault za pomocą usługi Batch przy użyciu certyfikatów

Ostrzeżenie

Certyfikaty konta usługi Batch zgodnie z opisem w tym artykule są przestarzałe. Aby bezpiecznie uzyskać dostęp do usługi Azure Key Vault, wystarczy użyć tożsamości zarządzanych puli z odpowiednimi uprawnieniami dostępu skonfigurowanymi dla tożsamości zarządzanej przypisanej przez użytkownika w celu uzyskania dostępu do usługi Key Vault. Jeśli potrzebujesz aprowizować certyfikaty w węzłach usługi Batch, skorzystaj z dostępnego rozszerzenia maszyny wirtualnej usługi Azure Key Vault w połączeniu z tożsamością zarządzaną puli, aby zainstalować certyfikaty w puli usługi Batch i zarządzać nimi. Aby uzyskać więcej informacji na temat wdrażania certyfikatów z usługi Azure Key Vault z tożsamością zarządzaną w pulach usługi Batch, zobacz Włączanie automatycznego obracania certyfikatów w puli usługi Batch.

CloudServiceConfiguration Pule nie zapewniają możliwości określenia tożsamości zarządzanej lub rozszerzenia maszyny wirtualnej usługi Azure Key Vault, a te pule są przestarzałe. Należy przeprowadzić migrację do VirtualMachineConfiguration pul, które zapewniają wyżej wymienione alternatywy.

W tym artykule dowiesz się, jak skonfigurować węzły usługi Batch z certyfikatami w celu bezpiecznego uzyskiwania dostępu do poświadczeń przechowywanych w usłudze Azure Key Vault.

Do uwierzytelniania w usłudze Azure Key Vault z węzła usługi Batch potrzebne są następujące elementy:

  • Poświadczenie entra firmy Microsoft
  • Certyfikat
  • Konto usługi Batch
  • Pula usługi Batch z co najmniej jednym węzłem

Uzyskiwanie certyfikatu

Jeśli nie masz jeszcze certyfikatu, użyj polecenia cmdlet New-SelfSignedCertificate programu PowerShell, aby utworzyć nowy certyfikat z podpisem własnym.

Tworzenie jednostki usługi

Dostęp do usługi Key Vault jest udzielany użytkownikowi lub jednostce usługi. Aby programowo uzyskać dostęp do usługi Key Vault, użyj jednostki usługi z certyfikatem utworzonym w poprzednim kroku. Jednostka usługi musi znajdować się w tej samej dzierżawie firmy Microsoft co usługa Key Vault.

$now = [System.DateTime]::Parse("2020-02-10")
# Set this to the expiration date of the certificate
$expirationDate = [System.DateTime]::Parse("2021-02-10")
# Point the script at the cer file you created $cerCertificateFilePath = 'c:\temp\batchcertificate.cer'
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cer.Import($cerCertificateFilePath)
# Load the certificate into memory
$credValue = [System.Convert]::ToBase64String($cer.GetRawCertData())
# Create a new AAD application that uses this certificate
$newADApplication = New-AzureRmADApplication -DisplayName "Batch Key Vault Access" -HomePage "https://batch.mydomain.com" -IdentifierUris "https://batch.mydomain.com" -certValue $credValue -StartDate $now -EndDate $expirationDate
# Create new AAD service principal that uses this application
$newAzureAdPrincipal = New-AzureRmADServicePrincipal -ApplicationId $newADApplication.ApplicationId

Adresy URL aplikacji nie są ważne, ponieważ używamy ich tylko do uzyskiwania dostępu do usługi Key Vault.

Udzielanie praw do usługi Key Vault

Jednostka usługi utworzona w poprzednim kroku wymaga uprawnień do pobierania wpisów tajnych z usługi Key Vault. Uprawnienia można udzielić za pośrednictwem witryny Azure Portal lub poniższego polecenia programu PowerShell.

Set-AzureRmKeyVaultAccessPolicy -VaultName 'BatchVault' -ServicePrincipalName '"https://batch.mydomain.com' -PermissionsToSecrets 'Get'

Przypisywanie certyfikatu do konta usługi Batch

Utwórz pulę usługi Batch, a następnie przejdź do karty certyfikatu w puli i przypisz utworzony certyfikat. Certyfikat znajduje się teraz we wszystkich węzłach usługi Batch.

Następnie przypisz certyfikat do konta usługi Batch. Przypisanie certyfikatu do konta umożliwia usłudze Batch przypisanie go do pul, a następnie do węzłów. Najprostszym sposobem wykonania tej czynności jest przejście do konta usługi Batch w portalu, przejście do pozycji Certyfikaty i wybranie pozycji Dodaj. .pfx Przekaż wygenerowany wcześniej plik i podaj hasło. Po zakończeniu certyfikat zostanie dodany do listy i będzie można zweryfikować odcisk palca.

Teraz po utworzeniu puli usługi Batch możesz przejść do obszaru Certyfikaty w puli i przypisać utworzony certyfikat do tej puli. W tym celu upewnij się, że wybrano pozycję LocalMachine dla lokalizacji sklepu. Certyfikat jest ładowany na wszystkich węzłach usługi Batch w puli.

Instalowanie programu Azure PowerShell

Jeśli planujesz dostęp do usługi Key Vault przy użyciu skryptów programu PowerShell w węzłach, potrzebna jest biblioteka programu Azure PowerShell. Jeśli węzły mają zainstalowany program Windows Management Framework (WMF) 5, możesz użyć polecenia install-module, aby go pobrać. Jeśli używasz węzłów, które nie mają programu WMF 5, najprostszym sposobem jego zainstalowania jest łączenie pliku programu Azure PowerShell .msi z plikami usługi Batch, a następnie wywołanie instalatora jako pierwszej części skryptu uruchamiania usługi Batch. Zobacz ten przykład, aby uzyskać szczegółowe informacje:

$psModuleCheck=Get-Module -ListAvailable -Name Azure -Refresh
if($psModuleCheck.count -eq 0) {
    $psInstallerPath = Join-Path $downloadPath "azure-powershell.3.4.0.msi" Start-Process msiexec.exe -ArgumentList /i, $psInstallerPath, /quiet -wait
}

Uzyskiwanie dostępu do usługi Key Vault

Teraz możesz uzyskać dostęp do usługi Key Vault w skryptach uruchomionych w węzłach usługi Batch. Aby uzyskać dostęp do usługi Key Vault ze skryptu, wystarczy, aby skrypt uwierzytelnił się w usłudze Microsoft Entra ID przy użyciu certyfikatu. Aby to zrobić w programie PowerShell, użyj następujących przykładowych poleceń. Określ odpowiedni identyfikator GUID odcisku palca, identyfikator aplikacji (identyfikator jednostki usługi) i identyfikator dzierżawy (dzierżawę, w której istnieje jednostka usługi).

Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId

Po uwierzytelnieniu uzyskaj dostęp do usługi KeyVault w zwykły sposób.

$adminPassword=Get-AzureKeyVaultSecret -VaultName BatchVault -Name batchAdminPass

Są to poświadczenia, które mają być używane w skry skryptzie.

Następne kroki