Použití certifikátů k bezpečnému přístupu ke službě Azure Key Vault pomocí služby Batch

Upozorňující

Certifikáty účtů Batch, jak je podrobně popsáno v tomto článku, jsou zastaralé. Pokud chcete bezpečně přistupovat ke službě Azure Key Vault, jednoduše použijte spravované identity fondu s odpovídajícími přístupovými oprávněními nakonfigurovanými pro spravovanou identitu přiřazenou uživatelem pro přístup ke službě Key Vault. Pokud potřebujete zřídit certifikáty na uzlech Batch, využijte dostupné rozšíření virtuálního počítače služby Azure Key Vault společně se spravovanou identitou fondu k instalaci a správě certifikátů ve fondu Batch. Další informace o nasazení certifikátů ze služby Azure Key Vault se spravovanou identitou ve fondech Batch najdete v tématu Povolení automatické obměny certifikátů ve fondu Batch.

V tomto článku se dozvíte, jak nastavit uzly Batch s certifikáty pro bezpečný přístup k přihlašovacím údajům uloženým ve službě Azure Key Vault.

Pokud se chcete ověřit ve službě Azure Key Vault z uzlu Batch, potřebujete:

  • Přihlašovací údaje Microsoft Entra
  • Certifikát
  • Účet Batch
  • Fond Batch s alespoň jedním uzlem

Získání certifikátu

Pokud ještě certifikát nemáte, vytvořte nový certifikát podepsaný svým držitelem pomocí rutiny New-SelfSignedCertificate PowerShellu.

Vytvoření instančního objektu služby

Přístup ke službě Key Vault se uděluje uživateli nebo instančnímu objektu. Pokud chcete získat přístup ke službě Key Vault prostřednictvím kódu programu, použijte instanční objekt s certifikátem, který jste vytvořili v předchozím kroku. Instanční objekt musí být ve stejném tenantovi Microsoft Entra jako 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 pro aplikaci nejsou důležité, protože je používáme jenom pro přístup ke službě Key Vault.

Udělení práv ke službě Key Vault

Instanční objekt vytvořený v předchozím kroku potřebuje oprávnění k načtení tajných kódů ze služby Key Vault. Oprávnění je možné udělit prostřednictvím webu Azure Portal nebo pomocí následujícího příkazu PowerShellu.

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

Přiřazení certifikátu k účtu Batch

Vytvořte fond Batch a pak přejděte na kartu certifikátu ve fondu a přiřaďte certifikát, který jste vytvořili. Certifikát je teď na všech uzlech Batch.

Dále přiřaďte certifikát k účtu Batch. Přiřazením certifikátu k účtu ji služba Batch přiřadí fondům a pak uzlům. Nejjednodušší způsob, jak to udělat, je přejít na účet Batch na portálu, přejít na Certifikáty a vybrat Přidat. .pfx Nahrajte soubor, který jste vygenerovali dříve, a zadejte heslo. Po dokončení se certifikát přidá do seznamu a kryptografický otisk můžete ověřit.

Když teď vytvoříte fond Batch, můžete přejít na Certifikáty v rámci fondu a přiřadit certifikát, který jste vytvořili do daného fondu. Když to uděláte, ujistěte se, že jste pro umístění úložiště vybrali LocalMachine . Certifikát se načte na všech uzlech Batch ve fondu.

Instalace prostředí Azure PowerShell

Pokud máte v úmyslu přistupovat ke službě Key Vault pomocí skriptů PowerShellu na uzlech, budete potřebovat nainstalovanou knihovnu Azure PowerShellu. Pokud jsou na uzlech nainstalované rozhraní WMF (Windows Management Framework) 5, můžete ho stáhnout pomocí příkazu install-module. Pokud používáte uzly, které nemají WMF 5, nejjednodušší způsob, jak ho nainstalovat, je seskupit soubor Azure PowerShellu .msi se soubory Batch a poté volat instalační program jako první část spouštěcího skriptu batch. Podrobnosti najdete v tomto příkladu:

$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
}

Přístup ke službě Key Vault

Teď jste připraveni přistupovat ke službě Key Vault ve skriptech spuštěných na uzlech Batch. Pokud chcete získat přístup ke službě Key Vault ze skriptu, stačí, když se váš skript pomocí certifikátu ověří v Microsoft Entra ID. K tomu v PowerShellu použijte následující ukázkové příkazy. Zadejte odpovídající identifikátor GUID pro kryptografický otisk, ID aplikace (ID instančního objektu) a ID tenanta (tenant, ve kterém existuje váš instanční objekt).

Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId

Po ověření získejte přístup ke službě KeyVault jako obvykle.

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

Toto jsou přihlašovací údaje, které se mají použít ve skriptu.

Další kroky