이 페이지에서는 리전 외부 애플리케이션 부하 분산기에 상호 TLS(mTLS)를 구성하는 예시를 보여줍니다.
시작하기 전에
- 외부 애플리케이션 부하 분산기 개요를 읽습니다.
- 상호 TLS 개요를 읽습니다.
- 사용자 제공 인증서로 상호 TLS을 설정합니다.
- 리전 외부 애플리케이션 부하 분산기는 다양한 백엔드 서비스와 버킷을 지원합니다. 다음과 같은 지원되는 백엔드 중 하나를 사용하여 리전 외부 애플리케이션 부하 분산기를 설정했는지 확인합니다.
부하 분산기에 mTLS 설정
상호 TLS 인증이 작동하게 하려면 부하 분산기를 설정한 후 ServerTLSPolicy
리소스를 사용하여 대상 HTTPS 프록시를 업데이트해야 합니다.
ServerTLSPolicy
리소스를 이미 만들었는지 확인합니다. 자세한 내용은 네트워크 보안 리소스 만들기를 참조하세요.프로젝트의 모든 대상 HTTPS 프록시를 나열하려면
gcloud compute target-https-proxies list
명령어를 사용합니다.gcloud compute target-https-proxies list
ServerTLSPolicy
리소스를 연결할 대상 HTTPS 프록시의 이름을 기록해 둡니다. 다음 단계에서는 이 이름을TARGET_HTTPS_PROXY_NAME
이라고 합니다.대상 HTTPS 프록시 구성을 파일로 내보내려면
gcloud beta compute target-https-proxies export
명령어를 사용합니다.리전
gcloud beta compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --region=REGION
다음을 바꿉니다.
TARGET_HTTPS_PROXY_NAME
: 대상 프록시 이름TARGET_PROXY_FILENAME
: yaml 파일의 이름입니다. 예를 들면mtls_target_proxy.yaml
입니다.REGION
: 부하 분산기를 구성한 리전.
현재 프로젝트의 지정된 위치에 있는 모든
ServerTlsPolicies
리소스를 나열합니다.콘솔
Google Cloud 콘솔에서 클라이언트 인증 페이지로 이동합니다.
모든
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
이라고 합니다.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
파일에서 대상 HTTPS 프록시 구성을 가져오려면
gcloud beta compute target-https-proxies import
명령어를 사용합니다.리전
gcloud beta compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --region=REGION
다음을 바꿉니다.
TARGET_HTTPS_PROXY_NAME
: 대상 프록시 이름TARGET_PROXY_FILENAME
: yaml 파일의 이름입니다. 예를 들면mtls_target_proxy.yaml
입니다.REGION
: 부하 분산기를 구성한 리전.
mTLS 커스텀 헤더 추가
mTLS를 사용 설정하면 커스텀 헤더를 사용하여 mTLS 연결에 대한 정보를 URL 맵에 전달할 수 있습니다. 또한 mTLS 연결 실패가 로그에 캡처되도록 로깅을 사용 설정할 수 있습니다.프로젝트의 모든 URL 맵을 나열하려면 gcloud beta compute url-maps list
명령어를 사용합니다.
gcloud beta compute url-maps list
커스텀 헤더와 로깅을 사용 설정하려면 URL 맵의 이름을 기록해 둡니다.
이 이름은 다음 단계에서 URL_MAP_NAME
로 참조됩니다.
리전
gcloud compute url-maps edit URL_MAP_NAME --region=REGION
다음은 커스텀 요청 헤더(requestHeadersToAdd
)에서 변수를 사용하는 방법을 보여주는 샘플 YAML 파일입니다. 같은 변수를 사용하여 커스텀 응답 헤더(responseHeadersToAdd
)를 전송할 수 있습니다.
defaultService: regions/REGION/backendServices/BACKEND_SERVICE_1 name: regional-lb-map region: region/REGION headerAction: requestHeadersToAdd: - headerName: "X-Client-Cert-Present" headerValue: "{client_cert_present}" - headerName: "X-Client-Cert-Chain-Verified" headerValue: "{client_cert_chain_verified}" - headerName: "X-Client-Cert-Error" headerValue: "{client_cert_error}" - headerName: "X-Client-Cert-Hash" headerValue: "{client_cert_sha256_fingerprint}" - headerName: "X-Client-Cert-Serial-Number" headerValue: "{client_cert_serial_number}" - headerName: "X-Client-Cert-SPIFFE" headerValue: "{client_cert_spiffe_id}" - headerName: "X-Client-Cert-URI-SANs" headerValue: "{client_cert_uri_sans}" - headerName: "X-Client-Cert-DNSName-SANs" headerValue: "{client_cert_dnsname_sans}" - headerName: "X-Client-Cert-Valid-Not-Before" headerValue: "{client_cert_valid_not_before}" - headerName: "X-Client-Cert-Valid-Not-After" headerValue: "{client_cert_valid_not_after}" - headerName: "X-Client-Cert-Issuer-Dn" headerValue: "{client_cert_issuer_dn}" - headerName: "X-Client-Cert-Subject-Dn" headerValue: "{client_cert_subject_dn}" - headerName: "X-Client-Cert-Leaf" headerValue: "{client_cert_leaf}" - headerName: "X-Client-Cert-Chain" headerValue: "{client_cert_chain}"