Käyttöoikeudet (Security)

Timo Ahjos 14.5.1999

Hallinnollisen salasanan määrittely

Järjestelmässä on yksi hallinnollinen salasana, jonka avulla pääsee käsiksi kaikkiin käyttöoikeuksien määrittelyihin. Se annetaan ikkunassa, joka tulee esille, kun ohjelman asennuksen jälkeen ensimmäisen kerran mennään päävalikon kohtaan File / Database Administration.

Hallinnollinen salasana on nykyisellään hyvin kriittinen juttu. Sitä ei voi muuttaa, koska sitä käytetään samalla taulujen ja käyttäjätunnusten salausalgoritmin avaimena. Lähetin tästä aiheesta dBASE:n tekijöille muutospyynnön. Hallinnollista salasanaa ei saa järjestelmästä mitenkään näkyviin.

Sivun alkuun

Määrittelylomakkeelle meno

Käyttäjätunnusten määrittelyyn päästään päävalikon kohdasta File / Database Administration, josta avautuu sama lomake, jota käytettiin edellä viite-eheyden (Referential Integrity) määrittelyyn:

Mikäli on tarkoitus määritellä taulukohtaisia käyttöoikeuksia, ennen tämän lomakkeen avaamista pitää käydä esim. Navigatorilla valitsemassa se tietokanta tai hakemisto, jossa käsiteltävät tietokantataulut ovat. Jos tietokannalle on annettu BDE:ssä alias-nimi, se näkyy tällä lomakkeella kohdassa "Current database", mutta muuten tietokannalla ei välttämättä ole nimeä.

Kun painetaan nappia "Security...", järjestelmä kysyy edellä määritellyn hallinnollisen salasanan. Kun se on annettu, avautuu alempana kuvattu kolmisivuinen käyttöoikeuksien määrittelylomake.

Sivun alkuun

Käyttäjätunnusten määrittely

Group: Jokainen käyttäjätunnus kuuluu johonkin käyttäjäryhmään (Group), jonka nimi on enintään 8-merkkinen. Isot ja pienet kirjaimet tulkitaan samoiksi. Silloin, kun käyttäjältä pyydetään sisäänkirjoittautumista, häneltä kysytään aina ryhmän nimi, käyttäjätunnus ja salasana. Sama käyttäjätunnus voi kuulua useampaankin eri ryhmään, kuten oheisessa esimerkissä käyttäjätunnus TIMO.

Käyttäjäryhmän käsite on dBasessa erilainen kuin joissakin muissa järjestelmissä. Käyttäjäryhmiä on tarpeellista määritellä yhtä useampia vain silloin, jos järjestelmän taulut jakautuvat sellaisiin ryhmiin, joilla on eri käyttäjät. Kukin suojattu tietokantataulu on vain yhden ryhmän käyttäjien käytettävissä. Eri henkilöiden eriasteisia käyttöoikeuksia samoihin tauluhin ei erotella dBASE:ssa käyttäjäryhmiä muodostaen, vaan käyttäjien tasoluokituksella (level 1-8), joka kuvataan jäljempänä.

Kun määrittelylomakkeen "Users"-sivulla painetaan nappia "New" tai "Modify", saadaan esille lomake, jolla käyttäjä määritellään:

Sivun alkuun

Taulukohtaiset suojaukset

Lähtökohtaisesti dBASE-taulut ovat kenen tahansa käytettävissä, joka vain pääsee niihin käsiksi. Jos taulujen käyttöoikeuksia määritellään seuraavassa kuvattavalla tavalla, taulut samalla automaattisesti salakirjoitetaan. Ennen salakirjoitusta taulusta otetaan automaattisesti varmuuskopio, joka pitää siirtää jonnekin muualle hyvään talteen. Taulujen salaus on kytköksissä em. hallinnolliseen salasanaan, joka on senkin vuoksi pidettävä ehdottomasti tallessa.

Edellä avatun lomakkeen "Tables"-sivulta valitaan ensin taulu, jonka käyttöoikeudet halutaan määritellä.

Kun sen jälkeen painetaan "Modify Table ..."-nappia, saadaan esille alla kuvattu lomake:

Kuvassa näkyvät tasovaatimukset ovat oletusarvoja eli kaikilla tiettyyn ryhmään kuuluvilla käyttäjillä on kaikki oikeudet, ellei niitä tällä lomakkeella muuteta.

Sivun alkuun

Käyttöoikeuksien tarkastus

Lopuksi määritellään aiemmin käsitellyn lomakkeen kolmannella sivulla, missä tilanteessa käyttöoikeudet tarkastetaan:

Siinä on kaksi vaihtoehtoa: Joko istunnon alussa tai silloin, kun avataan suojattu taulu.

Vaihtoehtoisia toimintatapoja:

Sovellus voidaan rakentaa myös siten, että taulukohtaisia oikeuksia ei anneta varsinaisten käyttäjien käyttäjätunnuksille, vaan "geneerisille" käyttäjille. Tällöin käyttäjätunnus ja salasana koodataan siihen lomakkeeseen, jolla suojattuja tauluja käytetään. Sillä tavalla voidaan esimerkiksi estää, ettei luvallinen käyttäjä käsittele taulua jollakin muulla ohjelmalla.

Käyttöoikeuksia voidaan hallita ohjelmallisesti sessio-objektin ominaisuutena. Siihen palataan myöhemmin sessio-objektiluokan käsittelyn yhteydessä.

Sivun alkuun


Seuraava sivu: Ohjelmointikielistä