이 페이지에서는 기본 애플리케이션 부하 분산기에 대해 상호 TLS(mTLS)를 구성하는 예시를 보여줍니다.
시작하기 전에
- 외부 애플리케이션 부하 분산기 개요를 읽습니다.
- 상호 TLS 개요를 읽습니다.
- 사용자 제공 인증서로 상호 TLS를 설정하거나 비공개 CA로 상호 TLS를 설정합니다.
- 기본 애플리케이션 부하 분산기는 다른 백엔드 서비스 및 버킷을 지원합니다.
지원되는 다음 백엔드를 사용해서 기본 애플리케이션 부하 분산기가 설정되었는지 확인합니다.
- VM 인스턴스 그룹 백엔드
- Cloud Storage 버킷(백엔드 버킷 외에 부하 분산기에 백엔드 서비스가 하나 이상 연결된 경우에만 지원됨)
- Cloud Run, App Engine 또는 Cloud Functions
- 하이브리드 연결
- 외부 백엔드
부하 분산기에 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 \ --global
다음을 바꿉니다.
TARGET_HTTPS_PROXY_NAME
: 대상 프록시 이름TARGET_PROXY_FILENAME
: yaml 파일의 이름. 예를 들면mtls_target_proxy.yaml
입니다.
현재 프로젝트의 지정된 위치에 있는 모든
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 \ --global
다음을 바꿉니다.
TARGET_HTTPS_PROXY_NAME
: 대상 프록시 이름TARGET_PROXY_FILENAME
: yaml 파일의 이름. 예를 들면mtls_target_proxy.yaml
입니다.
mTLS 커스텀 헤더 추가
mTLS를 사용 설정하면 커스텀 헤더를 사용하여 mTLS 연결에 대한 정보를 백엔드 서비스로 전달할 수 있습니다. 또한 mTLS 연결 실패가 로그에 캡처되도록 로깅을 사용 설정할 수 있습니다.프로젝트의 모든 백엔드 서비스를 나열하려면
gcloud compute backend-services list
명령어를 사용합니다.gcloud compute backend-services list
커스텀 헤더 및 로깅을 사용 설정하려면 백엔드 서비스의 이름을 기록해 둡니다. 이 이름은 다음 단계에서
BACKEND_SERVICE
로 참조합니다.백엔드 서비스를 업데이트하려면
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}'
다음 단계
- 전역 외부 애플리케이션 부하 분산기에 대한 상호 TLS 설정
- 비공개 CA로 상호 TLS 설정
- 사용자 제공 인증서로 상호 TLS 설정
- mTLS 클라이언트 인증서 검증 로그 보기
- 부하 분산 설정 삭제