이 페이지에서는 Certificate Authority Service를 사용하고 인증서 관리자 TrustConfig
리소스에 인증서를 업로드하여 비공개 인증 기관(CA)을 만드는 방법을 설명합니다.
또한 애플리케이션 부하 분산기에 대해 상호 TLS를 구성하는 데 필요한 네트워크 보안 리소스를 만듭니다.
시작하기 전에
- 상호 TLS 개요를 검토합니다.
Google Cloud CLI 설치 이 도구에 대한 전체 개요는 gcloud CLI 개요를 참조하세요. 부하 분산과 관련된 명령어는 API 및 gcloud 참조에서 확인할 수 있습니다.
이전에 gcloud CLI를 실행한 적이 없으면 먼저
gcloud init
를 실행하여 인증하세요.CA 풀을 만드는 방법을 알고 있어야 합니다.
권한
이 가이드를 완료하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 프로젝트에 부여해 달라고 요청하세요.
TargetHTTPProxy
와 같은 부하 분산기 리소스 만들기: Compute 부하 분산기 관리자(roles/compute.loadBalancerAdmin
)- 인증서 관리자 리소스 사용하기: 인증서 관리자 소유자(
roles/certificatemanager.owner
) - 보안 및 네트워킹 구성요소 만들기: Compute 네트워크 관리자(
roles/compute.networkAdmin
) 및 Compute 보안 관리자(roles/compute.securityAdmin
) - 프로젝트 만들기(선택사항): 프로젝트 생성자(
roles/resourcemanager.projectCreator
)
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
비공개 CA 만들기
CA 서비스를 사용하여 비공개 CA를 만든 다음 루트 인증서를 만듭니다.
CA 풀을 만들려면
gcloud privateca pools create
명령어를 사용합니다.gcloud privateca pools create CA_POOL \ --location=us-central1
CA_POOL
을 상위 CA 풀의 ID 또는 이름으로 바꿉니다.CA 풀에 비공개 CA를 만들려면
gcloud privateca roots create
명령어를 사용합니다.gcloud privateca roots create CA_ROOT \ --pool=CA_POOL \ --subject="CN=my-ca, O=Test LLC" \ --location=us-central1
다음을 바꿉니다.
CA_ROOT
: 비공개 CA의 ID 또는 이름입니다.CA_POOL
: 상위 CA 풀의 ID 또는 이름입니다.
새 CA를 설명하고
root.cert
파일을 만들려면gcloud privateca roots describe
명령어를 사용합니다.gcloud privateca roots describe CA_ROOT \ --pool=CA_POOL \ --location=us-central1 \ --format='value(pemCaCertificates)' > root.cert
export ROOT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
다음을 바꿉니다.
CA_ROOT
: 비공개 CA의 ID 또는 이름입니다.CA_POOL
: 상위 CA 풀의 ID 또는 이름입니다.
자세한 내용은 다음을 참조하세요.
비공개 CA로 TrustConfig 만들기
비공개 CA를 사용하여 생성된 루트 인증서를 사용하여 PKI를 나타내는 인증서 관리자 TrustConfig
리소스를 만듭니다. TrustConfig
리소스는 루트 인증서를 나타내는 단일 신뢰 앵커가 포함된 간단한 트러스트 저장소라고 가정합니다.
다음 단계에서 TRUST_CONFIG_NAME
을 TrustConfig
리소스의 이름으로 바꿉니다.
trust_config.yaml
파일을 만들려면 다음 명령어를 사용합니다.cat << EOF > trust_config.yaml name: TRUST_CONFIG_NAME trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" EOF
인증서 관리자
TrustConfig
리소스를 만들려면gcloud certificate-manager trust-configs import
명령어를 사용합니다.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=REGION
다음을 바꿉니다.
REGION
: 리전 간 내부 애플리케이션 부하 분산기, 전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기에 대해global
을 사용합니다. 리전 외부 애플리케이션 부하 분산기 또는 리전 내부 애플리케이션 부하 분산기의 경우 부하 분산기를 구성한 리전을 사용합니다.
네트워크 보안 리소스 만들기
서버 TLS 정책(ServerTLSPolicy
네트워크 보안 리소스)을 사용하면 클라이언트 인증서 유효성을 검사할 때 사용할 서버 측 TLS 모드와 TrustConfig
리소스를 지정할 수 있습니다. 클라이언트가 부하 분산기에 잘못된 인증서를 제공하거나 인증서를 제공하지 않으면 clientValidationMode
는 클라이언트 연결이 처리되는 방법을 지정합니다.
clientValidationMode
가ALLOW_INVALID_OR_MISSING_CLIENT_CERT
로 설정되면 검증이 실패하거나 클라이언트 인증서가 없는 경우에도 모든 요청이 백엔드로 전달됩니다.clientValidationMode
가REJECT_INVALID
로 설정되면TrustConfig
리소스에 대해 검증할 수 있는 클라이언트 인증서를 제공하는 요청만 백엔드로 전달됩니다.
ServerTLSPolicy
저장소를 만들려면 다음 단계를 완료하세요.
연결을 처리하는 방법에 따라 다음 옵션 중 하나를 선택합니다.
다음 단계에서
SERVER_TLS_POLICY_NAME
을 서버 TLS 정책의 이름으로 바꾸고PROJECT_ID
를 Google Cloud 프로젝트의 ID로 바꿉니다.옵션 1:
clientValidationMode
가ALLOW_INVALID_OR_MISSING_CLIENT_CERT
로 설정되어 있습니다.server_tls_policy.yaml
파일을 만들려면 다음 명령어를 사용합니다.전역
외부 애플리케이션 부하 분산기와 리전 간 내부 애플리케이션 부하 분산기의 경우 다음 명령어를 사용합니다.
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME EOF
리전
리전 외부 애플리케이션 부하 분산기와 리전 내부 애플리케이션 부하 분산기의 경우 다음 명령어를 사용합니다.
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME EOF
옵션 2:
clientValidationMode
가REJECT_INVALID
로 설정되어 있습니다.server_tls_policy.yaml
파일을 만들려면 다음 명령어를 사용합니다.전역
외부 애플리케이션 부하 분산기와 리전 간 내부 애플리케이션 부하 분산기의 경우 다음 명령어를 사용합니다.
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: REJECT_INVALID clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME EOF
리전
리전 외부 애플리케이션 부하 분산기와 리전 내부 애플리케이션 부하 분산기의 경우 다음 명령어를 사용합니다.
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: REJECT_INVALID clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME EOF
ServerTlsPolicy
리소스를 만들려면gcloud network-security server-tls-policies import
명령어를 사용합니다.전역
외부 애플리케이션 부하 분산기와 리전 간 내부 애플리케이션 부하 분산기의 경우 다음 명령어를 사용합니다.
gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=global
리전
리전 외부 애플리케이션 부하 분산기와 리전 내부 애플리케이션 부하 분산기의 경우 다음 명령어를 사용합니다.
gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=REGION
자세한 내용은 MTLS 클라이언트 검증 모드를 참조하세요.
다음 단계
- 전역 외부 애플리케이션 부하 분산기에 대한 상호 TLS 설정
- 기본 애플리케이션 부하 분산기에 대한 상호 TLS 설정
- 내부 애플리케이션 부하 분산기에 대한 상호 TLS 설정
- 리전 외부 애플리케이션 부하 분산기에 대한 상호 TLS 설정
- 서명된 인증서로 상호 TLS 설정