IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Problème de droits utilsateurs entre deux bases


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 41
    Par défaut Problème de droits utilsateurs entre deux bases
    Bonjour,

    J’ai un problème de droits d’accès que je ne comprends pas.

    J’ai sur un même serveur :

    - une base A avec un userA qui est db_owner
    - une base B avec un userB qui est db_owner
    - une table TBL qui est identique sur les deux bases

    J’ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    grant insert on [base B].[dbo].[TBL] to userA
    GO
    grant update on [base B].[dbo].[TBL] to userA
    GO
    J’ai même mis userA en db_datareader et db_datawriter de base B

    Ensuite je fais un trigger sur TBL de base A pour qu’il recopie les données dans base B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	INSERT INTO [Base B].[dbo].[TBL]
    		(COL_1,COL_2)
     
    	SELECT 
    		ins.COL_1,ins.COL_2	 FROM inserted ins

    Et là, lorsque je fais un insert, j’ai un message d’erreur me disant que je n’ai pas les droits sur TBL de base B.

    Si je mets userA db_owner de base B cela fonctionne.

    Ce qui est bizarre (pour moi) est que, si je vais regarder les droits de userA dans la base B je vois bien les autorisations explicites sur TBL pour insérer et mettre à jour mais si je vais dans les autorisations effectives je ne vois les droits que pour UPDATE sur les colonnes et non pour INSERT (d’où le problème j’imagine).

    Qu’est-ce que je fais mal ou pas ?
    Quelqu’un a-t-il une idée ?

    Merci par avance.
    Bonne journée

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Le concept d'utilisateur est propre à chaque base de données et le sécurité est cloisonnée. Un utilisateur toto dans une base A n'a rien à voir avec un utilisateur toto dans une base B, même si le nom est identique.

    Les solutions sont de différentes natures :
    1) passez par la notion de propriétaire (trop général)
    2) utilisez l'impersonnalisation (assez général)
    3) mettre en œuvre des certificats.

    A lire :
    http://blog.developpez.com/mikedavem...oriser_et_secu

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 41
    Par défaut
    Merci.

    Mais dans ce cas pourquoi lorsque je mets mon userA db_owner dans la base B cela fonctionne ?
    Et pourquoi, lorsque je regarde les autorisations effectives je vois les droits en UPDATE mais non en INSERT

    D'ailleurs si je crée le même genre de trigger en after update je n'ai pas d'erreur et ma table de la base B se met correctement à jour.

    Merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par brruno Voir le message
    Merci.

    Mais dans ce cas pourquoi lorsque je mets mon userA db_owner dans la base B cela fonctionne ?
    Parce que avez donc utilisé la solution 1

    Et pourquoi, lorsque je regarde les autorisations effectives je vois les droits en UPDATE mais non en INSERT

    D'ailleurs si je crée le même genre de trigger en after update je n'ai pas d'erreur et ma table de la base B se met correctement à jour.

    Merci
    Les déclencheurs s'exécutent sous l'appelant. Tout dépend qui appelle le déclencheur


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 41
    Par défaut
    Merci pour vos réponses.

    Mais il y a toujours un truc "étrange" pour moi.
    Le trigger est appelé par le userA de la base A qui est db_owner de la base A donc il 'y a pas de problème de droits de ce côté.

    Mais même indépendamment du trigger
    Si je fais un GRANT INSERT on [baseB].[dbo].[TBL] to userA

    Lorsque je regarde les autorisations de userA sur la base B je vois :
    sur [TBL] autorisation explicite : Insérer -> Octroyer
    sur [TBL] autorisation effective : sur toutes les colonnes j'ai SELECT et non INSERT.

    Je ne comprends pas.

    C'est ben compliqué pour moi...

    Merci en tous cas de votre aide

Discussions similaires

  1. Requête entre deux bases
    Par dcollart dans le forum Informix
    Réponses: 2
    Dernier message: 22/05/2006, 08h54
  2. Changement Des données entre deux bases
    Par Chakib dans le forum Access
    Réponses: 4
    Dernier message: 28/01/2006, 10h59
  3. Réponses: 5
    Dernier message: 30/11/2005, 16h41
  4. Perte de temps entre Deux bases MySQL
    Par ramm50 dans le forum Outils
    Réponses: 7
    Dernier message: 08/09/2005, 09h33
  5. copie de tables entre deux bases
    Par rlgrand dans le forum Débuter
    Réponses: 3
    Dernier message: 27/12/2004, 12h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo