Proxy Hesabı ile Job Çalıştırma

Bu makalede Proxy hesabı ile job tanımlama işlemini ele almış olacağız. Sql Server kurulumu yaparken servis hesaplarını Active directory üzerinde oluşturmuş olduğumuz minumum yetkilere sahip bir kullanıcı tanımlarız. Bu kullanıcı sadece sql servisleri için oluşturulur ve minumum seviyede yetki verilmesi gerekir. Oluşturulan bu kullanıcının farklı bir işlemde kullanılmaması tavsiye edilmektedir. Servis hesaplarına tanımladığımız kullanıcıların Windows üzerinde sahip olması gereken bazı yetkiler haricinde sysadmin vb. bir yetki verilmesi tavsiye edilmez. Not olması açısından Sql server servis hesabına verilecek minumum yetkilerden bazıları aşağıda belirtilmiştir. Windows arama yerine Run yazıyoruz. Gelen ekranda secpol.msc yazarak Local Security Policy bölümüne giriyoruz. Gelen ekranda Local Policies>User Rights Assignment  bölümünde gerekli bazı konfigürasyonların yapılması gerekmektedir. Şimdi bu yetkilendirmelere değinelim.   Bypass traverse checking: Bu yapı  Windows dosyaları arasında   geçişler ve yapılacak  işlemler için  izin almadan çalışabilmesini sağlar. Log on as a service:  Windows üzerinde tanımladığınız uygulamamın bir servis gibi çalışabilmesine izin verir. Bu yüzden sql server servis hesabını ve sql server agent servis hesabının burada tanımlanması gerekmektedir. Lock Pages […]

Proxy Hesabı ile Job Çalıştırma

Bu makalede Proxy hesabı ile job tanımlama işlemini ele almış olacağız. Sql Server kurulumu yaparken servis hesaplarını Active directory üzerinde oluşturmuş olduğumuz minumum yetkilere sahip bir kullanıcı tanımlarız. Bu kullanıcı sadece sql servisleri için oluşturulur ve minumum seviyede yetki verilmesi gerekir. Oluşturulan bu kullanıcının farklı bir işlemde kullanılmaması tavsiye edilmektedir.

Servis hesaplarına tanımladığımız kullanıcıların Windows üzerinde sahip olması gereken bazı yetkiler haricinde sysadmin vb. bir yetki verilmesi tavsiye edilmez.

Not olması açısından Sql server servis hesabına verilecek minumum yetkilerden bazıları aşağıda belirtilmiştir.

Windows arama yerine Run yazıyoruz. Gelen ekranda secpol.msc yazarak Local Security Policy bölümüne giriyoruz. Gelen ekranda Local Policies>User Rights Assignment  bölümünde gerekli bazı konfigürasyonların yapılması gerekmektedir. Şimdi bu yetkilendirmelere değinelim.

C:\Users\xyunu\Pictures\3-19.png

 

Bypass traverse checking: Bu yapı  Windows dosyaları arasında   geçişler ve yapılacak  işlemler için  izin almadan çalışabilmesini sağlar.

Log on as a service:  Windows üzerinde tanımladığınız uygulamamın bir servis gibi çalışabilmesine izin verir. Bu yüzden sql server servis hesabını ve sql server agent servis hesabının burada tanımlanması gerekmektedir.

Lock Pages In Memory: Bu yapı ile sql server’ın sahip olduğu memory’in Windows’a geri verilmesi engellenmiş olur. Bu yapıda buffer pool için windows’dan almış olduğu memory’i bir daha windows’a iade etmez. Bu ayarı yapmadan önce windows’a gerekli ram miktarı bırakmalıyız.

Log on as a batch job: SQL Server üzerinden windows üzerinde bir işlem yapılması gerektiğinde(örneğin bazı scriptler içeren bir bat dosyası çalıştırmak) sql server’ın kullanacağı hesabın burada tanımlanması gerekir.

Servis hesaplarının yukarıda belirtilen yetkilendirmelerinden sonra kaldığımız yerden devam edelim.

Sql Agent Servis hesabı aşağıdaki belirtilen işlemlerden birini job aracılığıyla yapmaya çalıştığı zaman hata mesajıyla karşılaşırız. Bu hata yapısının önüne geçmek için Proxy yapısı kullanılmaktadır.

SQL Server Agent altında bulunan Proxy, bir SQL Server Agent görevinin (job step) başka bir kullanıcı hesabı ya da güvenlik bağlamında çalışmasını sağlar. Bir SQL Server Agent job’ının adımlarını (job step) farklı güvenlik kimlikleri ile çalıştırmak gerekebilir, bu durumda proxy devreye girer. Proxy, belirli bir job adımının çalıştırılmasında credential’ı kullanır. Proxy, bir ya da birden fazla SQL Server Agent alt sistemini kullanabilir (Transact-SQL, ActiveX Script, PowerShell, vb.). Proxy’ye tanımlanan kimlik bilgileri, proxy’nin hangi job adımlarını çalıştıracağını kontrol eder. SQL Server Agent job’larına proxyler atayarak, hassas yetkiler gerektiren işlemleri sınırlayabilir ve güvenliği artırabilirsiniz.

Credential, SQL Server’daki oturum açma bilgilerini depolayan bir nesnedir. Bu nesne, SQL Server dışındaki bir kaynağa erişim sağlamak için kullanılabilir. Örneğin, dosya paylaşımı, ağ kaynağı gibi sistem dışı bir kaynağa erişmek için bir credential tanımlanabilir. Credential’lar, bir kullanıcı adı ve parolayı güvenli bir şekilde depolar ve SQL Server, bu bilgilere ihtiyaç duyduğunda kullanır.

Credential oluşturulmadan önce, tanımlanacak Windows kullanıcısına Windows üzerinde log on as a batch job hakkı verilmelidir. Alacağımız hatalar doğrultusunda Login’e bazı ekstra yetkiler de  verebilir. Makalenin başında Active directory üzerinde kullanıcı oluşturmalıyız demiştik. Kullanıcıyı local bilgisayar üzerinde de oluşturulur. Oluşturulan kullanıcının engellemelere takılmasını istemiyorsanız kullanıcının administrator grubuna eklenmesi gerekmektedir.

Şimdi Proxy kullanan bir job oluşturarak örnek yapalım.

Windows üzerinde oluşturulmuş olan kullanıcıya Log on as a batch job  yetkisi verilmektedir.  Oluşturduğunuz kullanıcıya bu yetkiler verilmeye bilir. Hata sunucu yetkilendirilmelerin yapılması gerekir.

Windows arama yerine secpol.msc yazılır. Daha sonra gelen ekranda Local Policies kısmında User Rights Assignment  kısmına girilir. Gelen kısımda Log on as a batch job  ifadesi çift tıklanıp Add user or Group.. kısmından Active Directory tarafında oluşturulmuş olan YCL2024\ProxyUser kullanıcısı eklenir.

Not: YCL2024\ProxyUser kullanıcısı sql server üzerine login eklenir. Local’imizde oluşturduğumuz kullanıcının da sql server’a eklenmesi gerekir. Sql server üzerinde oluşturulan loginler de herhangi bir yetkilendirme veya General sekmesinde credential seçilmez. Boş bir login olarak yapılandırılır.

Yukarıdaki ayarlamalardan sonra Security sekmesi altında Credential.. kısmında bir credential oluşturulur. Sql Server dışındaki bir ortama bağlanmak için kullanacağımız yapı. Aslında 2. Bir Sql Server servis kullanıcısı da diyebiliriz. Bunu kendimiz oluşturuyoruz.

Gelen ekranda active directory üzerinde oluşturduğumuz ve Windows üzerinde Log on as a batch job  yetkisi verdiğimiz kullanıcı olarak karşımıza çıkmaktadır. Sql Agent servis yerini görecek kullanıcımız.

Yukarıdaki işlemleri tamamladıktan sonra OK deyip bir sonraki adıma geçiyoruz. Sql Server Agent altında bulunan Proxies kısmına sağ tıklanır ve New Proxy.. denilir. Genel olarak Proxy oluşturabildiğimiz gibi her bir subsystem altında da  özel olarak oluşturulabilir.

Gelen ekranda  Proxy ismimizi yazıyoruz ve kullanacağımız Credential’ı  3 noktaya tıklayıp seçiyoruz. Daha sonra Active to the following subsystems yazan yerden hangi subsystem ‘i kullanacaksak işaretliyoruz.  Tüm Subsystem’leri seçebiliriz. Ya da istediğimiz Subsystem’i seçip yükleme yapılmaktadır.

Yukarıdaki resimde ilgili ayarlamaları yaptıktan sonra Principals kısmına tıklanır. Add denilerek belirli konfigürasyonlar yapılabilir.

Gelen ekranda Principals type üzerine tıklayıp SQL Server loginleri, Server rolleri ya da msdb veritabanındaki rolleri, proxy’i kullanacak şekilde ayarlayabiliriz. Sysadmin’ler için bu işlemi yapmaya gerek yoktur. Principal kısmında herhangi bir işleme gerek yoktur. Boş da bırakılabilir. Credential  ismi ile gelen login’e ekstra bazı haklar verilir.

Job’ın owner’ı olarak A kullanıcısını seçmiş olduk. Bu kullanıcının ekstra yetkilere gerek yoktur. Vekil olarak A kullanıcısı Job’ı çalıştırmış olacak. Burası boşta bırakılabilir.

Tüm bu adımlardan sonra işlemimizi oluşturuyoruz. Aktif olan subsystemler üzerinde oluşturduğumuz proxy’in geldiğini görmüş oluyoruz. Genel bir şekilde Proxy oluşturduğumuz için tüm subsystemleri seçtiğimiz için  tüm subsystem altına gelmiş oldu.

Yukarıdaki  adımlardan sonra bir Job oluşturalım. Bu job Operating system(CmdExec)   ile Windows üzerinden Sql Server’ın  bir işlem yapmasını sağlamış olacağız. Yukarıda da belirtmiştik Job’ın Owner’ı yukarıda tanımlamış olduğum A kullanıcısı üzerinde gitmiş olacaktır. Herhangi yetkisiz bir login’de olabilir.

Sql Agent altında Jobs bölümünde sağ tıklayıp New Jobs diyiyoruz.

Gelen ekranda Job’a bir isim verdikten sonra  Job’ın owner’ını A login’i olarak değiştiriyorum. Sa, A veya başka bir  kullanıcı yeter ki Job çalıştıran bir kullanıcı olsun.

Steps bölümünde Job’ımın adımını tanımlıyorum. Step name kısmında bir CMD1 adında bir isim belirlemiş olduk. Type kısmında Operating system(CmdExec)’ı  seçiyoruz. Run as kısmında ise tanımlamış Proxy üzerinde çalışmasını istediğimiz için ProxyJob’ı seçiyorum. Run as kısmından Sql Agent servisi’de seçilebilirdi. Hiyerarşiyi takip ederseniz ProxyJob ismi bir Credential değerine bağlı Credential ise dış dünyaya açılan bir yapı olarak karşımıza çıkmaktadır.

İlgili kopyalama komutunu Command bölümüne yapıştırıyorum.

xcopy /s c:\C2 c:\C1

 

Job’ımızı oluşturduktan sonra  çalıştırdığımızda Hata mesajı almış olduk.

View History’den ilgili job’a baktığımızda aşağıdaki hata mesajını almış oldum.

İlgili hatayı incelediğimde YCL2024\ProxyUser kullanıcısına Log on as a batch job  üzerinde yetki verilmediğini gözlemliyorum. Secpol.msc altında ilgili uzantıya kullanıcımızı tanımlıyoruz.

Credential altında oluşturduğumu kullanıcı  klasörlere ulaşamıyor diye klasör bazlı yetki vermiş oldum. Aslında minumum yetkilere sahip olan sql servisinde de bu yetkilendirmeler yapılabilir.

Yukarıdaki tanımlamaları yaptıktan sonra Proxy aracılığıyla Job çalıştırmayı başarılı bir şekilde gerçekleştirmiş olduk.

Başka bir makalede görüşmek dileğiyle..

Benzer Yazılar

SQL SERVER RIGHT-LEFT PARTITION

SQL Server 5 gün önce

SQL Server’da partitioning, büyük veritabanı tablolarını daha yönetilebilir ve performanslı hale getirmek amacıyla kullanılan bir tekniktir. Bu teknik, tablonun verilerini fiziksel olarak değil, mantıksal olarak parçalara ayırır. Veriler, belirli bir partition function ve partition scheme kullanılarak farklı bölümlere yönlendirilir. Partitioning, özellikle büyük veri kümeleriyle çalışan veri tabanlarında sorgu performansını artırır ve veri yönetimini kolaylaştırır. Partition Function ve Partition Scheme nedir? Partition Function: Verilerin hangi kriterlere göre bölüneceğini belirler. Örneğin, bir tarih aralığına göre verileri ayırmak. Partition Scheme: Verilerin hangi filegroup’larda depolanacağını belirler.   Örnek olarak Range LEFT ve Range RIGHT olmak üzere iki ayrı tabloda partition nasıl yapılır sizlere göstereceğim. İlk olarak Range LEFT olan partition yapısından başlayacağım. Öncelikle Veri tabanıma yeni filegroup ve file ekliyorum Şimdi sıra FUNCTION ve SCHEME oluşturmakta ben tablomu yıllık olarak partition yaptım sizler ihtiyaçlarınız doğrultusunda aylık,günlük vs yapabilirsiniz. LEFT partition dediğimiz olay vermiş olduğunuz tarih aralığına eşit bir veri geldiğinde bu veriyi solundaki partition […]

Veritabanı Recovery Pending Durumu ve Düzeltme Seçenekleri

SQL Server 2 hafta önce

İçindekilerVeritabanı Recovery Pending Durumu Nedir?Veritabanı Neden Recover Pending Duruma Düşer?Recovery Pending Durumu Nasıl Çözülür?SonuçKaynaklarVeritabanı Recovery Pending Durumu Nedir? SQL Server’da veritabanları bazı nedenlere bağlı olarak “Recovery Pending” (Kurtarma Bekleme)  moduna geçebilir. Veritabanın düzgün bir şekilde kapatılmaması, eksik veya bozuk log dosyaları, disk depolama sorunları, sistemde yaşanan anormal şekilde çökmeler veya MS SQL Server’daki hatalar bu duruma sebep olabilir. Recovery durumu, aslında veritabanını tekrar kullanılabilir hale getirmek için bir kurtarma işlemi yürüttüğünü ifade eder ve üç aşamadan oluşur; Analysis (Analiz): Transaction log incelemesi yapılması ve işlemlerin tamamlanma (Commit) durumunun kontrol edilmesi, Redo (Yeniden İşleme): Tamamlanmış (Commit) ancak henüz diske yazılamamış olan işlemlerin yeniden işlenmesi, Undo (Geri Alma): Başlamış (Begin) ancak tamamlanmamış (Commit) işlemlerin  geri alınmasıdır.   Veritabanı Neden Recover Pending Duruma Düşer? SQL Server Restart Süreci SQL Server servisi restart edildiğinde üzerinde bulunan tüm veritabanları tutarlılığın sağlanması için otomatik olarak recovery moduna girer ve redo/undo işlemleri sürecince devam eder. Ani Sistem […]

SQL Server DMV ve DMF – 6

SQL Server 2 hafta önce

Bu yazımızda DMV ve DMF Serimizin 6.sına devam edeceğiz. Bir önceki seride Memory’ye ilişkin DMV ve DMF’leri ele almıştık. Bu yazıda Memory konusunda devam edeceğiz. SQL server’da Memory kavramı en önemli kavramlardan biridir. Özellikle tüm transaction işlemlerinin önce Buffer sonra disk üzerinden devam ettiğini düşünürsek buffer’ın oynadığı kritik rolü daha iyi anlayabiliriz. Bu yazıda Memory’nin durumunu ve monitör edilmesine bakacağız. Özellikle Performans sorunlarında memory konusunda sorun yaşandığı durumda nasıl okumak gerektiği önemli rol oynamaktadır. Hangi database’de, hangi tablo’da sorun yaşandığına ilişkin bilgilere bu paylaşım sonrasında görebileceğiz. SQL Server’ın Memory kullanım durumunu incelediğimde; select physical_memory_in_use_kb/1048576.0 AS ‘physical_memory_in_use (GB)’, locked_page_allocations_kb/1048576.0 AS ‘locked_page_allocations (GB)’, virtual_address_space_committed_kb/1048576.0 AS ‘virtual_address_space_committed (GB)’, available_commit_limit_kb/1048576.0 AS ‘available_commit_limit (GB)’, page_fault_count as ‘page_fault_count’ from  sys.dm_os_process_memory; Görsel – 1   Physical_memory_in_use: Kullanımda olan Fiziksel Memory miktarını gösterir. locked_page_allocations: Memory’de lock’lanmış olan Page’lerin miktarını belirtir. virtual_address_space_contained: SQL Server VAS(Virtual Adress Space) için ayrılan miktarı belirtir. available_commit_limit: SQL Server tarafından kullanılabilecek Memory Miktarını gösterir. […]

0 Yorum

Yorum Yaz

Rastgele