자동으로 갱신할 수 있는 인증서를 사용하여 Batch 풀을 만들 수 있습니다. 이렇게 하려면 Azure Key Vault의 인증서에 액세스할 수 있는 사용자 할당 관리 ID를 사용하여 풀을 만들어야 합니다.
사용자 할당 ID 만들기
먼저 배치 계정과 동일한 테넌트에서 사용자가 할당한 관리 ID 만들기를 수행합니다. 이 관리 ID는 동일한 리소스 그룹 또는 동일한 구독에 있을 필요는 없습니다.
사용자가 할당한 관리 ID의 클라이언트 ID를 확인해야 합니다. 이 값은 나중에 필요합니다.
인증서 만들기
다음으로 인증서를 만들어 Azure Key Vault에 추가해야 합니다. 키 자격 증명 모음을 아직 만들지 않은 경우 먼저 키 자격 증명 모음을 만들어야 합니다. 지침은 빠른 시작: Azure Portal을 사용하여 Azure Key Vault에서 인증서 설정 및 검색을 참조하세요.
인증서를 만들 때 수명 작업 유형을 자동 갱신으로 설정하고 인증서를 갱신해야 하는 기간(일)을 지정해야 합니다.
인증서를 만든 후에는 비밀 식별자를 기록해 둡니다. 이 값은 나중에 필요합니다.
Azure Key Vault에서 액세스 정책 추가
키 자격 증명 모음에서 사용자가 할당한 관리 ID가 비밀 및 인증서에 액세스할 수 있게 하는 Key Vault 액세스 정책을 할당합니다. 자세한 지침은 Azure Portal을 사용하여 Key Vault 액세스 정책 할당을 참조하세요.
사용자가 할당한 관리 ID를 사용하여 Batch 풀 만들기
Batch .NET 관리 라이브러리를 사용하여 관리 ID로 Batch 풀을 만듭니다. 자세한 내용은 Batch 풀의 관리 ID 구성을 참조하세요.
팁
기존 풀은 Key Vault VM 확장으로 업데이트할 수 없습니다. 풀을 다시 만들어야 합니다.
다음 예제에서는 Batch 관리 REST API를 사용하여 풀을 만듭니다.
에는 인증서의 observedCertificates를 사용하고 에는 관리 ID의 msiClientId를 사용하여 아래 예제 데이터를 바꾸어야 합니다.
REST API URI
PUT https://management.azure.com/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupName>/providers/Microsoft.Batch/batchAccounts/<batchaccountname>/pools/<poolname>?api-version=2021-01-01
Linux 노드에 대한 요청 본문
{
"name": "test2",
"type": "Microsoft.Batch/batchAccounts/pools",
"properties": {
"vmSize": "STANDARD_DS2_V2",
"taskSchedulingPolicy": {
"nodeFillType": "Pack"
},
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "canonical",
"offer": "ubuntuserver",
"sku": "20.04-lts",
"version": "latest"
},
"nodeAgentSkuId": "batch.node.ubuntu 20.04",
"extensions": [
{
"name": "KVExtensions",
"type": "KeyVaultForLinux",
"publisher": "Microsoft.Azure.KeyVault",
"typeHandlerVersion": "3.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": "300",
"certificateStoreLocation": "/var/lib/waagent/Microsoft.Azure.KeyVault",
"requireInitialSync": true,
"observedCertificates": [
"https://testkvwestus2s.vault.azure.net/secrets/authcertforumatesting/8f5f3f491afd48cb99286ba2aacd39af"
]
},
"authenticationSettings": {
"msiEndpoint": "http://169.254.169.254/metadata/identity",
"msiClientId": "b9f6dd56-d2d6-4967-99d7-8062d56fd84c"
}
}
}
]
}
},
"scaleSettings": {
"fixedScale": {
"targetDedicatedNodes": 1,
"resizeTimeout": "PT15M"
}
}
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
}
}
}
Windows 노드에 대한 요청 본문
{
"name": "test2",
"type": "Microsoft.Batch/batchAccounts/pools",
"properties": {
"vmSize": "STANDARD_DS2_V2",
"taskSchedulingPolicy": {
"nodeFillType": "Pack"
},
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "microsoftwindowsserver",
"offer": "windowsserver",
"sku": "2022-datacenter",
"version": "latest"
},
"nodeAgentSkuId": "batch.node.windows amd64",
"extensions": [
{
"name": "KVExtensions",
"type": "KeyVaultForWindows",
"publisher": "Microsoft.Azure.KeyVault",
"typeHandlerVersion": "3.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": "300",
"requireInitialSync": true,
"observedCertificates": [
{
"url": "https://testkvwestus2s.vault.azure.net/secrets/authcertforumatesting/8f5f3f491afd48cb99286ba2aacd39af",
"certificateStoreLocation": "LocalMachine",
"keyExportable": true
}
]
},
"authenticationSettings": {
"msiEndpoint": "http://169.254.169.254/metadata/identity",
"msiClientId": "b9f6dd56-d2d6-4967-99d7-8062d56fd84c"
}
},
}
]
}
},
"scaleSettings": {
"fixedScale": {
"targetDedicatedNodes": 1,
"resizeTimeout": "PT15M"
}
},
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
}
}
}
인증서 유효성을 검사합니다.
인증서가 성공적으로 배포되었는지 확인하려면 컴퓨팅 노드에 로그인합니다. 다음과 비슷한 결과가 나타나야 합니다.
root@74773db5fe1b42ab9a4b6cf679d929da000000:/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-1.0.1363.13/status# cat 1.status
[{"status":{"code":0,"formattedMessage":{"lang":"en","message":"Successfully started Key Vault extension service. 2021-03-03T23:12:23Z"},"operation":"Service start.","status":"success"},"timestampUTC":"2021-03-03T23:12:23Z","version":"1.0"}]root@74773db5fe1b42ab9a4b6cf679d929da000000:/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-1.0.1363.13/status#
Key Vault 확장 문제 해결
Key Vault 확장이 잘못 구성된 경우 컴퓨팅 노드가 사용 가능한 상태일 수 있습니다. Key Vault 확장 오류를 해결하려면 일시적으로 requireInitialSync를 false로 설정하고 풀을 다시 배포한 다음 컴퓨팅 노드가 유휴 상태가 되고 컴퓨팅 노드에 로그인하여 KeyVault 확장 로그에서 오류를 확인하고 구성 문제를 해결할 수 있습니다. 자세한 내용을 보려면 다음 Key Vault 확장 문서 링크를 참조하세요.
다음 단계
- Azure 리소스에 대한 관리 ID에 대해 자세히 알아봅니다.
- 사용자 관리 ID에서 고객 관리형 키를 사용하는 방법에 대해 알아봅니다.