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

Administration SQL Server Discussion :

[Security] List des objects avec persmission pour un utilisateur


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Par défaut [Security] List des objects avec persmission pour un utilisateur
    Bonjour,
    Je cherche comment je peux faire pour avoir la liste des objets (table,sp) qu’un utilisateur peu avoir accès en select,update.


    J'ai testé sp_helprotect mais par exemple j'ai donnée accès à un schéma a utilisateur mais sp_helprotect me renvoi le schéma avec la permission et non pas la liste des tables avec leurs permissions qui se trouve dans schéma.

    Merci d'avance de votre aide.

  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 010
    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 010
    Billets dans le blog
    6
    Par défaut
    Deux solutions :
    1 - se mettre dans le contexte de l'utilisateur et tester pour chaque objet et chaque privilège si l'utilisateur courant l'à ou pas, à l'aide de la fonction HAS_PERMS_BY_NAME(...)

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT HAS_PERMS_BY_NAME('MonSchéma.MaTable', 'OBJECT', 'SELECT')
    2 - utilisez les tables systèmes sys.database_principals, sys.database_permissions, sys.database_role_members en les liants afin d'obtenir toutes les informations d'un coup.

    ATTENTION : ceci ne concerne que les privilèges de niveau base. Pour ceux de niveau server, il faut utiliser les tables sys.server_permissions,
    sys.sql_logins, sys.server_principals, sys.server_role_members

    À me lire : http://blog.developpez.com/sqlpro/p7...et-utilisateu/

    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 éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT OBJECT_NAME(parent_object_id),
    		HAS_PERMS_BY_NAME(QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name),   'OBJECT', 'SELECT') AS have_select, 
    		HAS_PERMS_BY_NAME(QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name),   'OBJECT', 'EXECUTE') AS have_Execure, 
    		HAS_PERMS_BY_NAME(QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name),   'OBJECT', 'UPDATE') AS have_Execure, 
    		HAS_PERMS_BY_NAME(QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name),   'OBJECT', 'INSERT') AS have_Execure, 
    		HAS_PERMS_BY_NAME(QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name),   'OBJECT', 'DELETE') AS have_Execure, 
     
        * FROM sys.objects
        where type = 'V' or type ='U' or type ='P'
    Merci

Discussions similaires

  1. Liste des sites avec images libres de droits
    Par SteelBox dans le forum Imagerie
    Réponses: 19
    Dernier message: 06/01/2011, 15h38
  2. Réponses: 1
    Dernier message: 06/05/2006, 11h48
  3. Réponses: 4
    Dernier message: 03/05/2006, 15h30
  4. compatibilité des réels avec pascal (pour fichier de record)
    Par jacquesberger dans le forum Langage
    Réponses: 2
    Dernier message: 12/08/2005, 19h58

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