Bastion Host 대신 IAP를 사용하여 VM 접속하기
1. 테스트를 위해 간단하게 VPC를 생성합니다.
접속 테스트를 위해 Linux VM(Ubuntu), Windows VM(Windows Server 2019 DC)를 각각 1대씩 생성하였습니다.(외부 접근이 불가능하게 Private하게 구성)
2. IAP 사용을 위한 방화벽을 설정해줍니다.
(https://cloud.google.com/iap/docs/using-tcp-forwarding#create-firewall-rule)
생성이 완료되었습니다.
3. IAP 사용을 위한 IAM 권한을 확인합니다.
많이들 사용하시는 Owner(소유자) 권한 내에는 해당 권한이 포함되어 있지만, Editor(편집자) 권한에는 포함되어 있지 않아 권한을 추가해 주어야 합니다.
(“iap.tunnelResourceAccessor(IAP 보안 터널 사용자)” 권한 추가 필요)
https://cloud.google.com/iap/docs/managing-access#roles
4. Private하고 외부와 단절되어 있는 VM에 IAP를 사용하여 접속해봅니다.(SDK 사용)
먼저 “gcloud auth login”을 입력하여 인증을 하고, SSH와 RDP에 각각 접속해 봅니다.
4-1. SSH 접속
gcloud compute ssh VM_NAME --tunnel-through-iap --zone=ZONE --project=PROJECT_ID
Putty가 실행되면서 정상적으로 접속이 됩니다.
4-2. RDP 접속
gcloud compute start-iap-tunnel VM_NAME 3389 --zone=ZONE --project=PROJECT_ID
Listening on port 18507 이라는 메세지가 보이는데 RDP에서 “Localhost:18507” 로 접속 합니다.
정상적으로 접속이 됩니다.
5. 결론
이렇게 GCP에서는 별도의 Bastion Host용 VM을 생성하지 않아도 IAP를 사용하여 Private VM에 대한 접근이 가능합니다.
일반적으로 [User → IAP → Private VM] 의 방식으로 활용이 가능하며,
[User → IAP → Private Bastion VM → Private VM] 의 방식으로도 활용이 가능합니다.
감사합니다.