Key Vault 인증서를 사용한 TLS 종료

Azure Key Vault는 비밀, 키 및 TLS/SSL 인증서를 보호하는 데 사용할 수 있는 플랫폼 관리 비밀 저장소입니다. Azure Application Gateway는 HTTPS 지원 수신기에 연결된 서버 인증서에 대해 Key Vault와의 통합을 지원합니다. 이 지원은 Application Gateway v2 SKU로 제한됩니다.

Application Gateway는 TLS 종료를 위한 두 가지 모델을 제공합니다.

  • 수신기에 연결된 TLS/SSL 인증서를 제공합니다. 이 모델은 TLS 종료를 위해 Application Gateway에 TLS/SSL 인증서를 전달하는 일반적인 방법입니다.
  • HTTPS 지원 수신기를 만들 때 기존 Key Vault 인증서 또는 비밀에 대한 참조를 제공합니다.

Key Vault와 Application Gateway를 통합하면 다음과 같은 여러 이점이 제공됩니다.

  • TLS/SSL 인증서가 애플리케이션 개발 팀에서 직접 처리되지 않으므로 보다 강화된 보안 통합을 통해 별도의 보안 팀에서 다음을 수행할 수 있습니다.
    • Application Gateway를 설정합니다.
    • Application Gateway 수명 주기를 제어합니다.
    • Key Vault에 저장된 인증서에 액세스할 수 있도록 선택한 Application Gateway에 대한 사용 권한을 부여합니다.
  • Key Vault로 기존 인증서를 가져오도록 지원합니다. 또는 Key Vault API를 사용하여 신뢰할 수 있는 Key Vault 파트너와 함께 새 인증서를 만들고 관리할 수 있습니다.
  • Key Vault에 저장된 인증서의 자동 갱신을 지원합니다.

지원되는 인증서

Application Gateway는 현재 소프트웨어 유효성 검사 인증서만 지원합니다. HSM(하드웨어 보안 모듈)에서 검증된 인증서는 지원되지 않습니다.

Application Gateway가 Key Vault 인증서를 사용하도록 구성된 경우 해당 인스턴스는 Key Vault에서 인증서를 검색하고 TLS 종료를 위해 로컬로 설치합니다. 인스턴스는 갱신된 버전의 인증서(있는 경우)를 검색하기 위해 4시간 간격으로 Key Vault를 폴링합니다. 업데이트된 인증서가 있는 경우 HTTPS 수신기와 연결된 TLS/SSL 인증서가 자동으로 순환됩니다.

Application Gateway를 변경하면 Key Vault 대한 검사를 강제로 적용하여 새 버전의 인증서를 사용할 수 있는지 확인합니다. 여기에는 프런트 엔드 IP 구성, 수신기, 규칙, 백 엔드 풀, 리소스 태그 등에 대한 변경 내용이 포함되지만 이에 국한되지 않습니다. 업데이트된 인증서가 발견되면 새 인증서가 즉시 표시됩니다.

Application Gateway는 Key Vault에 있는 비밀 식별자를 사용하여 인증서를 참조합니다. Azure PowerShell, Azure CLI 또는 Azure Resource Manager의 경우, 버전을 지정하지 않는 비밀 식별자를 사용하는 것이 좋습니다. 이렇게 하면 Key Vault에서 새 버전을 사용할 수 있는 경우 Application Gateway가 인증서를 자동으로 순환합니다. 버전이 없는 비밀 URI의 예는 https://myvault.vault.azure.net/secrets/mysecret/입니다. 다음 섹션에 제공된 PowerShell 단계를 참조할 수 있습니다.

Azure Portal은 비밀이 아닌 KeyVault 인증서만 지원합니다. Application Gateway는 여전히 Key Vault 비밀 참조를 지원하지만 PowerShell, Azure CLI, API 및 ARM(Azure Resource Manager) 템플릿과 같은 비 포털 리소스를 통해서만 지원합니다.

다른 Azure 구독의 Key Vault에 대한 참조는 지원되지만 ARM 템플릿, Azure PowerShell, CLI, Bicep 등을 통해 구성해야 합니다. 구독 간 키 자격 증명 모음 구성은 현재 Azure Portal을 통해 Application Gateway에서 지원되지 않습니다.

Key Vault의 인증서 설정

TLS 종료의 경우 Application Gateway PFX(개인 정보 교환) 형식의 인증서만 지원합니다. 기존 인증서를 가져오거나 Key Vault에 새 인증서를 만들 수 있습니다. 오류가 발생하지 않도록 하려면 인증서의 상태가 Key Vault에서 사용함으로 설정되어 있는지 확인합니다.

통합의 작동 방식

Key Vault와 Application Gateway를 통합하려면 다음의 3단계 구성 프로세스가 필요합니다.

Diagram that shows three steps for integrating Application Gateway with Key Vault.

참고 항목

Key Vault와 Azure Application Gateway의 통합은 자격 증명 모음 액세스 정책과 Azure 역할 기반 액세스 제어 권한 모델을 모두 지원합니다.

사용자가 할당한 관리 ID 받기

Application Gateway는 관리 ID를 사용하여 Key Vault에서 인증서를 대신 검색합니다.

새 사용자가 할당한 관리 ID를 만들거나 통합과 함께 기존 ID를 다시 사용할 수 있습니다. 새로운 사용자가 할당한 관리 ID를 만들려면 Azure Portal을 사용하여 사용자가 할당한 관리 ID 만들기를 참조하세요.

사용자가 할당한 관리 ID를 Key Vault에 위임

Key Vault에서 사용자가 할당한 관리 ID를 사용하도록 액세스 정책을 정의합니다.

  1. Azure Portal에서 Key Vault로 이동합니다.

  2. 인증서가 포함된 Key Vault를 선택합니다.

  3. 권한 모델 자격 증명 모음 액세스 정책을 사용하는 경우: 액세스 정책을 선택하고, + 액세스 정책 추가를 선택하고, 비밀 권한을 위해 가져오기를 선택하고, 보안 주체 선택에 대해 사용자가 할당한 관리 ID를 선택합니다. 그런 다음 저장을 선택합니다.

    Azure 역할 기반 액세스 제어를 사용하는 경우 리소스에 관리 ID 액세스 할당 문서를 따르고 사용자가 할당한 관리 ID를 Key Vault에 대한 Key Vault 비밀 사용자 역할에 할당합니다.

Key Vault에 대한 방화벽 사용 권한 확인

2021년 3월 15일부터 Key Vault는 Azure Key Vault에 대한 인증에 사용자 관리 ID를 활용하여 Application Gateway를 신뢰할 수 있는 서비스로 인식합니다. 서비스 엔드포인트를 사용하고 Key Vault의 방화벽에 대해 신뢰할 수 있는 서비스 옵션을 사용하도록 설정하면 Azure에서 보안 네트워크 경계를 빌드할 수 있습니다. 모든 네트워크(인터넷 트래픽 포함)에서 Key Vault로의 트래픽에 대한 액세스를 거부할 수 있지만 구독 중인 Application Gateway 리소스에 대해 Key Vault를 여전히 액세스 가능하게 만들 수 있습니다.

제한된 Key Vault를 사용하는 경우 Application Gateway를 구성하기 위한 다음 단계를 사용하여 방화벽 및 가상 네트워크를 사용합니다.

Key Vault가 프라이빗 엔드포인트를 사용하도록 설정한 경우에는 1-3단계가 필요하지 않습니다. 애플리케이션 게이트웨이는 프라이빗 IP 주소를 사용하여 Key Vault에 액세스할 수 있습니다.

Important

프라이빗 엔드포인트를 사용하여 Key Vault에 액세스하는 경우 참조된 Key Vault에 대한 해당 레코드를 포함하는 privatelink.vaultcore.azure.net 프라이빗 DNS 영역을 Application Gateway를 포함하는 가상 네트워크에 연결해야 합니다. 사용자 지정 DNS 서버는 Azure DNS에서 제공된 확인기 대신 가상 네트워크에서 계속 사용할 수 있지만 프라이빗 DNS 영역도 가상 네트워크에 연결된 상태를 유지해야 합니다.

  1. Azure Portal의 Key Vault에서 네트워킹을 선택합니다.

  2. 방화벽 및 가상 네트워크 탭에서 선택한 네트워크를 선택합니다.

  3. 가상 네트워크의 경우 + 기존 가상 네트워크 추가를 선택한 다음, Application Gateway 인스턴스에 대한 가상 네트워크 및 서브넷을 추가합니다. 메시지가 표시되면 현재 ‘Microsoft.KeyVault’ 서비스 엔드포인트를 구성하지 않음 확인란의 선택을 취소하여 서브넷에서 Microsoft.KeyVault 서비스 엔드포인트가 사용하도록 설정되어 있는지 확인합니다.

  4. 를 선택하여 신뢰할 수 있는 서비스가 Key Vault의 방화벽을 우회하도록 허용합니다.

    Screenshot that shows selections for configuring Application Gateway to use firewalls and virtual networks.

참고 항목

Azure CLI 또는 PowerShell을 사용하거나 Azure Portal에서 배포된 Azure 애플리케이션을 통해 ARM 템플릿을 사용하여 Application Gateway 인스턴스를 배포하는 경우 SSL 인증서는 Key Vault에 Base64 인코딩 PFX 파일로 저장됩니다. 배포 중에 Azure Key Vault를 사용하여 보안 매개 변수 값 전달의 단계를 완료해야 합니다.

특히 enabledForTemplateDeploymenttrue로 설정하는 것이 중요합니다. 인증서에는 암호가 있을 수도 없을 수도 있습니다. 암호가 있는 인증서의 경우 다음 예제에서는 App Gateway에 대한 ARM 템플릿 구성의 properties에서 sslCertificates 항목의 가능한 구성을 보여 줍니다.

"sslCertificates": [
     {
         "name": "appGwSslCertificate",
         "properties": {
             "data": "[parameters('appGatewaySSLCertificateData')]",
            "password": "[parameters('appGatewaySSLCertificatePassword')]"
        }
    }
]

appGatewaySSLCertificateDataappGatewaySSLCertificatePassword 값은 동적 ID로 비밀 참조에 설명된 것처럼 에서 조회됩니다. parameters('secretName')부터 뒤쪽으로 참조를 따라 이동하면서 조회가 진행되는 방법을 확인합니다. 인증서에 암호가 없는 경우 password 항목을 생략합니다.

Application Gateway 수신기 구성

Key Vault 권한 자격 증명 모음 액세스 정책 모델

Azure Portal에서 Application Gateway로 이동하여 수신기 탭을 선택합니다. 수신기 추가(또는 기존 수신기 선택)를 선택하고 프로토콜에 대한 HTTPS를 지정합니다.

인증서 선택에서 새로 만들기를 선택한 다음 Https 설정 아래의 Key Vault에서 인증서 선택을 선택합니다.

인증서 이름에 Key Vault에 참조할 인증서의 이름을 입력합니다. 관리 ID, Key Vault 및 인증서를 선택합니다.

선택한 후 추가(만드는 경우) 또는 저장(편집하는 경우)을 선택하여 참조되는 Key Vault 인증서를 수신기에 적용합니다.

Key Vault Azure 역할 기반 액세스 제어 권한 모델

Application Gateway는 역할 기반 액세스 제어 권한 모델을 통해 Key Vault에 참조되는 인증서를 지원합니다. Key Vault를 참조하는 처음 몇 단계는 ARM 템플릿, Bicep, CLI 또는 PowerShell을 통해 완료해야 합니다.

참고 항목

역할 기반 액세스 제어 권한 모델의 적용을 받는 Azure Key Vault 인증서 지정은 포털을 통해 지원되지 않습니다.

이 예제에서는 PowerShell을 사용하여 새 Key Vault 비밀을 참조합니다.

# Get the Application Gateway we want to modify
$appgw = Get-AzApplicationGateway -Name MyApplicationGateway -ResourceGroupName MyResourceGroup
# Specify the resource id to the user assigned managed identity - This can be found by going to the properties of the managed identity
Set-AzApplicationGatewayIdentity -ApplicationGateway $appgw -UserAssignedIdentityId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity"
# Get the secret ID from Key Vault
$secret = Get-AzKeyVaultSecret -VaultName "MyKeyVault" -Name "CertificateName"
$secretId = $secret.Id.Replace($secret.Version, "") # Remove the secret version so Application Gateway uses the latest version in future syncs
# Specify the secret ID from Key Vault 
Add-AzApplicationGatewaySslCertificate -KeyVaultSecretId $secretId -ApplicationGateway $appgw -Name $secret.Name
# Commit the changes to the Application Gateway
Set-AzApplicationGateway -ApplicationGateway $appgw

명령이 실행되면 Azure Portal에서 Application Gateway로 이동하여 수신기 탭을 선택할 수 있습니다. 수신기 추가(또는 기존 항목 선택)를 클릭하고 HTTPS에 프로토콜을 지정합니다.

인증서 선택에서 이전 단계에서 명명된 인증서를 선택합니다. 선택한 후 추가(만드는 경우) 또는 저장(편집하는 경우)을 선택하여 참조되는 Key Vault 인증서를 수신기에 적용합니다.

Key Vault 오류 조사 및 해결

참고 항목

Key Vault 리소스를 변경하거나 이에 대한 액세스를 취소할 때 애플리케이션 게이트웨이 리소스에 미치는 영향을 고려하는 것이 중요합니다. 애플리케이션 게이트웨이가 연결된 키 자격 증명 모음에 액세스하거나 인증서 개체를 찾을 수 없는 경우 애플리케이션 게이트웨이는 자동으로 해당 수신기를 사용하지 않음 상태로 설정합니다.

애플리케이션 게이트웨이에 대한 Resource Health를 확인하여 이 사용자 기반 이벤트를 식별할 수 있습니다. 자세히 알아보기.

Azure Application Gateway는 4시간 간격으로 Key Vault에서 갱신된 인증서 버전을 폴링만 하는 것이 아닙니다. 오류를 기록하고 Azure Advisor와 통합되어 수정에 대한 권장 사항과 함께 잘못된 구성을 표시하기도 합니다.

  1. Azure Portal에 로그인
  2. Advisor 선택
  3. 왼쪽 메뉴에서 운영 우수성 범주를 선택합니다.
  4. 게이트웨이에서 이 문제가 발생하는 경우 Application Gateway에 대한 Azure Key Vault 문제 해결이라는 권장 사항을 찾을 수 있습니다. 위의 드롭다운 옵션에서 올바른 구독이 선택되어 있는지 확인합니다.
  5. 이를 선택하여 오류 세부 정보, 연결된 키 자격 증명 모음 리소스 및 문제 해결 가이드를 확인하여 정확한 문제를 해결합니다.

Azure Advisor 또는 Resource Health를 통해 이러한 이벤트를 식별하면 Key Vault의 구성 문제를 신속하게 해결할 수 있습니다. Azure AdvisorResource Health 경고를 활용하여 문제가 감지될 때 정보를 계속 알고 있는 것이 좋습니다.

Advisor 경고의 경우 표시된 권장 사항 유형에서 "Application Gateway에 대한 Azure Key Vault 문제 해결"을 사용합니다.
Diagram that shows steps for Advisor alert.

다음과 같이 리소스 상태 경고를 구성할 수 있습니다.
Diagram that shows steps for Resource health alert.

다음 단계

Azure PowerShell을 사용하여 Key Vault 인증서로 TLS 종료 구성