GCP - Compute Instances

Support HackTricks

기본 정보

Google Cloud Compute Instances는 Google의 클라우드 인프라에서 사용자 정의 가능한 가상 머신으로, 다양한 애플리케이션에 대해 확장 가능하고 주문형 컴퓨팅 파워를 제공합니다. 이들은 글로벌 배포, 지속적인 스토리지, 유연한 OS 선택, 강력한 네트워킹 및 보안 통합과 같은 기능을 제공하여 웹사이트 호스팅, 데이터 처리 및 애플리케이션 실행을 효율적으로 수행할 수 있는 다목적 선택이 됩니다.

Confidential VM

Confidential VM은 AMD EPYC 프로세서의 최신 세대가 제공하는 하드웨어 기반 보안 기능을 사용합니다. 여기에는 메모리 암호화 및 보안 암호화 가상화가 포함됩니다. 이러한 기능은 VM이 호스트 운영 체제 및 하이퍼바이저로부터 처리 및 저장되는 데이터를 보호할 수 있도록 합니다.

Confidential VM을 실행하려면 머신 유형, 네트워크 인터페이스, 부팅 디스크 이미지와 같은 항목을 변경해야 할 수 있습니다.

디스크 및 디스크 암호화

사용할 디스크를 선택하거나 새 디스크를 생성할 수 있습니다. 새 디스크를 선택하면 다음을 수행할 수 있습니다:

  • 디스크의 크기 선택

  • OS 선택

  • 인스턴스가 삭제될 때 디스크를 삭제할지 여부 지정

  • 암호화: 기본적으로 Google 관리 키가 사용되지만, KMS에서 키를 선택하거나 사용할 원시 키를 지정할 수도 있습니다.

컨테이너 배포

가상 머신 내에 컨테이너를 배포할 수 있습니다. 사용할 이미지를 구성하고, 실행할 명령, 인수, 볼륨 마운트, 환경 변수(민감한 정보?)를 설정하고, 이 컨테이너에 대해 여러 옵션을 구성할 수 있습니다. 예를 들어 특권 모드로 실행, stdin 및 가상 TTY를 설정할 수 있습니다.

서비스 계정

기본적으로 Compute Engine 기본 서비스 계정이 사용됩니다. 이 SA의 이메일은 <proj-num>-compute@developer.gserviceaccount.com과 같습니다. 이 서비스 계정은 프로젝트 전체에 대한 Editor 역할(높은 권한)을 가지고 있습니다.

그리고 기본 액세스 범위는 다음과 같습니다:

  • https://www.googleapis.com/auth/devstorage.read_only -- 버킷에 대한 읽기 액세스 :)

  • https://www.googleapis.com/auth/logging.write

  • https://www.googleapis.com/auth/monitoring.write

  • https://www.googleapis.com/auth/servicecontrol

  • https://www.googleapis.com/auth/service.management.readonly

  • https://www.googleapis.com/auth/trace.append

그러나, 클릭 한 번으로 cloud-platform을 부여하거나 사용자 정의 범위를 지정할 수도 있습니다.

방화벽

HTTP 및 HTTPS 트래픽을 허용할 수 있습니다.

네트워킹

  • IP 포워딩: 인스턴스 생성 시 IP 포워딩을 활성화할 수 있습니다.

  • 호스트 이름: 인스턴스에 영구적인 호스트 이름을 부여할 수 있습니다.

  • 인터페이스: 네트워크 인터페이스를 추가할 수 있습니다.

추가 보안

이 옵션들은 VM의 보안을 강화하며 권장됩니다:

  • 보안 부팅: 보안 부팅은 부팅 수준 및 커널 수준의 악성코드와 루트킷으로부터 VM 인스턴스를 보호하는 데 도움이 됩니다.

  • vTPM 활성화: 가상 신뢰 플랫폼 모듈(vTPM)은 게스트 VM의 사전 부팅 및 부팅 무결성을 검증하고, 키 생성 및 보호를 제공합니다.

  • 무결성 모니터링: 무결성 모니터링을 통해 Stackdriver 보고서를 사용하여 실드된 VM 인스턴스의 런타임 부팅 무결성을 모니터링하고 검증할 수 있습니다. vTPM이 활성화되어야 합니다.

VM 액세스

VM에 액세스하는 일반적인 방법은 특정 SSH 공개 키를 허용하여 VM에 액세스하는 것입니다. 그러나, IAM을 사용하여 os-config 서비스를 통해 VM에 액세스할 수도 있습니다. 또한, 이 서비스를 사용하여 VM에 액세스하기 위해 2FA를 활성화할 수도 있습니다. 이 서비스활성화되면, SSH 키를 통한 액세스는 비활성화됩니다.

메타데이터

자동화(AWS의 userdata)를 정의할 수 있으며, 이는 머신이 켜지거나 재시작될 때마다 실행되는 쉘 명령입니다.

또한, 메타데이터 엔드포인트에서 접근할 수 있는 추가 메타데이터 키-값 쌍을 추가할 수 있습니다. 이 정보는 일반적으로 환경 변수 및 시작/종료 스크립트에 사용됩니다. 이는 열거 섹션의 명령에서 describe 메서드를 사용하여 얻을 수 있지만, 인스턴스 내부에서 메타데이터 엔드포인트에 접근하여도 얻을 수 있습니다.

# view project metadata
curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

# view instance metadata
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"

Moreover, auth token for the attached service account and general info about the instance, network and project is also going to be available from the metadata endpoint. For more info check:

Encryption

기본적으로 Google에서 관리하는 암호화 키가 사용되지만, 고객이 관리하는 암호화 키(CMEK)를 구성할 수 있습니다. 사용된 CMEK가 해지되었을 때의 동작도 구성할 수 있습니다: 아무것도 하지 않거나 VM을 종료합니다.

Support HackTricks

Last updated