인증서를 사용하여 Batch로 Azure Key Vault에 안전하게 액세스

Warning

이 문서에 설명된 대로 Batch 계정 인증서는 더 이상 사용되지 않습니다. Azure Key Vault에 안전하게 액세스하려면 사용자가 할당한 관리 ID가 Key Vault에 액세스하도록 구성된 적절한 액세스 권한과 함께 풀 관리 ID를 사용합니다. Batch 노드에서 인증서를 프로비저닝해야 하는 경우 풀 관리 ID와 함께 사용 가능한 Azure Key Vault VM 확장을 활용하여 Batch 풀에서 인증서를 설치하고 관리하세요. Batch 풀에서 관리 ID를 사용하여 Azure Key Vault에서 인증서를 배포하는 방법에 대한 자세한 내용은 Batch 풀에서 자동 인증서 회전 사용을 참조하세요.

CloudServiceConfiguration 풀은 관리 ID 또는 Azure Key Vault VM 확장을 지정하는 기능을 제공하지 않으며 이 풀은 더 이상 사용되지 않습니다. 앞에서 언급한 대안을 제공하는 VirtualMachineConfiguration 풀로 마이그레이션해야 합니다.

이 문서에서는 Azure Key Vault에 저장된 자격 증명에 안전하게 액세스하도록 Batch 노드를 설정하는 방법을 알아봅니다.

Batch 노드에서 Azure Key Vault에 대해 인증하려면 다음이 필요합니다.

  • Microsoft Entra 자격 증명
  • 인증서
  • Batch 계정
  • 노드가 하나 이상 있는 Batch 풀

인증서 받기

인증서가 아직 없는 경우 New-SelfSignedCertificate PowerShell cmdlet을 사용하여 자체 서명된 새 인증서를 만듭니다.

서비스 주체 만들기

Key Vault에 대한 액세스 권한은 사용자 또는 서비스 사용자에게 부여됩니다. 프로그래밍 방식으로 Key Vault에 액세스하려면 이전 단계에서 만든 인증서와 서비스 주체를 사용합니다. 서비스 사용자는 Key Vault와 동일한 Microsoft Entra 테넌트에 있어야 합니다.

$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

응용 프로그램에 대한 URL은 Key Vault 액세스에만 사용하므로 중요하지 않습니다.

Key Vault에 대한 권한 부여

이전 단계에서 만든 서비스 사용자는 Key Vault에서 비밀을 검색할 수 있는 권한이 필요합니다. 권한은 Azure Portal 또는 아래의 PowerShell 명령을 통해 부여할 수 있습니다.

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

Batch 계정에 인증서 할당

Batch 풀을 만든 다음, 풀에서 인증서 탭으로 이동하여 만든 인증서를 할당합니다. 이제 인증서가 모든 Batch 노드에 있습니다.

다음으로 배치 계정에 인증서를 할당해야 합니다. 인증서를 계정에 할당하면 Batch가해당 인증서를 풀에 할당한 다음, 노드에도 할당할 수 있습니다. 이를 위한 가장 간단한 방법은 포털에서 Batch 계정으로 이동한 다음, 인증서로 이동하고 추가를 선택하는 것입니다. 이전에 생성한 .pfx 파일을 업로드하고 암호를 제공합니다. 완료되면 인증서가 목록에 추가되고 지문을 확인할 수 있습니다.

이제 Batch 풀을 만들 때 풀 내의 인증서 로 이동하여 해당 풀에 만든 인증서를 할당할 수 있습니다. 이렇게 하려면 저장소 위치에 대해 LocalMachine을 선택해야 합니다. 인증서는 풀의 모든 Batch 노드에 로드됩니다.

Azure PowerShell 설치

노드에서 PowerShell 스크립트를 사용하여 Key Vault에 액세스하려는 경우 Azure PowerShell 라이브러리를 설치해야 합니다. 노드에 WMF(Windows Management Framework) 5가 설치되어 있다면 install-module 명령으로 다운로드할 수 있습니다. WMF 5가 없는 노드를 사용하는 경우 가장 간단한 설치 방법은 Azure PowerShell .msi 파일을 Batch 파일과 번들로 묶은 다음, Batch 시작 스크립트의 첫 번째 부분으로 설치 관리자를 호출하는 것입니다. 자세한 내용은 다음 예제를 참조하세요.

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

Key Vault에 액세스합니다.

이제 Batch 노드에서 실행되는 스크립트에서 Key Vault에 액세스하기 위한 준비가 끝났습니다. 스크립트에서 Key Vault에 액세스하려면 스크립트가 인증서를 사용하여 Microsoft Entra ID에 대해 인증하기만 하면 됩니다. PowerShell에서 이 작업을 수행하려면 다음 예제 명령을 사용합니다. 지문, 앱 ID(서비스 사용자의 ID) 및 테넌트 ID(서비스 사용자가 위치한 테넌트)에 적절한 GUID를 지정합니다.

Add-AzureRmAccount -ServicePrincipal -CertificateThumbprint -ApplicationId

인증 후에는 일반적인 방식으로 KeyVault에 액세스합니다.

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

스크립트에서 사용하는 자격 증명입니다.

다음 단계