Always-On Mimarisinde gMSA Hesabı Tanımlama

Bu makalede Always-On mimarisinde SQL Server Engine ve Agent kullanıcı hesaplarının domainde gMSA kullanıcı hesabı olarak değiştirme işlemlerinin yapılması anlatılmıştır. Step 1: gMSA kullanıcı Tanımlamak için ilk önce tanımlanacak cluster’a bağlı sunucularda server manager kısmında role administration kısmından tanımlama yapılır. Step 2: Active Directory den gMSATEST (Kullanıcı adı SQL Server Engine üzerinde görüneceğinden bu ad tamamen sizin isteğinize bağlıdır.) kullanıcısı oluşturulur. Step 3: Active Directory’den aşağıdaki komutla gMSA kullanıcıları için yeni oluşturulacaklar dâhil otomatik SPN yapılması için ayar yapılır. -- dsacls (Get-ADServiceAccount -Identity gMSATEST).DistinguishedName /G "SELF:RPWP;servicePrincipalName" Step 4: PowerShell üzerinden (Her bir clustera bağlı sunucular üzerinden tek tek yapmaya gerek yok tek birinde yapmamız tüm cluster’a bağlı sunucularda ayar uygulanmakta) Step 5: Server Manager’dan Role feature’lardan Remote Server Administration altında ad-ds kısmı yüklenir. PS C:Windowssystem32> Install-ADServiceAccount gMSATEST PS C:Windowssystem32> Test-ADServiceAccount gMSATEST True PS C:Windowssystem32> Get-ADServiceAccount -Identity gMSATEST -Properties PasswordLastset Yukarıdaki scriptlerden dönüş alınması önemli alınmadığı takdirde; get-adserviceaccount -Identity gMSATEST-properties PrincipalsAllowedToRetrieveManagedPassword […]

Always-On Mimarisinde gMSA Hesabı Tanımlama

Bu makalede Always-On mimarisinde SQL Server Engine ve Agent kullanıcı hesaplarının domainde gMSA kullanıcı hesabı olarak değiştirme işlemlerinin yapılması anlatılmıştır.

Step 1: gMSA kullanıcı Tanımlamak için ilk önce tanımlanacak cluster’a bağlı sunucularda server manager kısmında role administration kısmından tanımlama yapılır.

Step 2: Active Directory den gMSATEST (Kullanıcı adı SQL Server Engine üzerinde görüneceğinden bu ad tamamen sizin isteğinize bağlıdır.) kullanıcısı oluşturulur.

Step 3: Active Directory’den aşağıdaki komutla gMSA kullanıcıları için yeni oluşturulacaklar dâhil otomatik SPN yapılması için ayar yapılır.

-- dsacls (Get-ADServiceAccount -Identity gMSATEST).DistinguishedName /G "SELF:RPWP;servicePrincipalName"

Step 4: PowerShell üzerinden (Her bir clustera bağlı sunucular üzerinden tek tek yapmaya gerek yok tek birinde yapmamız tüm cluster’a bağlı sunucularda ayar uygulanmakta)

Step 5: Server Manager’dan Role feature’lardan Remote Server Administration altında ad-ds kısmı yüklenir.

PS C:Windowssystem32> Install-ADServiceAccount gMSATEST

PS C:Windowssystem32> Test-ADServiceAccount gMSATEST

True

PS C:Windowssystem32> Get-ADServiceAccount -Identity gMSATEST -Properties PasswordLastset

Yukarıdaki scriptlerden dönüş alınması önemli alınmadığı takdirde;

get-adserviceaccount -Identity gMSATEST-properties PrincipalsAllowedToRetrieveManagedPassword

script ile sunucu isimleri kontrol edilir. Sunucular doğru ise devam edilir (değer olarak 0’lı bir guid Id basacaktır) farklı ise AD Ekibinden değişiklik istenir.

Script Çıktısı Örn.

DistinguishedName : CN=gMSATEST,CN=Managed Service Accounts,DC=intranet,DC=intra

Enabled: True

Name: gMSATEST

ObjectClass: msDS-GroupManagedServiceAccount

ObjectGUID: 2z1c887ep-52a5-4dd2-3125-101s6c8c1453

PasswordLastSet: 07.06.2021 10:58:42 AM

SamAccountName: gMSATEST$

SID: S-8-2-31-2884678545-789615522-620645608-1474186

Step 6: SQL Server Configuration Manager’dan sunucu için servis hesapları değiştirilecektir. Değişim sonrası engine restart edilir.

Step 7: gMSA hesabı oluşturulan Instance’da kullanıcıları oluşturup endpoint ayarı yapılması gerekiyor. (Bu ayar yapılmazsa AlwaysOn endpoint’ler değiştirmeden önce disconnect oluyor);

select * from sys.endpoints

USE [master]
GO

CREATE LOGIN [DomaingMSATEST$] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]

GO

ALTER AUTHORIZATION ON ENDPOINT:: Hadr_endpoint TO [DomaingMSATEST$];

alter endpoint Hadr_endpoint state=stopped

go

alter endpoint Hadr_endpoint state=started

Step 8: Kullanıcının (Engine Kullanıcısı, bizim Engine Kullanıcımız ‘Domaintestuser’) tüm sahiplikleri kaldırıldıktan sonra aşağıdaki işlemler yapılır.

-1-) Database Owner Change Script; Kullanıcının sahip olduğu tüm database sahiplikleri [sa] olarak değiştirilir.

SELECT'ALTER AUTHORIZATION ON DATABASE::[' + name + '] to [sa]' FROM sys.databases WHERE SUSER_SNAME(owner_sid) = 'Domaintestuser'

 

–2-) Database Jobs Change Script; Agent kullanıcısında gMSA yapacağımız için buradaki tüm sahiplikleri [sa] olarak değiştirilir.

select'EXEC msdb.dbo.sp_update_job @job_id=N'''+convert(varchar(250),s.job_id)+''', @owner_login_name=N''sa'''

frommsdb..sysjobs s

leftjoin master.sys.syslogins l on s.owner_sid = l.sid

wherel.name = ’Domaintestuser '

 

–3-) Availability Group Sahiplik Scripti; ile eski kullanıcı eğer availability group sahibi ise sahiplikleri değiştirilir.

SELECT' alter authorization on availability group::'+ ag.name + ' to sa'

FROMsys.availability_replicas ar

LEFTJOIN sys.server_principalssp

ON sp.sid = ar.owner_sid

INNERJOIN sys.availability_groups ag

ON ag.group_id = ar.group_id

WHERE ar.replica_server_name =SERVERPROPERTY('ServerName') and sp.name= ' Domain testuser ';

 

–4-) Schema ve Object Sahiplik Scripti; ile eski kullanıcı eğer schema ve object sahibi ise sahiplikleri değiştirilir. Bu değişikliği loop döngüsünde yapan sistem sp’si ile yapılır.

EXECUTE MASTER.sys.sp_MSforeachdb 'use [?]; SELECT db_name(),name FROM  sys.schemas WHERE principal_id = USER_ID('' Domaintestuser'')'

EXECUTE MASTER.sys.sp_MSforeachdb 'use [?]; SELECT db_name(),name FROM  sys.objects WHERE principal_id = USER_ID(testuser'')'

 

–5-) Login Açık olan Kullanıcı Scripti; aşağıdaki script ile tespit edilip kill edilir.

Sp_WhoIsActive @show_sleeping_spids=2

 

Step 9: Tüm bu işlemler bittikten sonra aşağıdaki adımlar kontrol edilir, varsa değiştirilmesi gereken adımlar değiştirilir.

  • Eski servis kullanıcısın bilgisayarlarda sign off olduğundan emin olunmalı.
  • Alınan Son backup kontrollerinin çalışması için credential hesabının değiştirilmesi ve bu kullanıcı veri tabanlarında sysadmin olarak eklenmeli.
  • Backup Alınan dosyalarda eski servis kullanıcısın yetkisi olduğundan yeni bir folder oluşturulup advance share yaparak. Yeni servis hesabına full control verilmeli ve everyone yetkisi kaldırılmalı.
  • Eski servis hesabının, yeni servis hesabı eklenen sunucuların computer management=>Local User and Groups kısmından kaldırılması.
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