Hallo zusammen,
Ich möchte wissen, was andere tun, um ihre Skripte als Unternehmens-IP zu schützen, und ob Gruppen die Skriptnutzung protokollieren. Durch die Skriptprotokollierung können wir erkennen, welche Skripte wir am häufigsten verwenden, und unsere Maßnahmen entsprechend ausrichten.
Unsere aktuelle Methode besteht darin, die verschlüsselte Skriptnutzung auf einem Netzlaufwerk zu protokollieren. Dies setzt voraus, dass der Benutzer bereits im Netzwerk authentifiziert ist. Kann das JMP-Skript nicht auf das Netzlaufwerk zugreifen, wird es beendet. Ist dies möglich, protokolliert es Informationen zur Skriptnutzung wie Skriptname, Benutzername und Datum/Uhrzeit, indem es eine Textdatei in das Netzwerkverzeichnis schreibt. Dies dauert relativ lange, manchmal mehr als zehn Sekunden, abhängig vom Standort des Benutzers im Vergleich zum Server und den Netzwerkbedingungen. Ich denke, der größte Teil davon entfällt auf den Dateischreibvorgang. Aus Benutzersicht ist das nicht so toll ... Es scheint, als würde JMP übermäßig viel Zeit damit verbringen, die GUIs der Skripte zu öffnen. Tatsächlich wird jedoch nur Zeit für die Verbindung zum Server und das Schreiben der Datei benötigt. Ich kann unsere Netzwerkprobleme nicht lösen und habe einige Ideen für Problemumgehungen, würde mich aber freuen, wenn jemand von Ihnen nach der Lektüre dieses Artikels alternative Vorschläge hat.
Hinweis: Wir verschlüsseln unsere Skripte zum Anzeigen, aber nicht zum Ausführen.
Aktuell:
- Skript ausführen
- Überprüfen, ob der Netzwerkpfad vorhanden ist
- falls vorhanden, protokollieren Sie die Nutzungsinformationen (dauert sehr lange) und fahren Sie mit dem Skript fort. Verwenden Sie den Befehl „Textdatei speichern()“ mit Text in einer CSV-Datei.
- Damit wird sowohl die Authentifizierung überprüft als auch die Nutzung protokolliert. Wenn wir nur die Authentifizierung überprüfen müssten, würde es ausreichen, einfach zu prüfen, ob das Verzeichnis existiert. Das scheint ziemlich schnell zu gehen.
- Andernfalls beenden Sie das Skript
Vorschlag 1:
- Skript ausführen
- Wenn der Authentifizierungsnamespace nicht vorhanden ist (erste Überprüfung der Authentifizierung innerhalb der JMP-Sitzung)
- Hinweis: „authentication_namespace“ bezieht sich hier auf einen Namespace, der erstellt werden kann, und auf Variablen, die darin erstellt werden können. Jedes Skript in einer JMP-Sitzung kann prüfen, ob der Namespace erstellt wurde oder noch nicht existiert. Wir können dies verwenden, um diesen Namespace nach der Authentifizierung zu erstellen.
- Wenn ein Netzwerkverzeichnis vorhanden ist, (überprüfen Sie, ob der Benutzer im Firmennetzwerk ist)
- Erstellen Sie den Authentifizierungsnamespace. Wir könnten darin eine Variable erstellen, aber ich glaube nicht, dass das nötig ist. Wir werden ihre Existenz später überprüfen.
- Suchen Sie die lokale Protokolldatei und laden Sie alle zuvor lokal protokollierten Skriptnutzungsdaten auf den Server hoch.
- Wenn Sie dies nur während der Authentifizierung tun, wird die Schreibzeit zumindest auf einmal pro JMP-Sitzung reduziert.
- Probleme: Wie viele Dateien müssen durchsucht werden? Ich würde sie in einem „Protokoll“-Ordner im Standardverzeichnis aufbewahren, um sie auf unsere Protokolldateien zu beschränken. Aber was passiert, wenn eine Datei beschädigt ist? Oder wenn sie von einem Benutzer separat geöffnet wird? Oder wenn ein Benutzer auf ein Skript doppelklickt und mehrere Dateien mit demselben Zeitstempel (dem aktuellsten) erstellt werden? Oder wenn mehrere JMP-Sitzungen geöffnet sind? Eine zukünftige JMP-Sitzung hat keinen Zugriff auf die Referenz des Namespaces, sondern nur auf den Namen, den wir ihm geben. usw. usw.
- Wenn das Netzwerkverzeichnis nicht existiert, beenden Sie, da der Benutzer nicht im Netzwerk ist
- Wenn der Authentifizierungsnamespace vorhanden ist (die Authentifizierung des Benutzers wurde zuvor in dieser JMP-Sitzung verifiziert), protokollieren Sie die Nutzung lokal im Standardverzeichnis \ Protokollordner.
- Wenn die Datei nicht existiert, erstellen Sie sie und speichern Sie die Protokollinformationen
- Wenn die Datei vorhanden ist, fügen Sie die Protokollinformationen hinzu
- (beachten Sie den oben beschriebenen Vorbehalt, mehrere Dateien usw.)
- Es ist nicht nötig, die Informationen jetzt auf den Server zu übertragen. Tun Sie dies nur, wenn Sie die Authentifizierung zum ersten Mal innerhalb der JMP-Sitzung überprüfen.
Das oben Genannte ist möglich, wird aber komplex und ich denke, es wird Probleme verursachen. Bei Hunderten von Benutzern wird die Fehlerbehebung ein Albtraum, wenn etwas schiefgeht.
Vorschlag 2:
Ähnlich wie unsere bisherige Methode, jedoch erfolgt die Netzwerküberprüfung durch die Prüfung, ob das Netzwerkverzeichnis existiert (schnell), und die Protokollierung durch das Starten einer Protokollierungsaufgabe, auf die JMP nicht warten muss. Ich bin mir nicht sicher, ob das möglich ist. Kann JMP eine Aufgabe starten, um remote in eine Datei zu schreiben, ohne auf deren Abschluss zu warten? Das würde das Problem erheblich vereinfachen.
Bitte lassen Sie mich wissen, wenn Sie alternative Ideen zu diesem Thema haben.
Danke
Mikrofon
Ich denke, Sie könnten eine Aufgabe starten und nicht auf deren Abschluss warten, indem Sie Run Program() verwenden.
Insgesamt würde ich diese Art der Protokollierung nicht wirklich durchführen, da sie schnell kompliziert wird. Und wenn ich es unbedingt tun müsste, würde ich ein geeignetes System zur Unterstützung erstellen (HTTP-Server mit API und Datenbank zur Protokollspeicherung) und die neue HTTP-Anforderung von JMP zum Senden der Daten verwenden.
„wird schnell kompliziert“ – das deckt eine MENGE nicht-technischen Bereich ab.