온프레미스 호스트의 비공개 Google 액세스 구성

비공개 Google 액세스를 사용하면 온프레미스 호스트가 Cloud VPN 또는 Cloud Interconnect 연결을 통해 외부 공개 IP 주소가 아닌 내부 비공개 IP 주소를 사용하여 Google API 및 서비스에 연결할 수 있습니다.

비공개 호스트가 비공개 Google 액세스를 사용하여 도달할 할 수 있는 클라우드 및 개발자 API와 서비스는 다음과 같습니다.

비공개 Google 액세스를 사용하여 도달하고 VPC 서비스 제어를 통해 보호되는 경우:

  • BigQuery
  • Dataflow(Cloud Storage에만 해당)
  • Dataproc(인스턴스 호출만 작성)
  • Cloud Deployment Manager
  • Cloud Storage JSON API

비공개 Google 액세스를 사용하여 도달하지만 VPC 서비스 제어를 통해 보호되지 않는 경우:

  • Cloud DNS
  • Logging
  • Monitoring
  • Pub/Sub
  • Resource Manager Error Reporting
  • Error Reporting
  • Cloud Runtime Configuration API

이 문서에서는 온프레미스 호스트에 비공개 Google 액세스를 사용 설정하는 방법을 설명합니다.

요구사항

비공개 Google 액세스의 요건은 다음과 같습니다.

  • Google Cloud Console의 API 및 서비스 페이지를 통해 액세스하려는 API를 사용 설정해야 합니다.
  • Google API 트래픽이 Cloud VPN 또는 Cloud Interconnect 연결을 통해 전달되도록 경로를 구성하고, 발신되는 트래픽을 허용하도록 온프레미스 방화벽에 방화벽 규칙을 구성하며, Google API에 대한 트래픽이 경로에 추가한 IP 범위를 확인하도록 DNS를 구성해야 합니다. 이 문서의 나머지 부분에서는 이 과정을 설명합니다.

경로 구성

Cloud Router 커스텀 경로 공지를 사용하여 Cloud Router를 통해 제한된 Google API IP 주소를 온프레미스 네트워크에 알릴 수 있습니다. 제한된 Google API의 IP 범위는 199.36.153.4/30입니다. 기술적으로는 공개 IP 범위이지만 Google은 이를 공개적으로 발표하지 않습니다. 이 IP 범위는 Cloud VPN 또는 Cloud Interconnect 연결과 같이 내부 IP 범위를 통해 GCP 프로젝트에 연결할 수 있는 호스트만 액세스할 수 있습니다.

기존 Cloud Router에 광고를 지정하려면 다음 안내를 따르세요.

Console


  1. Google Cloud Console의 Cloud Router 페이지로 이동합니다.
    Cloud Router 목록
  2. 업데이트할 Cloud Router를 선택합니다.
  3. Cloud Router의 세부정보 페이지에서 수정을 선택합니다.
  4. 공지된 경로 섹션을 펼칩니다.
  5. 경로커스텀 경로 만들기를 선택합니다.
  6. Cloud Router에서 사용할 수 있는 서브넷을 계속 공지하려면 Cloud Router에 표시되는 모든 서브넷 공지를 선택합니다. 이 옵션을 사용하도록 설정하면 Cloud Router의 기본 동작을 모방합니다.
  7. 공지 경로를 추가하려면 커스텀 경로 추가를 선택합니다.
  8. 경로 공지를 구성합니다.
    • 소스 — 커스텀 IP 범위를 지정하려면 커스텀 IP 범위를 선택합니다.
    • IP 주소 범위 - 199.36.153.4/30을 지정합니다.
    • 설명 -에 대한 설명 추가 Restricted Google APIs IPs.
  9. 경로 추가가 완료되면 저장을 선택합니다.

gcloud


update 명령어를 실행하고 --set-advertisement-ranges 플래그 또는 --add-advertisement-ranges 플래그를 사용하여 커스텀 IP 범위를 지정합니다.

  • 커스텀 IP 범위를 설정하려면 --set-advertisement-ranges 플래그를 사용합니다. 기존의 모든 커스텀 공지가 대체됩니다. 다음 예시에서는 my-router Cloud Router를 업데이트하여 모든 서브넷과 제한된 Google API IP 범위 199.36.153.4/30을 공지합니다.

        gcloud compute routers update my-router \
            --advertisement-mode custom \
            --set-advertisement-groups all_subnets \
            --set-advertisement-ranges 199.36.153.4/30
        

    --set-advertisement-groups 플래그는 Cloud Router가 동적으로 공지하는 Google 정의 그룹을 허용합니다. --set-advertisement-groups 플래그를 삭제하여 서브넷 공지를 제외할 수 있습니다. 전체 공지 그룹 목록은 Google SDK 문서의 advertisement-groups 플래그를 참조하세요.

  • 기존 공지에 커스텀 IP 범위를 추가하려면 --add-advertisement-ranges 플래그를 사용합니다. 이 플래그를 사용하려면 Cloud Router의 공지 모드가 이미 custom으로 설정되어 있어야 합니다. 다음 예시에서는 Restricted Google APIs IPs 커스텀 IP를 Cloud Router의 공지에 추가합니다.

        gcloud beta compute routers update my-router \
            --add-advertisement-ranges Restricted Google APIs IPs
        

기존 BGP 세션에 공지를 지정하려면 다음을 수행하세요.

Console


  1. Google Cloud Console의 Cloud Router 페이지로 이동합니다.
    Cloud Router 목록
  2. 업데이트할 BGP 세션이 포함된 Cloud Router를 선택합니다.
  3. Cloud Router의 세부정보 페이지에서 업데이트할 BGP 세션을 선택합니다.
  4. BGP 세션 세부정보 페이지에서 수정을 선택합니다.
  5. 경로커스텀 경로 만들기를 선택합니다.
  6. Cloud Router에서 사용할 수 있는 서브넷을 계속 공지하려면 Cloud Router에 표시되는 모든 서브넷 공지를 선택합니다. 이 옵션을 사용하도록 설정하면 Cloud Router의 기본 동작을 모방합니다.
  7. 공지 경로를 추가하려면 커스텀 경로 추가를 선택합니다.
  8. 경로 공지를 구성합니다.
    • 소스 — 커스텀 IP 범위를 지정하려면 커스텀 IP 범위를 선택합니다.
    • IP 주소 범위 - 199.36.153.4/30을 지정합니다.
    • 설명Restricted Google APIs IPs 설명을 추가합니다.
  9. 경로 추가가 완료되면 저장을 선택합니다.

gcloud


update-bgp-peer 명령어를 실행하고 --set-advertisement-ranges 플래그 또는 --add-advertisement-ranges 플래그를 사용하여 커스텀 IP 범위를 지정합니다.

  • 커스텀 IP 범위를 설정하려면 --set-advertisement-ranges 플래그를 사용합니다. 기존의 모든 커스텀 공지가 대체됩니다. 다음 예시에서는 모든 서브넷과 커스텀 IP 범위 199.36.153.4/30 및 을 공지하도록 my-router Cloud Router의 my-bgp-session BGP 세션을 업데이트합니다.

        gcloud beta compute routers update-bgp-peer my-router \
            --peer-name my-bgp-session \
            --advertisement-mode custom \
            --set-advertisement-groups all_subnets \
            --set-advertisement-ranges 199.36.153.4/30
        

    --set-advertisement-groups 플래그는 BGP 세션이 동적으로 공지하는 Google 정의 그룹을 허용합니다. --set-advertisement-groups 플래그를 삭제하여 서브넷 공지를 제외할 수 있습니다. 전체 공지 그룹 목록은 Google SDK 문서의 advertisement-groups 플래그를 참조하세요.

  • 기존 공지에 커스텀 IP 범위를 추가하려면 --add-advertisement-ranges 플래그를 사용합니다. 이 플래그를 사용하려면 Cloud Router의 공지 모드가 이미 custom으로 설정되어 있어야 합니다. 다음 예시에서는 제한된 Google API IP 199.36.153.4/30을 Cloud Router의 공지에 추가합니다.

        gcloud beta compute routers update-bgp-peer my-router \
            --peer-name my-bgp-session \
            --add-advertisement-ranges 199.36.153.4/30
        

방화벽 규칙 구성

온프레미스 호스트에서 199.36.153.4/30에 도달하는 트래픽을 허용하려면 온프레미스 방화벽을 구성해야 합니다.

DNS 구성

제한된 Google API IP 주소를 사용하려면 *.googleapis.comrestricted.googleapis.com의 CNAME으로 확인되도록 DNS 서버를 구성합니다. 베타 기간 동안 제한사항이 있는 상태에서 이를 수행하는 두 가지 방법이 있습니다. 두 가지 방법은 Cloud DNS 비공개 DNS 영역과 커스텀 BIND입니다.

Cloud DNS로 DNS 구성

Cloud DNS 비공개 DNS의 비공개 베타를 사용하는 경우 Cloud DNS를 사용하여 비공개 Google 액세스의 DNS 확인을 사용 설정할 수 있습니다.

gcloud


    gcloud alpha dns managed-zones create apis \
        --visibility private \
        --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \
        --dns-name googleapis.com
    
    gcloud dns record-sets transaction start -z apis
    
    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME restricted.googleapis.com. --zone apis --ttl 300
    
    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone apis --ttl 300
    
    gcloud dns record-sets transaction execute --zone apis
    

BIND로 DNS 구성

온프레미스 DNS 확인에 BIND를 사용한다면 응답 정책 영역(RPZ)을 사용하도록 구성할 수 있습니다. 다음은 BIND 구성의 예시입니다.

  1. /etc/bind/named.conf에 다음 줄을 추가합니다.
        include "/etc/bind/named.conf.options";
        include "/etc/bind/named.conf.local";
        
  2. /etc/bind/named.conf.options에 다음 줄을 추가합니다.

        options {
          directory "/var/cache/bind";

    dnssec-validation no;

    auth-nxdomain no; # conform to RFC 1035 listen-on-v6 { any; }; listen-on { any; }; };

  3. /etc/bind/named.conf.local에 다음 줄을 추가합니다.

        include "/etc/bind/named.conf.default-zones";

    allow-query { any;};

    response-policy { zone "googleapis.zone"; };

    zone "googleapis.zone" { type master; file "/etc/bind/db.googleapis.zone"; allow-query {none;}; };

  4. /etc/bind/db.googleapis.zone에 다음 줄을 추가합니다.

        $TTL 1H
        @                       SOA LOCALHOST. noreply.localhost(1 1h 15m 30d 2h)
                                NS  LOCALHOST.

    *.googleapis.com CNAME restricted.googleapis.com. restricted.googleapis.com CNAME rpz-passthru.

활용 사례: 하이브리드 클라우드 시나리오에서 Cloud Storage API 연결 및 정책 설정

아래 그림의 상황을 고려해보세요. 다음과 같은 동작을 구현하려 합니다.

  • 온프레미스 호스트는 Cloud Storage API에 비공개로 액세스할 수 있지만 해당 프로젝트의 스토리지 버킷에만 액세스할 수 있습니다.
  • VPC 네트워크 VM과 비공개로 연결된 온프레미스 애플리케이션에서만 sensitive-buckets 프로젝트에 액세스할 수 있습니다.
하이브리드 클라우드 사용 사례를 위한 비공개 Google 액세스(클릭하여 확대)

이 설정을 만드는 데 필요한 단계는 다음과 같습니다.

  1. Cloud Router를 통해 제한된 Google API IP 알림

    Google API 액세스에 대한 공지를 업데이트하는 기존 Cloud Router가 있는 경우 기존 Cloud Router의 단일 특정 피어 또는 모든 피어에 대한 액세스를 구성할 수 있습니다.

    기존 Cloud Router의 단일 특정 피어에만 구성하는 경우:

        gcloud compute routers update-bgp-peer [CLOUD_ROUTER] \
            --region=[CLOUD_ROUTER_REGION] \
            --peer-name=[BGP_PEER] \
            --advertisement-mode=custom \
            --set-advertisement-groups=all_subnets \
            --set-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        

    기존 Cloud Router의 모든 피어에 구성하는 경우:

        gcloud compute routers update [CLOUD_ROUTER] \
        --region=[CLOUD_ROUTER_REGION] \
        --add-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        

    기존 Cloud Router가 없고 비공개 Google API에 대한 액세스를 구성해야 하는 경우:

        gcloud compute routers create [CLOUD_ROUTER] \
            --region=[CLOUD_ROUTER_REGION] \
            --advertisement-mode=custom \
            --set-advertisement-groups=all_subnets \
            --set-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        
  2. 온프레미스 애플리케이션과 DNS를 구성하여 Google API 스토리지를 요청하고 storage.restricted.gooogleapis.com을 확인합니다.

  3. 사용자 가이드에 따라 VPC 서비스 제어를 구성합니다. VPC 서비스 제어의 경우 고객 엔지니어에게 문의하여 보호하려는 프로젝트에 대한 정보를 제공해야 합니다.

다음 단계