이 페이지에서는 IP 주소 또는 호스트 이름 기능을 사용하여 IAP(Identity-Aware Proxy) TCP 전달을 설정하고 사용하는 방법을 설명합니다.
IP 주소 또는 호스트 이름 기능으로 IAP TCP 전달을 사용하려면 Chrome Enterprise Premium 라이선스가 있어야 합니다.
개요
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 문서의 단일 역할 부여를 참조하세요.
콘솔
IAP 페이지로 이동하고 아직 선택하지 않은 경우 프로젝트를 선택합니다.
SSH 및 TCP 리소스 탭에서 대상 그룹 만들기를 클릭합니다.
그룹 이름에 이름을 입력합니다. 그룹 이름에는 소문자(a~z)와 대시(-)만 포함될 수 있습니다.
드롭다운 목록에서 대상 그룹을 만들 리전을 선택합니다.
IP 주소 섹션에서 행 추가를 클릭한 후 리소스의 IP 주소 또는 정규화된 도메인 이름(FQDN)을 입력합니다.
IP 범위는
10.1.2.0/24,172.0.0.0/8
과 같이 CIDR 표기법을 사용하여 쉼표로 구분된 범위로 구성됩니다.FQDN 목록은 쉼표로 구분된 호스트 이름입니다(예:
*.internal.company.com
). FQDN 항목에 와일드 카드를 사용할 수 있습니다.대상 그룹 만들기를 클릭합니다.
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
터널 대상 그룹 관리
대상 그룹의 세부정보를 보고 대상 그룹을 수정, 삭제할 수 있습니다.
콘솔
다음으로 IAP 페이지로 이동하고 SSH 및 TCP 리소스 탭을 클릭합니다.
대상 그룹의 세부정보를 보려면 대상 그룹의 이름을 클릭합니다.
대상 그룹을 수정하려면 대상 그룹을 선택한 후 연필 아이콘을 클릭하여 대상 그룹 수정 패널을 엽니다. 이 패널에서 대상 그룹을 삭제할 수도 있습니다.
대상 그룹을 삭제하려면 대상 그룹을 선택한 다음 휴지통 아이콘을 클릭합니다.
gcloud CLI
gcloud CLI를 사용하여 대상 그룹을 관리하는 방법에 대한 자세한 내용은 대상 그룹 gcloud 명령어를 참조하세요.
터널 권한 구성
터널을 만들려면 관련 대상 그룹에 대한 iap.tunnelDestGroups.accessViaIAP
권한이 있어야 합니다. iap.tunnelResourceAccessor
역할을 통해 권한을 부여할 수 있습니다.
대상 그룹에 대한 권한을 구성하려면 iap.tunnelDestGroups.setIamPolicy
권한이 있어야 하며 iap.admin
역할을 통해 이 권한을 부여할 수 있습니다.
콘솔
IAP 페이지로 이동합니다.
SSH 및 TCP 리소스 탭에서 권한을 구성하려는 대상 그룹을 선택합니다.
패널이 열리면 주 구성원 추가를 클릭하고 사용자의 이메일 주소를 입력합니다.
역할 할당 섹션에서 주 구성원에게 할당할 역할을 선택합니다.
저장을 클릭합니다.
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)'
예시
다음 예시에서는 예시 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
명령어를 실행할 때 적용됩니다.