@@ -110,3 +110,125 @@ controls:
110110 - configure_network_policies
111111 - configure_network_policies_namespaces
112112 - project_config_and_template_network_policy
113+ - id : ' 2.2'
114+ title : Authentication Attribute Management
115+ status : pending
116+ rules : []
117+ controls :
118+ - id : 2.2.1
119+ title : Authentication Policy
120+ status : partial
121+ notes : |-
122+ OpenShift delegates authentication to an external Identity
123+ Provider. The automated rules verify that an MFA-capable
124+ IdP is configured and that weak single-factor methods
125+ (htpasswd, basic-auth, static tokens) are disabled.
126+ However, actual MFA enforcement must be verified at the
127+ IdP level (e.g., Keycloak, Okta, Active Directory). For
128+ machine accounts, ServiceAccount tokens satisfy the
129+ single-attribute requirement.
130+ rules :
131+ - idp_is_configured
132+ - ocp_idp_no_htpasswd
133+ - kubeadmin_removed
134+ - ocp_no_ldap_insecure
135+ - api_server_token_auth
136+ - api_server_basic_auth
137+ - id : 2.2.2
138+ title : Authentication Support - External
139+ status : automated
140+ rules :
141+ - ocp_no_ldap_insecure
142+ - id : 2.2.3
143+ title : Protection against Brute Force and Dictionary Attacks
144+ status : partial
145+ notes : |-
146+ Brute force and dictionary attack protections are primarily
147+ enforced at the Identity Provider level. The automated rule
148+ ensures an IdP capable of account lockout is used instead of
149+ htpasswd. Verify that the external IdP is configured with at
150+ least two countermeasures such as account lockout after failed
151+ attempts, login delays, or password blacklists.
152+ rules :
153+ - ocp_idp_no_htpasswd
154+ - id : 2.2.4
155+ title : Enforce Strong Password
156+ status : partial
157+ notes : |-
158+ Password complexity is primarily enforced at the Identity
159+ Provider level. The automated rules ensure Kubernetes
160+ Secrets are encrypted at rest in etcd and that node-level
161+ password storage uses strong hashing. Verify that the
162+ external IdP enforces minimum length, character class,
163+ and password history requirements.
164+ rules :
165+ - api_server_encryption_provider_cipher
166+ - no_empty_passwords
167+ - id : 2.2.5
168+ title : Inactive Session Timeout
169+ status : automated
170+ rules :
171+ - oauth_inactivity_timeout
172+ - oauthclient_inactivity_timeout
173+ - oauth_or_oauthclient_inactivity_timeout
174+ - oauth_token_maxage
175+ - oauthclient_token_maxage
176+ - oauth_or_oauthclient_token_maxage
177+ - sshd_set_idle_timeout
178+ - sshd_set_keepalive
179+ - id : 2.2.6
180+ title : Password Changes
181+ status : manual
182+ notes : |-
183+ Password change enforcement, expiration, and history are
184+ functions of the external Identity Provider. Verify that
185+ the IdP linked to OpenShift enforces password changes on
186+ initial login and upon expiry, and prevents reuse of at
187+ least the last 3 passwords. Kubernetes does not track
188+ password history.
189+ rules : []
190+ - id : 2.2.7
191+ title : Protected Authentication Feedback
192+ status : inherently met
193+ notes : |-
194+ Password masking is inherent behavior in OpenShift and
195+ Linux. The OpenShift Console, oc CLI, and node-level
196+ authentication commands (passwd, login, sudo) all
197+ obscure password input using system calls that do not
198+ echo characters to the terminal. This cannot be
199+ misconfigured.
200+ rules : []
201+ - id : 2.2.8
202+ title : Removal of Predefined or Default Authentication Attributes
203+ status : automated
204+ rules :
205+ - kubeadmin_removed
206+ - id : 2.2.9
207+ title : Logout Function
208+ status : automated
209+ rules :
210+ - oauth_logout_url_set
211+ - id : 2.2.10
212+ title : Policy Regarding Consecutive Failed Login Attempts
213+ status : partial
214+ notes : |-
215+ Account lockout after failed login attempts is enforced
216+ at the Identity Provider level. The automated rule
217+ ensures an IdP capable of account lockout is used.
218+ Verify that the external IdP locks accounts after no
219+ more than 8 consecutive failed attempts, with a
220+ recommended default of 5.
221+ rules :
222+ - ocp_idp_no_htpasswd
223+ - id : 2.2.11
224+ title : Suspend Accounts on Non-Use
225+ status : partial
226+ notes : |-
227+ Account suspension after non-use is primarily managed
228+ by the external Identity Provider. The automated rule
229+ enforces account disabling on RHCOS nodes after
230+ password expiration inactivity. Verify that the IdP
231+ linked to OpenShift is configured to suspend accounts
232+ after a defined period without valid login.
233+ rules :
234+ - account_disable_post_pw_expiration
0 commit comments