none
GRANT EXECUTE to all Functions RRS feed

  • Frage

  • Hallo an alle,

    wie kann ich automatisch einen definierten Benutzerkreis automatisch EXEC Rechte auf (neue) Fuktionen geben? Derzeit lasste ich stündlich ein Script laufen, das alle objecte vom Type FN ermittelt und danach ein grant execute on [fuction] to [user/group] ausführt.

    Gibt´s da eine bessere Lösung?

    Danke für alle Antworten im voraus.
    Wilfried

    Donnerstag, 3. Oktober 2013 05:03

Antworten

  • Das ist, wie so oft, eine Frage des Datenbank-Designs:
    Wenn alle diese Funktionen in einem oder mehreren Schemas liegen, die wiederum nach Rollen gegliedert sind, dann benötigt man maximal pro Schema ein GRANT EXECUTE und das war’s.

    So sollte es sein:

    GRANT EXECUTE ON SCHEMA "App1"
                 TO Role1
    
    GRANT EXECUTE ON SCHEMA "App1"
                 TO Role2
    Das Konzept habe ich mal „Zugriffs-Schema“ ("Access-Schema") getauft, um etwas zu verdeutlichen, wofür Schemas vorrangig da sind (Sicherheitskonzept).

    Wenn die Funktionen alle zusammen mit anderen Funktionen oder Prozeduren, die nicht freigegeben werden dürfen, im selben, schlimmstenfalls „dbo“-Schema liegen, dann ist nicht zu helfen…. Da geht nur (A) ALLE Funktionen & Prozeduren freigeben, oder (B) eben einzeln (per Cursor).

    (A) So sollte es nicht sein, ist technisch aber natürlich korrekt:

    GRANT EXECUTE ON SCHEMA "dbo"

    TO Role1


     


    Andreas Wolter | Microsoft Certified Master SQL Server

    Blog: www.insidesql.org/blogs/andreaswolter
    Web: www.andreas-wolter.com | www.SarpedonQualityLab.com


    Donnerstag, 3. Oktober 2013 08:27

Alle Antworten