none
Minimale Berechtigungen für die Abfrage der fn_get_audit_file RRS feed

  • Frage

  • Hallo,

    im Auditumfeld (SQL Server 2014) benötige ich einen SQL Server Login zur Abfrage der fn_get_audit_file, der möglichst wenig Rechte bekommen soll. Nun werden mit dem GRANT von CONTROL SERVER, was zur Abfrage der fn_get_audit_file benötigt wird, zu viele Rechte vergeben.

    Ich habe die Rechte nach dem

    GRANT CONTROL SERVER TO <Login>

    anschließend wieder folgendermaßen eingeschränkt:

    DENY SHUTDOWN TO <Login>
    DENY CREATE ENDPOINT TO <Login>
    DENY CREATE ANY DATABASE TO <Login>
    DENY CREATE AVAILABILITY GROUP TO <Login>
    DENY ALTER ANY LOGIN TO <Login>
    DENY ALTER ANY CREDENTIAL TO <Login>
    DENY ALTER ANY ENDPOINT TO <Login>
    DENY ALTER ANY LINKED SERVER TO <Login>
    DENY ALTER ANY EXTERNAL DATA SOURCE TO <Login>
    DENY ALTER ANY EXTERNAL FILE FORMAT TO <Login>
    DENY ALTER ANY CONNECTION TO <Login>
    DENY ALTER ANY DATABASE TO <Login>
    DENY ALTER RESOURCES TO <Login>
    DENY ALTER SETTINGS TO <Login>
    DENY ALTER TRACE TO <Login>
    DENY ALTER ANY AVAILABILITY GROUP TO <Login>
    DENY ADMINISTER BULK OPERATIONS TO <Login>
    DENY AUTHENTICATE SERVER TO <Login>
    DENY EXTERNAL ACCESS ASSEMBLY TO <Login>
    DENY VIEW ANY DATABASE TO <Login>
    DENY VIEW ANY DEFINITION TO <Login>
    DENY VIEW SERVER STATE TO <Login>
    DENY CREATE DDL EVENT NOTIFICATION TO <Login>
    DENY CREATE TRACE EVENT NOTIFICATION TO <Login>
    DENY ALTER ANY EVENT NOTIFICATION TO <Login>
    DENY ALTER SERVER STATE TO <Login>
    DENY UNSAFE ASSEMBLY TO <Login>
    DENY ALTER ANY SERVER AUDIT TO <Login>
    DENY CREATE SERVER ROLE TO <Login>
    DENY ALTER ANY SERVER ROLE TO <Login>
    DENY ALTER ANY EVENT SESSION TO <Login>
    DENY IMPERSONATE ANY LOGIN TO <Login>
    DENY SELECT ALL USER SECURABLES TO <Login>

    Es verbleibt lediglich:
    CONNECT SQL, CONNECT ANY DATABASE und CONTROL SERVER

    Die Abfrage der fn_get_audit_file ist weiterhin möglich.

    Welche Rechte besitzt der User nun noch durch „CONTROL SERVER“? Gibt es irgendwelche Lücken, über die sich der User wieder mehr Rechte vergeben kann?

    Vielen Dank.

    Gruß
    Oliver Trendelkamp.


    • Bearbeitet Oliver-T Donnerstag, 14. Juni 2018 12:20
    Donnerstag, 14. Juni 2018 12:12

Antworten

Alle Antworten

  • Hallo Oliver,

    statt dem Benutzer die Rechte zu geben gibt es eine andere Lösung über eine signierte Stored Procedure im Impersonation auf einen Zertifikatsnutzer, der die Rechte hat, siehe using fn_get_audit_file and execute as


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert Oliver-T Freitag, 15. Juni 2018 10:36
    Donnerstag, 14. Juni 2018 12:42
  • CONTROL Server für einen einzigen Funtions-Call? - das würde ich empfehlen, nochmal stark zu überdenken.

    Der Vorschlag von Olaf über einen gekapselten Funktionsaufruf wäre auch meine Empfehlung.

    Lücken - Wie genau man trotz all der Denies jetzt noch eine Privilegienerweiterung ausführen kann, möchte ich jetzt hier nicht öffentlich beschreiben.
    Das Entscheidende ist: es geht. Es ist nicht ausreichend schützbar auf diesem Wege.

    Ansonsten, wer sich in das Thema genauer einarbeiten möchte findet hier tiefgehende Informationen zu CONTROL SERVER:

    CONTROL SERVER gegen Sysadmin/sa: Berechtigungen, Systemprozeduren, DBCC, automatische Schema-Erstellung und Privilegienausweitung – Fallstricke

    Neue Berechtigungen im SQL Server 2014: IMPERSONATE ANY LOGIN, SELECT ALL USER SECURABLES, CONNECT ANY DATABASE und der alte CONTROL SERVER

    - seit SQL 2016 ist da noch nichts Neues passiert.


    Andreas Wolter (Blog | Twitter)
    MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
    MCM SQL Server 2008
    MVP Data Platform MCSE Data Platform
    MCSM Charter Member, MCITP Charter Member etc.
    www.SarpedonQualityLab.com
    (Founder)

    • Als Antwort markiert Oliver-T Freitag, 15. Juni 2018 10:36
    Freitag, 15. Juni 2018 08:41
  • Hallo Olaf,

    darüber hatte ich auch bereits nachgedacht. Meine Bedenken hier:

    • Ich bin mir nicht sicher, ob der Fremdhersteller, für den eine exklusive Instanz bereit gestellt wurde, es zulässt eine eigene Datenbank mit der Stored Procedure anzulegen. Auch eine Anlage der SP in der master Datenbank könnte supporttechnisch problematisch sein.
    • Durch den indirekten Zugriff auf die fn_get_audit_file durch eine SP besteht eine theoretische Möglichkeit die Auditdaten zu verfälschen - möglicherweise wird dies nicht so gerne gesehen...

    Ich werde noch einmal darüber nachdenken und bedanke mich für die Antwort.

    Gruß
    Oliver.

    Freitag, 15. Juni 2018 10:30
  • Hallo Andreas,

    ich hatte gehofft, dass es nach dem umfangreichen Entzug der Privilegien nicht mehr möglich ist diese auf irgendeine Weise zu erweitern....

    Wie bereits Olaf geschrieben, denke ich über einen indirekten Zugriff über eine SP nach.

    Vielen Dank.

    Gruß
    Oliver.

    Freitag, 15. Juni 2018 10:35
  • ...
    • Ich bin mir nicht sicher, ob der Fremdhersteller, für den eine exklusive Instanz bereit gestellt wurde, es zulässt eine eigene Datenbank mit der Stored Procedure anzulegen. Auch eine Anlage der SP in der master Datenbank könnte supporttechnisch problematisch sein.
    • Durch den indirekten Zugriff auf die fn_get_audit_file durch eine SP besteht eine theoretische Möglichkeit die Auditdaten zu verfälschen - möglicherweise wird dies nicht so gerne gesehen...
    ...

    1) Warum muss die SP in eine eigene DB?
    Sie muss auch nicht in master
    Wobei, wenn aber die gesamte SQL Instanz nur für die eine Apllikation da ist, ist die Frage, was man genau dann verhindern möchte und warum.

    2) die fn_get_audit_file lässt nur Lesezugriff zu.
    Aber selbst wenn nicht, obliegt es einem ja mit der nutzerdefinierten Wrapper-Prozedur, nur zuzulassen,w as man möchte. Und da kann (und sollte)  eine ganze Menge Logik einfließen.

    3) Ja, das Thema CONTROL SERVER ist leider nicht von Ruhm begleitet. Es war ein Ansatz den sa loszuwerden, aber leider nicht so leicht in den Griff zu bekommen, weshalb man nun etwas andere Ansätze verfolgt.


    Andreas Wolter (Blog | Twitter)
    MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
    MCM SQL Server 2008
    MVP Data Platform MCSE Data Platform
    MCSM Charter Member, MCITP Charter Member etc.
    www.SarpedonQualityLab.com
    (Founder)

    Freitag, 15. Juni 2018 10:41
  • Hallo Andreas,

    verhindert werden soll, dass der User der die Auditdaten über die fn_get_audit_file abfragt, irgendetwas anderes auf dem SQL Server tun kann. Die Anwendung die die Auditdaten weiter verarbeitet hat nichts mit der eigentlichen Anwendung zu tun die den SQL Server nutzt.

    Ja, die SP benötigt keine eigene DB - aber irgendwo muss ich diese ja anlegen. Die Datenbank der Fremdanwendung kommt nicht in Frage und die Systemdatenbanken dafür zu verwenden finde ich auch nicht ideal...

    Gruß
    Oliver.

    Freitag, 15. Juni 2018 11:46
  • Ok, ja, klar, der Code muss irgendwo liegen.

    Wenn der Hersteller solchen Zugriff wünscht, muss er auc Bereit sein, mindestens ein paar Code-Zeilen dafür zu schreiben oder selber eine vernünftige Aussage zu treffen, wie er sich das vorstellt, Berechtigungstechnisch .

    Entweder er verlangt nach sysadmin/CONTROL SERVER - dann ist das ein Fall von "keine Ahnung"

    Oder er kommt auf diese Lösung, die wir gerade besprechen.

    Was ich tun würde, wäre eine eigene Min, Code-Only Datenbank mit der Wrapper-Prozedur vorzubereiten, und ihm in seine Datenbank ein Synonym anlegen, die den Zugriff auf eben jene Prozedur enthält.

    Dann gewinnt er etwas Flexibilität.

    viel Erfolg

    Andreas


    Andreas Wolter (Blog | Twitter)
    MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
    MCM SQL Server 2008
    MVP Data Platform MCSE Data Platform
    MCSM Charter Member, MCITP Charter Member etc.
    www.SarpedonQualityLab.com
    (Founder)

    Freitag, 15. Juni 2018 12:13
  • ...ich tendiere klar zur Wrapper-Prozedur mit Zertifikatsnutzer.

    Vielen Dank auf jeden Fall für die Anregungen.

    Gruß
    Oliver.

    Montag, 18. Juni 2018 11:20