Erstes Plakat, lange Zeit lauert hier. Wie kann die Anwendungsrolle in einem Bericht am besten aktiviert werden?
Ich habe verschiedene Dinge ausprobiert und bis jetzt funktioniert die einzige Methode darin, den Aufruf der Anwendungsrolle wie folgt einzubetten:
EXEC sp_setapprole 'REPORTZ', 's3cr3t';
select *
from mytable
where ID < 10000
im Datensatz. Es funktioniert ... aber nicht nach meinem Geschmack (sicherlich nicht in der Form, die ich in die Produktionsumgebung einbauen möchte).
Ich würde es vorziehen, wenn ich die Aktivierungslinie für die Anwendungsrolle zur Laufzeit entweder über benutzerdefinierte Assemblys oder wahrscheinlich über eine Art "Server-Hook" im Reporting Service irgendwie "hijacken" oder "einschleusen" könnte (was ich in beiden Fällen nicht weiß, wie) )
Sehr geschätzt für Ihre Zeit + freundliche Aufmerksamkeit.
YS.
quelle
Antworten:
Ich sehe ein paar Möglichkeiten, wie dies getan werden könnte, ohne auf etwas übermäßig Fantasievolles zurückzugreifen.
Die erste Möglichkeit wäre, die integrierte Windows-Authentifizierung zu verwenden und den Gruppen, die Benutzer der Anwendung darstellen, Berechtigungen zuzuweisen.
Sie könnten Rollen erstellen, die gewährt werden könnten, und dann
set role
die Rolle in Ihrem Code in der Datenbank übernehmen. Auf diese Weise übergeben Sie kein Kennwort und authentifizieren zuerst die Anwendung.Der erste Vorteil besteht darin, dass in einer AD-Domäne leicht verwaltet werden kann, wer Zugriff auf die Anwendung hat. Das Management wäre relativ einfach. Die Hauptnachteile wären, dass es nur Fälle gibt, in denen integrierte Authentifizierung sinnvoll ist und Sie die integrierte Authentifizierung durchgehend unterstützen müssen. Außerdem erfordert jeder Hop eine 3-Wege-Authentifizierung (zwischen Server, Client und KDC).
Der Vorteil des zweiten ist, dass es wahrscheinlich am einfachsten ist, sich einzuschleichen, und es werden keine Sicherheitsinformationen über das Netzwerk angezeigt, und es funktioniert in Fällen, in denen die integrierte Authentifizierung nicht gut funktioniert.
Ich würde beide Ansätze ausprobieren, bevor ich versuche, den Berichtsservice zu erweitern. Wie der Kommentar andeutet, ist http://msdn.microsoft.com/en-us/library/aa237582%28v=SQL.80%29.aspx möglicherweise hilfreich und funktioniert, ist jedoch konzeptionell komplexer als der Versuch, Rollen zu verwalten direkt.
quelle