Skip to content

Commit 696b82b

Browse files
author
Yoan Moscatelli
committed
🚧🔒 cis k8s control plane hardening
1 parent 0ff4395 commit 696b82b

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

salt/metalk8s/kubernetes/apiserver/installed.sls

+19-1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ include:
5252
name=pod_name, state="ready", ignore_not_found=True
5353
) %}
5454
55+
Ensure audit log path exist:
56+
file.directory:
57+
- name: /var/log/apiserver/
58+
- user: root
59+
- group: root
60+
- mode: '0755'
61+
5562
Create kube-apiserver Pod manifest:
5663
metalk8s.static_pod_managed:
5764
- name: /etc/kubernetes/manifests/kube-apiserver.yaml
@@ -85,19 +92,28 @@ Create kube-apiserver Pod manifest:
8592
- kube-apiserver
8693
- --advertise-address={{ host }}
8794
- --allow-privileged=true
95+
- --anonymous-auth=false
96+
- --audit-log-maxage=30
97+
- --audit-log-maxbackup=10
98+
- --audit-log-maxsize=100
99+
- --audit-log-path=/var/log/apiserver/audit.log
88100
- --authorization-mode=Node,RBAC
89101
- --client-ca-file=/etc/kubernetes/pki/ca.crt
90-
- --enable-admission-plugins=NodeRestriction
102+
- --disable-admission-plugins=DenyServiceExternalIPs
103+
- --enable-admission-plugins=NodeRestriction,AlwaysPullImages
91104
- --enable-bootstrap-token-auth=true
92105
- --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
93106
- --etcd-certfile={{ certificates.client.files['apiserver-etcd'].path }}
94107
- --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
95108
- --etcd-servers={{ etcd_servers | join(",") }}
109+
- --kubelet-certificate-authority=/etc/kubernetes/pki/ca.crt
96110
- --kubelet-client-certificate={{ certificates.client.files['apiserver-kubelet'].path }}
97111
- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
98112
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
113+
- --profiling=false
99114
- --proxy-client-cert-file={{ certificates.client.files['front-proxy'].path }}
100115
- --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
116+
- --request-timeout=300s
101117
- --requestheader-allowed-names=front-proxy-client
102118
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
103119
- --requestheader-extra-headers-prefix=X-Remote-Extra-
@@ -106,9 +122,11 @@ Create kube-apiserver Pod manifest:
106122
- --secure-port=6443
107123
- --service-account-issuer=https://kubernetes.default.svc.{{ coredns.cluster_domain }}
108124
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
125+
- --service-account-lookup=true
109126
- --service-account-signing-key-file=/etc/kubernetes/pki/sa.key
110127
- --service-cluster-ip-range={{ networks.service }}
111128
- --tls-cert-file={{ certificates.server.files.apiserver.path }}
129+
- --tls-cipher-suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384.
112130
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
113131
# }
114132
- --bind-address={{ host }}

0 commit comments

Comments
 (0)