설명
Kubernetes Dashboard는 클러스터를 웹으로 관리할 수 있게 해 주지만, 관리 UI는 인증, 권한, 네트워크 접근을 함께 관리해야 하므로 보안 부담이 늘어납니다. Dashboard가 있다는 사실만으로 인터넷 공개를 뜻하지는 않습니다. 필요하지 않은 배포를 남겨 두면 접근 통제 실수와 패치 누락의 여지가 늘어납니다.
잠재적 영향
- 인증 또는 권한 설정 실수 시 관리 기능이 과도하게 노출될 수 있습니다.
- 사용하지 않는 구성요소도 계속 패치하고 관리해야 합니다.
해결 방법
- 실제 운영에 필요하지 않다면 Dashboard 배포와 전용 접근 경로·권한을 확인해 제거하세요. 다른 워크로드가 공유하는 리소스는 먼저 확인하세요.
- 필요하다면 지원되는 배포를 유지하고 강한 인증, 최소 권한과 네트워크 제한을 적용하세요. 실제 접근 가능한 사용자와 경로를 확인하세요.
예시
첫 번째 예시는 과거 Dashboard 이미지가 있는 Deployment 발췌이며 완전한 배포 구성이 아닙니다. 두 번째 Secret은 별도 리소스로, 이를 적용해도 기존 Dashboard는 제거되지 않습니다.
변경 전
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubernetes-dashboard
namespace: kube-system
spec:
template:
spec:
containers:
- name: kubernetes-dashboard
image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
과거 Dashboard 컨테이너를 정의합니다. 외부 접근 가능 여부는 Service와 네트워크 설정 등에 달려 있습니다.
변경 후
yaml
apiVersion: v1
kind: Secret
metadata:
name: application-secret
namespace: kube-system
type: Opaque
일반 Secret을 정의할 뿐입니다. Dashboard를 없애려면 실제 배포와 관련 리소스를 별도로 정리해야 합니다.