이 페이지에서는 리전 간 내부 애플리케이션 부하 분산기나 리전 내부 애플리케이션 부하 분산기에 상호 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 \ --global
다음을 바꿉니다.
TARGET_HTTPS_PROXY_NAME
: 대상 프록시 이름TARGET_PROXY_FILENAME
: yaml 파일의 이름. 예를 들면mtls_target_proxy.yaml
입니다.
리전
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 \ --global
다음을 바꿉니다.
TARGET_HTTPS_PROXY_NAME
: 대상 프록시 이름TARGET_PROXY_FILENAME
: yaml 파일의 이름. 예를 들면mtls_target_proxy.yaml
입니다.
리전
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 --global
다음은 커스텀 요청 헤더(requestHeadersToAdd
)에서 변수를 사용하는 방법을 보여주는 샘플 YAML 파일입니다. 같은 변수를 사용하여 커스텀 응답 헤더(responseHeadersToAdd
)를 전송할 수 있습니다.
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}"
리전
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}"