Admission Controller
- Admission Controller는 Kubernetes API 서버로 요청이 객체의 영속화 이전, 인증, 권한 부여 이후 가로챔.
- 사용 목적
- 보안 및 권한 부여: 어드미션 컨트롤러는 인증 및 권한 부여가 된 후에도 요청을 가로채어 추가적인 검사 또는 수정을 수행할 수 있어 보안 및 권한 부여 정책을 강화
- 객체 유효성 검사 및 수정: 어드미션 컨트롤러는 객체가 클러스터에 올바르게 추가되기 전에 유효성을 검사하거나, 필요에 따라 해당 객체를 수정
- 사용자 지정 동작 및 정책 추가: 어드미션 컨트롤러를 사용하여 특정 동작이나 정책을 추가하거나 변경하여 클러스터 동작을 사용자 지정
- 자원 할당 및 관리: 어드미션 컨트롤러는 부가적인 작업을 수행하여 자원 할당이나 다른 리소스와의 상호작용을 관리
Admission Controller 사용법
kubeconfig 파일 작성
- /etc/kubernetes/admission-control/image-policy-webhook.kubeconfig
apiVersion: v1
kind: Config
clusters:
- name: trivy-k8s-webhook
cluster:
certificate-authority: /etc/kubernetes/admission-control/imagepolicywebhook-ca.crt
server: https://acg.trivy.k8s.webhook:8090/scan
contexts:
- name: trivy-k8s-webhook
context:
cluster: trivy-k8s-webhook
user: api-server
current-context: trivy-k8s-webhook
preferences: {}
users:
- name: api-server
user:
client-certificate: /etc/kubernetes/admission-control/api-server-client.crt
client-key: /etc/kubernetes/admission-control/api-server-client.key
AdmissionConfiguration 파일 작성
- /etc/kubernetes/admission-control/admission-contol.conf파일
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: ImagePolicyWebhook
configuration:
imagePolicy:
kubeConfigFile: <path-to-kubeconfig-file>
allowTTL: 50
denyTTL: 50
retryBackoff: 500
defaultAllow: true #false일 경우 image pull deny
kube-apiserver.yaml 수정
--enable-admission-plugins 값으로 위에서 정의한 plugins.name 값과 일치해야함
apiVersion: v1
kind: Pod
metadata:
name: kube-apiserver
namespace: kube-system
spec:
containers:
- name: kube-apiserver
image: k8s.gcr.io/kube-apiserver:v1.22.0
command:
- kube-apiserver
- --enable-admission-plugins=ImagePolicyWebhook,NodeRestriction
- --admission-control-config-file=/etc/kubernetes/admission-control/admission-control.conf
# Add other necessary flags and configurations below
volumeMounts:
- mountPath: /etc/kubernetes/pki
name: k8s-certs
readOnly: true
- mountPath: /etc/kubernetes/admission-control
name: admission-control
readOnly: true
volumes:
- name: k8s-certs
hostPath:
path: /etc/kubernetes/pki
- name: admission-control
hostPath:
path: /etc/kubernetes/admission-control
참고페이지
https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#imagepolicywebhook
'CKS' 카테고리의 다른 글
[CKS] Monitoring, Logging and Runtime Security - Audit Log (2) | 2024.02.22 |
---|---|
[CKS] Monitoring, Logging and Runtime Security - Falco (0) | 2024.02.20 |
[CKS] Supply chain - Trivy (scan images vulnerability) (1) | 2024.02.19 |
[CKS] Supply Chain Security - Analyzing Dockerfile (0) | 2024.02.19 |
[CKS] MMV - mTLS (0) | 2024.02.02 |