18.4. Synchronisation automatique des groupes LDAP


Vous pouvez synchroniser automatiquement les groupes LDAP sur une base périodique en configurant un travail cron.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez configuré un fournisseur d'identité LDAP (IDP).

    Cette procédure suppose que vous avez créé un secret LDAP nommé ldap-secret et une carte de configuration nommée ca-config-map.

Procédure

  1. Créez un projet dans lequel la tâche cron sera exécutée :

    oc new-project ldap-sync 1
    1
    Cette procédure utilise un projet appelé ldap-sync.
  2. Localisez le secret et la carte de configuration que vous avez créés lors de la configuration du fournisseur d'identité LDAP et copiez-les dans ce nouveau projet.

    Le secret et la carte de configuration existent dans le projet openshift-config et doivent être copiés dans le nouveau projet ldap-sync.

  3. Définir un compte de service :

    Exemple ldap-sync-service-account.yaml

    kind: ServiceAccount
    apiVersion: v1
    metadata:
      name: ldap-group-syncer
      namespace: ldap-sync

  4. Créer le compte de service :

    $ oc create -f ldap-sync-service-account.yaml
  5. Définir un rôle de cluster :

    Exemple ldap-sync-cluster-role.yaml

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: ldap-group-syncer
    rules:
      - apiGroups:
          - ''
          - user.openshift.io
        resources:
          - groups
        verbs:
          - get
          - list
          - create
          - update

  6. Créer le rôle de cluster :

    $ oc create -f ldap-sync-cluster-role.yaml
  7. Définir une liaison de rôle de cluster pour lier le rôle de cluster au compte de service :

    Exemple ldap-sync-cluster-role-binding.yaml

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: ldap-group-syncer
    subjects:
      - kind: ServiceAccount
        name: ldap-group-syncer              1
        namespace: ldap-sync
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: ldap-group-syncer                2

    1
    Référence au compte de service créé plus tôt dans cette procédure.
    2
    Référence au rôle de cluster créé plus tôt dans cette procédure.
  8. Créez la liaison de rôle de cluster :

    $ oc create -f ldap-sync-cluster-role-binding.yaml
  9. Définir une carte de configuration qui spécifie le fichier de configuration de la synchronisation :

    Exemple ldap-sync-config-map.yaml

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: ldap-group-syncer
      namespace: ldap-sync
    data:
      sync.yaml: |                                 1
        kind: LDAPSyncConfig
        apiVersion: v1
        url: ldaps://10.0.0.0:389                  2
        insecure: false
        bindDN: cn=admin,dc=example,dc=com         3
        bindPassword:
          file: "/etc/secrets/bindPassword"
        ca: /etc/ldap-ca/ca.crt
        rfc2307:                                   4
          groupsQuery:
            baseDN: "ou=groups,dc=example,dc=com"  5
            scope: sub
            filter: "(objectClass=groupOfMembers)"
            derefAliases: never
            pageSize: 0
          groupUIDAttribute: dn
          groupNameAttributes: [ cn ]
          groupMembershipAttributes: [ member ]
          usersQuery:
            baseDN: "ou=users,dc=example,dc=com"   6
            scope: sub
            derefAliases: never
            pageSize: 0
          userUIDAttribute: dn
          userNameAttributes: [ uid ]
          tolerateMemberNotFoundErrors: false
          tolerateMemberOutOfScopeErrors: false

    1
    Définir le fichier de configuration de la synchronisation.
    2
    Spécifiez l'URL.
    3
    Spécifiez le site bindDN.
    4
    Cet exemple utilise le schéma RFC2307 ; adaptez les valeurs si nécessaire. Vous pouvez également utiliser un schéma différent.
    5
    Spécifiez le baseDN pour le groupsQuery.
    6
    Spécifiez le baseDN pour le usersQuery.
  10. Créer la carte de configuration :

    $ oc create -f ldap-sync-config-map.yaml
  11. Définir une tâche cron :

    Exemple ldap-sync-cron-job.yaml

    kind: CronJob
    apiVersion: batch/v1
    metadata:
      name: ldap-group-syncer
      namespace: ldap-sync
    spec:                                                                                1
      schedule: "*/30 * * * *"                                                           2
      concurrencyPolicy: Forbid
      jobTemplate:
        spec:
          backoffLimit: 0
          ttlSecondsAfterFinished: 1800                                                  3
          template:
            spec:
              containers:
                - name: ldap-group-sync
                  image: "registry.redhat.io/openshift4/ose-cli:latest"
                  command:
                    - "/bin/bash"
                    - "-c"
                    - "oc adm groups sync --sync-config=/etc/config/sync.yaml --confirm" 4
                  volumeMounts:
                    - mountPath: "/etc/config"
                      name: "ldap-sync-volume"
                    - mountPath: "/etc/secrets"
                      name: "ldap-bind-password"
                    - mountPath: "/etc/ldap-ca"
                      name: "ldap-ca"
              volumes:
                - name: "ldap-sync-volume"
                  configMap:
                    name: "ldap-group-syncer"
                - name: "ldap-bind-password"
                  secret:
                    secretName: "ldap-secret"                                            5
                - name: "ldap-ca"
                  configMap:
                    name: "ca-config-map"                                                6
              restartPolicy: "Never"
              terminationGracePeriodSeconds: 30
              activeDeadlineSeconds: 500
              dnsPolicy: "ClusterFirst"
              serviceAccountName: "ldap-group-syncer"

    1
    Configurez les paramètres de la tâche cron. Voir "Création de tâches cron" pour plus d'informations sur les paramètres des tâches cron.
    2
    L'horaire du travail spécifié au format cron. Dans cet exemple, la tâche cron s'exécute toutes les 30 minutes. Ajustez la fréquence si nécessaire, en veillant à prendre en compte le temps nécessaire à l'exécution de la synchronisation.
    3
    Durée, en secondes, pendant laquelle les travaux terminés doivent être conservés. Cette durée doit correspondre à celle de la planification des tâches afin de nettoyer les anciennes tâches qui ont échoué et d'éviter les alertes inutiles. Pour plus d'informations, voir TTL-after-finished Controller dans la documentation Kubernetes.
    4
    La commande de synchronisation LDAP pour le job cron à exécuter. Transmet le fichier de configuration de la synchronisation qui a été défini dans la carte de configuration.
    5
    Ce secret a été créé lors de la configuration de l'IDP LDAP.
    6
    Cette carte de configuration a été créée lors de la configuration de l'IDP LDAP.
  12. Créez la tâche cron :

    $ oc create -f ldap-sync-cron-job.yaml
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.