TLS 검사 설정

암호화된 트래픽을 검사하고 숨겨진 위협으로부터 Virtual Private Cloud (VPC) 네트워크를 보호하려면 Cloud Next Generation Firewall의 전송 계층 보안 (TLS) 검사를 구성합니다.

TLS 검사를 구성하는 네트워크 관리자 또는 보안 엔지니어인 경우 이 문서를 사용하여 환경을 설정하세요.

이 문서에서는 다음 태스크를 완료하는 방법을 보여줍니다.

  • 인증 기관 (CA) 리소스 구성
  • 트러스트 구성 리소스 만들기
  • TLS 검사 사용 설정

시작하기 전에 TLS 검사 개요의 개념을 검토하세요.

시작하기 전에

TLS 검사를 구성하기 전에 다음 섹션의 태스크를 완료하세요.

Certificate Authority Service 사용 설정

Cloud NGFW는 Certificate Authority Service를 사용하여 중간 인증 기관(CA)을 생성합니다. Cloud NGFW는 이러한 중간 CA를 사용하여 TLS 검사에 사용되는 인증서를 생성합니다.

콘솔을 사용하여 CA 서비스 API를 사용 설정할 수 있습니다. Google Cloud

API 사용 설정에 필요한 역할

API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한을 이미 보유하고 있을 가능성이 높습니다. 그렇지 않은 경우 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법을 알아보세요.

API 사용 설정하기

Google Cloud CLI를 사용하여 CA 서비스를 사용 설정하려면 다음 명령어를 사용합니다.

   gcloud services enable privateca.googleapis.com
  

인증서 관리자 사용 설정

Cloud NGFW는 인증서 관리자를 사용하여 트러스트 구성을 만듭니다. 트러스트 구성을 사용하지 않으려면 이 단계를 건너뜁니다.

Google Cloud 콘솔을 사용하여 Certificate Manager API를 사용 설정할 수 있습니다.

API 사용 설정에 필요한 역할

API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한을 이미 보유하고 있을 가능성이 높습니다. 그렇지 않은 경우 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법을 알아보세요.

API 사용 설정하기

Google Cloud CLI를 사용하여 인증서 관리자를 사용 설정하려면 다음 명령어를 사용합니다.

   gcloud services enable certificatemanager.googleapis.com
  

트러스트 구성 만들기

이 단계는 선택사항입니다. 트러스트 구성을 만들려면 이 섹션의 단계를 수행합니다.

  1. CA 풀을 만듭니다.

    이 단계에서 만드는 CA 풀은 TLS 검사 정책을 구성하기 위해 만드는 CA 풀과 다릅니다.

  2. 루트 CA를 만듭니다 앞에서 만든 CA 풀을 사용하여

    또는 CA 서비스 내에서 하위 CA를 만들어 기존 외부 루트 CA를 사용합니다. 외부 루트 CA는 이 하위 CA에 서명해야 합니다. Cloud NGFW에서 CA를 사용하려면 CA 풀의 루트 및 하위 CA의 경로 길이가 1 이상이어야 합니다. CA 인증서의 pathLenConstraint 필드는 경로 길이를 지정합니다. 이 필드는 현재 CA 인증서 아래의 인증 경로에 있을 수 있는 최대 하위 CA 인증서 수를 정의합니다.

  3. 자동 생성된 키를 사용하여 인증서를 만듭니다. 앞에서 만든 이름과 동일한 CA 풀 이름을 사용합니다.

  4. 생성된 인증서에서 CA의 공개 인증서를 가져옵니다.

    $PEM-CERT=$(gcloud privateca roots describe ROOT_CA_NAME \
       --location LOCATION \
       --project PROJECT_ID \
       --pool CA_POOL \
       --format "value(pemCaCertificates)")
    

    다음을 바꿉니다.

    • ROOT_CA_NAME: 루트 CA 이름
    • LOCATION: 루트 CA 위치
    • PROJECT_ID: 루트 CA의 프로젝트 ID
    • CA_POOL: 인증서를 만들 CA 풀의 이름
  5. 이전 단계에서 가져온 PEM-CERT를 사용하여 트러스트 구성 만들고 가져옵니다. 자체 CA를 사용하는 경우 CA에서 가져온 공개 인증서를 사용합니다.

이 트러스트 구성을 사용하여 TLS 검사 정책을 만듭니다.

CA 풀 만들기

CA 서비스를 사용하여 CA를 만들려면 먼저 CA 풀을 만들어야 합니다.

CA 풀을 만들려면 CA 풀 만들기의 안내를 따릅니다.

이 CA 풀을 사용하여 TLS 검사 정책을 만듭니다.

루트 CA 만들기

기존 루트 CA가 없으면 CA 서비스 내에 루트 CA를 만들 수 있습니다. 루트 CA를 만들려면 루트 CA 만들기의 안내를 따르고 앞에서 만든 동일한 CA 풀을 사용합니다. CA 풀 만들기 섹션을 참조하세요.

기존 외부 루트 CA를 사용하려면 하위 CA를 만듭니다 외부 루트 CA에서 서명한 CA 서비스 내에서

NGFW Enterprise의 경우 하위 인증서가 중간 CA를 생성할 수 있으려면 경로 길이 제한이 1 이상이어야 합니다. 기본적으로 하위 인증서와 CSR은 경로 길이 제한이 0인 상태로 생성됩니다. 이를 변경해야 합니다. 현재로서는 콘솔을 통해 이 작업을 수행할 수 없으며 다음 플래그 중 일부를 사용하는 CAS 제공 Google Cloud CLI 명령어를 통해서만 수행할 수 있습니다.

  • --extended-key-usages 플래그: 인증서의 확장 키 사용을 지정합니다.

  • --key-usages 플래그: 인증서의 키 사용을 지정합니다.

  • --max-chain-length 플래그: CA 인증서에 대해 이 CA에서 허용되는 하위 CA의 최대 깊이를 정의합니다.

gcloud

gcloud privateca subordinates create SUBORDINATE_CA_ID \
    --pool=SUBORDINATE_POOL_ID \
    --location=LOCATION \
    --create-csr --csr-output-file=FILE_NAME \
    --key-algorithm="ec-p256-sha256" \
    --subject="CN=Example Server TLS CA, O=Example LLC
    --key-algorithm=rsa-pss-4096-sha256 \
    --key-usages=cert_sign,crl_sign \
    --extended-key-usages=server_auth \
    --max-chain-length=1"
  

다음을 바꿉니다.

  • SUBORDINATE_CA_ID: 하위 CA의 고유 식별자입니다.
  • SUBORDINATE_POOL_ID: CA 풀의 이름입니다.
  • LOCATION: CA 풀의 위치입니다.
  • FILE_NAME: PEM으로 인코딩된 CSR이 작성되는 파일의 이름입니다.

그러면 다음을 반환하는 CSR이 생성됩니다.

    Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.
    

하위 CA를 활성화하려면 CSR이 생성된 후 서명해야 합니다.

서비스 계정 만들기

서비스 계정이 없는 경우 서비스 계정을 만들고 필요한 권한을 부여해야 합니다.

  1. 서비스 계정을 만듭니다.

     gcloud beta services identity create \
         --service networksecurity.googleapis.com \
         --project PROJECT_ID
    

    PROJECT_ID를 서비스 계정의 프로젝트 ID로 바꿉니다.

    Google Cloud CLI에서 service-PROJECT_NUMBER@gcp-sa-networksecurity.iam.gserviceaccount.com이라는 서비스 계정을 만듭니다. 여기에서 PROJECT_NUMBER는 이전 명령어에서 제공한 PROJECT_ID의 고유 식별자입니다.

  2. CA 풀을 사용하는 인증서를 생성하도록 서비스 계정에 권한을 부여합니다.

     gcloud privateca pools add-iam-policy-binding CA_POOL \
         --member 'serviceAccount:SERVICE_ACCOUNT' \
         --role 'roles/privateca.certificateRequester' \
         --location REGION
    

    다음을 바꿉니다.

    • CA_POOL: 인증서를 만들 CA 풀의 이름