Sécurités par secteur

Pourquoi ?

Afin de gérer les sécurités de manière plus précise que par les groupes leseleves, lesprofesseurs, utilisateurs du domaine et admins du domaine, on peut être amené à gérer les contrôles d'accès au niveau des classes. Mais le risque, est de refaire les sécurités tous les ans (la 2nde 12 en ISI sera une classe de STT l'année prochaine) de plus, les groupes classes sont des groupes globaux donc inadaptés au acls.

L'idée est donc de gérer ses sécurité à un niveau intermédiaire : les secteurs.


principe :

A partir d'un fichier de définition de secteurs au format suivant :

TSE=1TSE;2TSE
CPI=1CPI;2CPI
ELEC=1STI3;TSTI3
.....

on crée les groupes DL_TSE (qui contient 1TSe et 2TSE) etc...

les sécurité seront gérées à partir de ces groupes

Lors du changement d'année, il suffit de refaire le fichier de définition des secteurs et de mouliner un coup !


Option explicit

Dim oFichier,oNomFichier
Dim arrLignes, strDl_secteur, arrClasses, strclasse
Dim objGroup, objOU
Dim objconnection, objcommand, objRecordSet
Set oFichier=CreateObject("Scripting.FileSystemObject")
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Const ADS_PROPERTY_CLEAR = 1
Const ADS_SCOPE_SUBTREE = 2
Const ADS_PROPERTY_APPEND = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = ("ADsDSOObject")
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection

Set oNomFichier=ofichier.OpenTextFile("dl_classes.txt")
Do Until oNomFichier.AtEndOfStream
arrLignes=Split(oNomFichier.ReadLine,"=")
strDL_secteur="DL_"&arrLignes(0)
arrClasses=Split(arrLignes(1),";")
wscript.echo "secteur : " &strDL_secteur
objCommand.CommandText = "SELECT samAccountName FROM " & _
"'LDAP://dc=voillaume,dc=local' " & _
"WHERE samAccountName = '"&strdl_secteur&"'"
objCommand.Properties("SearchScope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
If objRecordSet.RecordCount = 0 Then
wscript.echo "Création du groupe : " &strdl_secteur
Set objOU = GetObject("LDAP://cn=Users,dc=voillaume,dc=local")
Set objGroup = objOU.Create("Group", "cn="&strDL_secteur)
objGroup.Put "sAMAccountName", strDL_secteur
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo
Else
wscript.echo "vidage du groupe : "&strdl_secteur
Set objGroup = GetObject _
("LDAP://cn="&strdl_secteur&",cn=Users,dc=voillaume,dc=local")
objGroup.PutEx ADS_PROPERTY_CLEAR, "member", 0
objGroup.SetInfo
End If
for each strclasse in arrclasses
wscript.echo "classe : " &strclasse

Set objGroup = GetObject _
("LDAP://cn="&strdl_secteur&",cn=Users,dc=voillaume,dc=local")
objGroup.PutEx ADS_PROPERTY_APPEND, "member", array("cn="&strClasse&",cn=Users,dc=voillaume,dc=local")
objGroup.SetInfo

Next

loop