Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Sécurité
Sécurité Le forum qui s'occupe de votre préoccupation de sécuriser l'accès à votre application Access, ainsi qu'à la sécurité des données.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/07/2008, 18h32   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 4
Points : 1
Points : 1
Par défaut Modifier la sécurité d'une nouvelle table

Bonjour à tous

Premièrement, je voudrais remercier tout le monde sur ce site ainsi que sur le forum car je consulte se site depuis mes début en programmation (septembre 2002) et il m'a été d'un grand secours à plusieurs reprise.

Je ne me suis jamais inscris car je trouvais toujours les réponses à mes interrogations. Mais là, je n'a pas trouver.

Donc voilà la situation:

J'ai une base de donnée divisée frontal-dorsal avec un fichier mdw pour la sécurité. J'ai créé(ou plutot modifier un code trouver que j'ai trouver sur le net) pour créer une table dans la partie dorsale de la bd et ensuite dans ce même code il y a un fonction qui crée le lie la table dorsal dans la frontal. Jusque là, pas de difficultés.

Voici enfin la question :

Comment modifier les droit lecture de la nouvelle table dans le code vba pour les les utilisateurs puissent ouvrir la table sans la modifier. Car j'ai été voir dans "Outils->sécurité->autorisations d'accès" et les utilisateurs autres que moi(j'ai tout les droits administrateur) ne peuvent même pas lire les données de la table.

Merci d'avance
Azhazel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2008, 23h50   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 941
Points : 6 283
Points : 6 283
Bonsoir,

voici un exemple de code vb avec DAO pouvant te servir de base de réflexion.
Code vb :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Sub ChangeTablePerm(strUsrOrGrp As String, strTable As String, _
                    lngPerm As Long, Optional blnAddPerm As Boolean = True)
Dim db As DAO.Database, tdef As DAO.TableDef
Dim dbDorsale As DAO.Database, strTableDorsale As String, strDBdorsale As String
Dim p1 As Long, p2 As Long
Dim doc As DAO.Document, lngPerms As Long
 
Set db = CurrentDb
Set tdef = db.TableDefs(strTable)
 
' ---------------------------------------------------------
' Autorisation dans dorsale
' ---------------------------------------------------------
If (tdef.Attributes And dbAttachedTable) = dbAttachedTable Then
    ' Nom table dans base dorsale
    strTableDorsale = tdef.SourceTableName
    ' Extraction nom complet base dorsale
    p1 = InStr(1, tdef.Connect, "DATABASE=")
    p2 = InStr(p1, tdef.Connect, ";")
    If p2 = 0 Then p2 = Len(tdef.Connect) + 1
    strDBdorsale = Mid(tdef.Connect, p1 + 9, p2 - p1 - 9)
    ' Ouverture base dorsale
    Set dbDorsale = DBEngine.Workspaces(0).OpenDatabase(strDBdorsale)
    ' référence document
    Set doc = dbDorsale.Containers("Tables").Documents(strTableDorsale)
    ' Utilisateur ou Groupe pour lequel changer les autorisations
    doc.UserName = strUsrOrGrp
    lngPerms = doc.Permissions
    If blnAddPerm Then
       ' Ajoute autorisations
       doc.Permissions = lngPerms Or lngPerm
    Else
       ' Retire autorisations
       doc.Permissions = lngPerms And (Not lngPerm)
    End If
    Set doc = Nothing
    dbDorsale.Close
End If
Set tdef = Nothing
 
' ---------------------------------------------------------
' Autorisation dans Frontale
' ---------------------------------------------------------
' référence document
Set doc = db.Containers("Tables").Documents(strTable)
' Utilisateur ou Groupe pour lequel changer les autorisations
doc.UserName = strUsrOrGrp
lngPerms = doc.Permissions
If blnAddPerm Then
   ' Ajoute autorisations
   doc.Permissions = lngPerms Or lngPerm
Else
   ' Retire autorisations
   doc.Permissions = lngPerms And (Not lngPerm)
End If
Set doc = Nothing
 
Set db = Nothing
 
End Sub
Exemple pour ajouter l'autorisation "Lecture des données"
Code vb :
1
2
3
4
5
6
7
Sub TestChangeTablePerm1()
Dim lngAddPerms As Long
lngAddPerms = DAO.PermissionEnum.dbSecRetrieveData
' Ajoute autorisation "lire les données" sur la table "Catégories"
' au groupe "Lecture seule"
ChangeTablePerm "Lecture seule", "Catégories", lngAddPerms, True
End Sub

La sub ChangeTablePerm modifie les autorisations sur la table dans la base dorsale, puis fait de même avec la table liée qui se trouve dans la frontale.
Le code est supposé être éxécuté depuis une base frontale par un utilisateur ayant des droits d'administration,
lui permettant de modifier les autorisations sur la table dans la base dorsale, et dans la base frontale.

Je pense que la lecture du code te permettra de comprendre le principe.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 15h18   #3
Invité de passage
 
Inscription : juillet 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 4
Points : 1
Points : 1
Citation:
Envoyé par LedZeppII Voir le message
Bonsoir,

La sub ChangeTablePerm modifie les autorisations sur la table dans la base dorsale, puis fait de même avec la table liée qui se trouve dans la frontale.
Le code est supposé être éxécuté depuis une base frontale par un utilisateur ayant des droits d'administration,
lui permettant de modifier les autorisations sur la table dans la base dorsale, et dans la base frontale.

Je pense que la lecture du code te permettra de comprendre le principe.

A+
Merci LedZeppII,
Mais à la lecture du dernier paragraphe, j'ai compris que j'avais oublié quelque chose d'important. Les droits des utilisateurs. La ou les personnes qui vont devoir utilisé cette fonction, n'ont pas les droits administrateurs "global". Donc je dois laisser tomber tout ce code que tu as composé pour me venir en aide.

Mais j'ai trouver une autre solution : J'ai donné les droits admin au groupe, seulement pour la table (dorsale et la frontale) qui sers de base à la création de la nouvelle table. J'ai du aussi donnée les droit d'ajout de table. J'ai testé et cela fonctionne. Je ne crains pas pas pour la sécurité de la bd car malgré le fait que un groupe a accès à la création de table, il ne pourra pas l'associer à aucune autre fonction des formulaires.

Merci encore pour ton aide
Azhazel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h24.


 
 
 
 
Partenaires

Hébergement Web