Avatar billede skovs Nybegynder
18. november 2004 - 22:33 Der er 11 kommentarer og
2 løsninger

MS-Access Sikkerhed og MS-SQL

Er der nogen der kan beskrive hvordan man opnår en høj sikkerhed når man bruger MS-SQL og MS-Access som frontend.

Selv om man anvender SQL el. Windows authentication, så vil sammenkædet tabeller fra SQL-serveren kunne importeres hvis en bruger har adgang til databasen i forvejen. Findes der nogle smarte fif, som kan hindre at man kan importere sammenkædet tabeller eller at man kan se data før man er sikker på, at brugeren skal have adgang.

Jeg vil helst hvis brugeren skal bekræftige sin adgang enten via SQL-authentication eller NT, men også muligvis før man får adgang til databasen vha. brugerid/password som evt. gemmes på SQL-serveren.

Det er vigtig at man ikke bruger Access egen sikkerhedsfil(MDW). Derfor vil det være optimalt hvis man først har adgang til tabellerne når man er 100% authenticatet.
Avatar billede terry Ekspert
19. november 2004 - 09:19 #1
I'm not 100% sure I understand your problem! Normally a user is only given permissions to the objects he/she needs access to and NOT all objects. So if a table in SQL server is linked to an Access front-end then if the users doesnt have permissions they cant import/open the table!
Avatar billede skovs Nybegynder
19. november 2004 - 09:46 #2
Det er tildels også korrekt, men hvis brugeren har adgang til tabellerne, så kan vedkommende i pricippet tagen en anden accesdb og importere alle tabellerne til denne. Samtidig kunne det være ønskeligt at man kan bruge tabellerne, men ikke nødtvendigvis at brugeren skal se alt hvad der er i dem.

Var det mere forståelig? ;-)
Avatar billede terry Ekspert
19. november 2004 - 11:00 #3
If he has access to SQL Server objects then he can do anything he wants within the rights he has. This can be in Access/VB/ASP or what ever and there isnt much you can do about it. To stop him seing specific information in the tables then it you can use views. Then you give him permission to use the view and not the table
Avatar billede terry Ekspert
24. november 2004 - 09:33 #4
hows it going skovs?
Avatar billede skovs Nybegynder
24. november 2004 - 14:31 #5
Hej Terry

Faktisk havde du ikke helt ret. Det er muligt at indlæse en sql-database/tabel uden at den er synlig og dermed kan du også anvende SQL-auth. se bla:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/connectionstrategies.asp
Avatar billede terry Ekspert
24. november 2004 - 14:47 #6
Not quite sure what you mean, can you give an example?
Avatar billede skovs Nybegynder
24. november 2004 - 15:00 #7
Hej Igen

Ja lad os antage at du bruger Access som frontend, men ikke vil lade brugerne få adgang til tabellerne før de har angivet kodeord.
Der ligger altså en tabel med brugerid og kodeord på sql-server.

Databasen åbnes og du bliver anmodet om kodeord. Du angiver og access laver et skjult opslag i en brugertabel på SQL-serveren. Du ved nu at brugeren har adgang til sql-serveren fordi vedkommende er blevet Windows godkendt, men du ved også hvilken bruger fordi vedkommende har tilkendegivet kodeord og brugerid. Hvis kodeord er forkert så lukkes forbindelsen til SQL-serveren.

Bruger som ikke er windows-godkendt kan godt åbne databasen, men vil aldrig få adgang til tabellerne fordi de ikke er godkendt.

Du bruger følgende til at åbne og så laver du en hardkodet gennemlæsning af tabellen med db.openrecordset

Sub PreConnect (strUserName As String, strPassword As String)
    Dim wrkRemote As Workspace, dbsRemote As Database
    Dim strConnect As String
   
    strConnect = "ODBC;DSN=MyServer;DATABASE=MyDatabase;" & _
        "UID=" & strUserName & "PWD=" & strPassword & ";"
    Set wrkRemote = DBEngine.Workspaces(0)
    Set dbsRemote = wrkRemote.OpenDatabase("", False, False, strConnect)
    dbsRemote.Close            ' Close database but keep connection.
End Sub

Var det bedre:
Avatar billede terry Ekspert
24. november 2004 - 15:06 #8
:o)
and how do you stop me from reading the code?

OK, this methid is fine if you want to utilize your own security, but you could just as well have a number of group permissions and then add users to these as needed. That way they only get to see what they are allowed to. In your case you would need to do it all by hand (code).
I've used both methods, and others, and in the end its really just a case of doing what one thinks best.
Access also has its own security, and here you can define what objects a user can have access to.
Avatar billede terry Ekspert
08. december 2004 - 10:35 #9
hi skovs, are we finished with this question?
Avatar billede skovs Nybegynder
13. december 2004 - 14:28 #10
Jeg ved ikke rigtig... jeg har ladt den stå åben fordi jeg stadig ikke helt har følt at dit svar var brugbart.
Avatar billede terry Ekspert
13. december 2004 - 18:17 #11
hi skovs
Your question has been open almost a month and only I have commented, so I very much doubt that there is going to come more input. And if your not happy with my answer then you can just place an answer yourself and accept and then you get your points back. We have over 1000 open questions in Access and it would be nice if we could "clean up" if you see what I mean.

You could also try using Access data projects (.ADP) which uses SQL server as teh backend.

I use Access (ADP) and I have also used MDB with linked tables and as I have no problems with security breaches.
Avatar billede skovs Nybegynder
14. december 2004 - 08:00 #12
Jeg lukker og giver dig en smule for din indsats :-)
Avatar billede terry Ekspert
14. december 2004 - 08:15 #13
Thanks
You could also take a look at Thomas's article on Access security. http://www.eksperten.dk/artikler/314
Not sure if it covers SQL Server connections but it gives infromation on how to keep people out of the code.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester