Première affiche, longtemps caché ici. Quelle est la meilleure façon d'activer le rôle d'application dans un rapport?
J'ai essayé différentes choses et jusqu'à présent, la seule méthode qui fonctionne est d'incorporer l'appel au rôle d'application comme ceci: -
EXEC sp_setapprole 'REPORTZ', 's3cr3t';
select *
from mytable
where ID < 10000
dans l'ensemble de données. Cela fonctionne ... mais pas à mon goût (certainement pas dans la forme que je voudrais utiliser dans l'environnement de production).
Je préférerais que je puisse en quelque sorte `` détourner '' ou `` injecter '' la ligne d'activation du rôle d'application lors de l'exécution via des assemblys personnalisés ou probablement une sorte de `` hook de serveur '' dans Reporting Service (qui, dans les deux cas, je ne sais pas comment )
Très apprécié pour votre temps + votre attention.
YS.
la source
Réponses:
Je vois deux façons de le faire sans recourir à quelque chose de trop sophistiqué.
La première serait d'utiliser l'authentification intégrée de Windows et d'attribuer des autorisations aux groupes qui représentent les utilisateurs de l'application.
Vous pouvez créer des rôles qui pourraient être accordés, puis utiliser
set role
pour assumer le rôle dans votre code dans la base de données. De cette façon, vous ne transmettez pas de mot de passe et vous authentifiez d'abord l'application.L'avantage du premier est qu'il est facile de gérer, dans un domaine AD, qui a accès à l'application. La gestion serait relativement simple. Les principaux inconvénients seraient qu'elle serait limitée aux cas où l'authentification intégrée a un sens et que vous devriez prendre en charge l'authentification intégrée tout au long du processus. De plus, chaque tronçon finit par nécessiter une authentification à trois voies (entre le serveur, le client et KDC).
L'avantage de la seconde est qu'elle est probablement la plus simple à shim, et qu'elle n'expose aucune information de sécurité sur le réseau, et cela fonctionne dans les cas où l'authentification intégrée ne fonctionnera pas bien.
J'essaierais ces deux approches avant d'essayer d'étendre le service de signalement. Comme le commentaire l'a suggéré, http://msdn.microsoft.com/en-us/library/aa237582%28v=SQL.80%29.aspx peut être utile et peut fonctionner, mais il est conceptuellement plus complexe que d'essayer de gérer des rôles directement.
la source