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 :

[Pb Création de Rôles] Besoin d'aide script


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 59
    Points : 22
    Points
    22
    Par défaut [Pb Création de Rôles] Besoin d'aide script
    Bonjour, mon problème est assez simple.

    J'ai actuellement un problème, je suis sous SQL Server 2005 et je débute.
    Je cherche à faire un script de création de "Groupes" utilisateurs sur ma base de donnée, avec des droits spécifiques à chaque groupe, mais je ne sais pas comment faire.


    Je suis sur ma base de donnée "Base1" et je cherche à créer des rôles d'utilisateurs.
    Les rôle que je veut créer sont "Lecteur" et "Modificateur"
    Ma base contient les table "table1" "table2" et "table3"

    -Le lecteur doit juste avoir des droits en lecture (et sur le type de donnée des colonnes si c'est du datetime, int etc)
    -Le modificateur a les mêmes droits mais peut en plus modifier les données et les supprimer.







    Cependant une petite contrainte :

    Je veux qu'aucun de mes rôles n'aient les droit de modification/suppression sur la table "Table3" qui doit rester en lecture seule, sauf vis à vis des administrateurs.



    Je dois absolument obtenir le script de création de ces rôles, passer par l'interface graphique n'est pas une solution dans mon cas.

    J'ai cherché sur internet je n'ai pas vraiment de bon tutorial clair sur la syntaxe etc.
    Et dans l'interface je m'y perd un peu, entre les termes grantors, l'onglet sécurable etc..

    Il faudrait dans le script des droits exclusif c'est à dire commençant par une sorte de "Deny ALL" puis un "Grant" sélectif. pour des raisons de sécurité...


    Pourriez vous m'aider sur la création script simple qui me permette de créer ces deux rôles? Ou me donner un lien vers les tutoriaux simples et bien expliqués?

    C'est urgent, pour ce soir svp.

    Merci !

  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
    21 852
    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 : 21 852
    Points : 52 992
    Points
    52 992
    Billets dans le blog
    6
    Par défaut
    -- création des comptes de connexion relatifs aux futurs utilisateurs (au niveau du serveur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    USE master;
    GO
     
    CREATE LOGIN CNX_LECTEUR 
           WITH PASSWORD = 'mon mot de pase',
           DEFAULT_DATABASE = MaBase,    
           DEFAULT_LANGUAGE = Français;
    GO
     
    CREATE LOGIN CNX_ECRIVAIN
           WITH PASSWORD = 'mon mot de pase',
           DEFAULT_DATABASE = MaBase,    
           DEFAULT_LANGUAGE = Français;	
    GO
    -- création des utilisateurs (au niveau de la base de données cible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    USE MaBase;
    GO
     
    CREATE USER U_LECTEUR FOR LOGIN CNX_LECTEUR 
           WITH DEFAULT_SCHEMA = dbo;
    GO
     
    CREATE USER U_ECRIVAIN FOR LOGIN CNX_ECRIVAIN 
           WITH DEFAULT_SCHEMA = dbo;
    GO
    -- attribution du rôle de lecteur à U_LECTEUR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EXEC sp_addrolemember db_datareader, U_LECTEUR;
    GO
    -- attribution des rôles lecteur et écrivain à U_ECRIVAIN (db_datawriter n'entraîne pas le privilège d'écrire !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EXEC sp_addrolemember db_datareader, U_ECRIVAIN;
    GO
    EXEC sp_addrolemember db_datawriter, U_ECRIVAIN;
    GO
    -- interdiction de toutes mises à jours sur la table T3 pour l'utilisateur U_ECRIVAIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DENY INSERT, UPDATE, DELETE ON T3 TO U_ECRIVAIN;

    Il faudrait dans le script des droits exclusif c'est à dire commençant par une sorte de "Deny ALL" puis un "Grant" sélectif. pour des raisons de sécurité...
    Pour ce qui est de cette partie, il sufit de démarrer une transaction avant l'ordre EXEC sp_addrolemember db_datawriter, U_ECRIVAIN et de la finaliser avec le DENY... Dans ce dernier cas, ne pas mettre les "GO".

    A +

    A +

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    Le problème c'est que là, on autorise puis on DENY.
    Donc par défault l'utilisateur a tous les droits, et si je rajoute une table et que j'oublie de rajouter le DENY, il aura les droits dessus = pb de sécurité.


    D'autre part, ce script est une création d'utilisateurs avec attribution de droits.
    Alors que ma problématique (je l'ai peut être mal exprimé auquel cas je suis désolé) consiste à créer des GROUPES avec des droits précis, libre à moi ensuite d'ajouter des utilisateurs à ce groupe ou des les retirer.

    Chaque utilsateur aura sa propre connexion, et devra appartenir a un groupes aux roles prédéfini.

    Pour l'instant je ne veux aucun utilisateur, juste créer mes groupes.

    Ceci dit, merci pour la réponse, fort bien construite.

  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
    21 852
    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 : 21 852
    Points : 52 992
    Points
    52 992
    Billets dans le blog
    6
    Par défaut
    Le problème c'est que là, on autorise puis on DENY.
    A partir du moment ou il y a une transaction je ne voit pas le problème ou alors tu t'exprime mal.

    Les "groupes" cela n'existe pas. Dans SQL on parle de ROLE. Adapte le code pour utiliser des rôles.

    A +

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    Le problème c'est que la connexion des utilisateurs est pas sécurisée.
    et que mon responsable ma juste demandé des groupes avec autorisations comme précisé en me harcelant pour que je lui mette une sorte de DENY all par défaut, puis des autorisations au compte goutes. Il chipote pas mal mais j'y peut rien.


    Sinon oui on parle bien de rôles, désolé pour le mauvais terme "groupe"
    Mais je ne trouve aucune ou presque documentation sur les roles et leur création.
    Créer et mettre des droits aux utilisateurs je sais faire, mais
    pour des Roles je n'en ai aucune idée.


    Merci pour le temps que tu m'accorde au passage.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 852
    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 : 21 852
    Points : 52 992
    Points
    52 992
    Billets dans le blog
    6
    Par défaut
    CREATE ROLE permet de créer un role. Un role peut être manipulé comme un utilisateur et par exemple gratifié d'un privilège (GRANT).

    Si vous voulez tout interdire sauf quelques tables il faudra les énumérer une à une puisque que le DENY est prioritaire. En effet un DENY ALL suivi d'un GRANT n'aura aucun effet.

    Je pense que le modèle de raisonnement de votre boss est inadapté à une gestion intelligente de la sécurité SQL !

    A +

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 852
    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 : 21 852
    Points : 52 992
    Points
    52 992
    Billets dans le blog
    6
    Par défaut
    Comme par défaut de nouveaux utilisateurs n'ont aucun privilèges, vous pouvez faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE ROLE R_LECTEUR
     
    CREATE ROLE R_ECRIVAIN
     
    GRANT SELECT ON T1 TO R_LECTEUR
    GRANT SELECT ON T2 TO R_LECTEUR
    GRANT SELECT ON T3 TO R_LECTEUR
     
    GRANT INSERT, UPDATE, DELETE ON T1 TO R_ECRIVAIN
    GRANT INSERT, UPDATE, DELETE ON T2 TO R_ECRIVAIN
    A +

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 59
    Points : 22
    Points
    22
    Par défaut
    C'est Parfait !!
    Merci

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

Discussions similaires

  1. besoin d'aide, Script pour création Ports imprimantes
    Par flacck dans le forum VBScript
    Réponses: 0
    Dernier message: 20/07/2012, 21h19
  2. debutant - besoins d'aide script
    Par kienast dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 19/05/2009, 22h31
  3. Besoin d'aide script perl MERCI
    Par la_star160 dans le forum Langage
    Réponses: 1
    Dernier message: 11/08/2008, 12h36
  4. Réponses: 11
    Dernier message: 02/07/2008, 15h12
  5. Besoin d'aide script galerie
    Par orphen dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2007, 22h51

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