Sistem ve nesne ayrıcalıklarının hangi kullanıcı ve rollere verildiğinin tespiti

10 Ara by Ahmet Duruöz

Sistem ve nesne ayrıcalıklarının hangi kullanıcı ve rollere verildiğinin tespiti

Oracle veritabanlarında , veritabanı ve veritabanı nesnelerinde çeşitli işlemler yapmak için sistem ne nesne ayrıcalıklarının kullanıcılara atanmış olması gerekmektedir.

Her sistem ayrıcalığı , bir kullanıcının , belirli veritabanı operasyonlarını ya da veritabanı operasyonlarının bir sınıfını yapabilmesine hak tanır.

Nesne ayrıcalıkları , bir kullanıcının , belli bir nesne üzerinde , belirli işlemleri yürütmesine hak tanır.

Hangi sistem ayrıcalığının hangi rol ya da kullanıcılara verildiğinin tespiti için aşağıdaki sorgu kullanılabilir :

SQL> select * from SYS.DBA_SYS_PRIVS;

Hangi nesne ayrıcalığının hangi rol ya da kullanıcılara verildiğinin tespiti için aşağıdaki sorgu kullanılabilir :

SQL> /* Formatted on 10/12/2018 21:27:57 (QP5 v5.326) */
SELECT ue.name                                             grantee,
       u.name                                              owner,
       o.name                                              object_name,
       ur.name                                             grantor,
       tpm.name                                            privilege,
       DECODE (MOD (oa.option$, 2), 1, 'YES', 'NO')        grantable,
       DECODE (BITAND (oa.option$, 2), 2, 'YES', 'NO')     heirarchy,
       OBJECT_TYPE
  FROM sys.objauth$         oa,
       sys.obj$             o,
       sys.user$            u,
       sys.user$            ur,
       sys.user$            ue,
       table_privilege_map  tpm,
       DBA_OBJECTS
 WHERE     oa.obj# = o.obj#
       AND oa.grantor# = ur.user#
       AND oa.grantee# = ue.user#
       AND oa.col# IS NULL
       AND oa.privilege# = tpm.privilege
       AND u.user# = o.owner#

Bu sorgudan , DBA_SYS_PRIVS , görüntüsüne benzer,  aşağıdaki gibi görüntü oluşturulabilir.

/* Formatted on 10/12/2018 21:39:34 (QP5 v5.326) */
CREATE OR REPLACE VIEW DBA_OBJ_PRIVS
AS
    SELECT ue.name                                             grantee,
           u.name                                              owner,
           o.name                                              object_name,
           ur.name                                             grantor,
           tpm.name                                            privilege,
           DECODE (MOD (oa.option$, 2), 1, 'YES', 'NO')        grantable,
           DECODE (BITAND (oa.option$, 2), 2, 'YES', 'NO')     heirarchy,
           OBJECT_TYPE
      FROM sys.objauth$         oa,
           sys.obj$             o,
           sys.user$            u,
           sys.user$            ur,
           sys.user$            ue,
           table_privilege_map  tpm,
           DBA_OBJECTS
     WHERE     oa.obj# = o.obj#
           AND oa.grantor# = ur.user#
           AND oa.grantee# = ue.user#
           AND oa.col# IS NULL
           AND oa.privilege# = tpm.privilege
           AND u.user# = o.owner#
           AND DBA_OBJECTS.OBJECT_ID = oa.obj#;

Hangi rollerin hangi kullanıcılara atandığını DBA_ROLE_PRIVS görüntüsünden öğrenilebilir.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir