Modification du libellé SELinux uniquement pour la configuration de déploiement comportant le pod qui monte la réservation de volume persistant de l'application existante

Vérifiez que l'application existante et les pods openshift-storage utilisent les mêmes libellés SELinux sur les fichiers, en modifiant le libellé SELinux sur la configuration de déploiement comportant le pod qui monte l'application existante.

Procédure

  1. Créez un scc avec les options MustRunAs et seLinuxOptions , avec la sécurité multicatégorie (MCS) utilisée par le projet openshift-storage .
    Exemple de fichier YAML:
    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. Créez un compte de service pour le déploiement et ajoutez-le au sccnouvellement créé.
    1. Créez un compte de service, où < service_account_name> est le nom du compte de service.
      oc create serviceaccount <service_account_name>

      Par exemple :

      oc create serviceaccount testnamespacesa
    2. Ajoutez le compte de service au sccnouvellement créé:
      oc adm policy add-scc-to-user restricted-pvselinux -z <service_account_name>

      Par exemple :

      oc adm policy add-scc-to-user restricted-pvselinux -z testname
  3. Correction du déploiement d'application existant afin qu'il utilise le compte de service nouvellement créé.
    Cela vous permet de spécifier le libellé SELinux dans le déploiement.
    oc patch dc/<pod_name> '{"spec":{"template":{"spec":{"serviceAccountName": "<service_account_name>"}}}}'
    Par exemple :
    oc patch dc/cephfs-write-workload-generator-no-cache --patch '{"spec":{"template":{"spec":{"serviceAccountName": "testnamespacesa"}}}}'
  4. Editez le déploiement pour spécifier le contexte de sécurité à utiliser au niveau du libellé SELinux dans la configuration de déploiement:
    oc edit dc <pod_name> -n <application_namespace>
    Ajoutez les lignes suivantes :
    spec:
     template:
        metadata:
          securityContext:
            seLinuxOptions:
              Level: <security_context_value>
                
    valeur_contexte_sécurité

    Vous pouvez trouver cette valeur lorsque vous exécutez la commande pour créer un dossier dédié pour S3 dans le partage NSFS sur le volume persistant et la réservation de volume persistant CephFS du pod d'application existant.

    Par exemple :

    oc edit dc cephfs-write-workload-generator-no-cache -n testnamespace
    spec:
     template:
        metadata:
          securityContext:
            seLinuxOptions:
              level: s0:c26,c0
  5. Vérifiez que le contexte de sécurité à utiliser au niveau du libellé SELinux dans la configuration de déploiement est correctement spécifié.
    oc get dc <pod_name> -n <application_namespace> -o yaml | grep -A 2 securityContext
    Par exemple :
    oc get dc cephfs-write-workload-generator-no-cache -n testnamespace -o yaml | grep -A 2 securityContext
    securityContext:
            seLinuxOptions:
              level: s0:c26,c0

    L'application existante est redémarrée et commence à utiliser les mêmes libellés SELinux que l'espace de nom openshift-storage .