Accéder au contenu principal Passer au contenu complémentaire

Configurer securityContext pour les conteneurs de tâches s'exécutant dans les environnements de Dynamic Engine

Écrasez le conteneur securityContext par défaut pour exécuter les tâches avec des ID d'utilisateur·trices et de groupes spécifiques. Cela permet un contrôle granulaire fin des autorisations, améliore la politique de sécurité et répond aux prérequis de conformité pour les différents ID d'utilisateur·trices ou de groupes.

Avant de commencer

Pour plus d'informations, consultez Prérequis et considérations à prendre en compte.

Pourquoi et quand exécuter cette tâche

Ce modèle est essentiel pour les environnements sensibles à la sécurité, les déploiements orientés conformité et les scénarios dans lesquels des volumes montés nécessitent un rapprochement des ID d'utilisateur·trices et de groupes.

Procédure

  1. Déterminez l'ID d'utilisateur·trices (UID) et l'ID de groupe (GID) pour vos conteneurs.

    Choisissez une combinaison d'UID et de GID en fonction de vos besoins. Pour plus d'informations concernant les prérequis et bonnes pratiques concernant securityContext, consultez Kubernetes Security Context documentation (en anglais).

  2. Créez un fichier de valeurs Helm configurant securityContext.

    Exemple

    Créez un fichier nommé security-context-values.yaml :

    configuration:
      # For Data Integration and Big Data Job tasks
      jobDeployment:
        additionalSpec:
          enabled: true
          securityContext:
            runAsUser: <user_ID>
            runAsGroup: <group_ID>
            fsGroup: <group_ID>
            runAsNonRoot: true
    
      # For Data Service and Route tasks
      dataServiceRouteDeployment:
        additionalSpec:
          enabled: true
          securityContext:
            runAsUser: <user_ID>
            runAsGroup: <group_ID>
            fsGroup: <group_ID>
            runAsNonRoot: true
    Pour plus d'informations concernant la signification de chaque champ dans securityContext, consultez Kubernetes Security Context documentation (en anglais).
  3. Déployez ou mettez à niveau votre environnement de Dynamic Engine avec la configuration securityContext.
    helm upgrade --install dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
      oci://ghcr.io/talend/helm/dynamic-engine-environment \
      --version ${DYNAMIC_ENGINE_VERSION} \
      -f $DYNAMIC_ENGINE_ENVIRONMENT_ID-values.yaml \
      -f security-context-values.yaml

    Remplacez $DYNAMIC_ENGINE_ENVIRONMENT_ID par l'ID de votre environnement et ${DYNAMIC_ENGINE_VERSION} par la version de votre environnement.

    Cette commande crée l'environnement de Dynamic Engine et son espace de noms associé qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID. Elle applique également la configuration securityContext aux conteneurs des tâches. Puisque securityContext est une configuration de spécification de pod (et non une ressource Kubernetes séparée), cette configuration peut s'appliquer directement sur cette unique étape.

  4. Vérifiez la configuration securityContext dans les pods en cours d'exécution.
    kubectl get pod <pod_name> -n qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
      -o jsonpath='Pod Security Context: {.spec.securityContext}{"\n"}Container Security Context: {.spec.containers[0].securityContext}{"\n"}'

    Le résultat attendu en sortie affiche la configuration de votre securityContext :

    Pod Security Context: {"fsGroup":<group_id>,"runAsGroup":<group_id>,"runAsNonRoot":true,"runAsUser":<user_id>}
    Container Security Context: {"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"runAsNonRoot":true,"seccompProfile":{"type":"RuntimeDefault"}}

Résultats

Vos tâches de Dynamic Engine d'intégration de données (y compris Big Data), vos services de données et vos tâches de Routes s'exécutent à présent avec des restrictions, avec les identités des utilisateur·trices non racine, comme spécifiées par securityContext. Cela permet d'améliorer la sécurité, d'assurer la conformité aux standards de sécurité et d'empêcher les conteneurs non autorisés d'accéder aux ressources sensibles.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.