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.
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
- Dowiedz się więcej o usłudze Azure Key Vault.
- Zapoznaj się z punktem odniesienia zabezpieczeń platformy Azure dla usługi Batch.
- Dowiedz się więcej o funkcjach usługi Batch, takich jak konfigurowanie dostępu do węzłów obliczeniowych, korzystanie z węzłów obliczeniowych systemu Linux i używanie prywatnych punktów końcowych.