Configurer Kerberos pour les partages SMB/CIFS sur un déploiement AI Data Engine à nœud unique
Analysez les partages SMB/CIFS à partir d’un déploiement AI Data Engine (AIDE) à nœud unique en utilisant l’authentification Kerberos, afin qu’aucun mot de passe ne soit stocké dans la source de données. Une fois la configuration terminée, AI Data Engine actualise automatiquement le ticket Kerberos.
Si vous disposez d'un déploiement multi-nœuds, reportez-vous à "Configurer Kerberos pour les partages SMB/CIFS sur un déploiement multi-nœuds de AI Data Engine".
Avant de commencer
-
Vous disposez des privilèges d'administrateur de AI Data Engine.
-
Vous disposez d'un accès root à l'hôte AI Data Engine.
-
Vous avez examiné le "exigences de mise en réseau" et le "Exigences Kerberos et Active Directory", y compris la synchronisation de l'heure et le DNS.
-
Vous avez vérifié que l’hôte AI Data Engine peut atteindre le KDC sur le port 88, le serveur de fichiers sur le port 445 et votre serveur DNS sur le port 53.
-
Vous avez vérifié que NTP est actif sur l’hôte AI Data Engine et que son horloge est synchronisée avec vos contrôleurs de domaine. Pour vérifier, exécutez
timedatectl.
-
Vous disposez d'un compte de service d'analyse dans Active Directory avec un accès en lecture aux partages SMB/CIFS que vous souhaitez analyser. Ce compte doit prendre en charge le chiffrement AES256.
-
Vous disposez des informations suivantes :
Article Description Exemple Adresse IP du KDC
Adresse IP du contrôleur de domaine faisant office de centre de distribution de clés Kerberos (KDC)
10.0.1.50FQDN du KDC
Nom de domaine complet (FQDN) du même contrôleur de domaine
dc.corp.example.comDomaine
Domaine Active Directory, en minuscules
corp.example.comDomaine
Le domaine Kerberos, qui est le domaine en majuscules
CORP.EXAMPLE.COMUtilisateur d’analyse
Compte de service avec accès en lecture au partage
svc-aideMot de passe du scan
Mot de passe de l'utilisateur de numérisation. Vous ne le saisissez que lors de la création du keytab.
Non Concerné
FQDN du serveur de fichiers
Nom de domaine complet (FQDN) du serveur de fichiers hébergeant le partage. N'utilisez pas d'adresse IP.
filer.corp.example.comNom du partage
Nom du partage SMB/CIFS
sharename
Fichiers Kerberos utilisés par AI Data Engine
Vous créez les fichiers suivants sur l’hôte AI Data Engine. Le programme d’installation crée les /opt/netapp/aide répertoires et installe cifs-utils automatiquement pour prendre en charge l’accès SMB authentifié par Kerberos.
| Fichier | Pays |
|---|---|
Configuration de Kerberos |
|
Keytab |
|
Fichier principal |
|
Cache de tickets, qu’AI Data Engine crée lorsqu’il actualise le ticket |
|
Créez les fichiers Kerberos
Fournissez à AI Data Engine la configuration et les identifiants dont il a besoin pour obtenir des tickets Kerberos pour le compte de service d’analyse.
-
Installez les outils clients Kerberos.
-
Sous Ubuntu ou Debian, exécutez les commandes suivantes.
apt-get update -qq apt-get install -y krb5-user -
Sous RHEL, CentOS ou Rocky Linux, exécutez la commande suivante.
dnf -y install krb5-workstation
-
-
Définissez les variables utilisées par les commandes suivantes. Remplacez chaque valeur entre chevrons par votre valeur, sans inclure les chevrons. Saisissez le realm en majuscules et le domaine en minuscules.
export KDC_IP="<kdc_ip>" export KDC_FQDN="<kdc_fqdn>" export AD_DOMAIN="<domain>" export REALM="<REALM>" export SCAN_USER="<scan_user>" export FILE_SERVER_FQDN="<file_server_fqdn>" export SHARE_NAME="<share_name>"-
Vérifiez que les variables sont définies.
echo "KDC_IP=[${KDC_IP}] REALM=[${REALM}] SCAN_USER=[${SCAN_USER}]"Ces variables n'existent que dans la session shell actuelle. Si vous ouvrez une nouvelle session shell, vous devrez les redéfinir.
-
-
Créez le fichier de configuration Kerberos.
tee /etc/krb5.conf >/dev/null <<EOF [libdefaults] default_realm = ${REALM} dns_lookup_realm = false dns_lookup_kdc = false rdns = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] ${REALM} = { kdc = ${KDC_IP}:88 admin_server = ${KDC_IP}:749 } [domain_realm] .${AD_DOMAIN} = ${REALM} ${AD_DOMAIN} = ${REALM} EOF chmod 644 /etc/krb5.confLe fichier utilise l'adresse IP du KDC afin que l'authentification Kerberos ne dépende pas du DNS.
-
Créez un fichier keytab pour le compte du service de numérisation.
-
Exécuter
ktutil. -
À l'
ktutil`invite de commande, saisissez la commande suivante. Remplacez `<scan_user>et<REALM>par vos valeurs. L' `ktutil`invite de commande n'utilise pas les variables shell.addent -password -p <scan_user>@<REALM> -k 1 -e aes256-cts-hmac-sha1-96 -
Lorsque
ktutille système vous demande un mot de passe, saisissez le mot de passe de l'utilisateur de numérisation. -
À l' `ktutil`invite, saisissez les commandes suivantes.
wkt /tmp/krb5.keytab quit
-
-
Testez le keytab.
klist -kt /tmp/krb5.keytab kinit -kt /tmp/krb5.keytab "${SCAN_USER}@${REALM}" klist kdestroyLa deuxième
klistcommande doit afficher un ticket valide pour l'utilisateur effectuant l'analyse. Ce ticket confirme que le fichier keytab et la connexion au KDC fonctionnent. Sikinitéchoue, consultez Dépannage de l'authentification Kerberos. -
Installez le fichier keytab, puis supprimez la copie temporaire.
install -o root -g 4321 -m 640 /tmp/krb5.keytab /opt/netapp/aide/kerberos_refresher/datasense.keytab rm -f /tmp/krb5.keytabLe programme d'actualisation des tickets s'exécute en tant qu'utilisateur root avec l'ID de groupe 4321. Le fichier keytab et le fichier du principal doivent être lisibles par ce groupe et par aucun autre utilisateur.
-
Créez le fichier principal. La
KRB5_RENEW_INTERVAL_Hvaleur correspond à l'intervalle de renouvellement du billet en heures.tee /opt/netapp/aide/kerberos_refresher/kerberos_creds.env >/dev/null <<EOF KRB5_USER=${SCAN_USER} KRB5_REALM=${REALM} KRB5_RENEW_INTERVAL_H=3 EOF chgrp 4321 /opt/netapp/aide/kerberos_refresher/kerberos_creds.env chmod 640 /opt/netapp/aide/kerberos_refresher/kerberos_creds.env
Vérifier la résolution de noms
AI Data Engine résout le serveur de fichiers et le KDC en utilisant les paramètres DNS de l'hôte. Vérifiez d'abord la résolution de noms et ne modifiez les paramètres DNS que si un nom ne se résout pas.
-
Vérifiez que le serveur de fichiers et le KDC se résolvent par leur FQDN.
nslookup "${FILE_SERVER_FQDN}" nslookup "${KDC_FQDN}" -
Vérifiez le résultat.
-
Si les deux noms se résolvent vers les adresses IP correctes, continuez à Lancer le premier rafraîchissement du ticket.
-
Si l’un des noms ne se résout pas, effectuez Corriger la résolution de noms, puis revenez à cette procédure.
-
Lancer le premier rafraîchissement du ticket
AI Data Engine actualise le ticket Kerberos du compte de service d'analyse toutes les trois heures. Lancez la première actualisation pour pouvoir analyser les partages immédiatement.
|
|
N'ajoutez pas d' `kinit`entrée à la crontab de l'hôte. AI Data Engine actualise automatiquement les tickets. |
-
Lancez une tâche d'actualisation, attendez qu'elle se termine et affichez son journal.
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml JOB="ds-krb5-manual-$(date +%s)" kubectl -n aide create job "${JOB}" --from=cronjob/ds-krb5-ticket-refresher kubectl -n aide wait --for=condition=complete "job/${JOB}" --timeout=120s kubectl -n aide logs "job/${JOB}" -
Vérifiez que le cache de tickets partagé existe et qu'il comporte un horodatage récent.
ls -l /opt/netapp/aide/kerberos_ccache/krb5cc_shared
Le journal des tâches indique qu'un ticket a été obtenu pour l'utilisateur effectuant l'analyse.
Vérifiez la configuration Kerberos
Avant d'ajouter le partage, vérifiez que AI Data Engine peut utiliser les fichiers Kerberos et résoudre les noms. Si vous avez ouvert une nouvelle invite de commandes, définissez de nouveau la variable FILE_SERVER_FQDN et définissez KUBECONFIG comme indiqué dans Lancer le premier rafraîchissement du ticket.
-
Recherchez le pod du service de montage.
POD=$(kubectl -n aide get pod -l app.kubernetes.io/name=ds-mount-server -o jsonpath='{.items[0].metadata.name}') -
Vérifiez que le serveur de fichiers peut être résolu depuis AI Data Engine.
kubectl -n aide exec "${POD}" -- nslookup "${FILE_SERVER_FQDN}" -
Vérifiez qu’AI Data Engine dispose d’un ticket pour l’utilisateur d’analyse.
kubectl -n aide exec "${POD}" -- klist
Le serveur de fichiers est résolu en l’adresse IP correcte, et klist affiche un ticket pour l’utilisateur d’analyse.
Ajoutez une source de données SMB/CIFS utilisant Kerberos
Ajoutez le partage comme source de données et lancez les analyses afin que AI Data Engine puisse commencer à analyser ses données.
-
Dans l’interface utilisateur de AI Data Engine, sélectionnez Configuration.
-
Dans l'onglet Systèmes scannés, sélectionnez Ajouter un système.
-
Sélectionnez Groupe de partages de fichiers.
-
Saisissez un nom pour le groupe.
-
Saisissez le chemin de partage au format
<file_server_fqdn>/<share_name>. Remplacez les espaces réservés par vos valeurs. N'utilisez pas d'adresse IP. -
Pour la méthode d'authentification, sélectionnez Kerberos. Laissez les champs nom d'utilisateur et mot de passe vides.
-
Vérifiez vos sélections et sélectionnez Confirmer.
-
Sélectionnez Activer les analyses pour le nouveau système.
Pour plus d'informations sur la connexion des sources de données, veuillez consulter "Connectez une source de données à AI Data Engine".
Corriger la résolution de noms
Effectuez cette procédure uniquement si le serveur de fichiers ou le KDC ne se résout pas par FQDN. Elle configure votre serveur DNS Active Directory comme serveur de noms pour l'hôte. Si vous avez ouvert une nouvelle invite de commandes, définissez à nouveau les variables KDC_IP et AD_DOMAIN.
-
Vérifiez que votre serveur DNS Active Directory résout également les noms externes.
-
Exécutez la commande suivante. Remplacez
<external_fqdn>par un nom extérieur à votre domaine que AI Data Engine doit joindre. Par exemple, utilisez un point de terminaison répertorié dans "Accès Internet sortant".nslookup <external_fqdn> "${KDC_IP}" -
Si la commande échoue, demandez à votre administrateur Active Directory d'activer le transfert DNS, puis répétez cette étape.
-
-
Sauvegardez
/etc/resolv.conf, et définissez votre serveur DNS Active Directory comme serveur de noms.cp /etc/resolv.conf /etc/resolv.conf.bak ORIG_SEARCH=$(grep '^search' /etc/resolv.conf.bak | head -1 | cut -d' ' -f2-) printf 'search %s\nnameserver %s\n' "${ORIG_SEARCH}" "${KDC_IP}" > /etc/resolv.conf -
Empêchez le gestionnaire réseau d'écraser les paramètres DNS après un redémarrage.
-
Sur RHEL avec NetworkManager, exécutez les commandes suivantes.
mkdir -p /etc/NetworkManager/conf.d printf '[main]\ndns=none\n' > /etc/NetworkManager/conf.d/90-dns-none.conf systemctl reload NetworkManager -
Sur Ubuntu avec systemd-resolved, exécutez les commandes suivantes.
mkdir -p /etc/systemd/resolved.conf.d printf '[Resolve]\nDNS=%s\nDomains=%s\n' "${KDC_IP}" "${AD_DOMAIN}" > /etc/systemd/resolved.conf.d/ad-dns.conf systemctl restart systemd-resolved
-
-
Redémarrez CoreDNS pour que AI Data Engine utilise les nouveaux paramètres DNS. CoreDNS transfère les requêtes concernant les noms situés en dehors du cluster vers les serveurs de noms dans
/etc/resolv.conf; il doit donc redémarrer pour prendre en compte la modification.export KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n kube-system rollout restart deployment coredns kubectl -n kube-system rollout status deployment coredns --timeout=120s -
Vérifiez à nouveau la résolution de noms. Consultez Vérifier la résolution de noms.
Mettez à jour le fichier de configuration Kerberos
Si vous remplacez /etc/krb5.conf après l’installation, par exemple en copiant un nouveau fichier par-dessus, AI Data Engine continue d’utiliser le fichier précédent jusqu’à ce que vous redémarriez les services concernés.
-
Redémarrez le service de montage, et supprimez les tâches précédentes d'actualisation des tickets.
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n aide rollout restart daemonset ds-mount-server kubectl -n aide delete job -l app.kubernetes.io/name=ds-krb5-ticket-refresher --ignore-not-found -
Lancez une nouvelle actualisation de ticket. Reportez-vous à Lancer le premier rafraîchissement du ticket.
Dépannage de l'authentification Kerberos
Identifiez la cause d'une défaillance de Kerberos et rétablissez l'analyse de vos partages SMB/CIFS.
| Symptôme | Cause possible | Résolution |
|---|---|---|
L'erreur Adresse IP non autorisée avec Kerberos apparaît lorsque vous ajoutez un partage. |
Le chemin de partage utilise une adresse IP. |
Saisissez le chemin de partage sous forme de nom de domaine complet (FQDN). |
|
Le mot de passe ou le realm est incorrect, le realm n'est pas en majuscules, le compte d'analyse ne prend pas en charge le chiffrement AES256, l'hôte ne peut pas atteindre le KDC sur le port 88, ou l'horloge de l'hôte diffère de celle du KDC de plus que le décalage autorisé. |
Vérifiez le mot de passe et le realm, et assurez-vous que le compte prend en charge le chiffrement AES256. Ouvrez le port 88 vers le KDC, et vérifiez que NTP est actif sur l'hôte. Créez ensuite de nouveau le fichier keytab. |
La tâche d'actualisation des tickets échoue ou aucun cache de tickets n'est créé. |
Le fichier keytab, le fichier principal ou |
Vérifiez que les fichiers existent aux emplacements indiqués dans Fichiers Kerberos utilisés par AI Data Engine. Vérifiez que le fichier keytab et le fichier principal ont le groupe 4321 et le mode 640. Vérifiez que le répertoire du cache de tickets appartient à |
Le nom du serveur de fichiers ou du KDC ne se résout pas sur l'hôte. |
L'hôte n'utilise pas de serveur DNS capable de résoudre les noms de votre Active Directory. |
Terminez Corriger la résolution de noms. |
Les noms sont résolus sur l’hôte, mais pas dans AI Data Engine. |
CoreDNS n'a pas été redémarré après avoir modifié |
Redémarrez CoreDNS. Consultez Corriger la résolution de noms. |
Les noms externes ne se résolvent pas dans AI Data Engine après avoir configuré votre serveur DNS Active Directory. |
Le serveur DNS Active Directory ne transfère pas les requêtes externes. |
Vérifiez que |
L'erreur mount error(126) apparaît. |
AI Data Engine ne peut pas lire |
Vérifiez que |
Les modifications apportées à |
Le fichier a été remplacé après l'installation, et AI Data Engine utilise toujours le fichier précédent. |
|
La commande |
Les outils clients Kerberos ne sont pas installés sur l'hôte. |
Installez les outils clients Kerberos. Consultez Créez les fichiers Kerberos. |
Le |
Le gestionnaire de réseau écrase le fichier. |
Empêchez le gestionnaire de réseau d’écraser les paramètres DNS. Reportez-vous à Corriger la résolution de noms. |
Supprimer la configuration Kerberos
Si vous n'analysez plus les partages SMB/CIFS avec Kerberos, supprimez la source de données et les fichiers Kerberos.
-
Dans l’interface utilisateur d’AI Data Engine, supprimez la source de données SMB/CIFS qui utilise Kerberos.
-
Supprimez les fichiers Kerberos.
rm -f /opt/netapp/aide/kerberos_refresher/datasense.keytab rm -f /opt/netapp/aide/kerberos_refresher/kerberos_creds.env rm -f /opt/netapp/aide/kerberos_ccache/krb5cc_shared -
Si aucune autre application sur l'hôte ne l'utilise, supprimez
/etc/krb5.conf-le. -
Si vous avez modifié les paramètres DNS, rétablissez les paramètres d'origine.
-
Restaurez la sauvegarde de
/etc/resolv.conf.cp /etc/resolv.conf.bak /etc/resolv.conf -
Sur RHEL, si vous avez ajouté une configuration NetworkManager, supprimez-la.
rm -f /etc/NetworkManager/conf.d/90-dns-none.conf systemctl reload NetworkManager -
Sur Ubuntu, si vous avez ajouté une configuration systemd-resolved, supprimez-la.
rm -f /etc/systemd/resolved.conf.d/ad-dns.conf systemctl restart systemd-resolved -
Redémarrez CoreDNS.
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n kube-system rollout restart deployment coredns
-