24 Haziran 2015 Çarşamba

Bir Tool daha... DBAToolkit

Selam!

Dosya arşivimde dolanırken buldum bu uygulamamı. Bu uygulamayı birkaç sene önce, çalıştığım bir şirkette eksikliğini gördüğüm bir uygulamada gördüğüm lüzum üzerine yazmaya başlamıştım. Sorunu maddelerle anlatayım:
- Yazılımcılara veya iş analistlerine, geliştirme, kalite kontrol ve üretim veritabanlarında kalıcı veya geçici yetkiler veriliyordu; fakat bu yetkilendirme işlemleri tamamen elle yapılıyor ve bu yetkilendirmelerin kayıtları bazı metin dosyalarında elle girilerek tutuluyordu. Verilen yetkilerin kayıtları metin dosyalarında tutulduğu için, verilen geçici yetkilerin geri alınmaları gerektiği zaman bu işlem atlanabiliyordu, tabii ki böyle bir işin takibi de çok zor oluyor.
- Yüzlerce veritabanı sunucusunun olduğu, işe giriş ve çıkış sirkülasyonunun da yoğun olduğu böyle bir ortamda tek tek SQL Server Instance'larına bağlanıp yetki vermek de çok zaman alıyordu.
- Hangi yetkinin kim tarafından, tam olarak ne zaman, kimin onayıyla, neye istinaden ve hangi açıklamayla verildiği bilinemiyordu.

Yukarıda sıraladığım temel sorunları çözmek için bir uygulama yazmaya karar verdim. Boş vakitlerimde uygulamayı adım adım geliştirdim. Uygulamayı kendim kullandığım için, işimi kolaylaştıracak özellikleri bulduğum boş bir vakitte hemen ekliyordum. Aynı şekilde bulduğum hataları da düzeltiyordum.

Zamanla uygulamayı tüm ekip arkadaşlarım da kullanmaya başladı. Tabii zamanla daha farklı ihtiyaçlarımız da oldukça, uygulamaya yeni bölümler ekleyerek bu ihtiyaçlarımızı da gidermeye başladık. Bu kadar konuşmanın ardından, en azından uygulamadan bir ekran görüntüsünü aşağıda paylaşmak istiyorum.

DBAToolkit
Bu gördüğünüz ekran, yetki verme işlemlerinin yapıldığı ekran. Uygulamanın bu hali, tamamen o şirkete özel halidir. Henüz paket programa çevirmedim, şimdilik öyle bir niyetim de yok. Bununla birlikte, biraz elden geçirmeyle yeni bir şirkete rahatlıkla uyarlanabilir ve hatta paket programa da çevrilebilir.

Yukarıdaki yetkilendirme ekranını aşağıda madde madde anlatayım. Şimdiden söyleyeyim vereceğim bilgiler özettir, uygulamanın daha birçok ayrıntısı bulunmaktadır.
- Yetkiler "Geçici" veya "Kalıcı" olarak verilir. Yetkinin alınacağı tarih "Alınma tarihi" alanında belirtilir.
- "Sunucu adı" listesinden sunucu seçildiğinde "Veritabanı adı" listesi otomatik olarak dolar, keza veritabanı seçildiğinde de "Roller" listesi seçili veritabanındaki Database Role'leriyle dolar. Bu işlem ve hedef sunucu ile ilgili yapılan tüm işlemler o anda uygulamayı kullanan kişinin Windows oturumu açtığı kullanıcı ile yapılır, bu nedenle yetkisiz bir kullanıcı bu uygulamayı zaten kullanamaz.
- "Açıklama" bölümüne, yetkinin kimin onayıyla verildiği bilgisi yazılabilir.
- "Çağrı numarası" alanına, yetkinin bir çağrı ile talep edildiği varsayılarak hangi çağrı kaydıyla talep edildiyse o çağrının numarası girilir. Böylelikle yetkilendirme işlemi, ilgili çağrı ile ilişkilendirilmiş olur ve örneğin teftiş yetkinin neye istinaden verildiğini sorduğunda kanıt hemen bulunabilir.
- Bazı senaryolarda, bazı sunuculara doğrudan uygulama ile erişemeyebilirsiniz ve yetkilendirmeyi o sunucuya RDP yapıp vermeniz veya başka bir şekilde vermeniz gerekebilir. Böyle durumlarda ise yetkilendirme işleminin yine de kayıt altına alınabilmesi için "Kayıt şekli" açılır kutusunda "Sadece kaydet" seçeneğini seçebilirsiniz. Eğer hem işlemi kaydetmek isterseniz hem de yetkiyi uygulamaya verdirtmek isterseniz o zaman "Kaydet ve yetkilendir" seçeneğini seçebilirsiniz.
- "Ara" düğmesini kullanarak önceden vermiş olduğunuz bir yetkiyi ID'sine, Çağrı numarasına, Kullanıcı adına göre veya iki tarih arasında arayabilirsiniz.
- "Yetkileri eşleştir" seçeneği ile, bir veritabanında (veya tüm veritabanlarında) DBAToolkit ile verilen yetkileri ve o veritabanlarında verilmiş yetkileri karşılaştırabilirsiniz. Böylece DBAToolkit ile verilmemiş, yani kayıt dışı yetkileri tespit edebilirsiniz.
- "Yetkilendirme listesi"ndeki kayıtların üstünde farenin sağ tuşuna tıklarsanız çeşitli seçenekler bulursunuz. Örneğin bazen kullanıcılar "işimi bitiremedim, yetki iznimin uzatılması gerekiyor" gibi taleplerle gelebiliyor, yöneticisi de onayladığında yetki alınma süresi gelmiş bir kaydın yetki alınma süresini 1-2 fare tıklamasıyla erteleyebilirsiniz.
- Aşağıdaki "İşlem tarihçesi" listesinde, yapılan işleme ait ayrıntılı bilgileri bulabilirsiniz. Örneğin yetki verilen kişinin önceden hedef SQL Server Instance'ında bir Login'i yoksa, bunun oluşturulduğu bilgisi, veritabanına önceden erişimi yoksa, veritabanı erişim yetkisinin verildiği, ilgili role üye yapılma onayı ve eğer işlem hata aldıysa alınan hata mesajı bu şekilde kaydedilir.
- "Listeleme kriterleri", "Yetkilendirme listesi"ndeki kayıtların ne şekilde listeleneceğini belirler. Örneğin sadece bu ayki kayıtlar veya son 100 kayıt gibi. Ayrıca sadece hata alan yetkilendirme işlemleri ve/veya geçici yetkilendirmelere ait işlemler de listelenebilir.

Yukarıdaki ekran görüntüsündeki her sekmeden ayrı ayrı bahsetmeyeceğim, ama bazılarından bahsedeyim,
- "Log Shipping" sekmesinde Log Shipping'lerinizin ne durumda olduğunu görebilirsiniz. Ne kadar geride kalmışlar, Restore'lar devam ediyor mu vs.
- "Disk talepleri" sekmesinde, SAN ekibinden yaptığınız disk taleplerini takip edebilirsiniz. Özellikle yoğun ortamlarda SAN ekiplerinden bol bol disk talepleri yaparız, yeni bir disk veya varolan diskin büyütülmesi gibi. Bu talepler için çağrılar açarız, fakat açtığımız çağrıların takibini yapmak, tabii ki kullandığımız Service Desk uygulamasına da bağlı olarak oldukça zor olabilir. Bu sekmeden yaptığımız talepleri takip etmemiz kolaylaşıyor.
- "Sunucu karşılaştır" sekmesini daha ziyade Side-by-side Upgrade işlemlerinde yeni kurduğumuz sunucu ile eski sunucunun Server Configuration ayarlarını karşılaştırmak için kullanıyordum. Örneğin X1 isimli sunucu varolan SQL Server 2008 sunucumuz, o anda adı X2 olan yeni donanımlı sunucumuz da SQL Server 2012 sunucumuz. X1 Instance'ındaki ayarlarımızı X2'ye aktarmak istediğimizde, bu sekme ile doğrudan iki Instance'ı karşılaştırabiliriz. Farklılıklar farklı renklerle işaretleniyor ve doğrudan ve tek tek X2 Instance'ına uygulanabiliyor.
- "Müşteriler" sekmesi, özellikle birden fazla müşteriniz olduğunda çok kullanışlı olabiliyor. Müşterilere ait sunucu ve kullanıcı isimleri, bunların hangi ortamlara (geliştirme, üretim vs) ait oldukları gibi bilgiler bu sekmeden yönetiliyor.

Bu yazıyı kısa kesmek için birçok şeyi sadece özet olarak paylaştım, her sekmenin veya özelliğin ekran görüntüsünü de paylaşamadım. Uygulama birçok açıdan daha da güzelleştirilebilir ve uygun bir ortam olduğunda bunu da yapacağım. Önceden belirttiğim gibi, uygulama bu haliyle ortam-spesifik olduğu için herhangi bir yerde paylaşamıyorum.

Nasıl? Bir DBA olarak bu uygulama hakkında ne düşünüyorsunuz? Kendi ortamlarınızda böyle bir uygulamaya ne kadar ihtiyacınız var?

Sevgiler,
Ekrem Önsoy


Hiç yorum yok: