GKE 노드 서비스 계정 권한 점검

노드 전용 서비스 계정에 필요한 IAM 권한만 부여하세요.

설명

기본 서비스 계정은 여러 용도로 공유되거나 필요 이상으로 넓은 권한을 가질 수 있습니다. 기본 계정이라고 항상 관리자 권한을 가진 것은 아니므로 실제 IAM 부여 내역을 확인해야 합니다.

GKE 노드는 전용 서비스 계정을 사용해 최소 권한으로 운영하는 것이 좋습니다. 애플리케이션의 Google Cloud 접근은 Workload Identity Federation for GKE 등으로 노드 권한과 분리하세요.

잠재적 영향

  • 노드 자격 증명이 유출되면 계정에 허용된 다른 Google Cloud 자원까지 접근할 수 있습니다.
  • 공유 계정은 권한 분리와 책임 추적을 어렵게 할 수 있습니다.

해결 방법

  • 실제로 운영하는 노드 풀의 node_config.service_account에 전용 계정을 지정하세요.
  • 계정에 필요한 노드 운영 IAM 역할을 먼저 준비하고 불필요한 역할을 제거하세요.
  • 계정 변경에 따른 노드 교체와 서비스 영향을 확인하고 워크로드의 클라우드 권한은 별도로 관리하세요.

예시

기본 노드 풀을 만든 뒤 제거하는 구성의 발췌입니다. google_service_account.myserviceaccount와 IAM 역할은 별도로 준비하고, 실제 사용할 별도 노드 풀의 node_config.service_account에도 계정을 지정해야 합니다.

변경 전

hcl
resource "google_container_cluster" "example" {
  name                     = "my-gke-cluster"
  location                 = "us-central1"
  remove_default_node_pool = true
  initial_node_count       = 1

  node_config {
    oauth_scopes = [
      "https://www.googleapis.com/auth/cloud-platform"
    ]
  }
}

변경 후

hcl
resource "google_container_cluster" "example" {
  name                     = "my-gke-cluster"
  location                 = "us-central1"
  remove_default_node_pool = true
  initial_node_count       = 1

  node_config {
    service_account = google_service_account.myserviceaccount.email
    oauth_scopes = [
      "https://www.googleapis.com/auth/cloud-platform"
    ]
  }
}

설명:

  • 변경 전: 임시 기본 노드 풀에 계정을 명시하지 않습니다. 제거 후 별도 노드 풀이 사용할 계정은 이 예제에서 결정되지 않습니다.
  • 변경 후: 임시 기본 노드 풀의 계정을 명시합니다. 실제 운영 노드 풀에도 적용하고, cloud-platform 범위와 별개로 IAM 역할을 최소화하세요.

참조