Bug 2100155
Summary: | kube-apiserver-operator should raise an alert when there is a Pod Security admission violation | |||
---|---|---|---|---|
Product: | OpenShift Container Platform | Reporter: | Standa Laznicka <slaznick> | |
Component: | apiserver-auth | Assignee: | Standa Laznicka <slaznick> | |
Status: | CLOSED ERRATA | QA Contact: | Yash Tripathi <ytripath> | |
Severity: | urgent | Docs Contact: | ||
Priority: | urgent | |||
Version: | 4.11 | CC: | mfojtik, surbania, wlewis, xxia | |
Target Milestone: | --- | Keywords: | FastFix, NeedsTestCase | |
Target Release: | 4.11.0 | |||
Hardware: | Unspecified | |||
OS: | Unspecified | |||
Whiteboard: | ||||
Fixed In Version: | Doc Type: | If docs needed, set a value | ||
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 2101444 (view as bug list) | Environment: | ||
Last Closed: | 2022-08-10 11:19:11 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | 2101444 | |||
Bug Blocks: |
Description
Standa Laznicka
2022-06-22 14:55:17 UTC
The current alert would very likely trigger on many clusters as its Prometheus query is too broad, moving back to ASSIGNED. Setting blocker+ as this would likely cause alerts in most clusters. Verified on 4.11.0-0.nightly-2022-06-30-005428 1. Create and label a namespace with pod-security.kubernetes.io/enforce=restricted $ oc new-project testproj $ oc label ns testproj pod-security.kubernetes.io/enforce=restricted 2. Check the following query in Openshift console (prometheus) metrics sum(increase(pod_security_evaluations_total{resource="pod"}[1m])) by(decision,mode,policy_level) 3. Create a sample pod that should get denied due to scc restrictions $ oc create -f - <<EOF apiVersion: v1 kind: Pod metadata: name: testpod spec: containers: - image: quay.io/openshifttest/hello-openshift:openshift name: node-hello securityContext: privileged: true runAsUser: 0 EOF Error from server (Forbidden): error when creating "STDIN": pods "testpod" is forbidden: violates PodSecurity "restricted:latest": privileged (container "node-hello" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "node-hello" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "node-hello" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "node-hello" must set securityContext.runAsNonRoot=true), runAsUser=0 (container "node-hello" must not set runAsUser=0), seccompProfile (pod or container "node-hello" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") 4. Check the query in Openshift console (prometheus) metrics again sum(increase(pod_security_evaluations_total{resource="pod"}[1m])) by(decision,mode,policy_level) values should change to reflect denial to create pod Moving to verified You should verify with alert fired. ` sum(increase(pod_security_evaluations_total{resource="pod"}[1m])) by(decision,mode,policy_level) ` is only tips to help understand whether the alert's condition satisfaction includes your test operation's triggering. Verified on 4.11.0-0.nightly-2022-06-30-005428 1. Create and label a namespace with pod-security.kubernetes.io/enforce=restricted $ oc new-project testproj $ oc label ns testproj pod-security.kubernetes.io/enforce=restricted 2. Create a sample pod that should get denied due to scc restrictions $ oc create -f - <<EOF apiVersion: v1 kind: Pod metadata: name: testpod spec: containers: - image: quay.io/openshifttest/hello-openshift:openshift name: node-hello securityContext: privileged: true runAsUser: 0 EOF Error from server (Forbidden): error when creating "STDIN": pods "testpod" is forbidden: violates PodSecurity "restricted:latest": privileged (container "node-hello" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "node-hello" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "node-hello" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "node-hello" must set securityContext.runAsNonRoot=true), runAsUser=0 (container "node-hello" must not set runAsUser=0), seccompProfile (pod or container "node-hello" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") 3. Check the Alerts in Openshift console Actual PodSecurityViolation alert is being fired Expected PodSecurityViolation alert should be in a firing state Moving to verified Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Important: OpenShift Container Platform 4.11.0 bug fix and security update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2022:5069 |