Modifica dell'etichetta SELinux solo per la configurazione di distribuzione che ha il pod che monta la PVC dell'applicazione legacy

Verificare che l'applicazione legacy e i pod di openshift-storage utilizzino le stesse etichette SELinux sui file, modificando l'etichetta SELinux nella configurazione di distribuzione che ha il pod che monta l'applicazione legacy.

Procedura

  1. Creare un nuovo scc con le opzioni MustRunAs e seLinuxOptions , con MCS (Multi Category Security) utilizzato dal progetto openshift-storage .
    File YAML di esempio:
    cat << EOF >> scc.yaml
    allowHostDirVolumePlugin: false
    allowHostIPC: false
    allowHostNetwork: false
    allowHostPID: false
    allowHostPorts: false
    allowPrivilegeEscalation: true
    allowPrivilegedContainer: false
    allowedCapabilities: null
    apiVersion: security.openshift.io/v1
    defaultAddCapabilities: null
    fsGroup:
      type: MustRunAs
    groups:
    - system:authenticated
    kind: SecurityContextConstraints
    metadata:
      annotations:
      name: restricted-pvselinux
    priority: null
    readOnlyRootFilesystem: false
    requiredDropCapabilities:
    - KILL
    - MKNOD
    - SETUID
    - SETGID
    runAsUser:
      type: MustRunAsRange
    seLinuxContext:
      seLinuxOptions:
        level: s0:c26,c0
      type: MustRunAs
    supplementalGroups:
      type: RunAsAny
    users: []
    volumes:
    - configMap
    - downwardAPI
    - emptyDir
    - persistentVolumeClaim
    - projected
    - secret
    EOF
    oc create -f scc.yaml
  2. Crea un account di servizio per la distribuzione e aggiungalo al sccappena creato.
    1. Creare un account di servizio, dove < service_account_name> è il nome dell'account di servizio.
      oc create serviceaccount <service_account_name>

      Ad esempio:

      oc create serviceaccount testnamespacesa
    2. Aggiungi l'account di servizio al sccappena creato:
      oc adm policy add-scc-to-user restricted-pvselinux -z <service_account_name>

      Ad esempio:

      oc adm policy add-scc-to-user restricted-pvselinux -z testname
  3. Correggi la distribuzione dell'applicazione legacy in modo che utilizzi l'account del servizio creato di recente.
    Ciò consente di specificare l'etichetta SELinux nella distribuzione.
    oc patch dc/<pod_name> '{"spec":{"template":{"spec":{"serviceAccountName": "<service_account_name>"}}}}'
    Ad esempio:
    oc patch dc/cephfs-write-workload-generator-no-cache --patch '{"spec":{"template":{"spec":{"serviceAccountName": "testnamespacesa"}}}}'
  4. Modificare la distribuzione per specificare il contesto di sicurezza da utilizzare sull'etichetta SELinux nella configurazione di distribuzione:
    oc edit dc <pod_name> -n <application_namespace>
    Aggiungere le seguenti righe:
    spec:
     template:
        metadata:
          securityContext:
            seLinuxOptions:
              Level: <security_context_value>
                
    valore_contesto_sicurezza

    Puoi trovare questo valore quando esegui il comando per creare una cartella dedicata per S3 nella condivisione NSFS nel PV CephFS e nella PVC del pod dell'applicazione legacy.

    Ad esempio:

    oc edit dc cephfs-write-workload-generator-no-cache -n testnamespace
    spec:
     template:
        metadata:
          securityContext:
            seLinuxOptions:
              level: s0:c26,c0
  5. Verificare che il contesto di sicurezza da utilizzare con l'etichetta SELinux nella configurazione di distribuzione sia specificato correttamente
    oc get dc <pod_name> -n <application_namespace> -o yaml | grep -A 2 securityContext
    Ad esempio:
    oc get dc cephfs-write-workload-generator-no-cache -n testnamespace -o yaml | grep -A 2 securityContext
    securityContext:
            seLinuxOptions:
              level: s0:c26,c0

    L'applicazione legacy viene riavviata e inizia utilizzando le stesse etichette SELinux dello spazio dei nomi openshift-storage .