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 :

Droit sur UNE table [2008R2]


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 100
    Par défaut Droit sur UNE table
    Bonjour je cherche à donner à un utilisateur le droit de modifier et voir qu'UNE seule table sur UNE base.
    Je suis soit trop restrictif soit trop permissif.

    Pouvez vous m'aidez ?
    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2013
    Messages : 74
    Par défaut
    Bonjour,
    Il faut que votre utilisateur puisse se connecter à l'instance, puis "effectuer une prise de contexte" (entrer...) dans la base, puis manipuler l'objet choisi.
    Donc, concrètement, il faut:

    Créer un login
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    use master;
    GO
    CREATE LOGIN toto password 'titi' default_database MA_BASE;
    GO
    Créer un user dans la base MA_BASE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    use MA_BASE;
    GO
    CREATE user toto for login toto;
    GO
    puis enfin donner les droits qui vont bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    use MA_BASE;
    GO
    GRANT SELECT, INSERT, UPDATE, SELECT, DELETE ON MA_TABLE to toto;
    GO
    Attention aux permissions de type DENY (notamment celles des rôles db_deny_datareader et db_deny_datawriter) qui empêcheraient la manipulation de l'objet même si une permission GRANT est octroyée.


    Cordialement.

    Benjamin

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 100
    Par défaut
    Merci pour votre réponse.
    En sql server 2008R2 la syntaxe de création de la connexion est plutôt celle ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    USE master;
    GO
    CREATE LOGIN titi WITH password ='titi', default_database = MA_BASE;
    GO
    Pour ce qui est de l’accès à d'autre base : c'est ok. 'titi' n'y a pas accs
    Par contre sur MA_BASE, 'titi' à accès en modification à toutes les autres tables de ma base or moi j'aurais souhaité qu'il ne les voit pas non plus.

    Est ce que c'est possible simplement ?

    Merci

  4. #4
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2013
    Messages : 74
    Par défaut
    Bonjour,
    Si l'utilisateur de la base dispose de droits sur des objets alors que vous ne lui avez pas donné spécifiquement ces droits, c'est que l'un des trois cas ce-dessous se présente:
    • Soit l'utilisateur est membre d'un des rôles prédéfinis (db_datareader par exemple)
    • Soit le login associé à l'utilisateur est membre du rôle serveur sysadmin
    • Soit des droits sur des objets de la base sont donnés au rôle "public", auquel appartiennent tous les utilisateurs de la base. Puisqu'il n'est pas possible de supprimer l'appartenance d'un utilisateur au rôle public, la solution consisterait donc à donner les privilèges DENY sur tous les objets de la base sauf pour la table choisie.



    Pour vérifier si le rôle public dispose de privilèges:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select O.name, P.permission_name, P.state_desc 
    from sys.database_permissions P
    inner join sys.database_principals U on U.principal_id = P.grantee_principal_id
    inner join sys.objects O ON O.object_id = P.major_id
    where U.name='public'

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 100
    Par défaut Et bien oui
    Effectivement, il y a un certain nombre d'objet qui remonte avec cette requête.
    Merci pour ces explications.
    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Droits sur une table
    Par FinalSpirit dans le forum Administration
    Réponses: 5
    Dernier message: 18/05/2009, 22h32
  2. [CR 8] Est-il possible de gérer les droits sur une table de la base
    Par foulla dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 06/01/2009, 15h16
  3. Access 2000 droits sur une table
    Par yepAccess dans le forum Sécurité
    Réponses: 1
    Dernier message: 06/12/2007, 22h25
  4. Réponses: 2
    Dernier message: 03/03/2007, 19h03
  5. [MySQL] Perte des droits sur une table ??
    Par Mystic eyes dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 05/07/2006, 16h40

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