Cloud/GCP

[GCP] VM Security - API 제어 및 Cloud IAP

Ofglen 2023. 7. 7. 12:28

VM Security

Compute Engine의 API 액세스 설정

Service Account는 API를 활성화하게 되면 구글에서 관리하는 default로 생성된다.

default는 많은 권한을 가지고 있고 Compute Engine에 들어가는 default라는 계정은 Editor 권한을 가지고 있어서 사용 범위가 너무 넓다. 따라서 Compute Engine에서는 Service Account는 사용하지 않는다. 그 대신 VM 인스턴스의 API 액세스 설정으로 해당 인스턴스에 대한 API 호출을 허용 또는 제한하는 방법을 정의한다.

 

 

 

액세스 범위는 인스턴스에서 호출할 수 있는 특정 API의 범위를 정의한다. 이는 인스턴스에 할당된 IAM 역할 및 서비스 계정에 적용된다. 액세스 범위는 각 API에 대해 정의되며, 필요에 따라 개별적으로 구성될 수 있다.

 

 

 

 

 

골든 디스크

골든 디스크란 다양한 가상 네트워크 하드웨어에 대한 템플릿으로, 복제된 디스크이다.

골든 디스크는 그 시점에 대한 디스크이기 때문에 업데이트가 반영되지 않는다. 따라서 한 번 만들어 놓고 끝이 아니고, 주기적으로 업데이트해줘야 한다. 애플리케이션이 올라간 운영체제도 업데이트가 있었을 것이다.

따라서 클라우드가 구글에 의해 관리가 된다고 하더라도, 애플리케이션이 올라가는 인스턴스와 인스턴스가 올라가는 OS에 대한 책임은 고객의 책임이기 때문이다.

따라서, 골든디스크를 사용할 때에는 정기적인 업데이트에 유의해야 한다.

 

 

 

스냅샷 vs 이미지 vs 골든 디스크

- 스냅샷: VM의 형태 상태를 캡처해서 나중에 해당 상태로 복원할 수 있는 VM의 데이터 및 디스크 이미지

- 이미지: VM의 디스크 상태를 포함하는 복제본(운영체제, 설치된 애플리케이션, 데이터)으로 VM을 생성하는 데 필요한 모든 정보를 담고 있다.

- 골든 디스크: VM의 마스터 디스크로 사용되는 이미지이다. 이를 통해 일관된 VM의 배포와 관리를 용이하게 할 수 있다.

 

 

 

보안 강화된 가상 머신

Confidential VM

기존의 가상 머신과 달리 Confidential VM은 사용 중인 데이터까지 암호화한다.

암호화된 메모리를 사용하여 데이터의 안전성과 기밀성을 보호한다.

따라서 사용 중인 데이터까지 암호화하는 보안이 더 철두철미한 VM을 제공한다.

 

 

 

 

보안 VM (Shielded VM)

Shielded VM는 펌웨어를 안전화한다. 상단에 올라간 애플리케이션 외에 하드웨어(커널)의 침해가 일어날 수 있다.

정상 상태의 시그니처를 만들어 놓은 뒤, 침해를 당하면 부팅하는 과정에서 시그니처와 달라지면 침해당한 VM이라고 인식하고 애플리케이션을 부팅하지 않는다.

따라서 하드웨어(펌웨어)적인 취약점을 방지하는 VM이다.

 

 

 

VM 접속 방식

  1. SSH Keys: 특정 사용자라 로컬 PC 또는 다른 위치에서 에서 터미널에 접속하려고 할 때, 본인이 SSH Key를 만들어서 접속할 수 있다. custom SSH Key를 등록한 후 사용할 수 있다. SSH KEys 방법은 비밀번호 없이 안전한 원격 접속을 제공하지만, 키를 관리해야 하는 불편성이 있다. 만약 키를 복제해 갔다면 미허가 된 사용자가 키를 탈취해서 로그인할 수 있다.
  2. OS Login: 따라서 구글에서는 OS Login 방식을 제공한다. 클라우드 플랫폼에서 IAM을 사용하여 사용자에게 특정 리소스에 대한 액세스 권한을 부여한 후, 해당 리소스에 접속하기 위해 OS 로그인을 사용할 수 있다. 이는 IAM에서 제어된 액세스와 운영 체제 수준의 인증 및 권한 부여를 결합하여 보안을 강화하는 방법이다. gcloud 명령어를 사용한다. (기본 enable 설정)

 

 

 

IAP(Identity-Aware Proxy)

IAP-TCP (TCP 전달을 위한 IAP 사용)

VM의 외부 접근을 차단하기 위해서는 public IP를 사용하지 않는다. (권장 사항)

외부에서 Internal 자원만 가진 리소스에 접근하기 위해서는 IAP-to-TCP 터널을 생성한다.

IAP-to-TCP 터널을 생성하고 유저에게 IAM-TCP 권한을 부여하면, IAM에 의해 인가된 사용자라고 확인 됐을 때, VM에 대한 관리적인 접근을 허용한다.

 

 

 

https://jayendrapatil.com/google-cloud-identity-aware-proxy-iap/

 

 

 

 

위 사진에서처럼, public ip 없이 웹 애플리케이션에 대한 외부 접근을 허용하려면, Cloud IAP를 통해 유저가 IAM에 의해 인가된 유저인지를 확인한 후, VM 내의 웹 애플리케이션에 접근할 수 있는 권한을 허용해 준다. 따라서 로드밸런서(L7)에 인가된 트래픽만 외부로부터의 접근을 허용하도록 설정할 수 있다.