Tilgangskontroll og administasjon
Generelt
For å drive et databasesystem, trenger man en databaseadministrator(DBA).
Oppgaven til DBA er å administrere brukere og databaser, og å konfigurere
databaseserveren.
En viktig del av konfigurasjonen av serveren er tilgangskontroll,
det vil si at man setter opp regler for hvem som skal få koble seg til serveren
og de ulike databasene,
og hva forskjellige brukere skal få lov til å gjøre på systemet.
Mye av funksjonaliteten i forhold til hvordan man oppretter databaser og brukere,
antall og kompleksitet på konfigurasjonsfiler osv er forskjellig fra
system til system.
grant/revoke
Syntax
GRANT {<rettighetsliste | ALL PRIVILEGES>}
ON <objekt>
TO {<brukerliste | PUBLIC>}
[WITH GRANT OPTION]
REVOKE [GRANT OPTION FOR] {<rettighetsliste | ALL PRIVILEGES>}
ON <objekt>
FROM {<brukerliste | PUBLIC>} [RESTRICT | CASCADE]
der <rettighetsliste> kan være en eller flere av disse:
- SELECT
- DELETE
- INSERT
- UPDATE
- REFERENCES
- USAGE
WITH GRANT OPTION betyr at brukerne i <brukerliste> kan gi videre
(med GRANT) til andre brukere de rettighetene de har fått
GRANT OPTION FOR betyr at brukerne i <brukerliste> blir fratatt
muligheten til å gi andre rettigheter(med GRANT) som de har fått
RESTRICT og CASCADE brukes i forbindelse med pekere
RESTRICT betyr at man får feil ved kjøring av REVOKE dersom tabellen
man forsøker å hindre tilgangen til er referert til av et annet objekt(f.eks et view)
CASCADE sørger for at alle objekter som det blir referert fra rekursivt slettes.
Eksempler
I)
Bruker per gir med følgende kommando brukerne paal og espen rettigheter til SELECT på tabellen prinsesse:
GRANT SELECT
ON prinsesse
TO paal, espen;
II)
Brukeren jens fratar med følgende kommando brukerne karius og baktus rettighetene til DELETE på tabellen tann:
REVOKE DELETE
ON tann
FROM karius, baktus;
Med Microsoft SQL Server
Programmet som brukes for å opprette brukere og databaser heter SQL Server
Enterprice Manager.
Programmet for å sette opp tilgangsprotokoller for klienter og servere heter
SQL Server Client Network Utility og SQL Server Network Utility.
Program for å starte og stoppe databasetjenester på serveren heter
SQL Server Service Manager.
opprette databaser, grafisk brukergrensesnitt
Prosedyre for å få opprettet dataser:
- Åpne programmet SQL Server Enterprice Manager
-
Velg Action - New - Database eller Trykk på knappen for New Database

-
Skriv inn navnet på databasen du ønsker å opprette

-
Under Data Files og Transaction Log, endres opplysninger automatisk, men dataene kan endres og man kan
sette opp hvordan man vil at disse filene skal øke i størrelse(automatisk, i MB, i prosent, ubegrenset str eller
fast str)
Hvis du titter, ser du at datafiler lagres under: C:\Program Files\Microsoft SQL Server\MSSQL\data\student_Data.MDF,
og at transaksjonslogg lagres under: C:\Program Files\Microsoft SQL Server\MSSQL\data\student_Log.LDF
opprette og endre opplysninger om brukere, grafisk brukergrensesnitt
Prosedyre for å få opprettet brukere:
- Åpne programmet SQL Server Enterprice Manager
-
Trykk på knappen for New Login

-
Skriv inn brukernavn(her: elinkaan). Hvis du vil bruke domenebruker(autentisering gjennom konto
brukeren har fra før på windows), skriver du inn domenenavn(her: ia-stud).
Skriv inn navn på database som brukeren skal knytte seg til(her: student)

-
Server Roles: Her kan du gi brukeren spesielle roller. Tilgjengelige roller er:
System Amdinistrators, Security Amdinistrators, Server Amdinistrators, Setup Amdinistrators,
Process Amdinistrators, Disk Amdinistrators, Database Creators, Bulk Insert Amdinistrators
-
Database Access: Her kan du velge brukers aksessrettigheter/databaseroller til ulike databaser.
Her har brukeren fått rettighetene public og db_owner til databasen student

-
Litt om de forskjellige databaserollene:
-
public: Dette er en dafault minimumsrettighet som alle får, og som
de ikke kan fratas
-
db_owner: Har alle rettigheter på databasen, men er ikke det samme som dbo
(administrator)
-
db_accessadmins: Kan gi brukere tilgangsrettigheter til databasen, men
ikke håndtere sikkerhet på databasenivå
-
db_backupoperator: Kan kjøre backup, checkpoints og dbcc kommandoer, men
ikke restore
-
db_datareaders: Kan lese alle data i databasen
-
db_datareaders: Kan skrive til alle data i databasen
-
db_ddladmins: Kan kjøre DDL kommandoer(create, alter, drop)
-
db_denydatareaders: Kan ikke lese data i databasen
-
db_denydatareaders: Kan ikke endre data i databasen
-
db_securityadmins: Kan håndtere sikkerhet på databasenivå, roller og rettigheter
Endre tilgangsrettigheter for brukere:
- Åpne programmet SQL Server Enterprice Manager
-
Under Microsoft SQL Servers-SQL Server Group-(local)(Windows NT)-Security-Logins,
merk brukeren tilgangsrettigheter skal endres for. Trykk Properties
.
Under General kan man åpne eller stenge tilgang
gjennom Windows Authentication, endre passord for SQL Server Authentication,
og endre default database og språk

-
Under Server Roles kan man endre brukerens roller.
Når man merker en rolle, får man opp kort informasjon om rollen.
Ved å trykke Properties, får man opp en liste med alle rettigheter
rollen innebærer:

-
Litt om de ulike forskjellige rollene:
-
System Administrators(sysadmin): Har alle rettigheter til all aktivitet
-
Security Administrators(securityadmin): Kan håndtere brukere på systemet
-
Server Administrators(serveradmin): Kan konfigurere serveren inkludert å sette opp fulltext-søk
og stoppe serveren
-
Setup Administrators(setupadmin): Kan konfigurere sammenkobling av servere, bruke lagrede prosedyrer
for eksterne programmer og bruke lagrede prosedyrer for oppstart av serveren
-
Process Administrators(processadmin): Kan administrere prosesser i SQL Server,
blant annet drepe prosesser som kjører
-
Disk Administrators(diskadmin): Kan håndtere filer på disk
-
Database Creators(dbcreator): Kan opprette og endre databaser
-
Bulk Insert Administrators(bulkadmin): Kan gjøre bulk-insert operasjoner, dvs.
legge inn lister med data fra fil i en tabell.
Separator som blir brukt spesifiseres
i kallet til bulk-insert(eks: BULK INSERT tmpListe FROM 'c:\Temp\personFil.txt' WITH (FIELDTERMINATOR = ';'))
-
Under Database Access kan man endre brukerens aksessrettigheter/databaseroller til hver database

-
Man kan også endre rettigheter på databasenivå.
Under Microsoft SQL Servers-SQL Server Group-(local)(Windows NT)-Databases-databasenavn,
trykk høyre mustast og velg Properties.
Velg Permissions, og sett de rettigheter du skal på hver bruker:

-
Litt TSQL for administrasjon
Opprette databaser - For å få lov til dette må man ha Permission CREATE DB på databasen master
Eks: Opprett databasen student med startstørrelse 1MB, 10% filvekst og ubegrenset størrelse,
den skal ha en logg-fil med samme egenskaper
USE master
CREATE DATABASE student
ON PRIMARY (
NAME=student_Data,
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\data\student_Data.MDF',
SIZE=1MB,
FILEGROWTH=10%,
MAXSIZE=UNLIMITED
)
LOG ON (
NAME=student_Log,
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\data\student_Log.LDF',
SIZE=1MB,
FILEGROWTH=10%,
MAXSIZE=UNLIMITED
)
GO
Opprette brukere - For å få lov til dette må man være tildelt rollen Security Administrators
Syntax for opprettelse av brukere:
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] 'encryption_option' ]
der defdb er default db, deflanguage er default språk, sid er brukerid og encryptopt
spesifiserer om passord skal være kryptert eller ikke.
Defaultverdier: defdb=master, deflanguage=NULL(settes til samme som systemspråk),
sid=NULL(genereres automatisk av systemet), encryptopt=NULL(dvs kryptert)
Eks: Opprett brukeren testGjest med passord borI97Gvr og default database student
USE master
EXEC sp_addlogin 'testGjest' , 'borI97Gvr' , 'student'
GO
Sette brukerrettigheter - For å få lov til dette må man være tildelt rollen Security Administrators
-
Gi domenebrukeren elinkaan aksess til og databaserollen db_owner på databasen student
USE student
EXEC sp_grantdbaccess 'ia-stud\elinkaan'
EXEC sp_addrolemember 'db_owner', 'ia-stud\elinkaan'
GO
-
Frata domenebrukeren elinkaan aksess til og databaserollen db_owner på databasen student
USE student
EXEC sp_revokedbaccess 'ia-stud\elinkaan'
EXEC sp_droprolemember 'db_owner', 'ia-stud\elinkaan'
GO
Noen fakta
24. januar 2003 slo en dataorm kalt SQL slammer worm til.
Dataormen formerte seg svært raskt; med en fordobling av
angrepne maskiner hvert 8.5 sekund var 90 prosent av alle
sårbare maskiner infisert i løpet av 10 minutter.
Ormen fungerte på den måten at den sendte ut et enkelt lite
program på kun 376 bytes til UDP port 1434. Koden førte til
at maskinen som ble angrepet gikk i en evig løkke hvor den
sendte ormen videre til andre maskiner.
Ormen gjorde ellers ikke noen skade, ved å restarte maskinen
og installere en sikkerhetsoppgradering var maskinen helt frisk igjen.
Noen viktige punkter til slutt
Ved installasjon av Microsoft SQL Server, opprettes det automatisk en bruker
BUILTIN\Administrators som har sysadmin rettigheter.
Denne brukeren bør man slette, frata rettigheter eller endre passord for da den er en sikkerhetsrisiko.
Vær forsiktige med å gi rettigheter til brukeren guest. Dette er også en bruker som er
opprettet automatisk, og som default har tilgang til alle databaser som ligger i systemet ved
installasjon.
Man kan legge inn guest i databaser som opprettes senere også, for det skjer ikke
automatisk.
guest er default tildelt rettigheten public, som kun gir mulighet til innlogging
og lesing av tabeller.
Forsøk å bruke Windows Authentication for å autentisere brukere, da dette regnes som mest sikkert
og er enklest for brukerne(trenger ikke kunne flere passord).
|