목록으로

Programming Notes

App Service Environment v3의 Root Cert API 공개 미리 보기 발표

Root Cert API란 무엇인가? Root Cert API를 통해 고객은 프로그래밍 방식으로 ASE에 루트 인증서 를 추가하여 앱 시작 시 사용할 수 있도록 할 수 있습니다. 루트 인증서 는 루트 인증 기관(CA)을 식별하는 공개 인증서입니다. 이는 보안 통신에서 신뢰를...

Root Cert API란 무엇인가?

Root Cert API를 통해 고객은 프로그래밍 방식으로 ASE에 루트 인증서를 추가하여 앱 시작 시 사용할 수 있도록 할 수 있습니다.

루트 인증서는 루트 인증 기관(CA)을 식별하는 공개 인증서입니다. 이는 보안 통신에서 신뢰를 구축하는 데 필수적입니다. ASE에 루트 인증서를 추가하면 해당 ASE 내에서 호스팅되는 모든 웹 앱에 루트 저장소에 설치됩니다. 이를 통해 앱은 사설 또는 엔터프라이즈 CA에서 발급한 인증서를 사용하는 내부 서비스 또는 API와 안전하게 통신할 수 있습니다.

이전에는 이 기능이 인증서 업로드 및 특수 앱 설정을 사용하는 임시 해결 방법을 통해 비공개 미리 보기로만 제공되었으며, 몇 가지 제한 사항이 있었습니다.

새로운 Root Cert API를 통해 이 기능을 공식적이고, 간소화되었으며, 크로스 플랫폼으로 만들고 있습니다. 여기에는 Windows 및 Linux 기반 앱 모두에 대한 완전한 지원이 포함됩니다.

이것이 왜 중요한가

이 기능은 서비스 간의 안전한 내부 통신에 의존하는 엔터프라이즈 고객과 개발자에게 중요합니다. 루트 인증서를 ASE 시작 프로세스에 직접 통합함으로써 다음을 수행할 수 있습니다.

  • ASE의 모든 앱에서 일관된 신뢰 설정을 보장합니다.
  • 앱별 구성의 필요성을 없앱니다.
  • 인증서 라이프사이클 관리를 단순화합니다.
  • 수동 단계 및 잠재적인 잘못된 구성을 줄여 보안 태세를 개선합니다.

작동 방식

Root Cert API는 루트 인증서를 관리할 수 있는 깔끔한 RESTful 인터페이스를 제공합니다. 추가되면 이러한 인증서는 추가 구성 없이 ASE에서 실행되는 앱의 신뢰 저장소에 시작 시 자동으로 삽입됩니다. 현재 이 기능은 Azure Portal에서 사용할 수 없지만 Azure CLI, ARM/Bicep 및 REST API와 함께 사용할 수 있습니다.

중요한 고려 사항

  • API/CLI/Terraform을 사용하여 인증서를 ASE에 추가할 수 있습니다.
  • 기존/실행 중인 앱이 있는 ASE에 인증서를 추가한 경우 인증서 저장소가 새 루트 인증서로 업데이트되도록 각 앱을 중지했다가 다시 시작해야 합니다. 앱을 개별적으로 중지했다가 다시 시작할 필요가 없도록 앱을 만들기 전에 모든 인증서를 추가하는 것이 좋습니다.
  • 공개 미리 보기 중에는 인증서를 추가하려면 만들기 명령에서 전체 인증서 BLOB을 제공해야 합니다. 현재는 .cer 파일을 업로드할 수 없습니다.

루트 인증서 추가

두 방법 모두 PUT 요청과 함께 본문을 제공해야 합니다. 구독 ID, 리소스 그룹 및 ASE 이름에 대한 자리 표시자를 바꿉니다. 그리고 인증서에 이름을 지정합니다. "blob"은 루트 인증서의 원시 인증서 BLOB입니다. 기존 앱이 있는 ASE에 인증서를 추가한 경우 인증서를 추가한 후 앱을 STOP했다가 START하는 것을 잊지 마십시오.

API
PUT subscriptions/<subscription>/resourceGroups/<resourceGroup>/providers/Microsoft.Web/hostingEnvironments/<AseName>/publicCertificates/<certName>?api-version=2024-04-01

Body: { "location": <location>, "properties": { "blob": <raw certificate blob>, "isRoot": true } }
CLI
az rest --method put \
--url https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/hostingEnvironments/{aseName}/publicCertificates/{certName}?api-version=2024-04-01 \
--body "{'location': '<locationName>', 'properties': {'blob': '<raw certificate blob>', 'isRoot': 'true'}}"
Terraform

terraform에서는 "schema_validation_enabled = false"를 포함해야 합니다. 이는 공개 미리 보기에 대한 제한 사항이며 이 기능을 일반적으로 사용할 수 있게 되면 제거할 예정입니다.

resource "azapi_resource" "<cert_name>" {
  type = "Microsoft.Web/hostingEnvironments/publicCertificates@2023-12-01"
  name = "<cert_name>"
  parent_id = "/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.Web/hostingEnvironments/<aseName>"
  body = jsonencode({
    properties = {
      blob = "<blob>"
      isRoot = true
    }
    kind = "string"
  })
  schema_validation_enabled = false
}

루트 인증서 제거

API
DELETE subscriptions/<subscription>/resourceGroups/<resourceGroup>/providers/Microsoft.Web/hostingEnvironments/<AseName>/publicCertificates/<certName>?api-version=2024-04-01
CLI
az rest --method delete \
--url https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/hostingEnvironments/{aseName}/publicCertificates/{certName}?api-version=2024-04-01

루트 인증서 확인

이름으로 인증서 가져오기:
API
GET subscriptions/<subscription>/resourceGroups/<resourceGroup>/providers/Microsoft.Web/hostingEnvironments/<AseName>/publicCertificates/<certName>?api-version=2024-04-01
CLI
az rest --method get \
--url https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/hostingEnvironments/{aseName}/publicCertificates/{certName}?api-version=2024-04-01
ASE의 모든 공개 인증서 가져오기:
API
GET subscriptions/<subscription>/resourceGroups/<resourceGroup>/providers/Microsoft.Web/hostingEnvironments/<AseName>/publicCertificates?api-version=2024-04-01
CLI
az rest --method get \
--url https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/hostingEnvironments/{aseName}/publicCertificates?api-version=2024-04-01

다음 단계

공개 미리 보기 기간 동안 여러분의 피드백을 간절히 기다리고 있습니다. 여러분의 의견은 일반 가용성이 되기 전에 경험을 개선하고 요구 사항을 충족하는 데 도움이 됩니다.

ASE에서 루트 인증서를 관리하는 더 나은 방법을 기다려왔다면 지금이 사용해 볼 때입니다.