Gibt es irgendeine Möglichkeit die Inhalte von plpgsql Funktionen im pgAdminIII nicht anzeigen zu lassen? Am Besten irgendwie an Benutzerrechte gebunden.
Was nicht wirklich funktioniert ist:
SELECT Rechte auf Tabelle pg_proc wegnehmen. Man sieht dann nicht mal mehr normale Tabellen angezeigt. Außerdem poppt laufend eine Error Box hoch “ERROR: permission denied for relation pg_proc” und zwar nicht nur wenn man auf das Funktionen Icon drückt.
SECURITY DEFINER für eine Funktion setzen, hat natürlich nur was mit der Ausführung zu tun.
Verschlüsselung des plpgsql codes ist auf der offiziellen ToDo Liste als unerwünschtes feature deklariert… kommt also auch nicht irgendwann mal.
Um die Frage gleich vorweg zu nehmen, warum man sowas blödes überhaupt tun will:
Unsere gesamte Business Logik liegt als Funktionen in der DB und wir liefern unsere DB auch in Kopierstaaten (China, Taiwan, Korea,…) aus.
Unser Gedanke war pgAdminIII also einfaches Viewer Tool mitzuliefern und die Benutzerrechte so einzustellen, dass der Benutzer keinen Schaden anrichten kann und den plpgsql code nicht auslesen kann.
oder ihr findet euch einfach damit ab, dass sie kopiert wird … wenn man schon unbedingt nach asien liefern möchte - dann muss man sowas einplanen und den preis so gestalten, dass man sich das notwendige hickhack leisten kann - wenn man es sich leisten will
Über so etwas macht man sich Gedanken, bevor man seine Anwendung implementiert.
Wenn ihr den Zugriff auf pg_proc sperrt, ist auch kein Backup mehr möglich. Und spätestens dann würde ich euch als potentieller Endkunde euer Produkt zurückschicken und mein Geld wiederhaben wollen. Wenn aber ein Backup möglich ist, findet sich dort auch der Quellcode der Funktionen.