Wie die Abfrage für Bestimmte Benutzer Zugriffsrechte
Ich habe eine alte Datenbank, die ich bin, zu Erben. Die Zugriffsrechte sind nicht klar definiert sind überall und ich bin auf der Suche nach einem schnellen Weg, um Sie für alle. Sagen wir, ich habe einen user in meiner Datenbank, die nicht gehören zu jeder Mitgliedschaft Rollen. Jedoch Sie haben gegeben worden, den Zugriff auf bestimmte Dinge auf bestimmte Tabellen. Zum Beispiel, Sie können ausführen, select-Abfragen auf Tabelle X und update Abfragen auf die Tabelle Y. ich weiß, dass ich herausfinden kann, was Sie haben, gehen Sie zu den Eigenschaften für jeden Benutzer. Ich würde mir aber vorstellen, dass es eine system-Tabelle irgendwo, hat dies alles definiert in es und macht es leicht queryable. Was würde diese Abfrage Aussehen.
Zur info: ich arbeite mit SQL Server 2005
Update: gibt es auch eine Möglichkeit, dies für alle Datenbanken auf dem server?
InformationsquelleAutor Jason | 2009-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf die Sicherheits-Katalogsichten, dann schauen Sie sich MrDenny Antwort hier gibt eine query-Liste die Rechte eines Benutzers. Ich Schreibe ihn hier (zu aufgeräumt für meinen Geschmack)..
InformationsquelleAutor doza
Dinge sind ein bisschen schwieriger, eigentlich. Die effektiven Berechtigungen sind eine Kombination von internen Datenbank-Berechtigungen (queryable wie Denny ' s Abfrage oben zeigte, von doza) und windows-Gruppenmitgliedschaft. Th später leider gespeichert ist, die außerhalb von SQL, die im AD-schema, so dass Sie nicht wirklich Abfragen.
Also, wenn Ihr Ziel ist die Anzeige 'Zugriff auf die Tabelle X ist gegeben, domain\someuser und domain\somegroup und verweigert domain\someothergroup' dann können Sie den Katalog von Metadaten und Abfragen, wie gezeigt in doza ' s post.
Allerdings, wenn Ihr Ziel ist es, Antworten 'Stimmt Benutzer domain\someuser haben Zugriff auf Tabelle X?', werden Sie nicht bekommen kann die Antwort aus der obigen Abfrage. Das ist richtig, trotz der Tatsache, dass Sie sehen, einen Datensatz zu sagen, die domain\someuser Zugang gewährt wird, Sie nicht Antwort, wenn es einen effektiven Zugang. Denken Sie daran, dass eine einzelne verweigern übertrumpft alle Zuschüsse, und wenn die Domäne\Benutzer ist Mitglied von Domäne\someothergroup Gruppe dann Domäne\someuser ist effektiv verweigert Zugang.
Antwort auf die spätere Frage müssen Sie einen anderen Mechanismus, nämlich Sie haben die Identität des Benutzers bei SQL-Ebene und überprüfen Sie die Berechtigung über HAS_PERM_BY_NAME:
Ist erwähnenswert, dass die erste Frage kann beantwortet werden, indem jeder Benutzer mit anzeigen-Berechtigungen auf die Sicherheit Kataloge, während die später benötigt die impersonate-Berechtigung, eine viel stärkere Berechtigung.
InformationsquelleAutor Remus Rusanu