Ankündigung

Einklappen
Keine Ankündigung bisher.

Login in SQL-Datenbank absichern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login in SQL-Datenbank absichern

    Hallo Community,

    ich schreibe aktuell ein PHP-Plugin für das Monitoringsystem Icinga.
    Dieses Plugin soll Werte aus SQL-Datenbanken abfragen und diese mit vorgegebenen Schwellwerten vergleichen.
    [Betrieben wird das ganze innerhalb eines Intranets.]

    Der Login in die Datenbank soll vom Monitoringsystem automatisch durchgeführt werden.
    Aktuell bekommt das Plugin den User sowie das Passwort der Test-Datenbank im Klartext übergeben.

    Login erfolgt mittels:
    PHP-Code:
    $db = new PDO("mysql:host=$hostname;dbname=$database;charset=utf8""$user""$passwort"); 
    Ich hatte bereits einige Überlegungen zu einer möglichen Absicherung:
    1. Kennwort mittels mcrypt() verschlüsselt im Plugin ablegen und bei bedarf entschlüsseln (Der Schlüssel müsste allerdings irgendwo im Klartext hinterlegt sein um die Automatisierung zu erhalten.

    2. Login über Zertifikate (z.B. Public-Key) der Pfad zur Keyfile im Klartext im Plugin vermerkt.


    Irgendwie finde ich beide Ansätze nicht optimal. Hatte noch die Überlegung auf den Datenbanken einen speziellen User anzulegen welcher für die Abfrage genutzt wird und nur Leserechte besitzt.


    Bedanke mich im vorraus für die Unterstützung.


  • #2
    Moin,

    ich kann deine Überlegung nicht nachvollziehen. PHP muss sich an der Datenbank anmelden. Dafür bedarf es Anmeldedaten. Die Art wie PHP sich an der Datenbank anmeldet, kann mit einem beliebigen Client wiederholt werden. Egal wie du das unterwegs noch ver- und entschlüsselst - irgendwann musst du die Karten offenlegen. Wenn du Icinga (bzw. anderen Icinga-Plugins) nicht vertraust, dann solltest du die Kommunikation mit der Datenbank über einen Webservice routen, oder einen DB-User anlegen, der nur kann, was notwendig ist um den Job zu erledigen.
    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    Kommentar


    • #3
      @rkr:

      Danke für deine Antwort.
      Ich vertraue Icinga.

      Da ich das gesamte Projekt im Rahmen einer Studienarbeit umsetze ging es mir darum weitere geeignete / ungeeignete Möglichkeiten zu erörtern.

      Kommentar


      • #4
        Der Sicherheitsgewinn ergibt sich dadurch daraus, dass die Zugangsdaten nicht verwendet werden können, wenn man nicht das dazugehörige Verfahren kennt (= CryptKey in PHP-Datei) um die LoginCredentials zu entschlüsseln und umgekehrt. Ist aber ein sehr umständlich und der Sicherheitsgewinn ist eher klein.
        Standards - Best Practices - AwesomePHP - Guideline für WebApps

        Kommentar


        • #5
          Zitat von harrier21a Beitrag anzeigen
          Ich hatte bereits einige Überlegungen zu einer möglichen Absicherung
          Vielleicht solltest du erstmal definieren was du absichern möchtest... ich behaupte mal es sind nicht die Zugangsdaten zur Datenbank

          Kommentar


          • #6
            Bei meiner Überlegung mit der Funktion mcrypt() kommt das Problem hinzu, dass nach einem Neustart des Monitoringsystems das Passwort nicht mehr in der Variable verfügbar wäre.

            Ich bin momentan am überlegen in wie weit sich meine zweite überlegung (Absicherung durch Zertifikat) in PHP umsetzen lässt.

            Hab leider noch nicht so viel Erfahrung mit PHP.
            Es wird abschließend wahrscheinlich auf keine der Möglichkeiten hinauslaufen, ich muss nur eine mögliche Umsetzung beschreiben können und begründen warum die Option geeignet ist oder nicht.

            Kommentar


            • #7
              Die zweite Variante über ein Key-Pair wäre noch einigermassen ok. Aber auch da gilt: wer Zugriff auf den Server mit der Software hat, hat auch Zugriff auf die Datenbank.

              Ersteres kannst du gleich sein lassen, da du damit nur die Zeit minim dehnst, jedoch keinen Sicherheitsgewinn erhälst.

              Mit der zweiten Variante erhälst du nur insofern einen Sicherheitsgewinn, dass dein DB-Account gegen Bruteforce geschützt wird.
              GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

              Kommentar

              Lädt...
              X