권한이 있는 Cilium 파드 접근 제한
권한이 있는 Cilium 파드 접근 제한
Kubernetes API, 특히 kubernetes exec pod를 통한 접근을 제한해 Cilium 파드에 대한 권한 있는(privileged) 접근을 제한하는 방법을 설명하는 문서예요.
본문
이 페이지는 Kubernetes API, 특히 kubernetes exec pod로부터의 접근을 제한해 Cilium 파드에 대한 권한 있는 접근을 제한하는 방법을 보여줘요.
아직 Introduction to Cilium & Hubble을 읽지 않았다면 먼저 읽어 보시길 권해요. 막히면 가장 좋은 방법은 Cilium Slack에 질문을 올리는 거예요. 전 세계에 Cilium 기여자가 많아서 거의 언제나 도와줄 사람이 있답니다.
Cilium 설치 (Setup Cilium)
아직 Cilium을 설치하지 않았다면, Cilium Quick Installation 가이드에 따라 Kubernetes 클러스터를 빠르게 부트스트랩하고 Cilium을 설치하는 방법을 따라 해 보세요. 고민된다면 minikube 방식을 고르면 5분 안에 준비를 마칠 수 있어요.
배경 (Background)
Cilium 에이전트는 필수적인 시스템 및 네트워크 작업을 수행하기 위해 몇 가지 특정 Linux capability가 필요해요. Cilium은 환경을 설정하고 해당 볼륨을 마운트하기 위해 Kubernetes와 컨테이너에 의존해요. Cilium은 안전하지 않은 볼륨 마운트를 초래할 수 있는 추가 작업을 수행하지 않아요.
Cilium은 환경을 올바르게 구성하기 위해 커널 인터페이스가 필요해요. 일부 커널 인터페이스는 /proc 파일시스템의 일부인데, 여기에는 가상화하거나 네임스페이스로 격리할 수 없는 호스트·머신 구성이 포함돼요.
pod exec 작업이 제한되지 않으면, 파드·컨테이너로의 원격 exec가 Linux 네임스페이스 제한을 무력화해요.
Linux 커널은 기본적으로 다른 네임스페이스에 들어가는 것을 제한해요. Cilium 컨테이너에 들어가려면 현재 사용자 네임스페이스와 Cilium 사용자 네임스페이스(초기 네임스페이스) 양쪽에서 CAP_SYS_ADMIN capability가 필요해요. 두 네임스페이스 모두 CAP_SYS_ADMIN capability를 가지면, 이것은 이미 권한 있는 접근이에요.
Cilium 파드에 대한 권한 있는 접근을 막으려면 Kubernetes API와 임의의 pod exec 작업에 대한 접근을 제한하세요.
kubernetes exec pod의 권한 제한 (Restrict authorization for kubernetes exec pod)
kubernetes exec pod를 통한 Cilium 파드 접근을 제한하려면:
- Kubernetes에서 RBAC 인증을 구성하세요.
- Nodes의 proxy 하위 리소스에 대한 접근을 제한하세요.
참고 자료 (References)
네임스페이스 보안에 대한 자세한 정보는 다음을 참고하세요.
- https://man7.org/linux/man-pages/man7/user_namespaces.7.html
- https://man7.org/linux/man-pages/man1/nsenter.1.html
- https://man7.org/linux/man-pages/man2/setns.2.html