개요

External IP가 없는 인스턴스가 있다면, 이 서버는 인터넷과 격리되어 관리자가 직접 연결하여 CLI 명령어를 실행할 수가 없다는 것은 모든 이들이 잘 알고 있다. 그런데, GCP에서는 External IP가 없어도 인스턴스에 연결할 수 있는 방법을 제공하고 있다. IAP(Identity-Aware Proxy) 서비스를 이용하면 External IP 없이도 인스턴스에 접속이 가능하다.

Identity-Aware Proxy 란 무엇입니까?

IAP (Identity-Aware Proxy)는 애플리케이션으로 전송 된 웹 요청을 가로 채고 Google ID 서비스를 사용하여 요청하는 사용자를 인증하며 승인 된 사용자가 요청한 경우에만 요청을 허용하는 Google Cloud Platform 서비스이다. 또한 인증 된 사용자에 대한 정보를 포함하도록 요청 헤더를 수정할 수 있다. IAP의 활용 방법 2가지 중에서 여기서는 “HTTPS RESOURCES"에 대한 제어가 아닌 “SSH AND TCP RESOURCES"에 대한 제어 방법을 알아본다.

구성 방법

  1. IAP(Identity-Aware Proxy) 서비스를 사용을 위해 API를 활성화한다. GCP 메뉴 > APIs & Services > Library > IAP를 검색 하여 Enable 해주거나 GCP 메뉴 > Security > Identity-Aware Proxy 에 처음 접속하면 다음과 같이 활성화 하라고 나온다.

    2021-05-25-csp-gcp-iap-1.jpg

  2. SSH AND TCP RESOURCES 메뉴에서 인스턴스를 확인 할 수 있다.

    2021-05-25-csp-gcp-iap-2.jpg

  3. “Warning” 이라는 문구가 너무 신경쓰인다. 클릭해서 내용을 확인하자.

    아래 내용대로 방화벽 규칙을 추가 생성하고, 인스턴스에 적용해주자.

    2021-05-25-csp-gcp-iap-3.jpg

    • 소스필터 : 35.235.240.0/20
    • 프로토콜 : TCP
  4. IAM 에서 사용자/그룹들에 대해 최소 권한의 Role을 구성 한다.

    소유자 권한을 부여하지 말고, 각 사용자 또는 그룹별로 최소한의 권한을 가질 수 있도록 Role 을 적절히 구성한다.

  5. IAM 또는 IAP 메뉴에서 Web Console에서의 SSH 접속을 허용할 구성원 또는 그룹에 Role을 추가한다.

    1. IAP 메뉴에서 방화벽 설정이 잘 되었음(OK)을 확인한 후, 인스턴스를 선택하고, “ADD MEMBER"를 클릭하여 “IAP-Secured Tunnel User” Role을 추가한다.

    2021-05-25-csp-gcp-iap-4.jpg{: width=“800”}

    1. IAM에서 구성원 또는 그룹에 “IAP-Secured Tunnel User” Role을 추가한다.

    2021-05-25-csp-gcp-iap-5.jpg

  6. SSH 버튼 활성화 확인

    2021-05-25-csp-gcp-iap-6.jpg{: width=“800”}

SSH 버튼 조건

GCP Web Console > Compute Engine > VM Instances 에서 SSH 버튼 활성화/비활성화 조건

No.External IPIAP APIIAP 역할SSH 버튼SSH 접속여부이유
1OEnableX활성가능External IP가 존재해서
2OXX활성가능External IP가 존재해서
3XEnableX비활성불가능IAP 보안 터널을 사용할 수 없어서
4XXX비활성불가능IAP 보안 터널을 사용할 수 없어서
5OEnableO활성가능External IP가 존재해서
6OXO활성가능External IP가 존재해서
7XEnableO활성가능IAP 보안 터널을 사용할 수 있어서
8XXO활성불가능IAP 보안 터널 사용자 권한은 있어서 버튼은 활성화 되나 API 비활성화로 접속 안됨

결론

  1. Google Cloud Web Console에서 SSH 버튼을 비활성화 하기 위해서는, 인스턴스에서 External IP를 제거하면 된다. (3,4번 테스트 결과)
  2. 브라우저에서 External IP가 없는 인스턴스로 SSH 연결을 하기 위해서는 IAP(Identity-Aware Proxy) 서비스를 사용하면 된다.
  3. Windows(cmd) 또는 Mac(terminal)에서 접속시에는 “gcloud compute ssh " 명령어를 사용하여 접속하면 된다.