다음을 통해 공유


Batch 풀에서 자동 인증서 순환 사용

자동으로 갱신할 수 있는 인증서를 사용하여 Batch 풀을 만들 수 있습니다. 이렇게 하려면 Azure Key Vault의 인증서에 액세스할 수 있는 사용자 할당 관리 ID를 사용하여 풀을 만들어야 합니다.

사용자 할당 ID 만들기

먼저 배치 계정과 동일한 테넌트에서 사용자가 할당한 관리 ID 만들기를 수행합니다. 이 관리 ID는 동일한 리소스 그룹 또는 동일한 구독에 있을 필요는 없습니다.

사용자가 할당한 관리 ID의 클라이언트 ID를 확인해야 합니다. 이 값은 나중에 필요합니다.

Azure Portal에서 사용자가 할당한 관리 ID의 클라이언트 ID를 보여 주는 스크린샷.

인증서 만들기

다음으로 인증서를 만들어 Azure Key Vault에 추가해야 합니다. 키 자격 증명 모음을 아직 만들지 않은 경우 먼저 키 자격 증명 모음을 만들어야 합니다. 지침은 빠른 시작: Azure Portal을 사용하여 Azure Key Vault에서 인증서 설정 및 검색을 참조하세요.

인증서를 만들 때 수명 작업 유형을 자동 갱신으로 설정하고 인증서를 갱신해야 하는 기간(일)을 지정해야 합니다.

Azure Portal 인증서 만들기 화면의 스크린샷.

인증서를 만든 후에는 비밀 식별자를 기록해 둡니다. 이 값은 나중에 필요합니다.

인증서의 비밀 식별자를 보여 주는 스크린샷.

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 확장 문서 링크를 참조하세요.

다음 단계