Użytkownicy, przywileje, role, audyt Zarządzanie użytkownikami

advertisement
Zarz dzanie
u ytkownikami
U ytkownicy, przywileje, role,
audyt
• Mechanizmy uwierzytelniania
o baza danych, system operacyjny, serwer
autoryzacji
• Przywileje
o systemowe, obiektowe
• Role - zbiory przywilejów
• Limity na zajmowan przestrze dyskow
• Limity na wykorzystanie zasobów
o CPU, I/O, czas bezczynno ci, liczba sesji
• Zarz dzanie kontem
o stopie zło ono ci hasła,
o czas ycia hasła i konta,
o blokowanie konta
• Obserwacja działa
Schematy i u ytkownicy
• ka da baza danych Oracle zawiera SCHEMATY
• schemat jest zbiorem obiektów, takich jak:
relacje, perspektywy, procedury PL/SQL, pakiety
• ka da baza danych Oracle zawiera U YTKOWNIKÓW
• w celu przył czenia si do bazy danych,
u ytkownik musi dostarczy systemowi Oracle
swoj nazw i hasło dost pu
• schematy tworzone s automatycznie dla ka dego
z tworzonych u ytkowników
• hasło dost pu mo e by zmieniane przez
u ytkownika
• podczas instalacji bazy danych tworzonych jest
dwóch wyró nionych u ytkowników: SYS i SYSTEM
u ytkowników
Tworzenie nowych
u ytkowników
CREATE USER <nazwa u ytkownika>
IDENTIFIED BY <hasło dost pu>
[DEFAULT TABLESPACE <przestrze
tabel>]
[TEMPORARY TABLESPACE <przestrze
tabel>]
[PROFILE <nazwa profilu>]
[QUOTA <rozmiar> | UNLIMITED ON <przestrze
[PASSWORD EXPIRE]
[ACCOUNT <LOCK | UNLOCK>]
tabel>]
CREATE USER scott
IDENTIFIED BY tiger
DEFAULT TABLESPACE data
TEMPORARY TABLESPACE temp
QUOTA 1M ON data
QUOTA 100K ON system
PROFILE default;
Modyfikacja i usuwanie
u ytkownika
ALTER USER <nazwa u ytkownika>
ALL_USERS
[IDENTIFIED BY <hasło dost pu>]
[DEFAULT TABLESPACE <przestrze
tabel>]
[TEMPORARY TABLESPACE <przestrze
tabel>]
[PROFILE <nazwa profilu>]
[QUOTA <rozmiar> ON <przestrze
Informacje o
u ytkownikach
tabel>]
USER_USERS
DBA_USERS
DBA_TS_QUOTAS
USER_TS_QUOTAS
DROP USER <nazwa u ytkownika>
[CASCADE]
ALTER USER scott
IDENTIFIED BY lion;
SELECT * FROM all_users;
DROP USER scott CASCADE;
SELECT * FROM user_ts_quotas;
Rozł czanie sesji
u ytkownika
SVRMGR> SELECT sid, serial#, username
FROM v$session;
SID
SERIAL#
USERNAME
---------- -------------- --------------1
1
7
8
2126 SCOTT
786 SYSTEM
SQL> ALTER SYSTEM KILL SESSION '7, 2126';
Uwierzytelnianie
u ytkowników
• uwierzytelnienie przez baz danych
Oracle - w celu przył czenia si do
bazy danych wymagane jest wprowadzenie
nazwy i hasła u ytkownika Oracle
• uwierzytelnienie przez system
operacyjny - u ytkownicy przył czaj
si do bazy danych bez wprowadzania
swoich nazw i haseł,
• uwierzytelnienie przez serwer
autoryzacji - scentralizowane
zarz dzanie u ytkownikami w rodowisku
rozproszonym
Autoryzacja przez
system operacyjny
Utworzenie u ytkownika
autoryzowanego przez OS
SQL> show parameter prefix
CREATE USER <nazwa u ytkownika>
NAME
IDENTIFIED EXTERNALLY
------------------------------------ ----------- ------
[DEFAULT TABLESPACE <przestrze
tabel>]
[TEMPORARY TABLESPACE <przestrze
tabel>]
[PROFILE <nazwa profilu>]
[QUOTA <rozmiar> ON <przestrze
tabel>]
os_authent_prefix
TYPE
string
VALUE
ops$
w initSID.ora: os_authent_prefix = abc$
SQL> create user abc$adm1 identified externally;
SQL> grant connect to abc$adm1;
adm1@miner:~/admin > sqlplus /
Uprawnienia
u ytkowników i role
Uprawnienia systemowe
- przykłady
• uprawnienia SYSTEMOWE zezwalaj
u ytkownikowi na wykonywanie w bazie
danych operacji okre lonego typu
• CREATE TABLE - zezwala u ytkownikowi na
tworzenie relacji w jego własnym
schemacie
• uprawnienia OBIEKTOWE zezwalaj
u ytkownikowi na wykonanie okre lonych
operacji na konkretnym obiekcie bazy
danych
• DROP ANY VIEW - zezwala u ytkownikowi
na usuwanie dowolnych perspektyw
• uprawnienia mog by kontrolowane przy
pomocy RÓL, które stanowi nazwane
zbiory uprawnie
• EXECUTE ANY PROCEDURE - zezwala
u ytkownikowi na wykonywanie dowolnych
procedur PL/SQL
• ALTER SYSTEM - zezwala u ytkownikowi na
wydawanie polece ALTER SYSTEM
Informacje o
aktualnych
uprawnieniach
Nadawanie uprawnie
systemowych
GRANT <uprawnienie|rola> [,
<uprawnienie|rola>...]
TO <nazwa u ytkownika|rola|PUBLIC>
[WITH ADMIN OPTION]
SVRMGR> SELECT * FROM dba_sys_privs
GRANTEE
PRIVILEGE
ADM
------
--------------------
----
SYS
DELETE ANY TABLE
NO
SYS
INSERT ANY TABLE
NO
SYS
SELECT ANY TABLE
YES
GRANT connect, resource TO jan
SYS
UNLIMITED TABLESPACE
YES
WITH ADMIN OPTION;
SYS
UPDATE ANY TABLE
NO
SYSTEM
UNLIMITED TABLESPACE
YES
Odbieranie uprawnie
systemowych
REVOKE <uprawnienie|rola> [,
<uprawnienie|rola>...]
FROM <nazwa u ytkownika|rola|
PUBLIC>
REVOKE connect FROM jan;
Typy uprawnie
obiektowych
SELECT - wydawanie polece SELECT FROM dla obiektu (relacja,
perspektywa, migawka)
UPDATE - wydawanie polece UPDATE dla obiektu (relacja,
perspektywa)
INSERT - wydawanie polece INSERT dla obiektu (relacja,
perspektywa)
ALTER - wydawanie polece ALTER dla obiektu (relacja,
perspektywa) i
CREATE TRIGGER ON dla obiektu (relacja)
DELETE - wydawanie polece DELETE FROM dla obiektu (relacja,
perspektywa) lub TRUNCATE (relacja)
EXECUTE - wydawanie polece EXECUTE dla obiektu (procedura,
funkcja)
INDEX - wydawanie polece CREATE INDEX ON dla obiektu
(relacja)
REFERENCES - wydawanie polece CREATE i ALTER TABLE
definiuj cych
klucz obcy dla obiektu (relacje)
Informacje o
aktualnych
uprawnieniach
Nadawanie uprawnie
obiektowych
GRANT <uprawnienie|ALL> [(<atrybut>
[,<atrybut>])]
[, <uprawnienie|ALL> [(<atrybut>
[,<atrybut>])]...]
ON <obiekt>
TO <nazwa u ytkownika|rola|PUBLIC>
[WITH ADMIN OPTION]
GRANT SELECT ON pracownicy
TO jan, scott;
GRANT SELECT, INSERT, UPDATE (PLACA_POD)
ON pracownicy TO PUBLIC;
Odbieranie uprawnie
obiektowych
REVOKE <uprawnienie|ALL> [(<atrybut>
[,<atrybut>])]
[, <uprawnienie|ALL> [(<atrybut>
[,<atrybut>])]...]
ON <obiekt>
FROM <nazwa u ytkownika|rola|PUBLIC>
[CASCADE CONSTRAINTS]
REVOKE SELECT ON pracownicy
FROM scott;
REVOKE ALL ON pracownicy
FROM PUBLIC;
•
•
•
•
•
•
•
DBA_TAB_PRIVS
DBA_COL_PRIVS
USER_TAB_PRIVS
USER_TAB_PRIVS_MADE
USER_TAB_PRIVS_RECD
USER_COL_PRIVS_MADE
USER_COL_PRIVS_RECD
SELECT * FROM
user_tab_privs;
Role
• rola jest nazwanym zbiorem uprawnie zarówno
systemowych, jak i obiektowych
• role upraszczaj zarz dzanie uprawnieniami dla
du ych zbiorów u ytkowników o podobnej
charakterystyce (np. pracownicy działu kadr,
zarz d)
• zmieniaj c uprawnienia nale ce do roli,
zmienia si uprawnienia wszystkich u ytkowników
do niej przypisanych
• w bazie danych zdefiniowane s zawsze role
standardowe: CONNECT, RESOURCE, DBA,
EXP_FULL_DATABASE, IMP_FULL_DATABASE
• praktycznie, ka demu tworzonemu u ytkownikowi
przydziela si role CONNECT i RESOURCE
Informacje o rolach
Tworzenie nowych ról
• ROLE_SYS_PRIVS
CREATE ROLE <nazwa roli>
• ROLE_TAB_PRIVS
[NOT IDENTIFIED | IDENTIFIED BY
<hasło>]
• ROLE_ROLE_PRIVS
• SESSION_ROLES
• USER_ROLE_PRIVS
• DBA_SYS_PRIVS
• DBA_ROLES
SELECT * FROM dba_roles;
Modyfikowanie ról
ALTER ROLE <nazwa roli>
[NOT IDENTIFIED | IDENTIFIED BY
<hasło>]
ALTER ROLE <nazwa roli>
[NOT IDENTIFIED | IDENTIFIED
EXTERNALLY]
ALTER ROLE kadry
IDENTIFIED BY stycze ;
CREATE ROLE <nazwa roli>
[NOT IDENTIFIED | IDENTIFIED
EXTERNALLY]
CREATE ROLE kadry
NOT IDENTIFIED;
Wł czanie i wył czanie
ról
SET ROLE <nazwa roli> [IDENTIFIED BY <hasło>]
[, <nazwa roli> [IDENTIFIED BY <hasło>]...]
SET ROLE ALL [EXCEPT <nazwa roli> [, <nazwa
roli>...]
SET ROLE NONE
SET ROLE kadry
IDENTIFIED BY styczen;
SET ROLE NONE;
Ustawianie ról domy lnych
dla u ytkownika
ALTER USER <nazwa u ytkownika> DEFAULT
ROLE <nazwa roli> [, <nazwa roli>...]
ALTER USER <nazwa u ytkownika> DEFAULT
ROLE ALL [EXCEPT<nazwa roli>[,<nazwa
roli>...]]
ALTER USER <nazwa u ytkownika> DEFAULT
ROLE NONE
ALTER USER scott
DEFAULT ROLE kadry;
Zadanie (2)
• Lolek usuwa dane z tabeli Bolka.
• Bolek nadaje Lolkowi wszystkie prawa do tabeli pracownicy.
• Lolek odbiera Bolkowi prawa do tabeli pracownicy b d cej
własno ci Bolka.
• Bolek odbiera Lolkowi wszystkie prawa do tabeli pracownicy.
• Bolek tworzy rol zabezpieczon hasłem i przekazuje tej roli
prawa do tabeli pracownicy, nast pnie nadaje rol Lolkowi. Lolek
próbuje wykorzysta t rol .
• Lolek wł cza rol przyznan mu przez Bolka i korzysta z niej.
• Bolek i Lolek przegl daj słownik bazy danych i ogl daj
informacje o przywilejach i rolach.
• Administrator zdejmuje rol przyznan Lolkowi przez Bolka z
listy jego ról domy lnych.
Zadanie (1)
•
•
•
•
•
•
Utwórz u ytkowników Bolek i Lolek.
Poł cz si jako Bolek.
Nadaj Bolkowi przywilej potrzebny do zalogowania si .
Jako Bolek utwórz jak tabel .
Nadaj Bolkowi przywilej potrzebny do tworzenia obiektów.
Utwórz przykładowe tabele (skrypt /oracle/demobld.sql) w
schemacie Bolka i Lolka.
• Bolek nadaje Lolkowi prawo czytania swojej tabeli pracownicy,
Lolek czyta tabele Bolka, obaj u ytkownicy ogl daj słownik bazy
danych (informacje o udzielonych i otrzymanych przywilejach).
• Bolek nadaje Lolkowi prawo modyfikowania płac pracowników,
Lolek sprawdza działanie przywileju.
Profile
• PROFILE s wykorzystywane do kontroli u ytkowania
zasobów systemowych
• Zasobami systemowymi s : czas procesora, operacje
I/O, czas bezczynno ci, czas trwania sesji,
równoczesne sesje
• Kiedy przekroczony zostanie limit zasobów
okre lony przez profil, wtedy: aktualne polecenie
jest wycofywane, dozwolone jest COMMIT i ROLLBACK,
praca w sesji musi zosta zako czona weryfikacja
limitów systemowych wł czana jest parametrem
inicjalizacyjnym RESOURCE_LIMIT=TRUE lub
poleceniem ALTER SYSTEM SET RESOURCE_LIMIT=TRUE
Tworzenie nowego profilu
CREATE PROFILE <nazwa profilu> LIMIT
Tworzenie nowego
profilu
[SESSIONS_PER_USER <limit|UNLIMITED|DEFAULT>]
CREATE PROFILE <nazwa profilu> LIMIT
[CPU_PER_SESSION <limit|UNLIMITED|DEFAULT>]
[FAILED_LOGIN_ATTEMPTS warto
]
[CPU_PER_CALL <limit|UNLIMITED|DEFAULT>]
[PASSWORD_LIFE_TIME warto
[CONNECT_TIME <limit|UNLIMITED|DEFAULT>]
[IDLE_TIME <limit|UNLIMITED|DEFAULT>]
[{PASSWORD_REUSE_TIME|PASSWORD_REUSE_MAX}
warto ]
[LOGICAL_READ_PER_SESSION <limit|UNLIMITED|DEFAULT>]
[PASSWORD_LOCK_TIME warto
[LOGICAL_READ_PER_CALL <limit|UNLIMITED|DEFAULT>]
[PASSWORD_GRACE_TIME warto
[COMPSITE_LIMIT <limit|UNLIMITED|DEFAULT>]
[PASSWORD_VERIFY_FUNCTION {nazwa f. | NULL|
DEFAULT}]
CREATE PROFILE hasła LIMIT
PASSWORD_LIFE_TIME 50
PASSWORD_GRACE_TIME 3;
[PRIVATE_SGA <limit K | limit M | UNLIMITED |
DEFAULT>]
CREATE PROFILE student
LIMIT SESSIONS_PER_USER 2;
Blokowanie i
odblokowanie konta
ALTER USER <nazwa u ytkownika>
[ACCOUNT LOCK]
[ACCOUNT UNLOCK]
[PASSWORD EXPIRE]
ALTER USER scott ACCOUNT LOCK;
ALTER USER scott ACCOUNT UNLOCK;
ALTER USER jones PASSWORD EXPIRE;
]
]
]
Zadanie (1)
• Sprawd czy zostało uaktywniona weryfikacja profili (je li nie to
wł cz t opcj ).
• Utwórz profil zawieraj cy ograniczenie liczby równoczesnych
sesji do 1 i czas bezczynno ci do 3 minut. Obejrzyj słownik i
sprawd informacje o profilach.
• Nadaj utworzony przez siebie profil Bolkowi.
• Zweryfikuj działanie profilu.
• Zmie profil tak, aby ograniczał liczb nieudanych prób
zalogowania do 1, liczb powtórze hasła do 1 i czas na zmian
hasła do 0 dni.
• Zweryfikuj działanie profilu.
• Zmie profil tak, aby ograniczał mo liwe zu ycie procesora do
0,001 sekundy i zweryfikuj działanie profilu
Obserwacja bazy danych
(auditing)
• wykrywanie podejrzanych operacji,
np.: prób włamania si do
systemu;
• monitorowanie i zbieranie
informacji o aktywno ci systemu;
• obserwacja:
– polece
• do pliku parametrów nale y doda
AUDIT_TRAIL = xx
• nale y zrestartowa
baz
danych
• AUDIT_TRAIL okre la miejsce, gdzie b d
zapisywane wyniki monitorowania:
– warto
ustawiona na DB lub TRUE - obserwacje b d
zapisywane do relacji systemowej SYS.AUD$, relacja
SYS.AUD$ i perspektywy u ywane do obserwacji
instalowane s przez skrypt cataudit.sql
– warto
ustawiona na OS – wyniki obserwacji b d
zapisywane w dzienniku systemu operacyjnego (o ile
system posiada taki dziennik)
(DDL lub DML)
– obiektów
• wył czanie obserwacji: AUDIT_TRAIL = NONE
– uprawnie
Obserwacja polece
uprawnie
Wł czanie obserwacji
i
AUDIT <polecenie|uprawnienie> [, <polecenie|
uprawnienie>...]
[BY <nazwa u ytkownika> [, <nazwa u ytkownika>...]]
[BY SESSION | BY ACCESS]
[WHENEVER [NOT] SUCCESSFULL]
AUDIT SELECT, INSERT BY scott
WHENEVER NOT SUCCESSFULL;
NOAUDIT <polecenie|uprawnienie>
[, <polecenie|uprawnienie>...]
[BY <nazwa u ytkownika> [, <nazwa u ytkownika>...]]
[WHENEVER [NOT] SUCCESSFULL]
Obserwacja obiektów
AUDIT <operacja> [, <operacja>...]
ON <nazwa obiektu|DEFAULT>
[BY SESSION | BY ACCESS]
[WHENEVER [NOT] SUCCESSFULL]
AUDIT EXECUTE
ON usun_pracownika BY SESSION;
NOAUDIT <operacja> [, <operacja>...]
ON <nazwa obiektu>
[WHENEVER [NOT] SUCCESSFULL]
Opcje obserwacji
obiektów - operacje
•
•
•
•
•
•
•
•
ALTER, AUDIT
SELECT
INSERT, UPDATE, DELETE
EXECUTE
GRANT
INDEX
LOCK
RENAME, COMMENT
Dziennik obserwacji
• dziennikiem obserwacji jest relacja systemowa
SYS.AUD$
• ka da krotka dziennika zawiera informacje o:
u ytkowniku, kodzie polecenia i przywileju, obiekcie,
czasie
• w celu usuni cia z dziennika wszystkich krotek nale y
wyda polecenie: TRUNCATE TABLE sys.aud$
• dla wy wietlenia wyników obserwacji obiektów wygodnie
jest korzysta z perspektywy systemowej
DBA_AUDIT_OBJECT:
select username, obj_name,
action_name, ses_actions
from sys.dba_audit_object;
Informacje o
obserwacji
• perspektywa systemowa DBA_STMT_AUDIT_OPTS zawiera
charakterystyk obserwacji polece
• perspektywa systemowa DBA_PRIV_AUDIT_OPTS zawiera
charakterystyk obserwacji uprawnie
• perspektywa systemowa DBA_OBJ_AUDIT_OPTS zawiera
charakterystyk obserwacji obiektów
• pozostałe perspektywy systemowe:
STMT_AUDIT_OPTION_MAP, AUDIT_ACTIONS,
ALL_DEF_AUDIT_OPTS, USER_OBJ_AUDIT_OPTS,
DBA_AUDIT_TRAIL, USER_AUDIT_TRAIL, DBA_AUDIT_SESSION,
USER_AUDIT_SESSION, DBA_AUDIT_STATEMENT,
USER_AUDIT_STATEMENT, DBA_AUDIT_OBJECT,
USER_AUDIT_OBJECT, DBA_AUDIT_EXISTS
Zadania
• Sprawd , czy zostało uaktywnione zbieranie informacji o obserwowanych
operacjach u ytkowników (wykorzystaj perspektyw v$parameter)
• Wł cz obserwacj polece DDL operuj cych na tabelach przez u ytkownika
Bolek. Sprawd , czy w słowniku zapisało si polecenie obserwacji
(dba_stmt_audit_opts)
• Jako Bolek utwórz, zmie i usu jak tabel . Sprawd dziennik obserwacji
(dba_audit_statement). Pami taj, e obserwacja jest realizowana dopiero w
nowej sesji u ytkownika.
• Wł cz obserwacj nieudanych prób wykorzystania przywileju CREATE
SESSION przez Bolka. Sprawd , czy w słowniku zapisało si polecenie
obserwacji (dba_priv_audit_opts).
• Jako Bolek kilka razy poł cz si z bł dem. Sprawd dziennik obserwacji
(dba_audit_trail, dba_audit_session)
• Wł cz obserwacj tabeli pracownicy u ytkownika Bolek. Sprawd , czy w
słowniku zapisało si polecenie obserwacji (dba_obj_audit_opts)
• Po kilku zapytaniach do tabeli pracownicy (przez Bolka i Lolka) sprawd
dziennik obserwacji (dba_audit_object).
Wyzwalacze
• Uruchamiane przez zdarzenia:
– DML: INSERT, UPDATE, DELETE
– DDL - ALTER, AUDIT, CREATE, DROP, GRANT,
NOAUDIT, RENAME, REVOKE
– systemowe - LOGON, LOGOFF, STARTUP,
SHUTDOWN, SERVERERROR
Mog dotyczy :
– TABLE/VIEW
– DATABASE
– SCHEMA
Zadanie
• Napisz wyzwalacz, który zabroni u ytkownikom logowania si do bazy
danych je eli czas logowania zawiera parzyste minuty.
• Napisz wyzwalacz, który do tabeli historia(uzytkownik,tabela,czas) wpisze
informacje o ka dym utworzeniu tabeli w bazie danych. Uwaga: najpierw
utwórz tabel historia.
• W schemacie u ytkownika Bolek stwórz tabel pracownicy_historia.
Napisz wyzwalacz, który b dzie przechowywał histori zmian z tabeli
pracownicy w tabeli pracownicy_historia. Oprócz informacji dotycz cych
tego co zmodyfikowano, powinna si w niej znale informacja kto i kiedy
dokonywał danej modyfikacji.
• Napisz wyzwalacz, który b dzie sprawdzał, czy modyfikacji w tabeli
zespoly dokonuje u ytkownik Bolek. Je eli dane próbuje zmodyfikowa
inny u ytkownik, to odrzu takie modyfikacje. Nadaj uprawnienia do
tabeli zespoly u ytkownikowi Lolek i przetestuj działanie swojego
wyzwalacza.
Przykład
CREATE OR REPLACE TRIGGER drop_trigger
BEFORE DROP ON scott.SCHEMA
BEGIN
RAISE_APPLICATION_ERROR (
num => -20000,
msg => 'Nie mozna usunac tabeli');
END;
/
CREATE OR REPLACE TRIGGER logoff_trigger
BEFORE LOGOFF ON DATABASE
BEGIN
DBMS_OUTPUT.PUT_LINE( 'Do widzenia' );
END;
/
Download