이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

반응형

Kubernetes/Kubernetes 보안 17

gVisor와 runtimeclass

gVisor  목표kubernetes gVisor는 무엇이며, 어떤 경우에 사용해야하고어떻게 사용해야하는지 알아봄  Container 취약점 container runtime tool을 통해 생성된 일반적인 Container는 아래와 같이 Host의 kernel을 공유하고 있음.  실제로 확인해보면 다음과 같이 container에서 실행한 system call 명령이container에서 실행한 결과와 host의 결과가 동일한 것을 확인할 수 있음. 이러한 container의 특징은 보안적으로 문제가 될 수 있음.다음과 같이 특정 container를 통해서 공격자가 kernel에 접근해서 다른 container를 공격할수도 있고host kernel자체를 공격할 수 있음.예를 들면 Dirty Cow 취약점이 ..

Kubernetes 보안 설정 node-restriction.kubernetes.io

kubernetes 보안 설정 node-restriction.kubernetes.io 취약점 분석 kube-apiserver의 --enable-admission-plugin 항목을 확인해보면default로 NodeRestriction 항목이 활성화 되어있는 것을 확인할 수 있음. 해당 NodeRestriction 설정은 어떤 역할을 하는지 찾아봄. 일반적으로 worker node는 kubelet을 통해서 master(control) node의 kube-apiserver와 통신할 수 있음.즉 worker node의 kubectl 사용 시 별도의 인증 계정을 만들지 않고도worker node에 이미 배포되어있는 kubelet의 인증권한을 사용하면 kube-apiserver와 통신하여kubectl tool을 ..

Kubernetes 보안 설정 --insecure-port=0

kubernetes 보안 설정 --insecure-port=0 취약점 분석 kubernetes 1.20 version 이하는--insecure-port 설정이 존재하지만 1.20 이상 version은 kube-apiserver의 --insecure-port 설정이 없음. 해당 --insecure-port 설정이 왜 없어졌는지 알아봄. --insecure-port설정은 kube-apiserver 에 http 형식으로 접근을 허가하는 설정임.--insecure-port가 8080 등 다른 port로 설정되어있으면 보안에 치명적임. kubernetes 1.20 version 이상은 해당 --insecure-port없어서 안전함.아래와 같이 https 로만 접근이 가능하고 http는 접근이 불가능함. 하지만 1..

Kubernetes 보안 설정 --anonymous-auth=false

kubernetes 보안 설정 --anonymous-auth=false 취약점 분석kube-apiserver는 인가된 사용자 뿐만 아니라anonymous user도 접속이 허용됨.실제로 확인해보겠음. [anonymous user로 kube-apiserver 접속 확인] 이와 같이 계정을 명시하지 않은 상태로 kube-apiserver에 접속하게 되면system:anonymous 라는 계정으로 접속이 허용됨. 실제로 kube-apiserver static pod 설정을 확인해보면anonymous에 대한 설정이 없음anonymous-auth에 대한 설정이 없으면default로 true 처리가 되어 anonymous 계정도 접속이 허가됨. 이런경우 보안적으로 취약점이 발생함.   결론kube-apiserver..

Kubernetes 보안 설정 automountServiceAccountToken: false

automountServiceAccountToken: false 설정 취약점 분석 모든 namespace에는 default ServiceAccount가 존재하고 있음.아래와 같이 default sa 확인 가능.[namespace service account 확인] 이러한 default ServiceAccount는 pod를 생성할 때 사용됨.pod와 ServiceAccount에 별도의 설정이 없다면 kubernetes는 default로Pod 생성 시 ServiceAccount를 무조건 사용하게 되어 있음. 즉 관리자가 별도로지 pod를 생성할 때  ServiceAccount를 지정하지 않아도Pod를 확인해 보면 자동으로 ServiceAccount가 mount되어 있는것을 확인할 수 있음. 위 image에서..

kube-bench

kube-bench 목표kubernetes 취약점 점검 tool은 kube-bench 사용법에 대해 알아봄   kube-bench란?Aqua security에서 개발한 것으로kube-bench는 kubernetes cluster가 보안적으로 안전하게 구성되어있는지 검사해주는 tool임.CIS Kubernetes Benchmark 문서를 기반으로 kubernetes cluster의 취약점을 확인해줌.취약점 scan 결과를 PASS, FAIL, WARN 3가지로 출력해주고FAIL, WARN 항목에 대해서는 Remediations 항목에서 어떻게 하면 개선되는지 가이드까지 해줌.  CIS Benchmark 란?CIS(Center for Internet Security, 비영리 조직)에서 배포하는 보안 취약점 ..

Portieris (v0.12.2)

Portieris  [Container image 인증 관련 글 목록]Notary Service 란?Docker Notary : Docker Content Trust (DCT)DCT를 사용해서 Dcoker Hub에 서명된 Trust Image Push 하기Notary와 DCT를 사용해서 Private Registry에 서명된 Trust Image Push하기개인 인증서를 사용해서 Notary Service 구동kubernetes image인증 - Portieriskubernetes image인증 - Portieris2 목표Portieris가 update되면서 설치 과정이 간편해짐.kubernetes에서 인증된 image 만 cluster에 배포되도록하는 Portieris addon을 설치, 적용해봄. 설..

Kubernetes ImagePolicyWebhook

ImagePolicyWebhook   목표 kubernetes 공식 문서를 확인해보면 ImagePolicyWebhook이란 것이 있다 정도만 설명하지이외에 자세한 설명은 해놓지 않았음.리서치를 통해 ImagePolicyWebhook에 대해 자세히 알아보겠음.    환경 Master Node server OS = CentOS 7 리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64 docker version : 1.13.1 api verison : 1.26 Worker Node server OS = CentOS 7 리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64 docker version : 1.13.1 api verison : 1.26 Kubernetes ve..

Kubernetes image인증 - Portieris

Kubernetes image인증 - Portieris(Kubernetes DCT 연동)  [Container image 인증 관련 글 목록]Notary Service 란?Docker Notary : Docker Content Trust (DCT)DCT를 사용해서 Dcoker Hub에 서명된 Trust Image Push 하기Notary와 DCT를 사용해서 Private Registry에 서명된 Trust Image Push하기개인 인증서를 사용해서 Notary Service 구동kubernetes image인증 - Portieriskubernetes image인증 - Portieris2 목표 개인 Notary Server를 만든 후Docker에서 DCT설정을 사용해서 image 인증하는 방법을 알았음...

Kubernetes 인증 ( Proxy )

Kubernetes Proxy 인증  Kubernetes 인증 관련 글 이동 1. Kubernetes 인증 ( Authentication ) 이론2. Kubernetes 인증 ( Basic Authentication )3. Kubernetes 인증 ( TLS )4. Kubernetes 인증 ( Bearer Token )5. Kubernetes 인증 ( Webhook )6. Kubernetes 인증 ( Webhook 외부 인증 연동 )7. Kubernetes 인증 ( Webhook 외부 인증 LDAP )8. Kubernetes 인증 ( Proxy )   참고) 환경 Proxy Server OS = CentOS 7 리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64 Master Node..

반응형