Frage

Ich habe eine SQL Server 2005-Datenbank, die ich als eingeschränktes Benutzerkonto zuzugreifen bin versucht, mit Windows-Authentifizierung. Ich habe BUILTIN \ Users als Datenbankbenutzer hinzugefügt (bevor ich das tat, ich konnte nicht einmal die Datenbank öffnen). Ich arbeite unter der Annahme, dass alle Berechtigungen für die „public“ Rolle auf sie angewendet haben soll, so dass ich nicht mit Rollenzuweisung alles tun. Unter tblFoo, kann ich den SSMS Eigenschaften-Dialog (Seite Berechtigungen) verwenden „public“ hinzuzufügen, dann explizite Berechtigungen gesetzt. Unter diesen ist „Grant“ für SELECT. Aber läuft

SELECT * from tblFoo;

als begrenzt (BUILTIN \ Users) Konto ist mir ein Fehler "Berechtigung für Objekt verweigert Auswählen 'tblFoo', Datenbank 'bar', Schema 'dbo'". Im Eigenschaftendialog, gibt es eine „wirksame Schaltfläche Berechtigungen, aber es ist grau dargestellt.

Außerdem habe ich versucht, ein nicht-priv Konto erstellen „Usertest“ genannt, und fügte hinzu, dass dann auf Server-Ebene, es Abbildung auf die „bar“ Datenbank nach unten. Dies läßt mich Usertest auf „Benutzer oder Rollen“ Liste hinzufügen, die ich für das Konto „Effektive Berechtigungen“ laufen lassen. Es sind keine Berechtigungen in der Liste aufgeführt - das ist nicht richtig scheint. Das Konto muss in der Öffentlichkeit sein, und Zuwendungen der öffentlichen Hand (unter anderem) Wählen Sie auf tblFoo, warum also nicht das Usertest Konto eine wirksame Erlaubnis zeigen? Ich fühle mich wie ich ein bisschen verrückt hier werde.

ASIDE: Ich bin mir bewusst, dass viele Menschen nicht wie die „public“ Rolle mit Berechtigungen festlegen. Dies ist nur meine Bastelei Zeit; finales Design Ich bin sicher, dass wir mehr flexible Rollen (custom) Datenbank haben werden. Ich versuche nur, das Verhalten, um herauszufinden, ich sehe, also bitte keine „nicht tun!“ Antworten.

UPDATE: Anscheinend weiß ich, gerade genug, um SQL Server eine Gefahr für mich selbst und andere zu sein. Bei der Festlegung von Berechtigungen (wie ich sagte, „unter anderem“), hatte ich die Kontrolle DENY. Als ich diese Berechtigung gesetzt, ich glaube, ich versuchte, zu sehen, was es tat, hatte eine vage Idee und entschied auf Verweigern. Ich kann derzeit nicht erinnern, warum dies die Sache schien zu tun, aber es scheint, dass das der Grund war, war ich die Erlaubnis sich Fehler. Also ich meine Frage zu aktualisieren: kann mir jemand erklären, die „CONTROL“ Erlaubnis, wie es auf Tabellen bezieht

War es hilfreich?

Lösung

Sie müssen nur SELECT Rechte haben. In rohen SQL (siehe „Skript“ Symbol / Taste im Dialogfeld), dann ist es GRANT SELECT ON dbo.tblFoo to public. Dies ist die einzige Berechtigung erforderlich, um die Daten anzuzeigen,

In diesem Fall wird die Fehlermeldung erwähnt ausdrücklich „Verweigern“. „Verweigern“ ist ein Recht an sich, so dass er erwähnt es,

Wenn Sie keine Rechte haben, die Nachricht bekommen würde (sehr ungefähr) „tblFoo existiert nicht oder Sie haben keine Rechte“

"Deny CONTROL" wird erwähnt, hier . In diesem Fall Sie verweigern alle Rechte an die öffentlichen Rolle.

  

Die grantee effektiv hat alle   definiert Berechtigungen für den festlegbar

Andere Tipps

Unter der Annahme, „Usertest“ ist ein Domänen-Benutzerkonto, schließen Sie als Mitglied der Sysadmin-Rolle und führen

EXEC MASTER.dbo.xp_logininfo 'Domain\UserTest', 'all'

(Substitution von Ihrem Domain-Namen für "Domain")

das wird die Windows-Gruppen usw. angezeigt wird, dass das Konto Sicherheitsberechtigungen erbt von und die Zugriffsebene, z.B. Sie würden erwarten, so etwas wie zu sehen:

account name     type    privilege  mapped  login name       permission path
domain\usertest  user   user               domain\usertest  BUILTIN\Users

Dies wird helfen, zu beheben, wo das Konto erbt Berechtigungen, z.B. die Windows-Gruppen ist es ein Teil, die Berechtigungen für die Datenbank. Wenn das alles OK aussieht, dann würde ich Ihre eigenen Ratschlägen und nicht Chaos mit der öffentlichen Rolle folgen.

  • Erstellen Sie eine Datenbank Rolle in Ihrem Datenbank
  • Weisen Sie explizite Berechtigungen für das Rolle
  • Erstellen Sie eine Server-Login für Benutzer Konto
  • Öffnen Sie den Server-Login, um unterwegs Benutzerzuordnung Abschnitt, klicken Sie auf die Datenbank und wählen Sie die Datenbank Rolle, die Sie erstellt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top