Use Service Account Credentials 비활성화

kube-controller-manager가 서비스 계정 자격 증명을 사용하지 않으면 컨트롤러 권한 분리가 약해질 수 있습니다.

설명

--use-service-account-credentials=true는 각 컨트롤러가 별도 서비스 계정 자격 증명을 사용하도록 하는 설정입니다. 이 값이 꺼져 있으면 개별 컨트롤러에 필요한 범위보다 넓은 공통 자격 증명을 사용할 수 있습니다. 같은 프로세스에서 실행되는 컨트롤러를 격리하는 기능은 아닙니다.

컨트롤러마다 필요한 권한만 사용하도록 만드는 것은 제어면 보안의 기본입니다. 운영 환경에서는 이 옵션을 활성화하는 편이 안전합니다.

잠재적 영향

  • controller-manager 내부 권한 범위가 불필요하게 넓어질 수 있습니다.
  • 컨트롤러의 잘못된 API 요청이 더 넓은 권한으로 실행될 수 있습니다.
  • 최소 권한 원칙 적용이 약해질 수 있습니다.

해결 방법

  • kube-controller-manager에 --use-service-account-credentials=true를 설정하세요.
  • 각 컨트롤러 서비스 계정과 권한 구성을 함께 검토하세요.
  • controller-manager 보안 점검 시 이 옵션을 기본 확인 항목으로 두십시오.

예시

아래는 Kubernetes 1.6 시기의 옵션 비교입니다. 실제 운영에는 지원 중인 버전을 사용하고 나머지 필수 제어면 설정을 별도로 구성하세요.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
      command: ["kube-controller-manager", "--use-service-account-credentials=false"]
      args: []

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
      command: ["kube-controller-manager"]
      args: ["--use-service-account-credentials=true"]

설명:

  • 변경 전: 서비스 계정 자격 증명 분리를 끄면 컨트롤러 권한 경계가 약해질 수 있습니다.
  • 변경 후: 서비스 계정 자격 증명을 사용해 컨트롤러별 권한 분리를 강화합니다.

참조