Kubernetes v1.35: kubeconfigs에서 exec 플러그인 allowList를 통해 호출되는 실행 파일 제한, kuberc에 추가

발행: (2026년 1월 10일 오전 03:30 GMT+9)
4 min read

Source: Kubernetes Blog

Overview

Kubernetes v1.35는 자격 증명 플러그인 정책과 허용 목록을 도입하여 kubectl이 kubeconfig의 exec 플러그인에 정의된 실행 파일을 제한적으로 실행할 수 있게 합니다. 이를 통해 손상된 kubeconfig이 클라이언트 머신에서 임의의 코드를 실행하는 공급망 공격을 완화할 수 있습니다.

How it works

이 기능은 공식 kuberc 레퍼런스에 문서화되어 있습니다. Kubernetes 1.35에서는 기능 플래그 없이 베타 기능으로 제공됩니다.

Default behavior

새 필드를 추가하지 않으면 kubectl은 이전과 동일하게 동작하며 모든 자격 증명 플러그인이 허용됩니다.

apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference

Explicit allow‑all

정책을 AllowAll로 설정하여 기본 동작을 명시적으로 지정할 수 있습니다.

apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
credentialPluginPolicy: AllowAll

Deny all (debugging)

kubeconfig이 exec 자격 증명 플러그인을 사용하는지 확실하지 않은 경우 정책을 DenyAll로 설정합니다. kubectl은 모든 플러그인 실행을 거부하고, 실행하려 했던 플러그인을 표시합니다.

apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
credentialPluginPolicy: DenyAll

이 정책으로 명령을 실행하면 다음과 같은 오류가 발생합니다:

Unable to connect to the server: getting credentials: plugin "cloudco-login" not allowed: policy set to "DenyAll"

자세한 정보를 보려면 kubectl의 상세 로그 레벨을 높이세요:

kubectl get pods --v=5

Selectively allowing plugins

특정 플러그인만 허용하려면 Allowlist 정책을 사용하고 허용할 실행 파일을 나열합니다.

apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
credentialPluginPolicy: Allowlist
credentialPluginAllowlist:
  - name: /usr/local/bin/cloudco-login   # full path
  - name: get-identity                  # basename, resolved via exec.LookPath
  • Full path 항목은 허용되는 바이너리 범위를 좁히므로 권장됩니다.
  • Basename 항목은 exec.LookPath를 통해 해석되며, 와일드카드나 글로빙은 지원되지 않습니다.

Future enhancements

현재 허용 목록 항목은 name 필드만 포함합니다. 향후 개선 사항은 다음과 같습니다:

  • Checksum verification – 바이너리의 SHA‑256 해시가 알려진 값과 일치할 경우에만 허용, 예시:

    sha256: b9a3fad00d848ff31960c44ebb5f8b92032dc085020f857c98e32a5d5900ff9c
    path: /usr/bin/cloudco-login
  • Signed binaries – 신뢰할 수 있는 키로 서명된 바이너리만 실행하도록 제한.

Get involved

자격 증명 플러그인 정책은 아직 발전 중이며, SIGs (SIG‑CLI, SIG‑AUTH)에서 피드백과 기여를 환영합니다. Kubernetes Slack 채널에서 토론에 참여하세요:

  • #sig-cli
  • #sig-auth
Back to Blog

관련 글

더 보기 »

StatefulSet 프로젝트

전제 조건 StatefulSet은 다음 구성 요소가 필요합니다: - Headless Service – 각 pod에 대해 안정적인 DNS를 제공합니다. - StatefulSet manifest – pod들을 정의합니다.