Je bent nu offline; er wordt gewacht tot er weer een internetverbinding is

INFO: Hoe Visual Basic 3.0 handelt de beveiliging in Microsoft Access ingesteld

BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.

De Engelstalige versie van dit artikel is de volgende: 105990
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.
Samenvatting
Visual Basic versie 3.0 bevat Microsoft Access database engine.Visual Basic bevat de syntaxis om een Microsoft Access-database bewerkenin bijna elke manier kunnen die Microsoft Access. Een belangrijke uitzondering is inhet gebied van beveiliging. Alleen Microsoft Access kunt instellen of wijzigen van de beveiligingopties (zoals id's en wachtwoorden voor aanmelding) en instellen of wijzigenmachtigingen voor specifieke objecten in een bepaalde database.

Visual Basic versie 3.0 bevat twee instructies (SetDataAccessOptionen SetDefaultWorkspace) die voldoen aan een Visual Basic-toepassing toestaanhet beveiligingsmechanisme waarmee Microsoft Access wordt geïmplementeerd en aanmelden metVisual Basic-code. U kunt de machtigingen krijgen via deze instructiestoegekend aan een bepaalde gebruiker.

Dit artikel wordt uitgelegd van de mechanismen van de beveiliging van Microsoft Access dievan toepassing op de Visual Basic-versie 3.0 en Visual Basic-programmeur. Devolledige beveiligingsmogelijkheden van Microsoft Access zijn buiten het bestek vanin dit artikel.

Voor een volledige beschrijving van de beveiligingsmogelijkheden van de van MicrosoftOpenen, raadpleegt u het volgende Knowledge Base-artikel:
122036 WX1051: De beveiligingswizard en het witboek bijlage Opmerking 2.0
Meer informatie
Microsoft-beveiliging is geïmplementeerd in twee delen:
  • Elke gebruiker of groep heeft een unieke beveiligings-ID (SID) code.
  • SID code is opgeslagen in de database en de bijbehorende machtigingen voor de SID.
De volgende twee secties geven details.

Elke gebruiker of groep heeft unieke beveiligings-ID (SID)

In Microsoft Access heeft elke gebruiker en groep een beveiligings-ID (SID). De SIDis een binaire tekenreeks die de unieke identificatie van de gebruiker of groep. Wanneer een gebruikerLogboeken op of vanuit het dialoogvenster Aanmelden in Microsoft Access of code inVisual Basic (geïllustreerde later in dit artikel), Microsoft AccessEngine wordt gelezen uit de tabel MSysAccounts van het systeem.MDA-database. Ditalleen door Microsoft Access database gemaakt en een nieuwe (lege) ééngemaakt als het oorspronkelijke bestand is verwijderd.

Opmerking: Als het oorspronkelijke systeem.MDA per ongeluk is verwijderd, alle uniekeSID's gaan verloren. Daarom beveiligd alle mogelijkheid toegang te krijgen tot databasesis ook verloren. Daarom is het verstandig een back-up van zowel de database enhet systeem.MDA-bestand in plaats van wanneer de machtigingen zijn ingesteld voor de database.

Bij het aanmelden (niet-hoofdlettergevoelig) op de naam van de gebruiker door de gebruiker worden geleverd enwachtwoord (hoofdlettergevoelig). Als de gebruikersnaam en het wachtwoord correct zijn,de SID van de gebruiker opgehaald en opgeslagen in een interne structuur van deEngine. Het wachtwoord wordt alleen voor het valideren van de gebruiker gebruikt. Vanaf dit punt,Zodra de gebruiker een geverifieerde gebruiker wordt, heeft het wachtwoord geen effect opbeveiliging.

Hier is een belangrijk punt voor het gedrag van Visual Basic. Standaardde engine van Microsoft Access probeert te valideren gebruiker en wachtwoordAdmin en "" respectievelijk. Visual Basic versie 3.0 wordt zonder enige codeDeze toetsencombinatie verzenden naar de engine van Microsoft Access standaard. Ditbetekent dat, zelfs zonder het gebruik van de Visual Basic-beveiliginginstructies in Visual Basic-programma krijgt toelating tot de databaseAls de gebruiker 'Admin' van de groep Administrators niet heeft het wachtwoord gewijzigdgeen standaard ("").

Nadat u bent aangemeld, wordt de SID van de gebruiker opgehaald. Deze SID wordt gebruikt voor alleverdere bewerkingen binnen de engine van Microsoft Access.

De SID wordt opgeslagen in het systeem.MDA-Database

De SID wordt opgeslagen in de database zelf. Daarom alle machtigingentoegekend worden aan een bepaalde gebruiker of groep ook opgeslagen in de databasede unieke SID is gekoppeld.

Hiermee een ander belangrijk punt voor gedrag van Visual Basic. DeVisual Basic-programma zal krijgt toegang tot de database en hebben volledigemachtigingen negeren het beveiligingsmechanisme van Microsoft Access als seeminghet volgende geldt:
  • De Visual Basic-programmeur heeft de locatie van het systeem niet genomen.MDA database rekening in de programmacode.
  • De gebruiker 'Admin' heeft niet het wachtwoord gewijzigd van de standaardwaarde van geen ("").
Dit gebeurt door het standaardgedrag van de Microsoft Accessmotor en Visual Basic. Het gecombineerde effect is om de vermelding voor dedatabase en bijbehorende objecten door de Visual Basic-code.

De lijst van de objecttypen in Microsoft Access zijn: tabel, Query, formulier,Rapport-, Macro- en Module. Van deze zijn alleen de eerste twee toegankelijk viaVisual Basic-code, zodat de anderen kunnen worden weggelaten uit deze uitleg.

De volgende twee secties wordt uitgelegd in elk van de twee Visual Basic security-Verwante instructies (SetDataAccessOption en SetDefaultWorkspace). De tweeinstructies zijn ontworpen voor een keuze van het systeem.MDA-bestanden en aanmeldenposten naar een Microsoft Access-database met beveiliging van MicrosoftToegang. Na deze twee secties is een sectie die betrekking twee heeftinstructies voor het gedrag van de engine van Microsoft Access met betrekking totbeveiliging.

--SetDataAccessOption syntaxis en gedrag

SetDataAccessOption heeft de volgende parameters:
   SetDataAccessOption option, value   option is a numeric value with only one legal value (1).				

Bijvoorbeeld:
   SetDataAccessOption 1, "E:\VBPROJ\MY.INI"				

In de DATACONS.TXT-bestand in de hoofdmap van de map \VB eenconstante is voor deze waarde gedefinieerd:
   Global Const DB_OPTIONINIPATH = 1				

SetDataAccessOption stelt de naam en het pad van de toepassinginitialisatie (.Ini-) bestand. Van de toepassing.INI-bestand heeft alleen effectWanneer SetDataAccessOption wordt gebruikt vóór is de data access-functionaliteitgeladen en geïnitialiseerd. Nadat u toegang tot gegevens is geïnitialiseerd, deze instellingkan niet worden gewijzigd zonder eerst de toepassing af. De waarde is eeneen tekenreeksexpressie. Voor de optie DB_OPTIONINIPATH het waardeargumentbevat een tekenreeksexpressie die het pad en de naam van uwinitialisatie van de toepassing (.Ini-) bestand. Initialisatiebestanden zijn meestalin de Windows-map van de gebruiker opgeslagen en hebben dezelfde naam als deuitvoerbaar bestand, maar met een.Extensie INI. Gebruik deze instructie alleen als uwhet initialisatiebestand van de toepassing heeft een andere naam of in een mapandere dan de Windows-map.

De instructie SetDataAccessOption is niet nodig wanneer u de VisualBasic-project in de VB.EXE-omgeving als de VB.INI-bestand (in de WindowsDirectory) bevat de volgende regels:

[Opties]
SystemDB = T:\ACCESS\SYSTEM.MDA
UtilityDB = T:\ACCESS\UTILITY.MDA

Opmerking: de werkelijke locatie van het systeem.MDA niet significant is verstrektMicrosoft Access en Visual Basic hebt u een vermelding aan te wijzen deSYSTEEM.MDA delen. De instructie SetDataAccessOption is nietvereist als de toepassing.EXE-bestand heeft een eigen.INI-bestand in de Windowsen de.EXE en.INI-bestanden hebben dezelfde naam.

--SetDefaultWorkspace syntaxis en gedrag

SetDefaultWorkspace heeft de volgende parameters:
   SetDefaultWorkspace username, password				

Als deze instructie is uitgevoerd, stuurt Visual Basic het equivalent vande volgende regel om de Microsoft Access database-engine die is opgenomenmet Visual Basic:
   SetDefaultWorkspace "Admin" , ""				

Deze instructie is een geldige SID te verkrijgen en te krijgenalle tabellen en Query objecten in de database.

Relatie tussen Visual Basic en Microsoft Access-beveiliging

Begrijpen van de relatie tussen Visual Basic en Microsoft Accessbeveiliging, moet u het beveiligingsmechanisme dat Microsoft Access kennen.Hier is een gedetailleerde uitleg aan het Visual Basicprogrammeurs die Microsoft Access niet veel gebruikt. Er is eenhiërarchie van machtigingen in Microsoft Access. Op het hoogste niveauEr zijn groepen. Deel uitmaakt van een bepaalde groep gebruikers zijn. Naarmachtigingen voor bepaalde gebruikers selectief moeten alle machtigingeneerst worden uitgeschakeld of verwijderd uit de groep gebruikers. Alleen klikt en vervolgensmachtigingen worden verleend of ingetrokken voor individuele gebruikers.

Expliciete machtigingen voor een individuele gebruiker machtigingen genoemd.Machtigingen voor de groep met de gebruikersaccount worden genoemd.Impliciete machtigingen. Impliciete machtigingen hebben voorrang op de explicietemachtigingen.

U kunt het menu Beveiliging stelt u machtigingen in Microsoft Access nadateen database is geopend en de gebruiker zich heeft aangemeld. Van de beveiligingmenu, kies machtigingen toewijzen van machtigingen voor elk object in dede database in Visual Basic alleen tabellen en Query-objecten betekent.

Als er een groep in het Microsoft Access-database met de naam bijvoorbeeldAnalisten met de gebruikers-Bob en Susan en u wilt Bob te beperkenAlleen gegevens lezen en Suzan volledige machtigingen verlenen, als volgt:
  1. Aanmelden bij Microsoft Access als een gebruiker in de groep Administrators. Bijvoorbeeld: Voer Admin of Fred.
  2. Kies in het menu Beveiliging machtigingen (ALT-S P).
  3. Table-objecten zijn standaard-type. Selecteer de naam van de tabel u machtigingen wilt instellen op. Selecteer bijvoorbeeld TestTbl.
  4. Stel de optie in het kader van de gebruiker of groep aan groepen. Klik op de keuzelijst met invoervak de lijst en klikt u op analisten om de groep te selecteren.
  5. Schakel alle selectievakjes in te trekken alle machtigingen voor de hele groep.
  6. De knop optie wijzigen in gebruikers en Bob selecteren. Schakel de Schakel de selectievakjes voor alle machtigingen van Bob.
  7. Susan selecteren in de lijst en schakel het selectievakje volledige machtigingen.
  8. Klik op de knop toewijzen om de wijzigingen in de tabel.
Stel op dit punt hebt u een Visual Basic-programma met dede volgende code in de gebeurtenis load:
Sub Form_Load ()   Dim db As database   Dim ds As dynaset   Dim scenario as integer   scenario = 'insert a value between 1 and 4 here   select case scenario      case 1:         ' Do nothing      case 2:         SetDefaultWorkspace "bob", "leftout"      case 3:         SetDataAccessOption 1, "E:\VB.INI"    ' not in \WINDOWS directory      case 4:         SetDataAccessOption 1, "E:\VB.INI"    ' not in \WINDOWS directory         SetDefaultWorkspace "bob", "leftout"   end select   Set db = OpenDatabase("E:\DATACON\BASES\ACCESS11\ASAMPLE.MDB") ' point 1   Set ds = db.CreateDynaset("TestTbl")                           ' point 2   autoredraw = True   ' to make Print  statement persist on the form   Print ds(0), ds(1)End Sub				

Hier zijn verschillende scenario's waarmee de relatie tussen VisualBasic en Microsoft Access-beveiliging:

SCENARIO 1: In dit geval is er geen verwijzing naar de locatie van deSYSTEEM.MDA-bestand. Windows-engine van Microsoft Access en worden niet vindende.INI-bestand met de sectie [Options] eerder in dit artikel worden vermeld.Daarom is het systeem.MDA genegeerd en Visual Basic wordt standaard deStandaard combinatie van gebruiker en wachtwoord ('Admin', ' '). Echter, eerderhet standaardwachtwoord voor de gebruiker Admin is veranderd in iets anders dan"". Daarnaast alle machtigingen voor de groep Administrators zijn ingetrokken en deGebruiker 'Admin' in de groep Administrators. Daarom de volgende Visual BasicFout in punt 2
Kan niet worden gelezen; geen leesrechten voor tabel of query ' f)) "

U kunt de achterdeur in Visual Basic en Visual Basic hebt geslotende toepassing probeert te omzeilen de aanmeldingen in het systeem.MDA-bestand.

SCENARIO 2: In dit geval omdat het aanroepen van de SetDefaultWorkspaceinstructie zonder dat u de aanwijzer op het systeem.MDA-bestand, de VisualBasic engine van Microsoft Access hunts voor het systeem.MDA-bestand en niethet zoeken, geeft de volgende fout op het punt 0 in de code:
Kan bestand niet vinden ' systeem.MDA'

Opmerking: De fouten die in beide scenario's 1 en 2 optreden zijn hetzelfde alszou optreden als het systeem.MDA-bestand is verplaatst, hernoemd of verwijderd.

SCENARIO 3: In dit geval u vertellen Microsoft Access Visual BasicIndien de motor het systeem.MDA-bestand zich bevindt, maar een gebruiker niet opgeeft enwachtwoord combinatie. Daarom nogmaals, levert Visual Basic de enige gebruikeren wachtwoord combinatie bekend ('Admin', ' "), die niet langer een geldigcombinatie omdat u een wachtwoord hebt toegevoegd aan de gebruikersaccount beheerder. Als eenresultaat, Visual Basic geeft op 1 punt in de code de volgende fout:
Geen geldige account of wachtwoord.

SCENARIO 4: In dit geval u beide parameters opgeven correct.Daarom omdat gaf Bob machtiging 'Gegevens lezen' en 'lezenDefinities"om de Visual Basic-Microsoft Access-engine te lezen,de Visual Basic-toepassing worden afgedrukt voor de eerste twee velden in de eersterecord van de tabel met de naam TestTbl.

Als u de vier scenario's met de gebruiker Suzan herhaald, zou zijn dehetzelfde. Echter Susan verder gaan en de tabelstructuur van de wijzigen en deook gegevens. Denk eraan dat u eerst de groep analisten geselecteerd en ingetrokkenalle machtigingen. U toegevoegd terug alle machtigingen aan Susan, maar alleen lezenGegevens en definities lezen zijn naar Bob toegevoegd.

Opmerking: De groep beheerders heeft een speciale betekenis voor de beveiliging.Dit geldt voor elke gebruiker in die groep. De groep beheerders-SID wordt opgeslagen inhet systeem.MDA wanneer een database wordt gemaakt. Als gevolg hiervan, de groep Domeinadministratorshebben altijd de machtigingen op alle objecten in te wijzigende database. Met deze machtiging kan niet worden ingetrokken door iedereen. Ditmachtiging blijft zelfs wanneer alle machtigingen zijn ingetrokken vanaf deBeheerdersgroep en wordt niet weergegeven in het dialoogvenster machtigingen. Dit iseen andere reden om een back-up houden en bijhouden welk systeem.MDA is ingebruiken wanneer de database is gemaakt.

Met OwnerAccess Option in een SQL-Query


Een laatste punt van de mogelijke verwarring draait rond het gebruik van devolgende zin in een SQL-query:
   ... With OwnerAccess Option				

Bekijk bijvoorbeeld deze code:
   Sub Form_Load ()      Dim db As Database      Dim qd As querydef      Set db = OpenDatabase("C:\ACCESS\DB1.MDB")      ' Enter the following two lines of code as one, single line:      Set qd = db.CreateQueryDef("myQD", "select * from [TableDetails]         with owneraccess option ;")      db.Close   End Sub				

Deze code resulteert in deze fout:
Ongeldige Database-ID.

Dit komt omdat OwnerAccess naar de eigenaar van de database verwijst. De eigenaaris de maker van de database. Met andere woorden verwijst OwnerAccess naareigenaar van de gebruiker en wachtwoord combinatie (unieke SID) die is opgeslagen inde database (BD1.MDB in dit geval). Echter, de code bevat detwee instructies nodig om te verwijzen naar het systeem.MDA-bestand van een beveiligdede database. Werkelijk, in dit geval alleen de instructie SetDefaultWorkspace isessentieel als het gecompileerde.EXE-bestand van.INI-bestand met een geldigeDe sectie [options], is de Windows-map.

De code gebruikt de backdoor. Deze unieke SID van niet heeft verstrekt dede eigenaar van de database engine, zodat de engine niet de standaardnaam wetencombinatie en wachtwoord (Admin, "") van de gebruiker is eigenaar van de database.Zelfs als dat blijkt de gebruiker Admin is de eigenaar van de database zonderLees het systeem.MDA-bestand de engine niet controleren of dit feit dusgeeft de fout.

Opmerkingen voor gebruikers van Microsoft Access versie 2.0

Met behulp van de onlangs uitgebrachte Microsoft Jet 2.0/Visual Basic 3.0Laag, Visual Basic toegang tot Microsoft Accessversie 2.0-databases. Hieronder worden enkele notities kunt u een beveiligde converterenversie 1.1-database in Microsoft Access versie 2.0-indeling.

Als u een database uit versie 1.x is beveiligd, blijft beveiligd of uopenen met Microsoft Access versie 1.x of 2.0. Echter, Microsoft Accessversie 2.0 kan niet worden gebruikt om machtigingen in de database toevoegen of wijzigenzelfs door de beheerder, totdat de database is geconverteerd naar versie 2.0.

Wanneer u Microsoft Access versie 2.0 installeert, wordt de eigen werkgroepbestand (SYSTEM.MDA). Als Microsoft Access versie 2.0 is geïnstalleerd dedezelfde map als het systeem van versie 1.x van versie 1.x.MDA-bestandSYSTEM1X gewijzigd.MDA.

Om wijzigingen in de beveiliging van een geconverteerde database, moet u eenversie 2.0 systeem.MDA met identieke groepen en gebruikers (en identiekePID's) als het oorspronkelijke systeem.MDA.

Opmerking: PID (persoonlijke id) in Microsoft Access versie 2.0 zijn deequivalent van de PIN (persoonlijke id-nummers) in versie 1.x

Maken van een beveiligde werkgroep:
  1. De 2.0 Werkgroepbeheer-hulpprogramma gebruiken om een nieuwe werkgroep maken. Dit is een systeem van versie 2.0.MDA-bestand.
  2. Alle gebruikers- en groepsaccounts met dezelfde naam en PID opnieuw getallen die zijn gebruikt in Microsoft Access versie 1.x.
Een beveiligde 1.x Database converteren naar 2.0:

Opmerking: In een beveiligde werkgroep, alleen gebruikers met machtigingen Ontwerp wijzigenalle objecten kunnen een versie 1.x-indeling converteren naar versie 2.0-indeling.Ook moet u de machtigingen Ontwerp wijzigen toewijzen aan de database versie 1.xin Microsoft Access versie 1.x met versie 1.x-werkgroep.
  1. Zorg ervoor dat niemand met behulp van de database versie 1.x.
  2. Aanmelden bij Microsoft Access 2.0 als lid van de groep beheerders die niet de Admin-gebruiker.
  3. Kies de opdracht Database converteren in het menu bestand.
  4. Selecteer de versie 1.x-database die u wilt converteren. U zal worden. wordt u gevraagd de naam van de versie 2.0.

    Opmerking: De opdracht Database converteren forceert u een nieuwe naam kiezen voor de database. Hiermee kunt u een reservekopie van uw versie 1.x Als nadat u een database hebt geconverteerd van versie 1.x met database versie 2.0 kunt u niet converteren het terug naar versie 1.x.
  5. De gebruikers toevoegen aan de nieuwe versie 2.0-werkgroep (SYSTEM.MDA) door Gebruik het hulpprogramma Werkgroepbeheer.

    Opmerking: U kunt dit ook bereiken door aanpassing van de MSACC20.INI-bestand in de map Windows. In de sectie [Options] van het bestand Wijs de versie 2.0-systeem de vermelding SystemDB wijzigen.MDA het bestand. De sectie [Options] van het bestand is vergelijkbaar met het voorbeeld hieronder:
          [Options]      SystemDB=<microsoft access path>\SYSTEM.MDA						

Belangrijke punten om te onthouden

  1. Alleen Microsoft Access kunt maken en wijzigen van het systeem.MDA-bestand.
  2. Het systeem.MDA-bestand bevat de unieke SID wordt gebruikt in een database met machtigingen voor het sorteren die is die voor de engine van Microsoft Access Deze machtigingen worden afgedwongen. De SID wordt verkregen door de De engine van Microsoft Access met een geldige gebruikersnaam en wachtwoord combinatie waarvan de unieke beveiligings-id die de motor in het geheugen opgeslagen ontvangt afdwingen van beveiliging op een database openen.
  3. Microsoft Access en Visual Basic moet worden verwezen naar de de locatie uit het systeem.MDA-bestand om toegang te krijgen tot databases beveiliging en machtigingen geïmplementeerd hebben.
  4. Er is een achterdeur beschikbaar voor de Visual Basic-toepassing Als het wachtwoord voor de gebruiker in de groep Domeinadministrators (benoemde Admin) niet is gewijzigd van de standaard geen ("").
  5. Als het woord 'With OwnerAccess Option' in de SQL-query van gebruikt een Methode CreateQueryDef, CreateDynaset of CreateSnapshot, een verwijzing naar het systeem.MDA-bestand moet bestaan. Ook als u de achterdeur (de standaard gebruiker en wachtwoord combinatie van Admin en "") en niet het systeem moet lijken.MDA, wanneer u 'With OwnerAccess Option' in een SQL-query de motor moet het systeem zien.MDA-bestand overeenkomt met de SID van de eigenaar (auteur) van de database gebruiker aangemeld.
  6. Geldige gebruikers- en combinaties worden opgeslagen in de SYSTEEM.MDA-bestand, maar de machtigingen zijn opgeslagen in de database (.MDB bestand) zelf. Een unieke sleutel (SID) wordt geëxtraheerd uit het systeem.MDA geleverd via een geldige gebruikersnaam en wachtwoord combinatie aan de De engine van Microsoft Access met het dialoogvenster Aanmelden in Microsoft Access of door de code in Visual Basic.

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 105990 - Laatst bijgewerkt: 07/06/2012 11:21:00 - Revisie: 4.0

Microsoft Visual Basic 3.0 Professional Edition

  • kbinfo kbmt KB105990 KbMtnl
Feedback