programmera.net -> oracledba -> normal     för utskrift      info@programmera.net

Privilegier i Oracle

1. Vad har man privilegier till?
2. Systemprivilegier
3. GRANT och REVOKE på systemprivilegier
4. Globala Systemprivilegier (med any)
5. Övriga Systemprivilegier
6. Objektprivilegier
7. GRANT och REVOKE på objektprivilegier

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.