PLAN WYKŁADU Bezpieczeństwo w języku SQL Użytkownicy Uprawnienia Role BAZY DANYCH Wykład 8 dr inż. Agnieszka Bołtuć OGRANICZENIA DOSTĘPU DO DANYCH Ograniczenie danych z tabeli dla określonego użytkownika lub ich grupy, Ograniczenia co do możliwości modyfikowania tabel, Ograniczenia dostępu do wybranych kolumn lub wierszy. PODSTAWOWE KWESTIE BEZPIECZEŃSTWA użytkownicy osoby lub programy podejmujące działania na obiektach bazy danych, posiadają uprawnienia przyznawane przez SZBD, użytkownik jest właścicielem utworzonych przez siebie obiektów, obiekty konkretne obiekty przetwarzane przez użytkowników, początkowo tabele i perspektywy, później pojedyncze kolumny, dziedziny i zbiory znaków, uprawnienia (przywileje) umożliwiają użytkownikom manipulowanie obiektami. 1
TWORZENIE KONT UŻYTKOWNIKÓW Niektóre SZBD udostępniają rozszerzenia standardu SQL pozwalające na tworzenie kont użytkowników, GRANT Autoryzuje użytkowników i role przed umożliwieniem dostępu do obiektów danych i pozwoli na ich używanie, składnia MySQL CREATE USER nazwa [IDENTIFIED BY [PASSWORD] password ] GRANT {lista_przywilejów ALL} [ON obiekt] TO {lista_użytkowników PUBLIC} [WITH GRANT OPTION]; ALTER USER nazwa ; DROP USER nazwa; GRANT - UPRAWNIENIA Uprawnienia (przywileje) które mogą być nadane użytkownikom dzielone są na: systemowe - prawo do wykonania operacji na bazie danych, np.: połączenia, manipulacji danymi czy obiektami, eksportu, etc., obiektowe - stosuje się do określonych obiektów bazodanowych. GRANT UPRAWNIENIA SYSTEMOWE GRANT CREATE TABLE TO U1; GRANT CREATE USER TO PUBLIC; GRANT DROP ANY VIEW TO U1 WITH GRANT OPTION; 2
Użytkownicy mogą otrzymać m.in. następujące uprawnienia do obiektów: SELECT, INSERT, UPDATE, DELETE, REFERENCES, REFERENCES umożliwia użycie tabel w więzach lub kluczach obcych, Jeśli chcemy nadać wszystkie przywileje charakterystyczne dla danego obiektu możemy użyć słowa ALL, Uprawnienia INSERT, UPDATE i REFERENCES mogą być nadawane dla konkretnej kolumny, jeśli brak kolumny dotyczy wszystkich, ON definiuje konkretną tabelę, bazę lub inny obiekt (np. dziedzinę), po słowie TO umieszczamy listę użytkowników, którym przyznane zostaną przywileje, ewentualnie słowo PUBLIC, jeśli przywileje mają być przyznane wszystkim użytkownikom bazy danych (nawet tym, którzy jeszcze nie zostali stworzeni), GRANT SELECT ON tabela1 TO U1; GRANT SELECT ON tabela1 TO PUBLIC; GRANT INSERT ON tabela2 TO U1 WITH GRANT OPTION; GRANT UPDATE (k1, k2) ON pracownicy TO U2; Odbiera uprawnienia do konkretnych obiektów lub poleceń systemowych nadane użytkownikom, grupom czy rolom, [GRANT OPTION FOR] {lista_uprawnień ALL} [ON obiekt] FROM {lista_użytkowników PUBLIC} {CASCADE RESTRICT}; GRANT SELECT, INSERT, UPDATE, DELETE ON tabela1 TO PUBLIC; 3
Opcja GRANT OPTION FOR cofa autoryzację do przekazywania uprawnień, Opcja RESTRICT odbiera tylko wymienione uprawnienie, Opcja CASCADE odbiera podane uprawnienia i wszystkie od nich zależne, ALTER ANY TABLE FROM U1; SELECT ON tabela1 TO U3; ALL ON tabela1 TO PUBLIC; ALL ON tabela2 TO U2 CASCADE; ROLE rozwinięcie idei użytkowników, grupy uprawnień w ramach jednego nazwanego zbioru, standard SQL nie obsługuje bezpośrednio grup użytkowników, wiele SZBD rozwiązuje ten problem rozszerzając standard SQL), Składnia PostgreSQL CREATE ROLE nazwa [ [ WITH ] option [... ] ]; ROLE CREATE ROLE abc; GRANT SELECT, UPDATE ON tab1 TO abc; GRANT abc TO U2; - przypisanie roli użytkownikowi U2 CREATE ROLE mmm WITH LOGIN PASSWORD 'jw8s0f4' VALID UNTIL '2010-01-01'; DROP ROLE abc; 4
PERSPEKTYWY Perspektywy uznawane są za jeden z mechanizmów zapewniania bezpieczeństwa i sposobów kontroli dostępu, Ograniczają bowiem dostęp do istotnych danych dla nieuprawnionych użytkowników poprzez ich ukrywanie, Utworzone perspektywy są następnie poddawane procesowi autoryzacji za pomocą instrukcji GRANT. WYKŁAD PRZYGOTOWANO NA PODSTAWIE K. Kline, D. Kline, SQL. Almanach. Opis poleceń języka, Helion, 2004, P. Wilton, J. Colby, SQL od podstaw, Helion, 2006, http://wazniak.mimuw.edu.pl/index.php?title=bazy_ danych. 5