Ein Hersteller-Audit kann teuer werden, aber woran die Lizenzverwaltung in GLPI scheitert, ist selten der Lizenzpreis – sondern eine Installation, die GLPI der falschen Software zurechnet. Im Betrieb von GLPI-Beständen unserer Kunden existiert ein Compliance-Bericht fast immer; was fehlt, ist Vertrauen in ihn. Dieser Leitfaden zeigt, wie Sie Lizenzen modellieren, warum die Überhangszahl schief herauskommt und wie Sie Abgleich und Warnungen so einstellen, dass ein Audit keine Überraschung wird.
Welches Datenmodell alles trägt
Verstehen Sie vor jedem Bericht, wie GLPI die Teile verknüpft. Es kommt auf vier native Tabellen an:
- glpi_softwares – die Software selbst (ein Datensatz pro Name).
- glpi_softwareversions – die Versionen jeder Software.
- glpi_softwarelicenses – die erworbenen Lizenzen, mit Menge (Feld number), Typ, Gültigkeit (expire) und Lieferant.
- glpi_items_softwareversions – jede erkannte Installation, die ein Element (Computer, VM) mit einer Version verknüpft.
Compliance entsteht aus der Gegenüberstellung der Summe von number in glpi_softwarelicenses mit der Anzahl der Zeilen in glpi_items_softwareversions, gruppiert nach Software. Zeigt eine der beiden Seiten auf den falschen glpi_softwares-Eintrag, geht die Rechnung schön auf – und ist falsch.
Erfassen Sie die Lizenz im richtigen Feld
Erfassen Sie jeden Kauf im Menü Verwaltung > Lizenzen (oder über den Reiter Lizenzen in der Software). Unser standardisiertes Vorgehen:
- Mit der richtigen Software verknüpfen – eine Lizenz gehört zu einem bestimmten glpi_softwares-Eintrag. Sie haben Office gekauft, aber die Inventarisierung hat „Microsoft Office“ und „Microsoft 365 Apps“ als zwei Softwares angelegt? Dann fehlt der Lizenz die Zuordnung zur Hälfte der Installationen.
- Menge in number – die Gesamtzahl vertraglich vereinbarter Plätze. Hier liegt die erste Falle: number = -1 bedeutet eine unbegrenzte Lizenz (Freeware, Standortlizenz ohne Limit). Leer lassen oder 0 setzt die Vergleichsbasis auf null.
- Lizenztyp – OEM, Volume, Subscription usw. (Dropdown glpi_softwarelicensetypes). Kein Schmuck: Er bestimmt die tatsächliche Compliance-Regel.
- Gültigkeit (expire) – füllen Sie sie bei Subscription und Software Assurance aus; lassen Sie sie bei unbefristeten Lizenzen leer.
- Lizenz den Installationen zuweisen – Erfassen reicht nicht. Die Lizenz muss den Elementen zugewiesen werden, die sie verbrauchen (Reiter Elemente der Lizenz), damit GLPI den Verbrauch zählt. Viele Datenbanken haben erfasste Lizenzen ohne jede Zuweisung: Der Bericht zeigt alles als verfügbar, obwohl es längst überschritten ist.
Ein Fehler aus der Praxis, der den Überhang auf null setzt: fragmentierte Namen
Im Betrieb ist der Grund Nummer 1 für „Compliance zeigt null Überhang, aber ich weiß, dass ich überlizenziert bin“ kein Berichtsfehler – sondern Namensfragmentierung. Die Inventarisierung von GLPI legt pro exaktem, vom Agenten gemeldeten Namen einen glpi_softwares-Eintrag an. „Google Chrome“, „Google Chrome (64-bit)“ und „Google Chrome“ mit einem zusätzlichen Leerzeichen werden so zu drei verschiedenen Softwares, jede mit eigener Installationszählung. Sie binden die Lizenz an eine davon, und die anderen beiden stehen „ohne erfasste Lizenz“ da – oder schlimmer, „konform“, weil jede nur wenige Installationen hat. Die Gesamtrechnung geht nie auf.
Die Korrektur gehört nicht in den Bericht, sondern in die Eingabe: Das Software-Wörterbuch (Verwaltung > Regeln > Software-Wörterbuch) normalisiert den Namen, bevor er in glpi_softwares gespeichert wird. Eine Regel, die „Google Chrome (64-bit)“ in „Google Chrome“ umschreibt, führt die Installationen in einer einzigen Software zusammen, und dann deckt die Lizenz alles ab. Ein Detail, welches nur kennt, wer im Betrieb steht: Das Wörterbuch schreibt erst beim nächsten Inventareingang um. Nach dem Anlegen der Regeln muss die Inventarisierung also erneut verarbeitet werden (oder Sie warten auf den nächsten Agentenzyklus), damit alte Installationen migrieren. Regel anwenden und den Bericht in derselben Minute prüfen täuscht: Noch hat sich nichts geändert.
Eine Abfrage, die den echten Überhang zeigt
Solange das Wörterbuch nicht sauber eingestellt ist, mischt die Compliance-Ansicht Rauschen bei. Wir führen direkt in der Datenbank eine Abfrage aus, die pro Software Installationen und Lizenzen gegenüberstellt – unbegrenzte Lizenzen (number = -1) bereits aus der Summe ausgeschlossen:
-- Softwares com mais instalacoes do que licencas (excedente de compliance).
-- number = -1 significa licenca ilimitada: excluimos do somatorio.
SELECT s.name AS software,
COALESCE(lic.licencas, 0) AS licencas,
COALESCE(inst.instalacoes, 0) AS instalacoes,
COALESCE(inst.instalacoes, 0) - COALESCE(lic.licencas, 0) AS excedente
FROM glpi_softwares s
LEFT JOIN (
SELECT softwares_id, SUM(number) AS licencas
FROM glpi_softwarelicenses
WHERE is_deleted = 0 AND number > 0
GROUP BY softwares_id
) lic ON lic.softwares_id = s.id
LEFT JOIN (
SELECT sv.softwares_id, COUNT(*) AS instalacoes
FROM glpi_items_softwareversions isv
JOIN glpi_softwareversions sv ON sv.id = isv.softwareversions_id
WHERE isv.is_deleted = 0
GROUP BY sv.softwares_id
) inst ON inst.softwares_id = s.id
WHERE s.is_deleted = 0
AND COALESCE(inst.instalacoes, 0) > COALESCE(lic.licencas, 0)
ORDER BY excedente DESC;
Ergebnis ist Ihre Einkaufsliste: Jede Zeile mit positivem Überhang ist ein Strafrisiko im Audit. Gleichen Sie sie mit dem Wörterbuch ab, bevor Sie einkaufen – die Hälfte des „Überhangs“ ist meist dieselbe Software, unter zwei Namen gezählt.
Ablaufwarnungen, die wirklich auslösen
Eine abgelaufene Subscription-Lizenz bedeutet gebundenes Geld oder einen abgeschalteten Dienst. GLPI warnt, aber die Warnung hat drei Schalter, die alle eingeschaltet sein müssen – und der häufige Irrtum ist, zu glauben, ein ausgefülltes Feld expire genüge:
- In der Einheit (Verwaltung > Einheiten, Reiter Benachrichtigungen): Alarme zu Lizenzen einschalten und die Vorlaufzeit festlegen (interne Felder use_licenses_alert und send_licenses_alert_before_delay).
- In der Benachrichtigung (Einstellungen > Benachrichtigungen): Die Benachrichtigung zu Softwarelizenzen muss aktiv sein, mit festgelegtem Empfänger und Template.
- Im Cron: Die automatische Aktion, welche Abläufe prüft, läuft nur, wenn der Cron von GLPI läuft. In der Produktion heißt dies: ein Cron des Betriebssystems, nicht der interne Modus, der vom Benutzerverkehr abhängt.
Die Konfiguration eines externen Cron, die wir bei jedem Kunden einrichten:
# Crontab do usuario do PHP (www-data/apache): dispara as acoes automaticas do GLPI,
# incluindo o alerta de licencas a vencer. Sem este cron externo, o alerta so roda
# "de carona" no trafego dos usuarios - e numa janela sem acesso, nunca dispara.
* * * * * www-data /usr/bin/php /var/www/glpi/front/cron.php &>/dev/null
Unabhängig von der nativen Warnung verschicken wir jeden Montag einen Ablaufbericht direkt aus der Datenbank, um uns nicht allein auf die Benachrichtigung zu verlassen:
-- Licencas que vencem nos proximos 90 dias, das mais urgentes para as menos.
SELECT s.name AS software,
sl.name AS licenca,
sl.number,
sl.expire,
DATEDIFF(sl.expire, CURDATE()) AS dias_para_vencer
FROM glpi_softwarelicenses sl
JOIN glpi_softwares s ON s.id = sl.softwares_id
WHERE sl.is_deleted = 0
AND sl.expire IS NOT NULL
AND sl.expire <= DATE_ADD(CURDATE(), INTERVAL 90 DAY)
ORDER BY sl.expire ASC;
Entscheidungsmatrix nach Lizenztyp
Der Lizenztyp verändert, wie Sie in GLPI modellieren und wo ein Risiko liegt. Die Matrix, die wir beim Entwurf verwenden:
| Lizenztyp | Modellierung in GLPI | Feld expire | Häufige Falle |
|---|---|---|---|
| OEM (an die Hardware gebunden) | number = 1 pro Gerät; Typ OEM | Leer (unbefristet) | Wandert nicht mit auf eine andere Maschine – ein PC-Tausch erzeugt stille Nicht-Konformität |
| Volume (VLK / MAK / KMS) | 1 Datensatz, number = vertraglich vereinbarte Menge | Gemäß Vertrag | Echte Aktivierungen zählen, nicht die Vertragsobergrenze |
| Subscription (SaaS, Microsoft 365) | number = Plätze; Abgleich über den Bericht des Anbieters | Ende des Zyklus | Inventarisierung sieht reines SaaS nicht – Erfassung ist manuell |
| Unbefristet + Software Assurance | number = Menge; expire = Ende der SA | Ende der SA | Ablauf der SA beendet nicht die Nutzung, sperrt aber ein Upgrade-Recht |
| Freeware / Trial | Freeware: number = -1; Trial: number + expire | Nur beim Trial | Freeware, die in einer neuen Version kostenpflichtig wird, bleibt unbemerkt |
Abgleich ist Routine, kein Projekt
Software-Compliance ist kein Foto, sondern ein Film: Ihr Bestand ändert sich jede Woche. Im Betrieb bewährt hat sich ein vierteljährlicher Rhythmus für den vollständigen Abgleich (Überhangsabfrage ausführen, Wörterbuch prüfen, Zuweisungen kontrollieren) und ein monatlicher für Abläufe. Priorisieren Sie die Hersteller, die tatsächlich auditieren – Microsoft, Adobe, Oracle und Autodesk fordern nach, und die Rechnung für eine von ihnen entdeckte Nicht-Konformität ist um Größenordnungen höher als der Aufwand, eine Datenbank sauber zu halten. Ziel ist kein hübscher Bericht, sondern die Frage „Wie viele Lizenzen von X habe ich und wie viele nutze ich?“ mit einer Zahl beantworten zu können, der Sie vertrauen.
Möchten Sie Ihren Softwarebestand unter Kontrolle haben, mit abgeglichener Lizenzdatenbank und Warnungen, die tatsächlich auslösen? Lernen Sie den GLPI-Betrieb von NexTool kennen.
Geprüft vom Team der NexTool Solutions.