VPC 서비스 제어를 사용하여 TCP 전달을 위한 IAP 보안

이 페이지에서는 VPC 서비스 제어를 사용하여 TCP 전달을 위해 IAP를 보호하는 방법과 VPC 서비스 제어 경계 내에서 TCP 전달을 위해 IAP를 사용하는 방법을 설명합니다.

시작하기 전에

  1. VPC Service Controls 개요를 읽어보세요.

  2. 서비스 경계 없이 IAP TCP 전달 사용을 설정합니다.

  3. VPC Service Controls를 사용하여 서비스 경계를 만듭니다. 이 서비스 경계는 사용자가 지정한 서비스의 Google 관리 리소스를 보호합니다. 서비스 경계를 만들 때 다음을 수행합니다.

    1. IAP와 연결할 Compute Engine 인스턴스가 포함된 프로젝트를 서비스 경계 내의 프로젝트에 추가합니다. Compute Engine 인스턴스에서 TCP 클라이언트의 IAP를 실행하는 경우 이 인스턴스가 포함된 프로젝트도 경계에 넣습니다.

    2. 서비스 경계로 보호되는 서비스 목록에 IAP(Identity-Aware Proxy) TCP API를 추가합니다.

    필요한 프로젝트 및 서비스를 추가하지 않고 서비스 경계를 만들었을 때 서비스 경계를 업데이트하는 방법은 서비스 경계 관리를 참조하세요.

Cloud DNS를 사용하여 DNS 레코드 구성

Google Cloud CLI일 가능성이 있는 TCP 클라이언트용 IAP가 경계 내에서 실행되지 않을 경우 이 단계를 건너뛸 수 있습니다. 반면에 경계 내에서 클라이언트를 실행하는 경우 TCP용 IAP에 대해 DNS 레코드를 구성해야 합니다.

TCP용 IAP는 googleapis.com의 하위 도메인이 아닌 도메인을 사용합니다. Cloud DNS를 사용하여 VPC 네트워크가 이러한 도메인으로 전송된 요청을 올바르게 처리하도록 DNS 레코드를 추가합니다. VPC 경로에 대한 자세한 내용은 경로 개요를 읽어보세요.

다음 단계에 따라 도메인의 관리 영역을 만들고 요청을 라우팅할 DNS 레코드를 추가하고 트랜잭션을 실행합니다. 원하는 터미널로 gcloud CLI를 사용하거나 gcloud CLI가 사전 설치된 Cloud Shell을 사용할 수 있습니다.

  1. 일반적인 VPC 서비스 제어 통합의 경우와 마찬가지로 *.googleapis.com DNS를 구성합니다.

  2. DNS 레코드를 구성할 때 사용할 이 정보를 수집합니다.

    • PROJECT_ID는 VPC 네트워크를 호스팅하는 프로젝트의 ID입니다.

    • NETWORK_NAME은 TCP 클라이언트용 IAP를 실행하는 VPC 네트워크의 이름입니다.

    • ZONE_NAME은 만들려는 영역의 이름입니다. 예를 들면 iap-tcp-zone입니다.

  3. VPC 네트워크가 이를 처리할 수 있도록 tunnel.cloudproxy.app 도메인의 비공개 관리형 영역을 만듭니다.

    gcloud dns managed-zones create ZONE_NAME \
     --visibility=private \
     --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
     --dns-name=tunnel.cloudproxy.app \
     --description="Description of your managed zone"
    
  4. 트랜잭션을 시작합니다.

    gcloud dns record-sets transaction start --zone=ZONE_NAME
    
  5. 다음 DNS A 레코드를 추가합니다. 그러면 트래픽을 Google의 제한된 VIP(가상 IP 주소)로 다시 라우팅합니다.

    gcloud dns record-sets transaction add \
     --name=tunnel.cloudproxy.app. \
     --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
     --zone=ZONE_NAME \
     --ttl=300
    
  6. 방금 추가한 A 레코드를 가리키도록 다음 DNS CNAME 레코드를 추가합니다. 그러면 도메인과 일치하는 모든 트래픽이 이전 단계에서 나열한 IP 주소로 리디렉션됩니다.

    gcloud dns record-sets transaction add \
     --name="*.tunnel.cloudproxy.app." \
     --type=CNAME tunnel.cloudproxy.app. \
     --zone=ZONE_NAME \
     --ttl=300
    
  7. 트랜잭션을 실행합니다.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME
    

BIND로 DNS 구성

Cloud DNS 대신 BIND를 사용할 수 있습니다. 이 경우 BIND로 DNS 구성 안내를 따릅니다. 단, 일반적인 googleapis.com 도메인 대신 TCP 도메인의 IAP를 사용합니다.

비공개 VIP 사용

제한된 VIP를 사용하는 대신 경계와 네트워크를 구성한 방법에 따라 비공개 VIP를 사용할 수도 있습니다. 원하는 경우 다음을 사용합니다.

199.36.153.8 199.36.153.9 199.36.153.10 199.36.153.11

다음을 대신합니다.

199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7

DNS 레코드 구성의 안내를 참조하세요.

공유 VPC 사용

공유 VPC를 사용하는 경우 호스트와 서비스 프로젝트를 서비스 경계에 추가해야 합니다. 서비스 경계 관리를 참조하세요.

다음 단계