기본 애플리케이션 부하 분산기에 대한 상호 TLS 설정

이 페이지에서는 기본 애플리케이션 부하 분산기에 대해 상호 TLS(mTLS)를 구성하는 예시를 보여줍니다.

시작하기 전에

부하 분산기에 mTLS 설정

상호 TLS 인증이 작동하게 하려면 부하 분산기를 설정한 후 ServerTLSPolicy 리소스를 사용하여 대상 HTTPS 프록시를 업데이트해야 합니다.

  1. ServerTLSPolicy 리소스를 이미 만들었는지 확인합니다. 자세한 내용은 네트워크 보안 리소스 만들기를 참조하세요.

  2. 프로젝트의 모든 대상 HTTPS 프록시를 나열하려면 gcloud compute target-https-proxies list 명령어를 사용합니다.

    gcloud compute target-https-proxies list
    

    ServerTLSPolicy 리소스를 연결할 대상 HTTPS 프록시의 이름을 기록해 둡니다. 다음 단계에서는 이 이름을 TARGET_HTTPS_PROXY_NAME이라고 합니다.

  3. 대상 HTTPS 프록시 구성을 파일로 내보내려면 gcloud beta compute target-https-proxies export 명령어를 사용합니다.

    전역

      gcloud beta compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
          --destination=TARGET_PROXY_FILENAME \
          --global
      

    다음을 바꿉니다.

    • TARGET_HTTPS_PROXY_NAME: 대상 프록시 이름
    • TARGET_PROXY_FILENAME: yaml 파일의 이름. 예를 들면 mtls_target_proxy.yaml입니다.
  4. 현재 프로젝트의 지정된 위치에 있는 모든 ServerTlsPolicies 리소스를 나열합니다.

    콘솔

    1. Google Cloud 콘솔에서 클라이언트 인증 페이지로 이동합니다.

      클라이언트 인증으로 이동

    2. 모든 ServerTlsPolicies 리소스가 표시됩니다.

    gcloud

    모든 클라이언트 인증(ServerTlsPolicies) 리소스를 나열하려면 gcloud network-security server-tls-policies list 명령어를 사용합니다.

    gcloud network-security server-tls-policies list \
      --location=REGION
    

    다음을 바꿉니다.

    REGION: global를 사용합니다.

    mTLS를 구성하려면 ServerTlsPolicies 리소스 이름을 기록해 둡니다. 이 이름은 다음 단계에서 SERVER_TLS_POLICY_NAME이라고 합니다.

  5. ServerTlsPolicy 리소스 파일 TARGET_PROXY_FILENAME을 추가하려면 다음 명령어를 사용합니다. PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.

    echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/REGION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
    
  6. 파일에서 대상 HTTPS 프록시 구성을 가져오려면 gcloud beta compute target-https-proxies import 명령어를 사용합니다.

    전역

       gcloud beta compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
           --source=TARGET_PROXY_FILENAME \
           --global
       

    다음을 바꿉니다.

    • TARGET_HTTPS_PROXY_NAME: 대상 프록시 이름
    • TARGET_PROXY_FILENAME: yaml 파일의 이름. 예를 들면 mtls_target_proxy.yaml입니다.

mTLS 커스텀 헤더 추가

mTLS를 사용 설정하면 커스텀 헤더를 사용하여 mTLS 연결에 대한 정보를 백엔드 서비스로 전달할 수 있습니다. 또한 mTLS 연결 실패가 로그에 캡처되도록 로깅을 사용 설정할 수 있습니다.

  1. 프로젝트의 모든 백엔드 서비스를 나열하려면 gcloud compute backend-services list 명령어를 사용합니다.

    gcloud compute backend-services list
    

    커스텀 헤더 및 로깅을 사용 설정하려면 백엔드 서비스의 이름을 기록해 둡니다. 이 이름은 다음 단계에서 BACKEND_SERVICE로 참조합니다.

  2. 백엔드 서비스를 업데이트하려면 gcloud compute backend-services update 명령어를 사용합니다.

    gcloud compute backend-services update BACKEND_SERVICE \
      --global \
      --enable-logging \
      --logging-sample-rate=1 \
      --custom-request-header='X-Client-Cert-Present:{client_cert_present}' \
      --custom-request-header='X-Client-Cert-Chain-Verified:{client_cert_chain_verified}' \
      --custom-request-header='X-Client-Cert-Error:{client_cert_error}' \
      --custom-request-header='X-Client-Cert-Hash:{client_cert_sha256_fingerprint}' \
      --custom-request-header='X-Client-Cert-Serial-Number:{client_cert_serial_number}' \
      --custom-request-header='X-Client-Cert-SPIFFE:{client_cert_spiffe_id}' \
      --custom-request-header='X-Client-Cert-URI-SANs:{client_cert_uri_sans}' \
      --custom-request-header='X-Client-Cert-DNSName-SANs:{client_cert_dnsname_sans}' \
      --custom-request-header='X-Client-Cert-Valid-Not-Before:{client_cert_valid_not_before}' \
      --custom-request-header='X-Client-Cert-Valid-Not-After:{client_cert_valid_not_after}'
    

다음 단계