AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Angemeldete Nutzer und geöffnete Datenbank ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Angemeldete Nutzer und geöffnete Datenbank ermitteln

Ein Thema von DirkG · begonnen am 7. Dez 2009 · letzter Beitrag vom 8. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DirkG
DirkG

Registriert seit: 29. Sep 2003
Ort: Schwerin
67 Beiträge
 
Delphi 5 Enterprise
 
#1

Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 15:58
Datenbank: Interbase • Version: 6.0 • Zugriff über: IBX
Hallo DP'ler.

Ich habe wieder mal ein Problem. Wir wollen in einem Monitoring Tool feststellen, welche Benutzer auf einem Interbase Server eingerichtet sind, ob sie momentan online sind und mit welcher Datenbank sie verbunden sind.

Benutzer ermitteln ist mit IBSecurityService kein Problem.

Für die Ermittlung welche User Online sind, wollten wir IBServerProperties mit FetchDatabaseInfo eine Liste der Datenbanken ermitteln und da ging es los. Laut F1 sollte es mit folgendem Code möglich sein, eine Liste der Datenbanken eines Server zu bekommen. Es passiert aber nichts

Delphi-Quellcode:
  with IBServerProperties1 do begin
    ServerName := 'localhost';
    LoginPrompt := False;
    Params.Add('user_name=SYSDBA');
    Params.Add('password=masterkey');
    Active := True;
    try
      Options := [Database];
      FetchDatabaseInfo; // bis hier alles ok
      for i:= 0 to High(DatabaseInfo.DbName) do // DatabaseInfo ist leer ???
        User.Database:= DatabaseInfo.DbName[i];
    finally
      Active := False;
    end;
  end;
User.Database ist eine Stuktur zur Aufnahme der Daten

Woran liegt es, das DatabaseInfo leer bleibt? Hat jemand von euch schon mal sowas gemacht?
Human are Human to make mistakes.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 16:16
Hallo,

Zitat:
eine Liste der Datenbanken eines Server zu bekommen
Wie soll denn das gehen ?
Man kann doch beliebige Datenbanken irgendwohin auf den Server legen.

c:\temp\data.gdb
c:\temp1\data.gdb

Es wird die Liste der aktuellen geöffneten (connected) Datenbanken zurückgegeben,
siehe auch hier

1

gaaaanz unten.



Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DirkG
DirkG

Registriert seit: 29. Sep 2003
Ort: Schwerin
67 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 16:29
OK. Ich kann also nur festellen, welche Datenbankdatei gerade geöffnet (connected) ist.
Ich wage aber einzuwerfen, das die IB Console es schafft alle registrierten Datenbanken eines Servers anzeigen. Wie machen die das dann?
Human are Human to make mistakes.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 16:34
Hallo,

Zitat:
das die IB Console es schafft alle registrierten Datenbanken eines Servers anzeigen
Beweise ? ...

Das Registrieren per IBConsole erfolgt lokal.
Es werden pro DB ein paar Daten (User, Pass, Pfad) lokal abgelegt
und zwar nur zur Nutzung mit IBConsole selber.
Das hat mit dem Server nix zu tun.

Damit kann die DB in IBConsole schnell wieder geöffnet werden,
ohne die Daten noch mal einzugeben.

Ich kann eine DB auch dann Öffnen,
wenn Sie nicht per IBConsole registriert wird.

Das ist ungefähr vergleichbar mit einer Desktop-Verknüpfung.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DirkG
DirkG

Registriert seit: 29. Sep 2003
Ort: Schwerin
67 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 16:42
Typischer Anfänger Fehler oder wie mein Chef sagt: "Die meisten Fehler liegen zwischen den Augen.

Ich denke ich werde mich noch einmal in die Doku von IB vergraben und einen neuen Lösungsansatz suchen.

Trotzdem es keine Lösung gab. Danke!
Human are Human to make mistakes.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 16:58
Hallo,

ich würde das anders machen.

Unter C:\Programme \ XXX \ DelphiX\Demos\Db\IBX\Admin

gibt es ein Bsp.-Programm, was u.a. zeigt, wie man die User ermittelt.

Anmeldung über TCP-IP (nicht Local).

Wie ich schon geschrieben hatte,
geht es gar nicht, alle Datenbanken
auf dem Server durch Interbase/Firebird ermitteln zu lassen.
Das wäre ja ein "Full Table Scan" auf den Server-Platten,
weil die GDB/FDB (oder auch einfach nur DATA.DAT) überall liegen kann).


Heiko

PS: Es geht hier um Interbase, also lassen wird mal die aliases.conf
von FireBird ausser acht.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DirkG
DirkG

Registriert seit: 29. Sep 2003
Ort: Schwerin
67 Beiträge
 
Delphi 5 Enterprise
 
#7

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 17:22
Danke für den Tip. Leider habe ich die Demo's nicht installiert.

Zitat:
Wie ich schon geschrieben hatte,
geht es gar nicht, alle Datenbanken
auf dem Server durch Interbase/Firebird ermitteln zu lassen.
Habe ich schon begriffen. Deswegen meine Aussage über die Suche eines neuen Lösungsansatz. Vieleicht müssen wir ja die ganze Monitoring Sache überdenken (Funktionsumfang etc.)
Human are Human to make mistakes.
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#8

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 17:37
Wenn man etwas Overhead in Kauf nimmt, dann kann man soetwas selbst implementieren, bspw. um immer nur eine bestimmte Anzahl von Benutzern Zugriff auf eine DB zu erlauben.

Um die Sicherheit Deiner IB/FB-DB-Zugriffe zu gewährleisten, hast Du ja sicher schon das 2-Phasen-Login implementiert. Dabei verbinden sich die User immer erst einmal mit einem 1. Login und mit einer einheitlichen und geheimen User/Passw-Kombi mit dem DB-Server, um sich dann pro DB mit der eigentlichen Benutzernamen/Passw.-Kombi zu authentifizieren. Falls das passt, gibt's das 2. Login nun mit dem "offiziellen" Usernamen und gerne auch einem anderen Passwort. Mit letzterem gelingt keinem super-erfahrenen User mehr der Zugriff auf den DB-Server via ODBC oder andere Wege über die ihm bekannte User/Passw-Kombi.

In Analogie zu obiger Vorgehensweise kann man sich beim Erstkontakt zuerst eine Liste der erlaubten DB holen, die ihrerseits praktischerweise in einer DB gehalten wird. Ich mach das mittels eines eigenen Admin-Tool, womit gerade in diese DB die Pfad/Namen bzw. Aliasnamen hinterlegt werden. (Das ist dann erweiterbar auf eine Liste erlaubter Nutzer pro DB etc.).

Nach diesem schemtaischen Aufbau habe ich nun eine Liste der verfügbaren DBs, samt der erlaubten Benutzer. Nun muss ich nur noch zu jeder DB eine Verbindung herstellen und kann die tatsächlich verbundenen User ermitteln. Dem Benutzer kann ich außerdem beim Login eine zentral vorkonfigurierte Liste der verfügbaren Datenbanken anbieten.

Wie schon in den vorherigen Antworten dargestellt, gibt es keinen IB/FB-Mechanismus "out-of-the-box" dafür; es lässt sich aber leicht eine eigene Lösung implementieren, die dann genau das leistet, was benötigt wird.

--
Andreas
Andreas
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 18:45
Hallo,

zum Abschluss.

HK-Software hat ein Tool zum Loggen entwickelt (Interbase Monitor),
dort läuft das so, dass der Client sich am Port 3050 anmeldet,
dort hängt aber der Monitor, protolliert alles mit
und schickt es weiter zum eigentlichen Server (z.B. 3050).

Die beiden Ports waren jetzt ein Bsp.


Heiko
Heiko
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#10

Re: Angemeldete Nutzer und geöffnete Datenbank ermitteln

  Alt 7. Dez 2009, 19:50
Zitat von hoika:
(Interbase Monitor)
Das Tool löst nicht die Anforderungen des OP, denn Portmapping und Logging auf Paketebene informiert kaum, welche DBs verfügbar sind und wer aktuell mit welcher DB verbunden ist.

--
Andreas
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz