Nasıl JDBC ile Oracle bağlanmak için kimlik bilgilerini depolamak önlemek için?

oy
28

(ya da başka herhangi bir standart okunabilir yerde) bir yapılandırma dosyasındaki kullanıcı adı / şifre bilgi vermeden Oracle için JDBC bağlantı kurmak için mümkün mü?

Tipik uygulamalar veritabanına bağlanmak için kurulum parametreleri içeren bir yapılandırma dosyası var. Bazı DBA kullanıcı adlarını ve şifreleri yapılandırma dosyalarında düz metin olarak olmasından duyduğu sorunlar var.

Bu Oracle ve JDBC ile mümkün olduğunu sanmıyorum, ama bazı onayınız gerekiyor ...

Olası bir anlaşma yapılandırma dosyasında şifresini şifrelemek ve bağlantıyı kurmadan önce şifresini etmektir. Tabii ki, şifre çözme anahtarı aynı yapılandırma dosyasında olmamalıdır. Bu yalnızca yetkisiz kullanıcılar tarafından yapılandırma dosyasının yanlışlıkla açılmasını çözecektir.

Oluştur 24/09/2008 saat 13:05
kaynak kullanıcı
Diğer dillerde...                            


11 cevaplar

oy
6

Sen OS kullanıcının kimlik bilgilerini kullanmak ve harici tanımlandığı şekilde veritabanına OS kullanıcı ekleme yapabilirsiniz Kerberos denemek isteyebilirsiniz. Kerberos ve olmayan ciddi güvenlik sorunları vardı Bunu yapmanın eski yolu kullanmak emin olun.

Kerberos desteği için gelişmiş güvenlik seçeneğini ve son JDBC sürücüsünü, muhtemelen 11g sürümü gerekir. * O, Java çalışmak Sql de denemek almaya çalışırken Artı kullanıcı adı ve boş şifre olarak '/' kullanmadan önce. "Ikili kullanıcıyı seçin" Size kullanıcı @ alan vermelidir. Ayrıca Kerberos yapılandırmasına gelince ince veya OCI sürücüsü kullanarak arasında temel bir fark olduğunu görebilirsiniz.

Cevap 27/09/2008 saat 11:42
kaynak kullanıcı

oy
5

Bu veritabanı savunmasız hale çünkü kesinlikle kimlik bilgileri olmadan veritabanına bağlanmak mümkün istemiyoruz.

Bu genel bir sorundur, nasıl dış sistemlerini erişmek için gerekli kimlik bilgilerini depolamak mı? WebLogic kimlik bilgileri (şifreli) gömülü LDAP'de depolandığı bu sorunu çözmek için bir kimlik eşleştiricisini sahiptir. Birçok Oracle ürünleri, Oracle cüzdanda kimlik bilgilerini depolayan bir kimlik bilgisi mağaza tesisi kullanın.

Söz, sen cevabı sağladı. Şifrelenmiş parola saklayın ve ihtiyaç duyduğunuz şifresini. Açıkçası şifresini çözmek, böylece bu tür 3DES olarak simetrik şifreleme algoritması kullanmak zorunda. simetrik anahtar tahmin edilebilir bir şey değildir emin olun.

Eğer tr / de-Cryption için gerekli simetrik anahtarı burada saklıyoruz hiledir. Sen OS ile temin olunan bir dosyaya koydu edebilir veya kodda tutabilir, ancak o zaman güvenli kodu tutmak gerekir. Aynı anahtarını üretecek bir tekniği kullanır ve algoritma oldukça güvenli olup olmadığını da anahtar oluşturabilir.

Kodu tutabilir ise tabii ki de kodunda şifreyi tutabilir güvenli. Ancak, kodu değiştirmeden kimlik bilgilerini değiştirmek mümkün olan esnekliği istiyorum.

Siz de bu çözüme daha fazla katman ekleyebilir. Sen (farklı anahtarla) yapılandırma dosyasını yanı sıra, hacker 2 tuşları keşfetmek yapma içindeki şifreyi şifreleyebilirsiniz. Orada PKI kullanan diğer daha güvenli yöntemlerdir, ancak bunlar kurmak zor olsun.

Cevap 24/09/2008 saat 13:24
kaynak kullanıcı

oy
3

Sana proxy kimlik içine bakmak öneririm. Bu belgelenmiştir Oracle Veritabanı Güvenliği Kılavuzu yanı sıra Oracle Veritabanı JDBC Geliştirici Kılavuzu ve Referans . Esasen bu ne yapmaya izin verir SADECE ayrıcalıkları bağlamak vardır veritabanında bir kullanıcı var olduğunu. Gerçek veritabanı hesapları yapılandırılmış kullanıcıların vekil kullanıcı olarak bağlanmak mümkün. JDBC aracılığıyla bağlantı Başvuruların proxy kullanıcı adı ve şifresini saklar ve bağlanırken bu kimlik, ARTI bağlantı dizesindeki gerçek veritabanı kullanıcı adı sağlar. Oracle vekil kullanıcı olarak bağlanır ve sonra gerçek kullanıcı veritabanı ayrıcalıkları miras, gerçek bir veritabanı kullanıcı taklit eder.

Cevap 24/09/2008 saat 14:02
kaynak kullanıcı

oy
2

Tüm J2EEkonteynerler ( JBOSS , Tomcat , BEA ) bağlantısı havuzları var. Bunlar, bağlantıları bir dizi açmak onları canlı tutmak ve bunları size verecektir olacak 1/100inci sıfırdan bir tane oluşturmak için gereken zaman.

Içinde Ayrıca, onlar da, serin özelliklere sahip JBOSSörneğin, tüm bağlantı bilgileri harici bir dosyada saklanır. Eğer yani bağlantı bilgi değiştirirseniz, bir geçiş testi a üretime yeni havuzundan DB, başvurunuz dinamik beslenecektir bağlantıları

İyi haber tam çalıştırmak için gereken kalmamasıdır J2EEBağlantı havuzu kullanmak için sadece kabı. Dış kaynak şifre düz metin ya da psödo-şifreli ya saklanabilir sağlar.

Tomcat'in yerleşik bağlantı havuzu kullanan bir kılavuz için apache commons-dbcp bkz:

Cevap 04/05/2009 saat 22:50
kaynak kullanıcı

oy
1

Orada iki önemli yaklaşımlardır ve her ikisi de önemli bir yeniden yazma olmadan birinden diğerine taşımak kolay olmayacak şekilde sistemin araya üzerinde önemli bir etkisi vardır. Eğer şirket güvenlik yönetim politikası seçmeden önce ne olduğunu anlamak gerekir.

1) Her bir kullanıcı uygulama tarafından kullanılıyor hizmeti için, uygulanması yoluyla gerçekleştirilir kimlik bilgilerini sahiptir; senin durumunda Oracle veritabanı veritabanına bağlanmak için bu kullanıcı kimlik bilgilerini kullanır. Olumsuz her kullanıcının her Güvenli hizmet için kimlik bilgilerini ihtiyacı var. Bu makul bir güvenli yaklaşımdır ama aynı zamanda sağlamak ve kullanıcı kimlik bilgilerini korumak için signficant ekstra çalışma gerektirir. Sizin veritabanı yöneticileri aktif olarak şirketinizin güvenlik yönetim politikalarına ters düşen durumlarda, kullanıcı kimlik bilgilerini yönetmek gerekir.

2) veritabanı kimlik bilgileri güvenli bir dizin hizmeti, örneğin Güvenli LDAP saklanan Uygulama. Uygulama kullanıcıların kimlik bilgileriyle dizin hizmetini erişir. Dizin hizmeti hizmeti için approriate kimlik erişilen döndürür.

Her iki durumda da veritabanı kimlik bilgileri yalnızca uygun işlemleri gerçekleştirmek için sınırlı olmalıdır. Kimlik bilgileri örneğin iş süreçlerinin gereksinimlerini yansıtmalıdır; başkaları takın fakat oluşturamaz, güncelleme veya tablolar bırakın, tanımlanmış görüntüleme / tablolardan seçmek izin verir. İkinci yaklaşımda, örneğin Sipariş İşleme, Muhasebe, İK, vb her önemli iş süreci için ayrı kimlik bilgilerini kullanmak

Ancak birileri onlar DB contection havuzu yapılandırma dosyası erişebilir şekilde, uygulamaya erişmek için katmanlarını soyulmuş olması halinde güvenlik, bir soğan katmanları gibi olduğunu unutmayın. Muhtemelen kullanıcıların kimlik bilgilerini yakalamak için uygulamayı Trojan'la edebilirsiniz. İyi bir güvenlik yönetim politikası devreye giriyor budur.

Güvenlik Yönetim Eğer canlı platformu için bu düzeyde güvenlik gerekiyorsa, maliyeti nedeniyle, üst yönetim bağlılığını gereken karmaşık bir konudur. Sen dağıtım, operasyon ve kullanıcı yetki yönetiminden gelişim sorumluluklarını ayırmak gerekir. Ayrıca tam değişiklikleri görüntüleme erişimi ama yapılandırmasını değiştirmek için hiçbir yeteneğine sahip güvenlik denetçileri, olması gerekebilir. Çok basit uzak olursa ve son derece uzmanlığını ödenir.

Cevap 24/09/2008 saat 13:39
kaynak kullanıcı

oy
1

Geçmişte bu merak ettiniz.

Çözelti kesinlikle gerçekten sistemine erişim elde edebilirsiniz kişi sayısını azaltmak için sunucu ve ağ düzeyinde uygun ağ güvenliği olan ve veritabanı kimlik bilgileri yalnızca izinleri minimum olan bir veritabanı hesabına erişimi vermek zorunda içeren biridir çalıştırmak için uygulama için gerekli.

özellikleri dosyaların Şifreleme sonraki tehlikeye sunucu üzerine gitmek için bir saldırganı elde etmek için "anahtar bulmak veya parolayı için rahatsız olamaz" anlamında bir caydırıcı yetebilir. Ancak güvenlik "komşum yüzden ondan lütfen çalmak az güvenlidir" ben güvenmek olmaz!

Cevap 24/09/2008 saat 13:13
kaynak kullanıcı

oy
1

Bildiğim kadarıyla jdbc bağlantı adları için / şifrelerin düz metin olarak saklanması gerekir. Bu olası riskleri sınırlamak için bir yolu sadece verilen uygulamaların veritabanı kullanılmıştır ve sadece önceden tanımlanmış bir ana bilgisayardan böylece kullanıcı haklarını kısıtlamak etmektir. IMO, bu çok saldırganı sınırlayacak: o sadece orijinal uygulamanın bulunduğu ve sadece orijinal uygulamanın veritabanına saldırı aynı ana bilgisayardan un / hafta kullanabilirsiniz.

Cevap 24/09/2008 saat 13:12
kaynak kullanıcı

oy
1

Java & JDBC Oracle konuşurken dışındaki ortamınıza tamamen açık değilim beri bunu doğru konuşmak gerekir.

Eğer bir Java EE uygulaması hakkında konuştuğunu, daha sonra bu kurulum bağlantı havuzları ve uygulama sunucusu üzerinde veri kaynakları, o düzeyde bağlantı kolları bağlantı havuzuna Başvurunuz görüşmeler mümkün olmalıdır.

Bağlantı havuzu ve veri kaynağı tutar ve kimlik bilgilerini güvence altına alır.

Cevap 24/09/2008 saat 13:12
kaynak kullanıcı

oy
0

önceden (proxy kimlik kullanarak, Kerberos kimlik) söz edilmiştir çözümlere ek olarak 2 başka çözümler vardır JDBC ince sürücü ile her iki çalışma:

  1. Bir SSO cüzdanda şifreyi Mağaza: Bir cüzdan kullanıcının parolasını depolamak için kullanılabilir. Eğer bir SSO cüzdan kullanırsanız o zaman cüzdan kendisi bir şifre yok. TOA cüzdan yaygın SSL bağlamında kullanılmaktadır ancak aynı zamanda sadece bir şifre saklamak için kullanılabilir.
  2. Kullanıcı kimlik doğrulaması ile SSL Kullanımı: haricen ayırt edici ad (DN) tarafından doğrulanmış oluyor bir kullanıcı ile SSL yapılandırın. Bu kullanıcı bir şifre yok. Sürece bu DN olan bir sertifika kullanarak SSL ile bağlanmak olarak Bu kullanıcıyı kullanarak bir oturum oluşturmak mümkün olacak.
Cevap 25/04/2017 saat 18:27
kaynak kullanıcı

oy
0

JDBC istemci veritabanı sunucusu tarafından güvenilen bilinen bir orta katman bileşeni / hizmet (vekil) karşı bir sertifika kullanarak kimliğini doğrular nerede Oracle'ın proxy kimlik doğrulamasını deneyebilirsin. Ama bunun hiç denemedim, bu yüzden bunu yapmak çok kolay olup olmadığını bilmiyorum.

Cevap 24/09/2008 saat 13:18
kaynak kullanıcı

oy
0

Sen programında veya Windows kayıt girişleri gibi kablolu dizeleri dahil, her yerde kimlik bilgilerini saklayabilir. Bu olsa standart olmayan bir şey kullanırsanız, onları almak için size kalmış; Ben düz metin olmayan tüm ön haddelenmiş çözümlerin farkında değilim.

Cevap 24/09/2008 saat 13:09
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more