Konfiguration von Kerberos für SMB/CIFS-Freigaben auf einem Single-Node AI Data Engine Deployment
Das Scannen von SMB/CIFS-Freigaben aus einem Single-Node AI Data Engine (AIDE) Deployment erfolgt mithilfe der Kerberos-Authentifizierung, sodass kein Passwort in der Datenquelle gespeichert wird. Nach Abschluss der Einrichtung aktualisiert AI Data Engine das Kerberos-Ticket automatisch.
Wenn Sie über ein Multi-Node Deployment verfügen, finden Sie weitere Informationen unter "Konfiguration von Kerberos für SMB/CIFS-Freigaben in einem AI Data Engine Deployment mit mehreren Nodes".
Bevor Sie beginnen
-
Sie besitzen Administratorrechte für die AI Data Engine.
-
Sie haben Root-Zugriff auf den AI Data Engine Host.
-
Sie haben die "Netzwerkanforderungen" und die "Anforderungen für Kerberos und Active Directory", einschließlich Zeitsynchronisierung und DNS, überprüft.
-
Sie haben überprüft, dass der AI Data Engine Host den KDC auf Port 88, den Dateiserver auf Port 445 und Ihren DNS-Server auf Port 53 erreichen kann.
-
Sie haben überprüft, dass NTP auf dem AI Data Engine Host aktiv ist und seine Uhr mit Ihren Domänencontrollern synchronisiert ist. Die Überprüfung erfolgt mit
timedatectl.
-
Sie verfügen in Active Directory über ein Scan-Dienstkonto mit Lesezugriff auf die zu scannenden SMB/CIFS-Freigaben. Das Konto muss die AES256-Verschlüsselung unterstützen.
-
Sie verfügen über folgende Informationen:
Artikel Beschreibung Beispiel KDC IP-Adresse
IP-Adresse des Domänencontrollers, der als Kerberos-Schlüsselverteilungszentrum (KDC) fungiert
10.0.1.50KDC-FQDN
Vollqualifizierter Domänenname (FQDN) desselben Domänencontrollers
dc.corp.example.comDomäne
Active Directory Domäne, in Kleinbuchstaben
corp.example.comRealm
Kerberos-Realm, also die Domäne in Großbuchstaben
CORP.EXAMPLE.COMScanbenutzer
Dienstkonto mit Lesezugriff auf die Freigabe
svc-aideScan-Passwort
Passwort des Scan-Benutzers. Sie geben es nur beim Erstellen der Keytab ein.
Nicht zutreffend
Dateiserver FQDN
Der vollqualifizierte Domänenname (FQDN) des Dateiservers, auf dem die Freigabe gehostet wird. Keine IP-Adresse verwenden.
filer.corp.example.comFreigabename
Name der SMB/CIFS-Freigabe
sharename
Kerberos-Dateien, die AI Data Engine verwendet
Sie erstellen die folgenden Dateien auf dem AI Data Engine Host. Das Installationsprogramm erstellt die /opt/netapp/aide`Verzeichnisse und installiert `cifs-utils automatisch, um den Kerberos-authentifizierten SMB-Zugriff zu unterstützen.
| Datei | Standort |
|---|---|
Kerberos Konfiguration |
|
Keytab |
|
Hauptdatei |
|
Ticket-Cache, den AI Data Engine beim Aktualisieren des Tickets erstellt |
|
Erstellung der Kerberos-Dateien
AI Data Engine benötigt die Konfiguration und die Anmeldeinformationen, um Kerberos-Tickets für das Scan-Servicekonto abzurufen.
-
Die Kerberos Clienttools müssen installiert werden.
-
Unter Ubuntu oder Debian werden die folgenden Befehle ausgeführt.
apt-get update -qq apt-get install -y krb5-user -
Unter RHEL, CentOS oder Rocky Linux erfolgt die Ausführung des folgenden Befehls.
dnf -y install krb5-workstation
-
-
Es sind die Variablen festzulegen, die die folgenden Befehle verwenden. Jeder Wert in spitzen Klammern ist durch den entsprechenden eigenen Wert zu ersetzen; die spitzen Klammern selbst sind nicht anzugeben. Das Realm ist in Großbuchstaben und die Domain in Kleinbuchstaben einzugeben.
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>"-
Es ist zu überprüfen, ob die Variablen gesetzt sind.
echo "KDC_IP=[${KDC_IP}] REALM=[${REALM}] SCAN_USER=[${SCAN_USER}]"Die Variablen existieren nur in der aktuellen Shell-Sitzung. Wenn Sie eine neue Shell öffnen, müssen Sie sie erneut festlegen.
-
-
Erstellung der Kerberos Konfigurationsdatei.
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.confDie Datei verwendet die KDC-IP-Adresse, damit die Kerberos-Authentifizierung nicht von DNS abhängig ist.
-
Für das Scan-Dienstkonto ist eine Keytab-Datei zu erstellen.
-
Ausführen
ktutil. -
An der
ktutilEingabeaufforderung folgt die Eingabe des folgenden Befehls. Anstelle von<scan_user>und<REALM>werden Ihre Werte verwendet. DiektutilEingabeaufforderung verwendet keine Shell-Variablen.addent -password -p <scan_user>@<REALM> -k 1 -e aes256-cts-hmac-sha1-96 -
Wenn
ktutilzur Eingabe eines Passworts auffordert, ist das Passwort des Scan-Benutzers zu verwenden. -
An der
ktutilEingabeaufforderung erfolgt die Eingabe der folgenden Befehle.wkt /tmp/krb5.keytab quit
-
-
Test der Keytab.
klist -kt /tmp/krb5.keytab kinit -kt /tmp/krb5.keytab "${SCAN_USER}@${REALM}" klist kdestroyDer zweite
klistBefehl muss ein gültiges Ticket für den Scan-Benutzer anzeigen. Ein Ticket bestätigt, dass die keytab und die Verbindung zum KDC funktionieren. Wennkinitfehlschlägt, finden Sie weitere Informationen unter Fehlerbehebung bei der Kerberos-Authentifizierung. -
Nach der Installation der Keytab-Datei wird die temporäre Kopie gelöscht.
install -o root -g 4321 -m 640 /tmp/krb5.keytab /opt/netapp/aide/kerberos_refresher/datasense.keytab rm -f /tmp/krb5.keytabDer Ticket-Refresher läuft als Root-Benutzer mit der Gruppen-ID 4321. Die Keytab-Datei und die Principal-Datei müssen von dieser Gruppe und von keinem anderen Benutzer lesbar sein.
-
Die Principal-Datei wird erstellt. Der
KRB5_RENEW_INTERVAL_HWert ist das Ticketverlängerungsintervall in Stunden.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
Überprüfung der Namensauflösung
AI Data Engine ermittelt den Dateiserver und den KDC mithilfe der DNS-Einstellungen des Hosts. Die Namensauflösung sollte zunächst überprüft werden, und die DNS-Einstellungen sollten nur geändert werden, wenn ein Name nicht aufgelöst wird.
-
Es sollte überprüft werden, ob sich der Dateiserver und der KDC über den FQDN auflösen lassen.
nslookup "${FILE_SERVER_FQDN}" nslookup "${KDC_FQDN}" -
Überprüfung des Ergebnisses.
-
Wenn beide Namen zu den korrekten IP-Adressen aufgelöst werden, können Sie mit Start der ersten Ticketaktualisierung fortfahren.
-
Falls einer der beiden Namen nicht aufgelöst wird, sollte Korrektur der Namensauflösung abgeschlossen werden; anschließend können Sie zu diesem Verfahren zurückkehren.
-
Start der ersten Ticketaktualisierung
AI Data Engine aktualisiert das Kerberos-Ticket für das Scan-Dienstkonto alle drei Stunden. Für das sofortige Scannen von Freigaben ist das Starten der ersten Aktualisierung erforderlich.
|
|
Die Crontab des Hosts darf kein `kinit`en Eintrag enthalten. AI Data Engine aktualisiert Tickets automatisch. |
-
Einen Aktualisierungsvorgang starten, dessen Abschluss abwarten und das zugehörige Protokoll anzeigen.
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}" -
Es sollte geprüft werden, ob der gemeinsam genutzte Ticket-Cache vorhanden ist und einen aktuellen Zeitstempel aufweist.
ls -l /opt/netapp/aide/kerberos_ccache/krb5cc_shared
Im Jobprotokoll ist ersichtlich, dass für den Scan-Benutzer ein Ticket abgerufen wurde.
Überprüfung der Kerberos-Konfiguration
Vor dem Hinzufügen der Freigabe muss sichergestellt sein, dass AI Data Engine die Kerberos-Dateien verwenden und Namen auflösen kann. Nach dem Öffnen einer neuen Shell müssen die FILE_SERVER_FQDN Variable erneut gesetzt und KUBECONFIG wie in Start der ersten Ticketaktualisierung gezeigt festgelegt werden.
-
Den Mount Service Pod ermitteln.
POD=$(kubectl -n aide get pod -l app.kubernetes.io/name=ds-mount-server -o jsonpath='{.items[0].metadata.name}') -
Zu überprüfen ist, ob der Dateiserver innerhalb von AI Data Engine aufgelöst wird.
kubectl -n aide exec "${POD}" -- nslookup "${FILE_SERVER_FQDN}" -
Zu überprüfen ist, ob AI Data Engine über ein Ticket für den Scan-Benutzer verfügt.
kubectl -n aide exec "${POD}" -- klist
Der Dateiserver wird in die korrekte IP-Adresse aufgelöst, und klist zeigt ein Ticket für den Scan-Benutzer an.
Hinzufügen einer SMB/CIFS-Datenquelle, die Kerberos verwendet
Nach dem Hinzufügen der Freigabe als Datenquelle und dem Starten von Scans kann AI Data Engine mit der Analyse der Daten beginnen.
-
In der Benutzeroberfläche der AI Data Engine wird Konfiguration ausgewählt.
-
Auf der Registerkarte Gescannte Systeme ist System hinzufügen auszuwählen.
-
Die Dateifreigabegruppe wird ausgewählt.
-
Geben Sie einen Namen für die Gruppe an.
-
Die Eingabe des Freigabepfads erfolgt im Format
<file_server_fqdn>/<share_name>. Anstelle der Platzhalter werden Ihre Werte verwendet. Für diese Eingabe wird keine IP-Adresse verwendet. -
Als Authentifizierungsverfahren wird Kerberos verwendet. Die Felder für Benutzername und Passwort bleiben leer.
-
Nach der Überprüfung Ihrer Auswahl erfolgt die Auswahl von Bestätigen.
-
Für das neue System erfolgt die Auswahl der Option Scans aktivieren.
Weitere Informationen zum Verbinden von Datenquellen sind unter "Verbinden einer Datenquelle mit AI Data Engine" verfügbar.
Korrektur der Namensauflösung
Dieses Verfahren ist nur erforderlich, wenn der Dateiserver oder der KDC nicht per FQDN aufgelöst wird. Dadurch wird Ihr Active Directory DNS-Server als Nameserver für den Host festgelegt. Falls Sie eine neue Shell geöffnet haben, ist eine erneute Festlegung der KDC_IP und AD_DOMAIN Variablen erforderlich.
-
Es ist sicherzustellen, dass Ihr Active Directory DNS-Server auch externe Namen auflöst.
-
Der folgende Befehl muss ausgeführt werden.
<external_fqdn>ist durch einen Namen außerhalb Ihrer Domäne zu ersetzen, den AI Data Engine erreichen muss. Als Beispiel eignet sich ein Endpunkt, der in "Ausgehender Internetzugang" aufgeführt ist.nslookup <external_fqdn> "${KDC_IP}" -
Falls der Befehl fehlschlägt, sollte Ihr Active Directory-Administrator die DNS-Weiterleitung aktivieren; anschließend kann dieser Schritt erneut ausgeführt werden.
-
-
Eine Sicherung
/etc/resolv.confsowie die Festlegung Ihres Active Directory DNS-Servers als Nameserver sind erforderlich.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 -
Der Netzwerkmanager darf die DNS-Einstellungen nach einem Neustart nicht überschreiben.
-
Unter RHEL mit NetworkManager kommen die folgenden Befehle zum Einsatz.
mkdir -p /etc/NetworkManager/conf.d printf '[main]\ndns=none\n' > /etc/NetworkManager/conf.d/90-dns-none.conf systemctl reload NetworkManager -
Unter Ubuntu mit systemd-resolved können die folgenden Befehle ausgeführt werden.
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
-
-
Ein Neustart von CoreDNS ist erforderlich, damit AI Data Engine die neuen DNS-Einstellungen verwendet. CoreDNS leitet Abfragen für Namen außerhalb des Clusters an die Nameserver in
/etc/resolv.confweiter, daher ist ein Neustart erforderlich, damit die Änderung übernommen wird.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 -
Erneute Überprüfung der Namensauflösung. Weitere Informationen hierzu enthält Überprüfung der Namensauflösung.
Aktualisierung der Kerberos Konfigurationsdatei
Wenn Sie /etc/krb5.conf nach der Einrichtung ersetzen, beispielsweise durch Kopieren einer neuen Datei darüber, verwendet AI Data Engine weiterhin die vorherige Datei, bis Sie die betroffenen Services neu starten.
-
Erforderlich sind ein Neustart des Mount-Service und das Löschen der vorherigen Jobs zur Ticketaktualisierung.
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 -
Eine neue Ticketaktualisierung starten. Weitere Informationen finden Sie in Start der ersten Ticketaktualisierung.
Fehlerbehebung bei der Kerberos-Authentifizierung
So können Sie die Ursache eines Kerberos-Fehlers ermitteln und das Scannen Ihrer SMB/CIFS-Freigaben wiederherstellen.
| Symptom | Mögliche Ursache | Auflösung |
|---|---|---|
Beim Hinzufügen einer Freigabe erscheint die Fehlermeldung IP not allowed with Kerberos. |
Der Freigabepfad verwendet eine IP-Adresse. |
Der Freigabepfad ist als FQDN anzugeben. |
|
Das Passwort oder der Realm ist falsch, der Realm ist nicht in Großbuchstaben, das Scan-Konto unterstützt keine AES256-Verschlüsselung, der Host kann den KDC auf Port 88 nicht erreichen oder die Uhrzeit des Hosts weicht um mehr als die zulässige Abweichung vom KDC ab. |
Zu überprüfen sind das Passwort und der Realm; außerdem ist zu bestätigen, dass das Konto AES256-Verschlüsselung unterstützt. Port 88 zum KDC ist zu öffnen; außerdem ist zu bestätigen, dass NTP auf dem Host aktiv ist. Anschließend ist die keytab erneut zu erstellen. |
Der Ticketaktualisierungsjob schlägt fehl, oder es wird kein Ticket-Cache erstellt. |
Die Keytab-Datei, die Principal-Datei oder |
Zu prüfen ist, ob die Dateien an den in Kerberos-Dateien, die AI Data Engine verwendet aufgeführten Speicherorten vorhanden sind. Zu prüfen ist, ob die Keytab-Datei und die Principal-Datei Gruppe 4321 und Modus 640 haben. Zu prüfen ist, ob das Ticket-Cache-Verzeichnis dem Benutzer |
Der Dateiserver- oder KDC-Name kann auf dem Host nicht aufgelöst werden. |
Der Host verwendet keinen DNS-Server, der Ihre Active Directory-Namen auflösen kann. |
Vollständig Korrektur der Namensauflösung. |
Die Namensauflösung funktioniert auf dem Host, jedoch nicht innerhalb von AI Data Engine. |
CoreDNS wurde nicht neu gestartet, nachdem Sie |
CoreDNS neu starten. Weitere Informationen unter Korrektur der Namensauflösung. |
Externe Namen werden in AI Data Engine nicht aufgelöst, nachdem Sie Ihren Active Directory DNS-Server festgelegt haben. |
Der Active Directory DNS-Server leitet keine externen Anfragen weiter. |
Es ist zu überprüfen, ob |
Es erscheint die Fehlermeldung mount error(126). |
AI Data Engine kann |
Es ist zu überprüfen, ob |
Änderungen an `/etc/krb5.conf`werden nicht wirksam. |
Die Datei wurde nach der Einrichtung ersetzt, und AI Data Engine verwendet weiterhin die vorherige Datei. |
Weitere Informationen unter Aktualisierung der Kerberos Konfigurationsdatei. |
Der Befehl |
Die Kerberos-Client-Tools sind auf dem Host nicht installiert. |
Die Installation der Kerberos Clienttools ist erforderlich. Weitere Informationen sind in Erstellung der Kerberos-Dateien zu finden. |
Die |
Der Netzwerkmanager überschreibt die Datei. |
Der Netzwerkmanager sollte die DNS-Einstellungen nicht überschreiben. Weitere Informationen finden Sie unter Korrektur der Namensauflösung. |
Kerberos-Konfiguration entfernen
Falls SMB/CIFS-Freigaben nicht mehr mit Kerberos gescannt werden, ist das Entfernen der Datenquelle und der Kerberos-Dateien erforderlich.
-
In der AI Data Engine UI ist die SMB/CIFS-Datenquelle, die Kerberos verwendet, zu löschen.
-
Das Löschen der Kerberos-Dateien.
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 -
Wenn keine andere Applikation auf dem Host sie verwendet, können Sie sie löschen
/etc/krb5.conf. -
Wenn Sie die DNS-Einstellungen geändert haben, ist eine Wiederherstellung der ursprünglichen Einstellungen erforderlich.
-
Die Sicherung von
/etc/resolv.confwird wiederhergestellt.cp /etc/resolv.conf.bak /etc/resolv.conf -
Auf RHEL ist die hinzugefügte NetworkManager Konfiguration zu entfernen.
rm -f /etc/NetworkManager/conf.d/90-dns-none.conf systemctl reload NetworkManager -
Wenn Sie unter Ubuntu eine systemd-resolved Konfiguration hinzugefügt haben, sollte diese entfernt werden.
rm -f /etc/systemd/resolved.conf.d/ad-dns.conf systemctl restart systemd-resolved -
Neustart von CoreDNS.
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n kube-system rollout restart deployment coredns
-