Info | |
---|---|
| |
Info | |
https://www.openshift.com/blog/12-kubernetes-configuration-best-practices | 작성자 Ajmal Kohgadai |
Info | |
---|---|
|
1. Kubernetes를 최신 버전으로 업데이트
Info | ||
---|---|---|
| ||
아직 업데이트하지 않았다면 Kubernetes 배포를 새롭고 흥미로운 여러 기능 이 포함 된 최신 버전 (1.16)으로 업데이트하십시오 . 모든 새 릴리스에는 일반적으로 다양한 보안 기능이 번들로 제공됩니다. Kubernetes를 최신 버전으로 업그레이드해야하는 7 가지 이유 를 강조하는 블로그 게시물을 확인하십시오 . |
2. 포드 보안 정책을 사용하여 위험한 컨테이너 / 포드 사용 방지
Info | ||
---|---|---|
| ||
포드 보안 정책은 다음과 같은 몇 가지 중요한 보안 사용 사례를 해결합니다.
이러한 속성 중 일부는를 통해 제어 할 수도 있습니다 . 여기에서 보안 컨텍스트에 대해 자세히 알아볼 수 있습니다 . 그러나 일반적으로 포드 수준 보안 컨텍스트를 사용자 지정하지 말고 대신 포드 보안 정책을 사용하는 것이 좋습니다 (이러한 제어를 적용하는 방법에 대한 권장 사항 # 6 참조). 여기에서 포드 보안 정책에 대해 자세히 알아볼 수 있습니다 . 여기 와 여기에서 입학 컨트롤러에 대해 자세히 알아볼 수 있습니다 . |
3. Kubernetes 네임 스페이스를 사용하여 Kubernetes 리소스를 적절하게 분리
Info | ||
---|---|---|
| ||
네임 스페이스를 사용하면 논리 파티션을 만들고 리소스를 분리 할 수있을뿐만 아니라 사용자 권한 범위를 제한 할 수 있습니다. 여기에서 네임 스페이스에 대해 자세히 알아볼 수 있습니다 . |
4. 네트워크 정책을 사용하여 컨테이너 및 포드 통신을 분할하고 제한합니다.
Info | ||
---|---|---|
| ||
네트워크 정책은 포드 통신이 허용되는 방식을 결정하는 데 사용됩니다. 안전한 Kubernetes 네트워크 정책 구축에 대한 자세한 내용은 블로그 게시물을 확인하십시오 . |
5. ImagePolicyWebhook을 사용하여 이미지 출처를 관리하는 정책을 만듭니다.
Info | ||
---|---|---|
| ||
다음과 같은 승인되지 않은 이미지를 사용하는 포드를 거부하기 위해 승인 컨트롤러에서 승인되지 않은 이미지를 사용하지 못하도록 방지합니다 .
여기에서 자세히 알아볼 수 있습니다 . |
6. Kubernetes API 서버를 안전하게 구성
Info | ||
---|---|---|
| ||
Kubernetes API 서버는 외부 사용자와 Kubernetes 구성 요소 간의 모든 REST API 호출을 처리합니다. 마스터 노드에서 아래 명령을 실행하십시오.
출력에서 다음을 확인하십시오.
|
7. kube-scheduler를 안전하게 구성
Info | ||
---|---|---|
| ||
Kubernetes의 기본 스케줄러로 kube-scheduler는 새로 생성 된 Pod가 실행되어야하는 노드를 선택합니다. 여기에서 kube-scheduler에 대해 자세히 알아볼 수 있습니다 . 마스터 노드에서 아래 명령을 실행하십시오.
출력에서 다음을 확인하십시오.
|
8. kube-controller-manager를 안전하게 구성
Info | ||
---|---|---|
| ||
마스터 노드에서 아래 명령을 실행하십시오.
출력에서 다음을 확인하십시오.
|
9. 마스터 노드에서 구성 파일 보안
Info | ||
---|---|---|
| ||
API 서버 포드 사양 파일 권한을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. API 서버 포드 사양 파일 소유권을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. 컨트롤러 관리자 포드 사양 파일 권한을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. 컨트롤러 관리자 포드 사양 파일 소유권을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. 스케줄러 포드 사양 파일 권한을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. 스케줄러 포드 사양 파일 소유권을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. etcd 포드 사양 파일 권한을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. 이미 논의 된 주제에 대한 알림으로 etcd는 키-값 저장소이며 REST API 개체를 포함하므로이를 보호하는 것이 가장 중요합니다. etcd 포드 사양 파일 소유권을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. 컨테이너 네트워크 인터페이스 파일 권한을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. 컨테이너 네트워크 인터페이스 파일 소유권을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. etcd 데이터 디렉토리 권한을 보호하십시오.먼저 get etcd 데이터 디렉토리에 다음 명령을 실행하십시오.
이제 이전 명령에서 찾은 etcd 데이터 디렉토리를 기반으로 다음 명령을 실행하십시오.
출력에서 권한이 또는 더 제한적인지 확인하여 etcd 데이터 디렉토리가 무단 읽기 / 쓰기로부터 보호되는지 확인하십시오. etcd 데이터 디렉토리 소유권을 보호하십시오.먼저 get etcd 데이터 디렉토리에 다음 명령을 실행하십시오.
이제 이전 명령에서 찾은 etcd 데이터 디렉토리를 기반으로 다음 명령을 실행하십시오.
출력에서 소유권이 etcd 데이터 디렉토리가 무단 읽기 / 쓰기로부터 보호되는지 확인합니다. admins.conf 파일 권한을 보호하십시오.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. admins.conf 파일 소유권을 보호하십시오.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. scheduler.conf 파일 권한을 보호하십시오.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. scheduler.conf 파일 소유권을 보호하십시오.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. controller-manager.conf 파일 권한을 보호하십시오.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. controller-manager.conf 파일 소유권을 보호하십시오.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. Kubernetes PKI 디렉터리 및 파일 소유권을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. Kubernetes PKI 디렉터리 및 파일 권한을 보호합니다.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. Kubernetes PKI 키 파일 권한을 보호하십시오.마스터 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기위한 권한이 있는지 확인 하십시오. |
10. 안전하게 etcd 구성
Info | ||
---|---|---|
| ||
이전 섹션에서 언급했듯이 etcd ( CNCF 프로젝트 )는 Kubernetes와 같은 분산 시스템에서 데이터 액세스를 위해 사용 하는 키-값 저장소 ( CNCF 프로젝트 )입니다. etcd는 Kubernetes의 진실 소스로 간주되며 필요에 따라 etcd에서 데이터를 읽고 쓸 수 있습니다. etcd 및 서버에 대한 통신을 안전하게 구성하는 것이 가장 중요합니다. etcd 서버 노드에서 다음 명령을 실행하십시오.
출력에서 다음을 확인하십시오.
|
11. Kubelet을 안전하게 구성
Info | ||
---|---|---|
| ||
kubelet는 각 노드에서 실행되는 주 "노드 에이전트"입니다. 작년 에이 Medium 기사에서 설명 했듯이 kubelet을 잘못 구성하면 여러 보안 위험에 노출 될 수 있습니다 . 실행중인 kubelet 실행 파일의 인수를 사용하거나 kubelet 구성 파일을 사용하여 kubelet의 구성을 설정할 수 있습니다. kubelet 구성 파일을 찾으려면 다음 명령을 실행하십시오.
를 찾으면 kubelet 구성 파일의 위치를 알 수 있습니다. 그런 다음 각 노드에서 다음 명령을 실행합니다.
출력에서 다음을 확인하십시오.
|
12. 작업자 노드 구성 파일 보안
Info | ||
---|---|---|
| ||
kubelet 서비스 파일 권한을 보호하십시오.각 작업자 노드에서 다음 명령을 실행하십시오 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. kubelet.conf 파일 권한을 보호하십시오.각 작업자 노드에서 다음 명령을 실행하십시오 (시스템에서 파일 위치 지정).
출력에서 권한이 파일의 무결성을 유지하기 위해 제한적이거나 더 제한적 인지 확인 하십시오. kubelet.conf 파일 소유권을 보호하십시오.각 작업자 노드에서 다음 명령을 실행하십시오 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. kublete 서비스 파일 소유권을 보호하십시오.각 작업자 노드에서 다음 명령을 실행하십시오 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지 하기 위해 소유권이 설정되었는지 확인 하십시오. 프록시 kubeconfig 파일 권한을 보호하십시오.다음 명령을 실행하여 먼저 사용중인 kubeconfig 파일을 찾습니다.
에서 kube-proxy 파일 위치 (실행중인 경우)를 가져온 다음 각 작업자 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력 에서 파일의 무결성을 유지하기 위해 사용 권한이 또는 더 제한적 인지 확인 합니다. 프록시 kubeconfig 파일 소유권을 보호하십시오.다음 명령을 먼저 실행하여 사용중인 kubeconfig 파일을 찾으십시오.
에서 kube-proxy 파일 위치 (실행중인 경우)를 가져온 후 각 작업자 노드에서 다음 명령을 실행합니다 (시스템에서 파일 위치 지정).
출력에서 소유권이 파일의 무결성을 유지하도록 설정되어 있는지 확인하십시오 . 인증 기관 파일 권한을 보호하십시오.먼저 다음 명령을 실행하십시오.
인수로 식별되는 파일 이름을 찾으십시오 . 그런 다음 이전 파일 이름을 지정하여 다음 명령을 실행합니다.
출력 에서 파일의 무결성을 유지하기 위해 사용 권한이 또는 더 제한적 인지 확인 합니다. 클라이언트 인증 기관 파일 소유권을 보호합니다.먼저 다음 명령을 실행하십시오.
-
출력에서 소유권이 kubelet 구성 파일 권한을 보호하십시오.먼저 다음 명령을 사용하여 kubelet 구성 파일을 찾습니다.
출력에서 구성 파일이있는 경우 해당 위치를 볼 수 있습니다. /var/lib/kubelet/configuration.yaml과 유사합니다. 파일 위치 (이전 예제의 파일 위치 사용)를 사용하여 다음 명령을 실행하여 파일의 권한을 식별합니다.
출력 에서 파일의 무결성을 보장하기 위해 권한이 또는 더 제한적으로 설정되어 있는지 확인하십시오 . kubelet 구성 파일 소유권을 보호하십시오.다음 명령을 실행하십시오.
출력에서 구성 파일이있는 경우 해당 위치를 볼 수 있습니다. /var/lib/kubelet/configuration.yaml과 유사합니다. 파일 위치 (이전 예제의 파일 위치 사용)를 사용하여 다음 명령을 실행하여 파일의 권한을 식별합니다.
출력에서 소유권이 파일의 무결성을 유지하도록 설정되어 있는지 확인하십시오 . 이 클라우드 네이티브 스택은 우리가 만든 가장 안전한 애플리케이션을 구축 할 수있는 강력한 기능을 제공합니다. 모든 노브와 다이얼이 올바르게 설정되었는지 확인하기 만하면됩니다. 이러한 구성, 코드 예제 및 자세한 권장 사항을 활용하여 가장 일반적인 Kubernetes 구성 오류와 관련된 보안 위험을 피하십시오. |