Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SCCs

NAME                              

PRIVCAPSSELINUXRUNASUSERFSGROUPSUPGROUPPRIORITYREADONLYROOTFSVOLUMES

anyuid

false

-

MustRunAs

RunAsAny

RunAsAny

RunAsAny

10

false

["configMap","csi","downwardAPI","emptyDir","ephemeral","persistentVolumeClaim","projected","secret"]

hostaccess

false

-

MustRunAs

MustRunAsRange

MustRunAs

RunAsAny-

false

["configMap","csi","downwardAPI","emptyDir","ephemeral","hostPath","persistentVolumeClaim","projected","secret"]

hostmount-anyuid

false-

MustRunAs   

RunAsAnyRunAsAnyRunAsAny-false

["configMap","csi","downwardAPI","emptyDir","ephemeral","hostPath","nfs","persistentVolumeClaim","projected","secret"]

hostnetwork

false-

MustRunAs   

MustRunAsRangeMustRunAsMustRunAs-false

["configMap","csi","downwardAPI","emptyDir","ephemeral","persistentVolumeClaim","projected","secret"]

hostnetwork-v2

 

false

["NET_BIND_SERVICE"]  

MustRunAs   

MustRunAsRangeMustRunAsMustRunAs-false

["configMap","csi","downwardAPI","emptyDir","ephemeral","persistentVolumeClaim","projected","secret"]

 

machine-api-termination-handler

 

false-

MustRunAs   

 

RunAsAnyMustRunAsMustRunAs-false

["downwardAPI","hostPath"]

 

node-exporter

 

true

RunAsAny    

 

RunAsAnyRunAsAnyRunAsAny-false

["*"]

 

nonroot

 

false-

MustRunAs   

 

MustRunAsNonRootRunAsAnyRunAsAny-false

["configMap","csi","downwardAPI","emptyDir","ephemeral","persistentVolumeClaim","projected","secret"]

 

nonroot-v2

 

false

["NET_BIND_SERVICE"]   

MustRunAs   

 

MustRunAsNonRootRunAsAnyRunAsAny-false

["configMap","csi","downwardAPI","emptyDir","ephemeral","persistentVolumeClaim","projected","secret"]

 

privileged

 

true

["*"]

RunAsAny    

 

RunAsAnyRunAsAnyRunAsAny-false

["*"]

 

restricted

 

false-

MustRunAs   

 

MustRunAsRangeMustRunAsRunAsAny-false

["configMap","csi","downwardAPI","emptyDir","ephemeral","persistentVolumeClaim","projected","secret"]

 

restricted-v2

 

false

["NET_BIND_SERVICE"]    

MustRunAs   

 

MustRunAsRangeMustRunAsRunAsAny-false

["configMap","csi","downwardAPI","emptyDir","ephemeral","persistentVolumeClaim","projected","secret"]

 

Assigning SCC to a Service

Code Block
oc adm policy add-scc

...

 

...

["DAC_OVERRIDE","NET_ADMIN","NET_BIND_SERVICE","NET_RAW","SYS_RESOURCE"] 

...

RunAsAny  

 

...

 ["configMap","downwardAPI","emptyDir","persistentVolumeClaim","projected","secret"]

...

-to-user nonroot-v2 -z default -n <NAMESPACE>  


Tutorial

https://www.youtube.com/watch?v=WHbp2Pz-haE

https://developer.ibm.com/learningpaths/secure-context-constraints-openshift/scc-tutorial/

Steps

Login and create our demo project

Code Block
themeEmacs
oc login -u kubeadmin https://api.crc.testing:6443

oc new-project demo
oc project demo

Apply our default deployment

Code Block
themeEmacs
git clone https://github.com/IBM/scc-tutorial-assets.git
cd scc-tutorial-assets
oc apply -f deploy_default.yaml

See what SCC was applied using the describe command:

Code Block
themeEmacs
oc get pod/scc-tutorial-deploy-default-58db6b6f58-ww54l -o yaml 
Code Block
apiVersion: v1
kind: Pod
metadata:
  annotations:
    openshift.io/scc: restricted-v2
...
spec:
  containers:
  - command:
    - sh
    - -c
    - echo "Hello from user $(id -u)" && sleep infinity
    image: ubi8/ubi-minimal
    imagePullPolicy: Always
    name: ubi-minimal
    resources: {}
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      runAsNonRoot: true
      runAsUser: 1000660000
...
securityContext:
    fsGroup: 1000660000
    seLinuxOptions:
      level: s0:c26,c5
    seccompProfile:
      type: RuntimeDefault
  serviceAccount: default
  serviceAccountName: default
...

In the above we can see the following values were applied:

...

/scc

...

-

...

Code Block
 securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      runAsNonRoot: true
      runAsUser: 1000660000
Code Block
securityContext:
    fsGroup: 1000660000
    seLinuxOptions:
      level: s0:c26,c5
    seccompProfile:
      type: RuntimeDefault
Code Block
  serviceAccount: default
  serviceAccountName: default

Login to the POD

...

themeEmacs

...

tutorial

...

/

...



References

...