GCP VM의 API 접근 스코프와 IAM 권한 점검

cloud-platform 스코프와 실제 IAM 권한을 구분하고 최소 권한을 적용하세요.

설명

cloud-platform은 넓은 OAuth 접근 스코프이지만 그 자체로 모든 Google Cloud 권한을 부여하지 않습니다. 실제 API 접근에는 서비스 계정의 IAM 권한이 필요합니다. Google은 일반적으로 cloud-platform 스코프와 최소 IAM 역할을 함께 사용하는 방식을 권장합니다.

IAM 권한이 과도하면 VM 침해의 영향이 커집니다. 스코프 축소만으로 모든 접근 방식이나 권한을 통제할 수는 없습니다.

잠재적 영향

  • 과도한 IAM 역할이 있는 VM은 침해 시 여러 리소스에 피해를 줄 수 있습니다.
  • 필요한 스코프를 잘못 제거하면 정상 API 호출이 실패할 수 있습니다.

해결 방법

  • 연결된 서비스 계정을 확인하고 업무에 필요한 리소스와 작업만 IAM 역할로 허용하세요. cloud-platform만 있다는 이유로 무조건 제거하지 마세요.
  • 별도 요구로 좁은 스코프를 사용한다면 필요한 API와 인증 방식의 호환성을 확인하세요. 변경 후 필요한 호출은 성공하고 불필요한 호출은 거부되는지 시험하세요.

예시

두 예제는 OAuth 스코프만 비교하며 IAM 역할을 정의하지 않습니다. 구형 이미지와 네트워크는 실제 환경으로 바꾸고 서비스 계정의 실효 권한을 확인하세요. 변경 후 구성은 제한 스코프가 필요한 환경의 선택지이지 보편적인 보안 수정은 아닙니다.

변경 전

hcl
resource "google_compute_instance" "vm" {
  name         = "test"
  machine_type = "e2-medium"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }

  network_interface {
    network = "default"

    access_config {}
  }

  service_account {
    scopes = ["userinfo-email", "compute-ro", "storage-ro", "cloud-platform"]
  }
}

변경 후

hcl
resource "google_compute_instance" "vm" {
  name         = "test"
  machine_type = "e2-medium"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }

  network_interface {
    network = "default"

    access_config {}
  }

  service_account {
    scopes = ["userinfo-email", "compute-ro", "storage-ro"]
  }
}

설명:

  • 변경 전: cloud-platform이 포함되어 있지만 실제 권한은 IAM 역할에 제한됩니다.
  • 변경 후: 스코프를 좁힙니다. 필요한 API 호출이 중단되지 않는지 확인해야 하며 IAM 최소 권한을 대신하지 않습니다.

참조