Müşterinin bir ihtiyacı var, 150'den fazla alandan oluşan bir tablo, müşteri sadece bazı alanların tarama şirketinin çalışanları tarafından görülmesini istiyor, bu gereksinim bir görünümle kolayca gerçekleştirilebilir, müşteri ayrıca talep ediyor, bu alanları da talep ediyor, tarama şirketi sadece bireysel alanları değiştirebiliyor, sütun seviyesinde böyle bir izin kontrolü ihtiyacını daha önce hiç yaşamadım, bir deney yaptım, çok ilginç hissediyorum, kaydet
Müşterinin bir tane varTalep, 150'den fazla alandan oluşan bir masada, müşteri sadece bazı alanları şirketi tarayanlara göstermesini istedi, buTalepKolayca bir görünümle uygulanabilir ve müşteri bu alanları, tarama şirketinin yalnızca bireysel alanları değiştirebilmesini istiyor, ben daha önce sütun seviyesinde izin kontrolü için böyle bir ihtiyaçla karşılaşmadım, bir deney yaptım, kendimi çok ilginç hissediyorum, kaydetTestsüreç. 1. Bir test tablosu oluşturun ve nokta test verilerini ekleyin: SQL> create table test(id number,table_name varchar2(50), sahibi varchar2(50),TABLESPACE_NAME varchar2(50)); Tablo oluşturuldu. SQL> insert into test select rownum,table_name,owner, TABLESPACE_NAME dba_tables'dan; 5490 sıra oluşturuldu. SQL> commit; Tamamlandı. 2. Bir test kullanıcısı oluşturun ve temel izinler verin: SQL> CONN / AS SYSDBA Bağlantılı. SQL> kullanıcı akışı oluştur, varsayılan tablo alanı kullanıcıları tarafından tanımlanır; Kullanıcı tarafından oluşturuldu. SQL> bağlantı, kaynak akışa; Grant başarılı oldu. 3. Test kullanıcılarına sütun düzeyinde yetkiler verin: SQL> conn auth/auth Bağlantılı. SQL> testte güncelleme (id) ile yayına test; Grant başarılı oldu. SQL> test to stream üzerinde insert (table_name) ver; Grant başarılı oldu. SQL> SQL> testte akış için seçim hakkı ver; Grant başarılı oldu. 4. Sorgu sütun düzeyinde izin ayarı bilgisi: SQL> GRANTEE,OWNER,TABLE_NAME,COLUMN_NAME,GRANTOR,PRIVILEGE seçin, user_col_privs'DEN VERİNDİR; HIBE SAHIBI TABLE_NAME COLUMN_NAME VEREN İMTIYAZI GRA ------- ----- ---------- ----------- ------- --------- --- AKIM DOĞRULAMA TESTI TABLE_NAME DOĞRULAMA EKLEME NO AUT AUTH TEST ID AUTH INSERT NO AUT AUT TEST ID AUT GÜNCELLEME HAYIR STREAM AUTH TEST ID AUTH UPDATE NO 5. Giriş testi kullanıcısı SELECT iznini doğrular: SQL> conn stream/stream Bağlantılı. SQL> * from seç (auth.test sırasından * seç * 1) burada rownum< =10; ID TABLE_NAME SAHIBI TABLO ALANI ---------- -------------------- ---------- ---------- 1 ICOL$ SISTEM 2 IND$ SISTEM SISTEMI 3 COL$ SISTEM 4 CLU$ SISTEM 5 TAB$ SISTEM 6 LOB$ SISTEM SISTEMI 7 COLTYPE$ SISTEM SISTEMI 8 ALT KOLTIP$ SISTEM 9 NTAB$ SISTEM 10 REFCON$ SISTEM 10 sıra seçildi. 6. Sütun düzeyinde GÜNCELLEME izni kontrolünü doğrulayın: SQL> update auth.test set owner='STREAM' burada id =1; update auth.test set owner='STREAM' burada id =1 * 1. satırda HATA: ORA-01031: insufficient privileges Test tablosunun OWNER alanının değerinin değiştirilemediği görülebilir, rapor ORA-01031: Yetersiz izin, yukarıdaki bilgiler test kullanıcısına test tablosunun ID alanını değiştirme izni verdiği için ID alanını değiştirmek mümkündür. SQL> update auth.test set id=10 burada id=1; 1 sıra güncellendi. SQL> geri dönüş; Geri dönüş tamamlandı. 7. Sütun düzeyinde INSERT izin kontrolünü doğrulayın: SQL> auth.test values(1,'stream','stream','users') içine insert edin; insert into auth.test values(1,'akış','akış','users') * 1. satırda HATA: ORA-01031: insufficient privileges Yukarıdakiler, test kullanıcısına test tablosunun TABLE_NAME alanını değiştirme izni verdiğinden, TABLE_NAME alan eklemek mümkündür, ancak ancak diğer alanların BAZI kısıtlamaları yoksa. SQL> enter into auth.test(table_name) değerleri ('akış'); 1 sıra oluşturuldu. SQL> geri dönüş; Geri dönüş tamamlandı.
|