ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
1Control Plane Components
2
1.1Master Node Config Files
3
File
Permision
Ownership
4
/etc/kubernetes/manifests/kube-apiserver.yaml644
root:root
5
/etc/kubernetes/manifests/kube-controller-manager.yaml
644
root:root
6
/etc/kubernetes/manifests/kube-scheduler.yaml644
root:root
7
/etc/kubernetes/manifests/etcd.yaml644
root:root
8
<path/to/cni/files>644
root:root
9
/etc/kubernetes/admin.conf644
root:root
10
/etc/kubernetes/scheduler.conf644
root:root
11
/etc/kubernetes/controller-manager.conf644
root:root
12
/etc/kubernetes/pki/
root:root
13
/etc/kubernetes/pki/*.crt644
root:root
14
/etc/kubernetes/pki/*.key600
root:root
15
/var/lib/etcd700
etcd:etcd
16
1.2API Server
17
ps -ef | grep kube-apiserver
18
FlagsDefaultValue
Presence
19
--anonymous-authTRUEFALSE
20
--basic-auth-fileabsentabsent
21
--token-auth-fileabsentabsent
22
--kubelet-httpsTRUETRUEabsent
23
--kubelet-client-certificateNot Set
<path/to/client-certificate-file>
24
--kubelet-client-keyNot Set
<path/to/client-key-file>
25
--kubelet-certificate-authorityNot Set
<ca string>
26
--authorization-mode
NOT 'AlwaysAllow'
NOT 'AlwaysAllow'
27
--authorization-modeNot enabled
...,RBAC,Node,...
28
--enable-admission-plugins
...,EventRateLimit,AlwaysPullImages, SecurityContextDeny || PodSecurityPolicy,NodeRestriction......
29
--disable-admission-plugins
…,ServiceAccount, NamespaceLifecycle, AlwaysAdmit
30
--insecure-bind-addressabsentabsent
31
--insecure-port80800
32
--secure-port6443
1 to 65535
33
--profilingTRUEFALSE
34
--audit-log-pathDisable
/var/log/apiserver/audit.log with maxage, maxsize, and maxbackup Parameters
35
--audit-log-maxageDisable
Minimum 30 (days)
36
--audit-log-maxbackupDisable
Minimum 10 (files)
37
--audit-log-maxsizeDisable
100 (MB) or appropriate
38
--request-timeout60 s
Set appropriate. 300s
39
--service-account-lookupTRUETRUE
40
--service-account-key-fileabsent
Public Key file for SA. Private key to controller manager
41
--etcd-certfileNot Set
Appropriate
42
--etcd-keyfileNot Set
Appropriate
43
--tls-cert-fileNot Set
Appropriate. Do not use self-signed certificate
44
--tls-private-key-fileNot Set
Appropriate
45
--client-ca-fileNot Set
Appropriate
46
--etcd-cafileNot Set
Appropriate
47
--encryption-provider-configNot Set
EncryptionConfig file
48
EncryptionConfig fileNA
aesgcb, aescbc, kms OR secretbox. Specify provider with EncryptionConfiguration Kind
49
--tls-cipher-suitesWide Range
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM
_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM
_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM
_SHA384
50
--tls-min-version> 1.2
51
--feature-gates to AdvancedAuditing=TRUE
52
1.3Contoller Manager
53
ps -ef | grep kube-controller-manager
54
FlagsDefaultValue
Presence
55
--terminated-pod-gc-threshold
12500 (pods)
set appropriate
56
--profilingTRUEFALSE
57
--use-service-account-credentialsFALSETRUE
58
--service-account-private-key-fileNot Set
Appropriate
59
--root-ca-fileNot Set
Appropriate
60
RotateKubeletServerCertificateTRUETRUE
61
--bind-address0.0.0.0127.0.0.1
62
63
1.4Schedular
64
ps -ef | grep kube-scheduler
65
FlagsDefaultValue
66
--profilingTRUEFALSE
67
--bind-address0.0.0.0127.0.0.1
68
69
2etcd
70
ps -ef | grep etcd
71
FlagsDefaultValue
72
--cert-filenot set
Appropriate
73
--key-filenot set
Appropriate
74
--client-cert-authFALSETRUE
75
--auto-tlsFALSEFALSE
76
--peer-client-fileNot Set
Appropriate
77
--peer-key-fileNot Set
Appropriate
78
--peer-client-cert-authFALSETRUE
79
--peer-auto-tlsFALSEFALSE
80
--trusted-ca-fileNot Set
Different from --client-ca-file for API Server
81
82
3Control Plane Configuration
83
3.1Authentication and Authorization
84
DefaultValue
85
Client certificate authentication should not be used for usersenableddisable
86
3.2Logging
87
ps -ef | grep kube-apiserver
88
FlagsDefaultValue
89
--audit-policy-file
Appropriate
90
Ensure that the audit policy covers key security concerns
do not log
91
92
4Worker Node
93
4.1Worker Node Configuration FilesPermision
Ownership
94
kubelet_service_config644root:root
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
95
kubelet_config644root:root
/etc/kubernetes/kubelet.conf
96
kubelet_config_yaml644root:root
/var/lib/kubelet/config.yaml
97
ps -ef | grep kube-proxy644root:root
kubeconfig file
98
ps -ef | grep kubelet644root:root
--client-ca-file
99
4.2Kubelet
100
ps -ef | grep kubelet | grep config
Kubelet config file: JSON or YAML