설명
--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"]
설명:
- 변경 전: 서비스 계정 자격 증명 분리를 끄면 컨트롤러 권한 경계가 약해질 수 있습니다.
- 변경 후: 서비스 계정 자격 증명을 사용해 컨트롤러별 권한 분리를 강화합니다.