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

Ostrzeżenie

Certyfikaty konta Batch opisane w tym artykule są wycofane. Aby bezpiecznie uzyskać dostęp do Azure Key Vault, użyj 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 Key Vault. Jeśli musisz wdrożyć certyfikaty w węzłach Batch, użyj dostępnego rozszerzenia Azure Key Vault dla maszyn wirtualnych w połączeniu z tożsamością zarządzaną puli, aby instalować certyfikaty w puli 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.

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

Aby uwierzytelnić się w Azure Key Vault z węzła usługi Batch, potrzebne są następujące elementy:

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

Uzyskaj certyfikat

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

Utwórz kierownika usługi

Dostęp do Key Vault jest udzielany użytkownikowi lub jednostce usługi. Aby uzyskać dostęp do usługi Key Vault programistycznie, użyj nazwy głównej usługi z certyfikatem utworzonym w poprzednim kroku. Jednostka usługi musi znajdować się w tej samej dzierżawie Microsoft Entra co 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 Key Vault dostępu.

Udzielanie praw do Key Vault

Jednostka usługi utworzona w poprzednim kroku potrzebuje uprawnień do pobierania sekretów z usługi Key Vault. Uprawnienie można udzielić za pośrednictwem portalu Azure lub za pomocą 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 Certyfikaty w tej 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 wczytywany do wszystkich węzłów usługi Batch w puli.

Instalowanie programu Azure PowerShell

Jeśli planujesz uzyskiwać dostęp do usługi Key Vault za pomocą skryptów programu PowerShell na swoich węzłach, musisz mieć zainstalowaną bibliotekę 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 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
}

Dostęp do Key Vault

Teraz możesz uzyskać dostęp do usługi Key Vault w skryptach uruchomionych na węzłach usługi Batch. Aby uzyskać dostęp do Key Vault ze skryptu, wystarczy, aby skrypt uwierzytelnił się w 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 dla odcisku palca, identyfikatora aplikacji (identyfikatora nazwy głównej usługi) oraz identyfikatora dzierżawy (dzierżawy, w której istnieje nazwa główna 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 dane uwierzytelniające, których należy użyć w skrypcie.

Następne kroki