Google Cloud 또는 Google Cloud 이외의 환경에서 IP 주소나 호스트 이름으로 IAP TCP 전달 설정

이 페이지에서는 IP 주소 또는 호스트 이름 기능을 사용하여 IAP(Identity-Aware Proxy) TCP 전달을 설정하고 사용하는 방법을 설명합니다.

IP 주소 또는 호스트 이름 기능으로 IAP TCP 전달을 사용하려면 BeyondCorp Enterprise 라이선스가 있어야 합니다.

개요

Google Cloud CLI를 사용하여 리소스 비공개 IP 주소 또는 호스트 이름으로 리소스에 대한 터널을 만들 수 있습니다. Cloud Interconnect 또는 VPN을 통해 Google Cloud에 연결된 Google Cloud 이외의 외부 리소스가 있는 경우 이러한 리소스와 함께 IAP TCP 전달을 사용할 수 있습니다.

시작하기 전에

Google Cloud 외부의 리소스로 터널링해야 하는 경우 하이브리드 연결이 구성되어 있어야 합니다. Google Cloud 이외의 외부 리소스를 Google Cloud에 연결하려면 하이브리드 연결이 필요합니다. 자세한 내용은 Cloud Interconnect 또는 Cloud VPN 문서를 참조하세요.

대상에서 인터넷이 아닌 Cloud VPN 또는 Cloud Interconnect를 통해 응답 트래픽을 다시 보내도록 Cloud Router가 IAP-TCP IP 범위(35.235.240.0/20)를 공지해야 합니다. 이 구성이 없으면 Google Cloud 프로젝트 외부의 리소스에 터널을 만들 수 없습니다.

IAP-TCP IP 범위(35.235.240.0/20)를 공지하도록 Cloud Router를 구성하려면 커스텀 IP 범위 공지의 안내를 따르세요.

다음 절차는 태스크를 완료하기 위한 gcloud 예시를 제공합니다. API를 사용하여 대상 그룹과 상호작용하는 방법에 대한 자세한 내용은 REST 리소스: projects.iap_tunnel.locations.destGroups를 참조하세요.

터널 대상 그룹 만들기

터널을 구성할 때 권한 확인에 사용할 수 있는 대상 그룹을 지정합니다. 터널 대상 그룹은 같은 터널 액세스 제한사항이 있는 리소스를 나타냅니다. 개수에 관계없이 각각 일치하는 IP 범위나 FQDN이 포함된 대상 그룹을 만들 수 있습니다. 대상 그룹은 보다 유연하게 중첩될 수 있습니다.

대상 그룹을 만들 때 리전을 지정해야 합니다. 최상의 결과를 얻으려면 지정한 리전이 대상 리소스 위치와 일치해야 합니다. 예를 들어 리소스가 VPN으로 연결되면 VPN 게이트웨이 리전을 사용해야 합니다.

대상 그룹을 만들려면 iap.tunnelDestGroups.create 권한이 있어야 하며 iap.tunnelDestGroupEditor 역할을 통해 이 권한을 부여할 수 있습니다. 단일 역할을 부여하려면 IAM 문서의 단일 역할 부여를 참조하세요.

콘솔

  1. IAP 페이지로 이동하여 아직 선택하지 않은 경우 프로젝트를 선택합니다.

  2. SSH 및 TCP 리소스 탭에서 대상 그룹 만들기를 클릭합니다.

  3. 그룹 이름을 입력합니다. 그룹 이름에는 소문자(a~z)와 대시(-)만 포함될 수 있습니다.

  4. 드롭다운 목록에서 대상 그룹을 만들 리전을 선택합니다.

  5. IP 주소 섹션에서 행 추가를 클릭한 후 리소스의 IP 주소 또는 정규화된 도메인 이름(FQDN)을 입력합니다.

    IP 범위는 10.1.2.0/24,172.0.0.0/8과 같이 CIDR 표기법을 사용하여 쉼표로 구분된 범위로 구성됩니다.

    FQDN 목록은 쉼표로 구분된 호스트 이름입니다(예: *.internal.company.com). FQDN 항목에 와일드 카드를 사용할 수 있습니다.

  6. 대상 그룹 만들기를 클릭합니다.

gcloud CLI

gcloud iap tcp dest-groups create YOUR_GROUP_NAME \
  --region=REGION \
  --ip-range-list=IP_RANGE_LIST \
  --fqdn-list=FQDN_LIST

다음을 바꿉니다.

  • YOUR_GROUP_NAME: 그룹 이름 그룹 이름에는 소문자(a~z)와 대시(-)만 포함될 수 있습니다.
  • REGION: 대상 그룹을 만들 리전(예: us-central1)
  • IP_RANGE_LIST: 선택사항. IP 범위 목록. CIDR 표기법을 사용하여 쉼표로 구분된 범위로 구성됩니다(예: 10.1.2.0/24,172.0.0.0/8).
  • FQDN_LIST: 선택사항. FQDN 목록은 쉼표로 구분된 호스트 이름입니다(예: *.internal.company.com). FQDN 항목에 와일드 카드 프리픽스가 있으면 지정된 종료가 있는 호스트 이름과 일치합니다. 그렇지 않으면 일치검색이 필요합니다. 요청이 IP 범위나 FQDN과 일치하면 일치로 간주됩니다.

어떤 그룹이 이미 있는지 확실하지 않으면 다음 명령어를 실행하여 그룹을 나열합니다.

gcloud iap tcp dest-groups list \
  --region=REGION

터널 대상 그룹 관리

대상 그룹의 세부정보를 보고 대상 그룹을 수정하고 삭제할 수 있습니다.

콘솔

  1. 다음으로 IAP 페이지로 이동하고 SSH 및 TCP 리소스 탭을 클릭합니다.

    • 대상 그룹의 세부정보를 보려면 대상 그룹의 이름을 클릭합니다.

    • 대상 그룹을 수정하려면 대상 그룹을 선택한 다음 연필 아이콘을 클릭하여 대상 그룹 수정 패널을 엽니다. 이 패널에서 대상 그룹을 삭제할 수도 있습니다.

    • 대상 그룹을 삭제하려면 대상 그룹을 선택한 다음 휴지통 아이콘을 클릭합니다.

gcloud CLI

gcloud CLI를 사용하여 대상 그룹을 관리하는 방법에 대한 자세한 내용은 대상 그룹 gcloud 명령어를 참조하세요.

터널 권한 구성

터널을 만들려면 관련 대상 그룹에 대한 iap.tunnelDestGroups.accessViaIAP 권한이 있어야 합니다. iap.tunnelResourceAccessor 역할을 통해 권한을 부여할 수 있습니다.

대상 그룹에 대한 권한을 구성하려면 iap.tunnelDestGroups.setIamPolicy 권한이 있어야 하며 iap.admin 역할을 통해 이 권한을 부여할 수 있습니다.

콘솔

  1. IAP 페이지로 이동합니다.

  2. SSH 및 TCP 리소스 탭에서 권한을 구성할 대상 그룹을 선택합니다.

  3. 열리는 패널에서 주 구성원 추가를 클릭하고 사용자의 이메일 주소를 입력합니다.

  4. 역할 할당 섹션에서 주 구성원에 할당할 역할을 선택합니다.

  5. 저장을 클릭합니다.

gcloud CLI

gcloud iap tcp dest-groups add-iam-policy-binding \
  --member=MEMBER \
  --role=ROLE \
  --dest-group=GROUP_NAME \
  --region=REGION

다음을 바꿉니다.

  • MEMBER: 사용자의 이메일 주소(예: user:exampleuser@company.com)
  • ROLE: 필수 IAP 역할 roles/iap.tunnelResourceAccessor
  • GROUP_NAME: 대상 그룹 이름
  • REGION: 리전 이름(예: us-central1)

터널 사용량 이해

IAP-TCP를 사용할 때 사용할 수 있는 gcloud CLI 명령어는 start-iap-tunnel, SSH, SCP입니다.

IAP-TCP 명령어가 IP 및 FQDN 기반 터널링을 지원하도록 업데이트되었습니다. IP 주소나 FQDN으로 전환하려면 명령어를 사용할 때 다음을 수행합니다.

  • 인스턴스 이름 대신 IP 주소나 FQDN을 지정합니다.
  • --zone 대신 --region을 사용하세요.
  • --dest-group을 사용하여 사용할 대상 그룹을 지정합니다.
  • --network를 사용하여 사용할 VPC 네트워크의 이름을 지정합니다.

지정한 IP 주소가 대상의 비공개 IP 주소여야 합니다. 공개 IP 주소로는 IAP-TCP를 사용할 수 없습니다. FQDN을 사용하는 경우 대상의 비공개 IP 주소로 확인되어야 합니다. 이름 확인은 클라이언트의 네트워크에서가 아닌 지정한 VPC 네트워크 내에서 수행됩니다. 예를 들어 vm.corp.company.com에 대한 터널을 만들려고 하면 vm.corp.company.com을 IP 주소로 변환하는 단계가 VPC 네트워크의 컨텍스트 내에서 발생합니다.

지정한 리전이 대상 그룹의 리전과 일치해야 합니다.

지정한 네트워크가 대상에 대한 액세스 권한이 있는 VPC 네트워크의 이름과 일치해야 합니다. 일반적인 네트워크 이름은 default입니다. Google Cloud 콘솔의 VPC 네트워크 페이지에서 네트워크 이름 목록을 보거나 다음 명령어를 실행하여 네트워크 이름 목록을 가져올 수 있습니다.

gcloud compute networks list --format='value(name)'

Examples

다음 예시에서는 예시 IP 주소 172.16.1.2을 사용합니다. 각 명령어는 IP 주소 대신 FQDN(예: example.internal.company.com)을 사용할 수도 있습니다.

SSH 예시

172.16.1.2에 대한 SSH 세션을 시작하려면 다음 명령어를 실행합니다.

gcloud compute ssh 172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap

DESTINATION_GROUP_NAME을 대상 그룹 이름으로 바꿉니다.

--plain은 묵시적이므로 IP 주소를 사용할 때 SSH 키를 자동으로 관리하고 푸시하려고 시도하지 않습니다.

Permission denied (publickey) 오류가 발생하면 명령어가 SSH 키가 포함된 파일을 찾지 못한 것입니다. 이 문제를 해결하려면 다음 예시와 같이 SSH 비공개 키가 포함된 파일의 경로를 SSH 명령어의 매개변수로 추가합니다.

gcloud compute ssh 172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap \
    -- -i ~/.ssh/google_compute_engine

DESTINATION_GROUP_NAME을 대상 그룹 이름으로 바꿉니다.

특정 사용자로 로그인하려면 IP만 지정하는 대신 USER@IP 형식을 사용합니다.

gcloud compute ssh user@172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap

계정이 비밀번호로 보호되는 경우 비밀번호를 입력해야 합니다. 계정이 비공개 또는 공개 SSH 키 쌍으로 보호되는 경우 위에서 설명한 대로 -- -i 플래그를 사용하여 지정해야 합니다.

터널 예시

다른 TCP 포트에 대한 터널을 설정하려면 start-iap-tunnel 명령어를 사용합니다. localhost:8022에서 172.16.1.2:8085 포트로의 터널을 만들려면 다음 명령어를 실행합니다.

gcloud compute start-iap-tunnel 172.16.1.2 8085 \
    --local-host-port=localhost:8022 \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default

이 예시에서는 대상 머신이 포트 8085를 리슨해야 합니다.

터널을 설정한 후에는 PuTTy와 같은 모든 도구를 사용하여 연결을 설정할 수 있습니다.

SCP 예시

파일을 172.16.1.2으로 SCP하려면 다음 명령어를 실행합니다.

gcloud compute scp file.txt 172.16.1.2:~/ \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default \
    --tunnel-through-iap

--plain은 묵시적이므로 IP 주소를 사용할 때 SSH 키를 자동으로 관리하고 푸시하려고 시도하지 않습니다.

SSH ProxyCommand 예시

항상 172.16.1.2으로 터널링되는 ProxyCommand로 명령어를 사용하려면 다음 예시와 같이 ~/.ssh/config 구성 또는 그에 해당하는 항목을 추가하세요.

Host example
ProxyCommand gcloud compute start-iap-tunnel 172.16.1.2 '%p' \
    --listen-on-stdin \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default \
    --verbosity=warning
  

ProxyCommand는 ssh example 명령어를 실행할 때 적용됩니다.

다음 예시와 같이 ProxyCommand에서 많은 호스트 이름을 처리하도록 설정할 수도 있습니다.

Host *.internal.company.com
ProxyCommand gcloud compute start-iap-tunnel '%h' '%p' 
--listen-on-stdin
--region=us-central1
--dest-group=destination-group-name
--network=default --verbosity=warning

ProxyCommand는 ssh example.internal.company.com 명령어를 실행할 때 적용됩니다.