풀 수준에서 상호 TLS 인증 구성

백엔드 서버에 연결할 때 백엔드 서버 인증서를 확인하고 클라이언트 인증서를 제시하도록, 풀 수준에서 상호 TLS ( mTLS ) 인증을 구성하십시오.

시작하기 전에

풀 수준에서 인증을 구성하기 전에 다음 사항이 준비되어 있는지 확인하십시오:

  • mTLS 를 지원하는 프로필을 가진 애플리케이션 로드 밸런서( mtls_supported 속성을 확인하세요)
  • HTTPS 프로토콜로 구성된 풀
  • (선택 사항) 백엔드 서버 인증서를 확인하기 위해 Secrets Manager 에 저장된, PEM 형식의 유효한 CA 인증서
  • (선택 사항) 백엔드 서버에 제시하기 위해 Secrets Manager 에 저장된, PEM 형식의 개인 키가 포함된 유효한 클라이언트 인증서
  • 에서 로드 밸런서를 관리하고 인증서에 액세스하기 위한 적절한 IAM 권한은 다음과 같습니다. Secrets Manager

mTLS 의 풀 수준 인증 이해하기

풀 수준 인증은 로드 밸런서와 백엔드 서버 간의 연결을 보호하기 위해 다음과 같은 두 가지 별개의 기능을 제공합니다:

서버 인증
구성된 CA 인증서와 대조하여 백엔드 서버의 인증서를 검증함으로써 해당 서버의 신원을 확인합니다. 이를 통해 로드 밸런서가 신뢰할 수 있는 백엔드 서버에만 연결되도록 보장합니다.
클라이언트 인증
백엔드 인프라에서 인증된 연결( mTLS )이 필요한 경우, 로드 밸런서에서 백엔드 서버에 클라이언트 인증서를 제시합니다. 이를 통해 백엔드 서버는 로드 밸런서의 신원을 확인할 수 있습니다.

이러한 기능은 보안 요구 사항에 따라 개별적으로 또는 함께 구성할 수 있습니다.

mTLS 서버 인증 구성

서버 인증은 다음 두 가지 구성 요소로 이루어집니다:

인증서 확인
백엔드 서버 인증서 검증을 활성화하거나 비활성화하는 부울 플래그입니다. 이 기능이 활성화되면, 로드 밸런서는 TLS 핸드셰이크 과정에서 백엔드 서버의 인증서를 검증합니다.
인증 기관(CA) 인증서
백엔드 서버 인증서를 확인하는 데 사용되는 선택적 CA 인증서입니다. 서버 검증이 활성화되어 있지만 CA 인증서가 제공되지 않은 경우, 로드 밸런서는 시스템 신뢰 저장소를 사용하여 백엔드 서버 인증서의 유효성을 확인합니다.

mTLS 클라이언트 인증 구성

클라이언트 인증을 위해서는 다음이 필요합니다:

클라이언트 인증서
TLS 핸드셰이크 과정에서 백엔드 서버가 클라이언트 인증을 요청할 때, 로드 밸런서가 해당 백엔드 서버에 제시하는 개인 키가 포함된 인증서. 이 인증서는 Secrets Manager 에 저장되어야 합니다.

콘솔에서 ‘ mTLS ’ 풀 인증 구성하기

IBM Cloud 콘솔에서 풀에 대한 인증을 구성하려면:

  1. 'VPC용 로드 밸런서 ' 페이지로 이동합니다.
  2. 애플리케이션 로드 밸런서의 이름을 클릭하십시오.
  3. '백엔드 풀' 탭을 클릭합니다.
  4. 기존 풀의 경우, ‘ 작업 ’ 메뉴 작업 메뉴 를 클릭한 다음 ‘ 편집 ’를 선택하십시오. 새 풀을 생성하려면 ‘생성’을 클릭하세요.
  5. 풀 구성에서:
    • ProtocolHTTPS 로 설정되어 있는지 확인하십시오.
  6. '서버 인증 ' 섹션에서:
    • 백엔드 서버 인증서 검증을 활성화하려면 ‘서버 인증서 확인’을 선택하십시오.
    • (선택 사항) 인증 기관 (CA)의 경우, 백엔드 서버 인증서를 검증하는 데 사용할 Secrets Manager 의 CA 인증서를 선택하십시오. 별도로 지정하지 않으면 시스템 신뢰 저장소가 사용됩니다.
  7. '클라이언트 인증 ' 섹션에서:
    • 클라이언트 인증서의 경우, 로드 밸런서가 백엔드 서버에 제시할 Secrets Manager 에서 인증서를 선택하십시오.
  8. ‘저장 ’ 또는 ‘만들기’를 클릭하세요.

CLI를 통해 mTLS 풀 인증 구성하기

mTLS 서버 인증을 사용하여 풀 생성하기

백엔드 서버 인증서 검증이 활성화된 풀을 생성하려면 다음 명령을 사용하십시오. ibmcloud is load-balancer-pool-create :

ibmcloud is load-balancer-pool-create POOL_NAME LOAD_BALANCER ALGORITHM PROTOCOL \
  HEALTH_DELAY HEALTH_RETRIES HEALTH_TIMEOUT HEALTH_TYPE \
  --server-auth-verify-cert true \
  [--server-auth-ca-crn CA_CERT_CRN]

여기서:

  • POOL_NAME 이것이 귀하의 수영장 이름입니다.
  • LOAD_BALANCER 여기에는 귀하의 로드 밸런서의 ID 또는 이름이 들어갑니다.
  • ALGORITHM 부하 분산 알고리즘(round_robin, weighted_round_robin 또는 least_connections)입니다.
  • PROTOCOL mTLS 를 지원하려면 이어야 합니다. https
  • CA_CERT_CRN 백엔드 서버 인증서를 검증하는 데 사용되는 CA 인증서의 선택적 CRN입니다.

예:

ibmcloud is load-balancer-pool-create my-pool my-load-balancer round_robin https \
  20 2 5 http \
  --server-auth-verify-cert true \
  --server-auth-ca-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511

mTLS 클라이언트 인증을 사용하여 풀 생성하기

클라이언트 인증서 제시가 활성화된 풀을 생성하려면:

ibmcloud is load-balancer-pool-create POOL_NAME LOAD_BALANCER ALGORITHM PROTOCOL \
  HEALTH_DELAY HEALTH_RETRIES HEALTH_TIMEOUT HEALTH_TYPE \
  --client-auth-cert-crn CLIENT_CERT_CRN

예:

ibmcloud is load-balancer-pool-create my-pool my-load-balancer round_robin https \
  20 2 5 http \
  --client-auth-cert-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512

서버 및 클라이언트 mTLS 인증을 모두 지원하는 풀 생성하기

서버 인증과 클라이언트 인증서 제시를 모두 지원하는 풀을 생성하려면:

ibmcloud is load-balancer-pool-create my-pool my-load-balancer round_robin https \
  20 2 5 http \
  --server-auth-verify-cert true \
  --server-auth-ca-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511 \
  --client-auth-cert-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512

mTLS 서버 인증을 활성화하기 위해 풀 업데이트하기

기존 풀을 업데이트하여 서버 인증을 활성화하려면:

ibmcloud is load-balancer-pool-update LOAD_BALANCER POOL \
  --server-auth-verify-cert true \
  [--server-auth-ca-crn CA_CERT_CRN]

예:

ibmcloud is load-balancer-pool-update my-load-balancer my-pool \
  --server-auth-verify-cert true \
  --server-auth-ca-crn crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511

mTLS 클라이언트 인증을 사용하도록 풀 업데이트하기

기존 풀을 업데이트하여 클라이언트 인증을 활성화하려면:

ibmcloud is load-balancer-pool-update LOAD_BALANCER POOL \
  --client-auth-cert-crn CLIENT_CERT_CRN

mTLS 서버 인증 비활성화

풀에 대한 서버 인증을 비활성화하려면:

ibmcloud is load-balancer-pool-update LOAD_BALANCER POOL --reset-server-auth

mTLS 클라이언트 인증 비활성화

풀에 대한 클라이언트 인증을 비활성화하려면:

ibmcloud is load-balancer-pool-update LOAD_BALANCER POOL --reset-client-auth

API를 사용하여 풀 인증 구성하기

mTLS 를 사용하여 서버 및 클라이언트 인증을 지원하는 풀 생성하기

서버 인증과 클라이언트 인증이 모두 활성화된 풀을 생성하려면 POST /load_balancers/{load_balancer_id}/pools 메서드를 호출하십시오:

curl -X POST \
  "$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools?version=2026-05-06&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
    "name": "my-pool",
    "algorithm": "round_robin",
    "protocol": "https",
    "health_monitor": {
      "delay": 20,
      "max_retries": 2,
      "timeout": 5,
      "type": "http"
    },
    "server_authentication": {
      "verify_certificate": true,
      "certificate_authority": {
        "crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511"
      }
    },
    "client_authentication": {
      "certificate_instance": {
        "crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512"
      }
    }
  }'

mTLS 서버 인증을 활성화하기 위해 풀 업데이트하기

기존 풀을 업데이트하여 서버 인증을 활성화하려면 PATCH /load_balancers/{load_balancer_id}/pools/{id} 메서드를 호출하십시오:

curl -X PATCH \
  "$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools/$pool_id?version=2026-05-06&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
    "server_authentication": {
      "verify_certificate": true,
      "certificate_authority": {
        "crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511"
      }
    }
  }'

mTLS 클라이언트 인증을 사용하도록 풀 업데이트하기

기존 풀을 업데이트하여 클라이언트 인증을 활성화하려면:

curl -X PATCH \
  "$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools/$pool_id?version=2026-05-06&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
    "client_authentication": {
      "certificate_instance": {
        "crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512"
      }
    }
  }'

mTLS 서버 인증 비활성화

서버 인증을 비활성화하려면 server_authentication 속성을 null 로 설정하십시오:

curl -X PATCH \
  "$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools/$pool_id?version=2026-05-06&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
    "server_authentication": null
  }'

mTLS 클라이언트 인증 비활성화

클라이언트 인증을 비활성화하려면 client_authentication 속성을 null 로 설정하십시오:

curl -X PATCH \
  "$vpc_api_endpoint/v1/load_balancers/$load_balancer_id/pools/$pool_id?version=2026-05-06&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
    "client_authentication": null
  }'

Terraform을 사용하여 mTLS 풀 인증 구성하기

Terraform을 사용하여 풀에 대한 인증을 구성하려면, ibm_is_lb_pool 리소스와 함께 server_authentication client_authentication 블록을 사용하십시오:

resource "ibm_is_lb_pool" "example" {
  lb                 = ibm_is_lb.example.id
  name               = "my-pool"
  algorithm          = "round_robin"
  protocol           = "https"
  health_delay       = 20
  health_retries     = 2
  health_timeout     = 5
  health_type        = "http"

  server_authentication {
    verify_certificate = true
    certificate_authority_crn = "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f511"
  }

  client_authentication {
    certificate_instance_crn = "crn:v1:bluemix:public:secrets-manager:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:aace9348-39da-4498-b132-e5ab918237f4:secret:e3bd96ce-1e4c-f642-d1f2-0d0ab025f512"
  }
}

mTLS 풀 인증 구성 확인

풀 인증을 설정한 후, 제대로 작동하는지 확인하십시오:

  1. 백엔드 서버가 정상적으로 작동하는지 확인하려면 풀 상태를 확인하십시오:

    ibmcloud is load-balancer-pool LOAD_BALANCER POOL
    
  2. 서버 검증이 활성화된 경우, 백엔드 서버가 구성된 CA에서 서명한 유효한 인증서를 제시하는지 확인하십시오.

  3. 클라이언트 인증이 활성화된 경우, 백엔드 서버가 로드 밸런서가 제시한 클라이언트 인증서를 유효성 검사할 수 있는지 확인하십시오.

  4. 인증서 유효성 검사 문제를 나타낼 수 있는 ‘ TLS ’ 핸드셰이크 오류가 있는지 로드 밸런서 로그를 모니터링하십시오.

mTLS 의 풀 수준 인증에 관한 주요 고려 사항

풀 수준 구성은 모든 백엔드 서버에 적용됩니다
서버 인증과 클라이언트 인증은 모두 풀 수준에서 구성됩니다. 풀 내의 모든 백엔드 서버는 동일한 인증 설정을 사용합니다. 백엔드 서버마다 서로 다른 인증서 정책이 필요한 경우, 별도의 풀을 생성하십시오.
백엔드 서버용 여러 인증 기관
동일한 풀에 속한 백엔드 서버들이 서로 다른 인증 기관(CA)의 인증서를 사용하는 경우, 관련 루트 인증서 및 중간 인증서를 모두 포함하는 번들 CA 파일을 제공할 수 있습니다. 모든 백엔드 서버는 해당 서버의 인증서 체인이 번들에 포함된 CA 중 하나와 연결되어 있다면 신뢰할 수 있습니다.
시스템 신뢰 저장소
서버 검증이 활성화되어 있지만 CA 인증서가 제공되지 않은 경우, 로드 밸런서는 시스템 신뢰 저장소( Ubuntu Linux )를 사용하여 백엔드 서버 인증서의 유효성을 확인합니다. 이는 잘 알려진 공인 인증 기관(CA)이 서명한 인증서에는 적용되지만, 자체 서명된 인증서나 사설 인증 기관(CA)의 인증서에는 적용되지 않습니다.
인증서 업데이트
Secrets Manager 에서 인증서를 업데이트하면, 로드 밸런서가 업데이트된 인증서를 자동으로 가져옵니다. 다만, 새로운 인증서를 사용하려면 현재 연결된 세션을 다시 설정해야 할 수도 있습니다.

다음 단계