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 :

[SQL SERVER 2K]Droits d'exécution procédure stockée


Sujet :

MS SQL Server

  1. #1
    Membre du Club Avatar de Franck2mars
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 64
    Points
    64
    Par défaut [SQL SERVER 2K]Droits d'exécution procédure stockée
    Salut,
    j'utilise une procédure stockée par laquelle j'insère des données. Je crée une instruction sql en concaténant plusieurs chaines de caracteres.Je l'exécute avec exec(instruction sql). Cependant j'ai des droits restreints et mon instruction est un insert, or je n'ai pas les droits d'insertion. Quelqu'un sait il si je peux exécuter une instruction avec des droits particulier lors de l'appel de cette procédure par un programme?

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    je ne suis pas sûr d'avoir bien compris la question, mais basiquement, quand vous faites du SQL dynamique dans une procédure, vous devez vous assurez que le login/user qui exécute la procédure a les droits adéquats sur les objets référencés dans le SQL dynamique. C'est une règle de sécurité pour SQL Server, qui cherche par là à se prémunir contre des injections : imaginez que vous permettiez d'insérer dans votre SQL dynamique le contenu de paramètres passés à la procédure, vous risqueriez alors d'être la victime de tentatives d'injection, cad d'envoi de code SQL non désiré au serveur.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Extrait de l'aide en ligne MS :

    "
    Lorsqu'une procédure stockée qui exécute une chaîne est lancée, les autorisations sont vérifiées dans le contexte non pas de l'utilisateur qui a créé la procédure, mais de celui qui exécute la procédure. Toutefois, si un utilisateur est propriétaire de deux procédures stockées et que la première appelle la seconde, l'autorisation EXECUTE n'est pas vérifiée pour la seconde procédure.
    "
    Donc, encapsulez la proc stock dans une autre !


    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/ * * * * *

  4. #4
    Membre du Club Avatar de Franck2mars
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 64
    Points
    64
    Par défaut
    Alors, j'ai essayé mais semble-t-il, cela ne marche pas,

    voila ma premiere proc stockée :

    CREATE PROCEDURE [dbo].[ps_I_importdata]
    @nom_table CHAR (255),
    @champs char (255),
    @data CHAR (255)

    as
    DECLARE @SQLStatement varchar(255)
    begin
    select @sqlstatement= 'insert into ' + rtrim(@nom_table) + ' (' + rtrim(@champs) + ') values (' + rtrim(@data) +')'
    print (@SQLStatement)
    EXEC ps_i_test @sqlstatement
    end
    GO
    Voila ma deuxieme :
    CREATE PROCEDURE [dbo].[ps_I_test]
    @nom_table CHAR (255)

    as
    DECLARE @SQLStatement varchar(255)
    begin
    --select @sqlstatement= 'insert into ' + rtrim(@nom_table) + '(' + rtrim(@champs) + ') values (' + rtrim(@data) +')'
    print (@nom_table)
    EXEC (@nom_table)
    end
    GO
    Voila comment j'appelle ma procédure :
    exec ps_i_importdata 'I_SIGLE','ID_SIGLE,DESIGN','"FF","rrrrrrr"'
    Et enfin voila mon message d'erreur, comme ca c'est complet!!!
    Server: Msg 229, Level 14, State 5, Line 1
    INSERT permission denied on object 'I_SIGLE', database '---, owner 'dbo'.

  5. #5
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    vous n'y couperez pas : en cas de SQL dynamique, vous devez assurer les droits sur les objets
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  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 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Vous n'avez visiblement pas bien compris...

    Voici la correction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    CREATE PROCEDURE [dbo].[ps_I_test]
    @nom_table CHAR (255),
    @champs char (255),
    @data CHAR (255)
     
    as
    DECLARE @SQLStatement varchar(255)
    begin
    select @sqlstatement= 'insert into ' + rtrim(@nom_table) + '(' + rtrim(@champs) + ') values (' + rtrim(@data) +')'
    EXEC (@nom_table)
    end
    GO
     
    CREATE PROCEDURE [dbo].[ps_I_importdata]
    @nom_table CHAR (255),
    @champs char (255),
    @data CHAR (255)
    As
    DECLARE @SQLStatement varchar(255)
    begin
    select @sqlstatement= 'ps_I_test ''' + @nom_table + ''', ''' + @champs + ''', ''' + @data
    EXEC ps_i_test @sqlstatement
    end
    GO
     
    exec ps_i_importdata 'I_SIGLE','ID_SIGLE,DESIGN','''FF'',''rrrrrrr'''
    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/ * * * * *

  7. #7
    Membre du Club Avatar de Franck2mars
    Inscrit en
    Mai 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 119
    Points : 64
    Points
    64
    Par défaut
    Merci!!! Ca marche maintenant...


  8. #8
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    en passant, désolé pour ma réponse trop définitive. Je ne connaissais pas cette astuce.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2009, 09h33
  2. [SQL Server 2005] print dans une procédure stockée
    Par anayathefirst dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 21/03/2008, 15h50
  3. Réponses: 3
    Dernier message: 02/02/2007, 14h30
  4. Réponses: 3
    Dernier message: 11/07/2006, 16h32
  5. [SQL-Server] Sous requete dans une procédure stockée
    Par Worldofdada dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 09/02/2006, 11h18

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