Forum
Oracle'da veritabanında yetkili olan kullanıcıların hangi yetkileri var. Bunu hangi SQL ile görebilirim? Amacım iki yada daha fazla kullanıcının yetkileri eşit mi, farklılık var mı kontrol edebilmek?
Selamlar,
Cevap uzun olduğu için makale şeklinde hazırladım, ek olarak isteğin olursa buradan devam edebiliriz.
https://www.cozumpark.com/kritik-kullanici-yetki-kontrolleri-oracle-database/
Teşekkürler,
Oracle ACE Associate - Türkiye Hayat & Emeklilik
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Eline sağlık, gerçekten forum postu için makale yazmak, çıtayı çok yükseltiyorsun.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Öncelikle soruma yanıtladığınız ve vakit ayırıp makale yazdığınız için çok teşekkür ederim. Konu hakkında bir kaç sorum olacaktı.
Aşağıdaki SQL'lerden gelen sonuçlarda uygulama kullanıcısı için "UNLIMITED TABLESPACE" bilgisi gelmektedir. Normal kullanıcı için ise "SELECT ANY TABLE" yazmaktadır. Bu bilgiyi nasıl yorumlamak gerekir? Uygulama user'ı tabloya insert ederken tablespace'ler dolana kadar insert işlemine devam etmektedir, normal user için oluşturabileceği datada belli bir kısıtlama olabilir mi?
Normal kullanıcı TOAD üzerinden Create Table, Insert, Delete, Truncate, Select gibi işlemler yapabilmektedir fakat aşağıdaki sorgu sonucundan sadece "SELECT ANY TABLE" yazmaktadır. ANY yazdığı için makale de belirttiğiniz diğer tablolar üzerinde hakimiyet sağlayabilirler (select, insert vs) işlemler yapabilir olduğunu anlıyorum.
SELECT * from DBA_SYS_PRIVS WHERE GRANTEE = 'UYGULAMA_USER'
PRIVILEGE: UNLIMITED TABLESPACE
ADMIN_OPTION: NO
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'NORMAL_USER'
PRIVILEGE: SELECT ANY TABLE
ADMIN_OPTION: NO
Makalenin içinde yer alan SQL'in where filtresinin içinde "UNLIMITED TABLESPACE" yazmadığı için uygulama kullanıcısı sorgu sonucuna yansımamıştı. Oracle sistem yetki tabloları, kullanıcılar için CREATE, INSERT, UPDATE, DELETE, LIMITED TABLESPACE gibi daha fazla detay bilgi sunabiliyor mu?
Normal kullanıcı olarak belirttiğim kullanıcı insert aşamasında oluşturduğu tabloların boyutu çok fazla yer kaplamaktadır. Yetkisinin "UNLIMITED TABLESPACE" olarak talep etmemiz fayda sağlar mı?
Bizim uyguluma user'ı ile oluşturduğumuz tablolar DATAT tablespace'i üzerinde tablo oluştururken, normal kullanıcı USER tablespace'i üzerinde tablo oluşturmaktadır. Bu iki tablespace arasında büyük boyutlu tablo oluştururken veri insert ederken farklılığa sebep olabilir mi? Örneğin DATAT için 200GB boş yer olur, USER için 100GB boş yer olması gibi.
Selamlar,
Aslında bu tip durumlar için geniş kapsamlı bir bir script hazırlıyorum, yakın zamanda bitecek. Script ile tüm veritabanının röntgenini çekebileceksiniz.
Sorunuzun cevaplarına gelirsek;
Uygulama kullanıcıları için ( örneğin erp uygulaması ) unlimited tablespace yetkisi normaldir çünkü uygulamanın kesintiye uğramaması ve devamlılığı esastır. Buradaki nüans ERP yada sizin yazdığınız uygulama kullanıcısının ayrı tablespace kullanması , veritabanına bağlanan gündelik kullanıcıların ayrı bir tablespace üzerinde olmasıdır. Örneği açmak gerekirse;
ERP Kullanıcısı - TBS_ERP - Unlimited = Normal
Bugra Kullanıcısı - TBS_USER - Unlimited yada kotalı = Kurum politikasına göre değişir.
Daha da ayrıntıya girelim;
Bugra ve diğer gündelik kullanıcılarının default tablespace değeri TBS_USER, uygulamanız ise TBS_ERP default tablespace olarak TBS_ERP kullanıyor. Uygulama TBS_ERP üzerine unlimited yetkiye sahipken diğer kullanıcılar örneğin 100MB kota ile sınırlanabilir. Bu sayede uygulama tablespace için önlem alabilirsiniz.
SELECT ANY TABLE ise biraz tartışmaya açık bir konu, normalde olması gereken kullanıcılar diğer kullanıcılar üzerinde hangi tablolara erişecekse buna göre yetki vermek. Bu sayede görmemesi gereken tablolara sorgu çekmesine engel olabilirsiniz. Eğer Select Any Table verirseniz gerekli yada gereksiz bütün tabloları görebilirler fakat update yada delete işlemi gerçekleştiremezler. Bunun için ayrıca insert ve update yetkisi gerekir. Benim tavsiyem herzaman bunu kullanıcı özelinde kullanmak, eğer herşeyi görmek gerekiyorsa SELECT ANY TABLE kullanılabilir , yok sadece X tablo görünecekse bunu SELECT ANY TABLE ile değil özel olarak vermeniz gerekir.
Normal kullanıcılar herhangi bir editör üzerinden Create Table, Insert, Delete, Truncate gibi işlemler yapabiliyorsa ekstra yetkilere sahiptir. Aşağıdaki sorgu ile tüm kullanıcıların ne yetkiye sahip olduğunu görebilirsiniz.
SELECT
A.*,
'GRANTED TO USER' TYPE
FROM
DBA_SYS_PRIVS A,
DBA_USERS B
WHERE
A.GRANTEE = B.USERNAME
AND GRANTEE NOT IN(
'ANONYMOUS',
'CTXSYS',
'DBSNMP',
'EXFSYS',
'LBACSYS',
'MDSYS',
'MGMT_VIEW',
'OLAPSYS',
'OWBSYS',
'ORDPLUGINS',
'ORDSYS',
'OUTLN',
'SI_INFORMTN_SCHEMA',
'SYS',
'SYSMAN',
'SYSTEM',
'TSMSYS',
'WK_TEST',
'WKSYS',
'WKPROXY',
'WMSYS',
'XDB',
'APEX_PUBLIC_USER',
'DIP',
'FLOWS_30000',
'FLOWS_FILES',
'MDDATA',
'ORACLE_OCM',
'SPATIAL_CSW_ADMIN_USR',
'SPATIAL_WFS_ADMIN_USR',
'XS$NULL',
'OWBSYS_AUDIT',
'ORDDATA',
'APEX_030200',
'APPQOSSYS',
'DVSYS',
'DVF'
)
Yukarıdaki sorgu çıktısına kullanıcılar yetkisini görebilirsiniz.
Oracle ACE Associate - Türkiye Hayat & Emeklilik
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Detaylı cevabınız için teşekkür ederim. Kullanıcı hesabına yönelik data oluşturma limiti (kota) uygulanmakta mıdır? Kullanıcıya da "UNLIMITED TABLESPACE" yetkisi verilebilirler mi? Bu soruları DBA'lere soracağım.