1. Vad har man privilegier till?
För att en användare ska kunna göra något i systemet måste hon ha något privilegie knutet till sig. Systemet med privilegier gör det möjligt att tilldela rättigheter till den enskilde användaren på en mycket detaljerad nivå. Det finns olika typer av privilegier i Oracle:
- Systemprivilegier är en typ av privilegier som ger rättigheter i det egna schemat.
- Globala Systemprivilegier är en typ av privilegier som ger generella rättigheter i alla scheman i databasen.
- Objektprivilegier är en typ av privilegier som ger specifika rättigheter påenskilda objekt i andra användares scheman.
2. Systemprivilegier
Nedan beskrivs de systemprivilegier som vanligtvis tilldelas en vanlig användare. Vi börjar med de privilegier som sköter inloggning:
Systemprivilegier | | Beskrivning |
create session | | Rätt att logga in på databasen. |
alter session | | Rätt att ändra t.ex. språk för uppkopplingen. |
restricted session | | Rätt att logga in då man startat Oracle med STARTUP RESTRICT. |
För att användaren över huvud taget ska kunna logga in på Oracle krävs att denne har privilegiet "create session", därför är det det mest utdelade privilegiet. Nedan beskrivs några systemprivilegier som ger användaren rättigheter i sitt eget schema:
Systemprivilegier | | Beskrivning |
create cluster | | Rätt till CREATE CLUSTER, ALTER CLUSTER och DROP CLUSTER i eget schema. |
create index | | Rätt till CREATE INDEX och DROP INDEX i eget schema (OBS: Om man har CREATE TABLE är detta privilegie överflödigt). |
create procedure | | Rätt till CREATE PROCEDURE, ALTER PROCEDURE och DROP PROCEDURE i eget schema. |
create sequence | | Rätt till CREATE SEQUENCE, DROP SEQUENCE i eget schema. |
create snapshot | | Rätt till CREATE SNAPSHOT, ALTER SNAPSHOT och DROP SNAPSHOT, kräver CREATE TABLE. |
create synonym | | Rätt till CREATE SYNONYM, ALTER SYNONYM och DROP SYNONYM. |
create table | | Rätt till CREATE TABLE, DROP TABLE, ALTER TABLE, CREATE INDEX och DROP INDEX i eget schema. |
create trigger | | Rätt till CREATE TRIGGER, ALTER TRIGGER, DROP TRIGGER i eget schema. |
create view | | Rätt till CREATE VIEW, ALTER VIEW, DROW VIEW i eget schema. |
force transaction | | Rätt till att forcera en egen distribuerad ROLLBACK eller COMMIT. |
Med dessa privilegier kan man alltså skapa och ändra olika objekt i sitt eget schema. Dessa privilegier delas vanligen ut till de flesta användare.
3. GRANT och REVOKE på systemprivilegier
Vi kan tilldela olle enskilda privilegier till användare med kommandona GRANT och REVOKE. Nedan testar vi att tilldela olle ett systemprivilegie, nämligen "create session" som låter olle logga in:
SQL> GRANT create session TO olle;
Grant succeeded.
|
Man kan också tilldela flera privilegier i en sats:
SQL> GRANT create table, create trigger, create procedure TO olle;
Grant succeeded.
|
För att ta bort ett systemprivilegie skriver man:
SQL> REVOKE create table FROM olle;
Revoke succeeded.
|
4. Globala Systemprivilegier (med any)
Om man vill att en anvädare ska ha rätt att utföra en viss operation på samtilga scheman i databasen använder man ofta ett systemprivilegie innehållande "any". Alla dessa privilegier ger användaren rättigheter att ändra objekt oavsett objektets ägare. Nedan har jag listat alla privilegier innehållande "any", :
Globala Systemprivilegier | | Beskrivning |
create any cluster | | Rätt till CREATE CLUSTER. |
alter any cluster | | Rätt till ALTER CLUSTER. |
drop any cluster | | Rätt till DROP CLUSTER. |
create any index | | Rätt till CREATE INDEX. |
alter any index | | Rätt till ALTER INDEX. |
drop any index | | Rätt till DROP INDEX. |
create any procedure | | Rätt till CREATE PROCEDURE. |
alter any procedure | | Rätt till ALTER PROCEDURE. |
drop any procedure | | Rätt till DROP PROCEDURE. |
execute any procedure | | Rätt att köra lagrade procedurer. |
grant any privilege | | Rätt att dela ut alla systemprivilegier. |
grant any role | | Rätt att dela ut alla roller. |
alter any role | | Rätt till ALTER ROLE. |
drop any role | | Rätt till DROP ROLE. |
create any sequence | | Rätt till CREATE SEQUENCE. |
alter any sequence | | Rätt till ALTER SEQUENCE. |
drop any sequence | | Rätt till DROP SEQUENCE. |
select any sequence | | Rätt till SELECT från en sekvens. |
create any snapshot | | Rätt till CREATE SNAPSHOT. |
alter any snapshot | | Rätt till ALTER SNAPSHOT. |
drop any snapshot | | Rätt till DROP SNAPSHOT. |
create any synonym | | Rätt till CREATE SYNONYM. |
drop any synonym | | Rätt till DROP SYNONYM. |
select any table | | Rätt till SELECT. |
insert any table | | Rätt till INSERT. |
update any table | | Rätt till UPDATE. |
delete any table | | Rätt till DELETE. |
create any table | | Rätt till CREATE TABLE. |
alter any table | | Rätt till ALTER TABLE. |
drop any table | | Rätt till DROP TABLE. |
lock any table | | Rätt till LOCK TABLE. |
backup any table | | Rätt att säkerhetskopiera tabeller. |
comment any table | | Rätt till COMMENT TABLE. |
force any transaction | | Rätt till forcerad commit eller rollback. |
create any trigger | | Rätt till CREATE TRIGGER. |
alter any trigger | | Rätt till ALTER TRIGGER. |
drop any trigger | | Rätt till DROP TRIGGER. |
create any view | | Rätt till CREATE VIEW. |
drop any view | | Rätt till DROP VIEW. |
5. Övriga Systemprivilegier
Nedan beskrivs övriga systemprivilegier. Denna grupp delas vanligen bara ut till administratörer:
Systemprivilegier | | Beskrivning |
create role | | Rätt till CREATE ROLE, ALTER ROLE och DROP ROLE. |
create rollback segment | | Rätt till CREATE ROLLBACK SEGMENT. |
alter rollback segment | | Rätt till ALTER ROLLBACK SEGMENT. |
drop rollback segment | | Rätt till DELETE ROLLBACK SEGMENT. |
create public synonym | | Rätt till CREATE PUBLIC SYNONYM. |
drop public synonym | | Rätt till DROP PUBLIC SYNONYM. |
audit system | | Rätt till AUDIT. |
alter system | | Rätt till ALTER SYSTEM. |
create table space | | Rätt till CREATE TABLE SPACE. |
alter table space | | Rätt till ALTER TABLE SPACE. |
drop table space | | Rätt till DROP TABLE SPACE. |
manage table space | | Rätt att säkerhetskopiera tabellutrymme. |
unlimited table space | | Rätt att använda obegränsat tabellutrymme. |
create user | | Rätt till CREATE USER. |
alter user | | Rätt till ALTER USER. |
drop user | | Rätt till DROP USER. |
become user | | Rätt att bli en annan användare. Används av import då data laddas till en annan användares schema. |
6. Objektprivilegier
Alla objektprivilegier för ett objekt tillhör ursprungligen användaren som skapat objektet. Detta innebär t.ex. att en användare automatiskt kan utföra SELECT, INSERT, o.s.v. på sina egna tabeller. Om skaparen av objektet vill kan hon dela ut objektprivilegier till någon annan användare (med GRANT). De objektprivilegier som finns är:
Objektprivilegier | | Beskrivning |
all | | Alla privilegier. |
select | | Rätt till SELECT. |
insert | | Rätt till INSERT. |
update | | Rätt till UPDATE. |
delete | | Rätt till DELETE. |
alter | | Rätt till ALTER TABLE och ALTER SEQUENCE. |
index | | Rätt till CREATE INDEX. |
references | | Rätt att lägga till ett FOREIGN KEY CONSTRAINT mot tabellens kolumner. |
execute | | Rätt att köra lagrade procedurer. |
7. GRANT och REVOKE på objektprivilegier
Att dela ut ett objektprivilegie görs såhär:
SQL> GRANT select ON olle TO ingvar;
Grant succeeded.
|
Nu kan användaren ingvar köra SELECT-satser mot alla olles tabeller. Nyckelordet "ON" beskriver vilket schema som privilegiet ska gälla för (d.v.s. olle). Man kan dela ut flera privilegier samtidigt:
SQL> GRANT insert, update, delete ON olle TO ingvar;
Grant succeeded.
|
Vill man dela ut alla objektprivilegier används privilegiet "all":
SQL> GRANT all ON olle TO ingvar;
|
Att ta bort ett objektprivilegie görs på följande sätt:
SQL> REVOKE create ON olle FROM ingvar;
Revoke succeeded.
|