Hjem > Databaser2003 > Forelesninger

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:

  1. Åpne programmet SQL Server Enterprice Manager
  2. Velg Action - New - Database eller Trykk på knappen for New Database

    Opprett database

  3. Skriv inn navnet på databasen du ønsker å opprette

    Velg databasenavn

  4. 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:

  1. Åpne programmet SQL Server Enterprice Manager
  2. Trykk på knappen for New Login

    Opprett bruker

  3. 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)

    Velg brukerdata

  4. 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
  5. 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

    Sett aksessrettigheter

  6. 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:

  1. Åpne programmet SQL Server Enterprice Manager
  2. 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

    login security

  3. 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:

    server roles

  4. 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 = ';'))
  5. Under Database Access kan man endre brukerens aksessrettigheter/databaseroller til hver database

    database access

  6. 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:

    database permissions

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

  1. 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
          
  2. 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).

Hjem > Databaser2003 > Forelesninger