다음을 통해 공유


Azure Container Apps에서 클라이언트 인증서 인증 구성

Azure Container Apps는 양방향 인증을 통해 컨테이너 앱에 액세스할 수 있는 클라이언트 인증서 인증(상호 TLS 또는 mTLS라고도 함)을 지원합니다. 이 문서에서는 Azure Container Apps에서 클라이언트 인증서 권한 부여를 구성하는 방법을 보여 줍니다.

클라이언트 인증서를 사용하면 TLS 인증서가 클라이언트와 컨테이너 앱 간에 교환되어 ID를 인증하고 트래픽을 암호화합니다. 클라이언트 인증서는 종종 "제로 트러스트" 보안 모델에서 조직 내에서 클라이언트 액세스 권한을 부여하는 데 사용됩니다.

예를 들어 중요한 데이터를 관리하는 컨테이너 앱에 클라이언트 인증서를 요구할 수도 있습니다.

Container Apps는 신뢰할 수 있는 CA(인증 기관)가 발급하거나 자체 서명된 경우 PKCS12 형식으로 클라이언트 인증서를 허용합니다.

클라이언트 인증서 권한 부여 구성

클라이언트 인증서에 대한 지원을 구성하려면 컨테이너 앱 템플릿에서 clientCertificateMode 속성을 설정하세요.

해당 속성은 다음 값 중 하나로 설정할 수 있습니다.

  • require: 컨테이너 앱에 대한 모든 요청에는 클라이언트 인증서가 필요합니다.
  • accept: 클라이언트 인증서는 선택 사항입니다. 클라이언트 인증서가 제공되지 않으면 요청이 계속 수락됩니다.
  • ignore: 클라이언트 인증서는 무시됩니다.

require 또는 accept가 설정된 경우 수신은 클라이언트 인증서를 컨테이너 앱에 전달합니다.

다음 ARM 템플릿 예제에서는 컨테이너 앱에 대한 모든 요청에 대해 클라이언트 인증서를 요구하도록 수신을 구성합니다.

{
  "properties": {
    "configuration": {
      "ingress": {
        "clientCertificateMode": "require"
      }
    }
  }
}

비고

인그레스 속성에서 clientCertificateMode을 직접 설정할 수 있습니다. CLI에서는 명시적 옵션으로 사용할 수 없지만 Azure CLI를 사용하여 앱을 패치할 수 있습니다.

다음 명령을 실행하기 전에, <>로 둘러싸인 자리 표시자를 여러분의 고유 값으로 바꿔야 합니다.

컨테이너 앱의 ARM(Azure Resource Manager) ID를 가져옵니다.

APP_ID=$(az containerapp show \
  --name <APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --query id \
  --output tsv)

앱에서 clientCertificateMode 속성을 패치합니다.

az rest \
  --method patch \
  --url "https://management.azure.com/$APP_ID?api-version=<API_VERSION>" \
  --body '{
    "properties": {
      "configuration": {
        "ingress": {
          "clientCertificateMode": "require"
        }
      }
    }
  }'

비고

이 기능을 지원하는 유효하고 안정적인 API 버전을 사용해야 합니다. 예를 들어 명령에서 <API_VERSION>을 2025-01-01 또는 지원되는 다른 버전으로 바꾸세요.

클라이언트 인증서 모드 및 헤더 형식

clientCertificateMode 은 인증서를 관리하기 위해 Container Apps에 제공해야 하는 항목에 따라 다릅니다.

  • require 설정되면 클라이언트가 인증서를 제공해야 합니다.
  • accept 설정되면 인증서는 선택 사항입니다. 클라이언트가 인증서를 제공하는 경우 헤더의 앱에 X-Forwarded-Client-Cert 세미콜론으로 구분된 목록으로 전달됩니다.

예제 X-Forwarded-Client-Cert 헤더 값

다음 예제는 앱이 받을 수 있는 헤더의 X-Forwarded-Client-Cert 샘플 값입니다.

Hash=<HASH_VALUE>;Cert="-----BEGIN CERTIFICATE-----<CERTIFICATE_VALUE>";Chain="-----BEGIN CERTIFICATE-----<CERTIFICATE_VALUE>";

헤더 필드 분석

분야 설명 사용 방법
Hash 클라이언트 인증서의 SHA-256 지문입니다. 지문을 사용하여 클라이언트 인증서를 식별하거나 유효성을 검사합니다.
Cert PEM 형식(단일 인증서)의 base64로 인코딩된 클라이언트 인증서입니다. 인증서를 구문 분석하여 주체 및 발급자와 같은 메타데이터를 검사합니다.
Chain 하나 이상의 PEM으로 인코딩된 중간 인증서입니다. 유효성 검사를 위해 완전 신뢰 체인을 빌드할 때 중간 인증서를 제공합니다.

다음 단계