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 :

Comment restreindre l'accès à certaines données?


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut Comment restreindre l'accès à certaines données?
    Bonjour,

    Je cherche un moyen de restreindre l'accès à des données d'une base de données (SQL Server 2005) mais avec quelque chose de plus compliqué que ce que l'on peut faire en créant des utilisateurs sur SQL Server.

    En effet je cherche à créer une hiérarchie d'utilisateurs (SuperAdmin, Admin, Directeur, Utilisateurs par exemple) en limitant l'accès (totale ou partielle) à des tables.

    La difficulté consiste en effet à limiter l'accès partiel car par exemple un utilisateur qui consulte la table "Utilisateur" ne verra uniquement que l'enregistrement qui le représente et cela pour toutes les autres tables qui auraient une relation avec la table "Utilisateur".

    Je ne sais pas pour l'instant si je dois m'orienter vers une solution à implémenter sur mon SGBD ou si je dois le faire dans mon application (C# 2.0)?

    Si vous avez des réflexions sur le sujet je suis preneur!
    En Informatique, tout est possible... mais... ce n'est pas toujours évident!

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Ce type de restriction peut s'effectuer à l'aide de vues, plus ou moins complexes, s'appuyant sur la fonction standard USER.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM employe WHERE username = USER()
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    C'est à dire que je dois ajouter à toutes les tables une colonne username?
    En Informatique, tout est possible... mais... ce n'est pas toujours évident!

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Ou faire des jointures dans les vues pour trouver la correspondance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT region.*
    FROM    region
       INNER JOIN
          magasin
          ON magasin.id_region = region.id_region
       INNER JOIN
          employe
          ON magasin.id_magasin = employe.id_magasin
    WHERE employe.username = USER
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    J'avais effectivement pensé aux joitures mais le problème c'est que ça fonctionne uniquement pour une restriction partielle, or si je suis un admin je ne veux pas que le filtre s'applique.

    P.S. Merci de te pencher avec moi la dessus!
    En Informatique, tout est possible... mais... ce n'est pas toujours évident!

  6. #6
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    En fait il me faudrait l'équivalent de Oracle Database Vault sur SQL Server :
    La sécurisation des données devient une préoccupation majeure des directions des entreprises. Elles doivent être accessibles et intègres. Leur protection contre des attaques externes est désormais bien maîtrisée. Le problème plus délicat des attaques internes reste entier.

    Le contrôle des personnes habilitées à y accéder, et l’analyse des opérations effectuées devront se conformer à des réglementations, et permettre la réalisation d’audits.

    Les règles de contrôle d’accès aux données ont longtemps été codées dans les applications. Cette approche est satisfaisante tant que l’utilisateur reste sous le contrôle de l’application. Mais elle n’assure pas la protection contre les attaques menées par des personnels techniques compétents et disposant de forts privilèges sur les bases de données, de part la nature même de leurs fonctions.

    Il est donc nécessaire de disposer de mécanismes de protection:
    · Intégrés à la base de données.
    · Non contournables par des utilisateurs privilégiés.
    · Automatiques et paramétrables.
    · Transparents pour les applications.
    · Permettant l’audit des alertes liées à des violations des règles de sécurité.

    Oracle Database Vault, est une option d’Oracle Database 10g, qui permet désormais d’assurer l’ensemble des fonctions énoncées ci-dessus. L’approche retenue est de placer les données dans un domaine de protection qui va être administré par ses propriétaires, un peu à la façon d’un coffre dans une banque.
    En Informatique, tout est possible... mais... ce n'est pas toujours évident!

  7. #7
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    Il n'y a pas d'équivalent?
    En Informatique, tout est possible... mais... ce n'est pas toujours évident!

Discussions similaires

  1. 5BO 5.1.9] Restreindre l'accès à certaines fonctions ?
    Par Skirlou dans le forum Administration-Migration
    Réponses: 2
    Dernier message: 18/01/2008, 10h06
  2. Réponses: 14
    Dernier message: 03/10/2007, 17h37
  3. [Sécurité] Restreindre l'accès à certaines pages
    Par knoxville dans le forum Langage
    Réponses: 4
    Dernier message: 19/03/2007, 15h55
  4. Réponses: 35
    Dernier message: 18/05/2006, 18h30
  5. Réponses: 5
    Dernier message: 09/01/2006, 11h46

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