ServiceAccount 이름 미지정

파드가 사용할 계정을 명시하고 실제 권한을 확인하세요.

설명

파드에 ServiceAccount 이름을 지정하지 않으면 해당 네임스페이스의 default ServiceAccount를 사용합니다. 이 계정에 별도로 부여된 권한이 있다면 의도하지 않은 워크로드도 같은 권한을 사용할 수 있습니다. 기본 계정이 항상 관리자 권한을 갖는 것은 아닙니다.

워크로드마다 사용할 계정과 필요한 권한을 명확히 하면 권한 분리와 운영에 도움이 됩니다. 이름을 지정하는 것만으로 해당 계정의 권한이 줄어들지는 않습니다.

잠재적 영향

  • 기본 ServiceAccount에 부여된 불필요한 권한을 사용할 수 있습니다.
  • 업무가 다른 워크로드 사이의 권한 분리와 감사가 어려워질 수 있습니다.

해결 방법

  • 파드와 파드 템플릿의 service_account_name에 승인된 ServiceAccount를 지정하세요. 같은 네임스페이스에 계정을 준비하고 변수·템플릿의 실제 적용 값을 확인하세요.
  • 계정에는 필요한 권한만 연결하세요. Kubernetes API 토큰이 필요하지 않으면 자동 마운트도 비활성화하세요.

예시

service-name 계정은 파드와 같은 네임스페이스에 별도로 준비해야 합니다. 기존 이미지 버전은 계정 설정 비교용이며 실제 배포에는 유지보수되는 이미지를 선택하세요.

변경 전

hcl
resource "kubernetes_pod" "pod" {
  metadata {
    name = "terraform-example"
  }

  spec {
    service_account_name = ""

    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

변경 후

hcl
resource "kubernetes_pod" "pod" {
  metadata {
    name = "terraform-example"
  }

  spec {
    service_account_name = "service-name"

    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

설명:

  • 변경 전: 이름이 비어 있어 default ServiceAccount를 사용합니다.
  • 변경 후: 사용할 ServiceAccount를 명시합니다. 해당 계정의 권한은 별도 검토가 필요합니다.

참조