Oracle’a Bağlanan Linked Server’ın Remote Login Şifresini Uygulamacıya Değiştirtmek ya da Remote Login Oluşturtmak

Oracle’a bağlanacak bir linked server tanımladığınızda linked server’ın içine bir oracle user yerleştirmeniz gerekir. Bu makaleyi okumadan önce “Oracle’a bağlanacak bir Linked Server tanımlamak” ve “Oracle için oluşturulan linked server çalıştırıldığında SQL Server Service’in Crash Olması Error Code:0xc0000374” isimli makalelerimi okumanızı tavsiye ederim.

Linked server oluştururken yerleştireceğiniz bu oracle user, oracle üzerinde bazı veritabanlarına bağlanıp select çekiyor olabilir ya da daha fazla yetkileri de olabilir. MS SQL Veritabanı uzmanının oracle’daki bir schema’ya bağlanacak kullanıcının şifresini bilmesi kendisi açısından iyi bir durum değildir. Kendisi ile ilgisi olmayan bir veritabanında yetkimiz olsun istemeyiz. Bu yüzden kurulum aşamasında remote login’i siz tanımladıysanız bile uygulamacıya, oracle tarafında bu kullanıcının şifresini değiştirmesini, daha sonrada linked server’daki şifreyi güncellemesini söylemelisiniz. Tabi bu daha önce tanımlanmış oracle linked server’lar için geçerli. Yeni tanımlanacak linked server’larda remote user’ı direk olarak uygulamacının oluşturmasını sağlayarak bu şifreyi hiç öğrenmeden linked server tanımını yapmalısınız. Öncelikle linked server’ı şifresini değiştirmek ya da remote login oluşturabilmek için o login’e alter any linked server ve alter any login yetkilerini vermeniz gerekiyor. Ama bu yetkilerle uygulamacı başka linked server’larıda güncelleyebilecek ve başka loginleri de alter edebilecektir. Bu yüzden uygulamacıya bu yetkiyi sadece bu işlemi yaptığınız sırada verip daha sonra geri almanız gerekir. Ben bu işlemi yaparken ya uygulamacının yanında oluyorum ya  da telefonla o anda konuşarak yaptırıyorum. Ve bu yetkilerle bu işlemin yapılma süresi kadar(yaklaşık 30 saniye) bu yetkiyi veriyorum. Şimdi bu yetkinin nasıl verildiğine bakalım.

SQL Server Instance’ı üzerinde sağ tıklayarak properties diyoruz. Daha sonra açılan ekranda aşağıdaki Logins or roles kısmında yetki vereceğimiz login’i seçiyoruz ve alt tarafta görünen Alter any login ve alter any linked server’ı seçip ok’e basıyoruz.

Yetkiyi verdikten sonra uygulamacıya kendi login’i ile giriş yapmasını söylüyoruz ve aşağıdaki ekrandaki gibi Server Objects->Linked Servers ‘tan ilgili linked server’ı bulup sağ tıklayarak properties demesini istiyoruz.

 

Aşağıdaki gibi bir ekran açılacaktır. Eğer daha önce remote login tanımlandıysa Local Login yazan kısımda bu login’in adı yazar. Remote user kısmında oracle’da yetkisi olan kullanıcı adı yazar. Remote password kısmında da oracle da yetkisi olan kullanıcının şifresi yazar. Daha önce remote login tanımlanmışsa sadece remote password kısmından uygulamacının şifresini güncellemesini istiyoruz. Eğer linked server’ın kurulum aşamasında dba olarak remote login’i tanımlamadıysanız(ki bu doğru olandır) uygulamacıya bu ekrandan Add demesini,Local Login, Remote User ve Remote Password ‘ü girerek işlemi tamamlamasını söylemelisiniz. Yada aşağıdaki script’i çalıştırabilir.

 

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'XServer', @locallogin = 'myUser' , @useself = N'False', @rmtuser = N'oracleuser', @rmtpassword = N'oracleuserşifre'

Yukardaki ekrandaki For a login not defined in the list above,connections will kısmından “Not be made” ‘i seçmeniz daha güvenli olacaktır. Tanımladığınız local login dışındaki kimse bu linked server’ı kullanamayacaktır.

Bu işlem tamamlandıktan sonra server seviyesinde verdiğiniz alter any linked server, alter any login yetkilerini geri almalısınız.  Ben biraz garantici bir adam olduğum için bu yetkileri geri aldıktan sonra bu yetkilerle benim bilgim dışında bir işlem yapıp yapmadığından emin olmak için öncelikle aşağıdaki script yardımıyla bir login’in oluşturulup oluşturulmadığını ya da bir login’in şifresinin değiştirilip değiştirilmediğini kontrol ediyorum. Bu sorgunun sonucunda create date’i bugün olan ve bilgim dışında bir login olup olmadığını ve updatedate’i bugün olan ve bilgim dışında bir değişiklik olup olmadığını kontrol ediyorum.

select * from sys.syslogins order by createdate desc

Birde aynı instace üzerinde bulunan diğer linked server’lar üzerinde bir değişiklik olup olmadığını kontrol ederim. Aynı intance üzerindeki linked server’ları aşağıdaki scriptlerin yardımıyla öğrenebilirsiniz. Yada SSMS üzerinde Server Objects kısmından da erişebilirsiniz. Özellikle diğer instance’lara local login olarak başka bir login tanımlanmış mı buna bakmanızı öneririm.

select * from sys.sysservers

exec sp_linkedservers

 

 

Loading

Leave Your Comment