ADFS ve Web Application Proxy sunucularının kurulumu
Makalemizin son bölümünde ADFS ve Web Application Proxy sunucularını kuracağız, network gereksinimlerini gözden geçireceğiz ve sistem kurulumu bittikten sonra ADFS üzerinden bir kimlik doğrulaması testi yapacağız.
Azure paneline girip yeni ilk ADFS sanal makinemizi oluşturalım. Aynı SQL Server’da olduğu gibi bu makineler de bir load balancer’ın arkasında duracağı için yeni bir Availability set oluşturmamız gerekiyor. Diğer ayarları da yaptıktan sonra, ikinci ADFS sunucusunu da oluşturalım ve bir önceki adımda oluşturduğumuz Availability seti seçelim.
Aynı işlemi 2 adet Web Application Proxy makinesi için de tekrar edelim. Her makine çiftini ayrı availability set’in arkasına koymayı unutmayın.
Makineler oluştuktan sonra her iki makine çifti için de ayrı load balancer’lar oluşturacağız. ADFS için internal, WAP için external tipte load balancer oluşturmamız gerekiyor.
ADFS için oluşturacağımız load balancer’ın özellikleri aşağıdaki resimdeki gibi olacaktır:
Load balancer oluştuktan sonra ilk önce backend pool, health probe ve load balancing rule oluşturacağız:
ADFS ve WAP 443 portu üzerinden haberleşeceği için port, backend port ve health probe’u 443 portu olacak şekilde ayarlamamız yeterli.
WAP dış dünyaya bakan bacak olacağı için önüne konumlandıracağımız load balancer, external tipte olmalı ve statik bir public IP’ye sahip olmalı. Dolayısıyla load balancer oluştururken bu iki parametreye dikkat etmemiz gerekiyor.
Load balancer’ı açtıktan sonra yine sırayla Backend Pool oluşturup Availability set arkasındaki WAP sunucularımızın Ethernet arayüzlerini göstereceğiz. İletişimde 80 ve 443 portları kullanılacağı için her ikisi için de health probe oluşturup sonrasında load balancing rule oluşturacağız.
Hem 80 hem de 443 portları için ayrı Load Balancing Rule oluşturalım.
ADFS hizmeti için bir adet domaine ve SSL sertifikasına ihtiyacımız var. Bu domain, şayet ADFS’i WAP üzerinden dışarı açacaksanız gerçek (routable) bir domain olmak zorunda ve bütün iletişim SSL üzerinden gerçekleştiği için bir sertifika otoritesinden sertifika almanız gerekiyor. Ben örnek olarak sahip olduğum “bulutmekani.com” alan adı için LetsEncrypt kullanarak ücretsiz bir SSL sertifikası ürettim. ADFS içinse adfs.bulutmekani.com sub domainini kullandım. Alacağınız sertifika wildcard değilse ADFS hizmeti için kullanacağınız sub domaini SAN (Subject Alternative Name) olarak sertifikaya eklemeyi unutmayın.
ADFS ve WAP kuruluma başlamadan önce SSL sertifikasını bütün ADFS ve WAP sunucularına kuralım. PFX uzantılı sertifika dosyamıza çift tıklayıp içeri aktarma işlemini başlatabiliriz. Kurulumun ilk aşamasında Store Location olarak Local Machine’i seçelim. Diğer adımları varsayılan ayarlarda bırakabiliriz.
Sertifika aktarım işlemi bittikten sonra AD’de söz konusu sub domain için bir A kaydı açmamız gerekiyor. A kaydı, Azure’da ADFS sunucuları için oluşturduğumuz Load Balancer’ın IP adresine yönlenmeli.
ADFS hizmetini WAP üzerinden dışarıya açtığımızda ADFS hizmetine erişilebilmesi için söz konusu sub domainin WAP’ın önündeki Load Balancer’a ait public IP yönlendirilmiş olması gerekiyor. İstekler önce WAP sunucusuna, onun üzerinden de ADFS sunucusuna iletilecek. Dolayısıyla söz konusu alan adını satın aldığınız hizmet sağlayıcının DNS paneline veya Public DNS sunucunuza girip ADFS hizmet adresi için (bizim örneğimizde adfs.bulutmekani.com) bir A kaydı açmamız gerekiyor. Ben public DNS yönetiminde Azure DNS kullandığım için bu işlemi orada gerçekleştirdim. Siz de ortamınızın şartlarına göre bu işlemi gerçekleştirmeniz gerekiyor.
Bu işlem de bittikten sonra ADFS kurulumuna geçebiliriz. Server Manager’dan Active Directory Federation Services rolünü seçerek kurulumu başlatalım. Kurulum bittikten sonra konfigürasyon sihirbazı tetiklenecektir.
Bu sayfada “Create the first federation server in a federation server farm” opsiyonunu seçip ilerleyelim.
Sertifika kısmında yüklediğimiz sertifikayı seçelim ve sonrasında Federation Service Name kısmında belirlediğimiz sub domaini seçelim. Display Name kısmına oturum açma sayfasında gözükmesini istediğiniz bir metni (şirket adı gibi) yazabilirsiniz.
Serimizin en başında bahsettiğimiz üzere gMSA kullanacağız. Create a Group Managed Service Account’u seçip bu hesaba vermek istediğimiz ismi belirleyelim. Bu işlemleri yapabilmek için domain admin yetkisine sahip olmanız gerekiyor. Şayet bu yetkiniz yoksa domain yöneticiniz bu hesabı oluşturup size bilgileri verebilir.
Bu adımda SQL sunucumuzu seçmemiz gerekiyor. Bizim yapımızda AlwaysOn AG söz konusu olduğu için AG Listener için oluşturduğumuz DNS ismini yazıyoruz. Kurulumu başlattığınız domain kullanıcısının SQL server’larda sa yetkisi sahip olması gerektiğini unutmayın. Default Instance kullandığımız için Database Instance kısmını boş geçiyoruz.
Yaptıklarımızı son bir defa gözden geçirdikten sonra Next butonuna basıp kurulumu devam ettiriyoruz.
Kurulum bittikten sonra SQL sunucularımızdan Primary Replica rolünde olana SSMS ile bağlanıp kontrol ettiğimizde “AdfsArtifactStore” ve “AdfsConfigurationV4” isminde iki adet yeni veri tabanı oluşturulduğunu görüyoruz. Ayrıca Login’ler arasına ADFS için oluşturulan gMSA hesabının eklendiğini ve bu hesaba iki veri tabanı üzerinde de “dw_owner” ve “db_genevaservice” yetkilerinin verildiğini gözlemliyoruz.
Primary Replica üzerinde yeni oluşturulan veri tabanlarımızı AlwaysOn AG’ye dahil etmemiz gerekiyor ki her iki SQL sunucuda da veri tabanları senkron hale gelsin. Veri tabanlarının Recovery Model’inin Full olduğunu kontrol ettikten sonra yedeklerini alalım. Sonrasında AlwaysOn High Availability sekmesi altında daha önceden oluşturduğumuz AG’ye sağ tıklayalım ve “Add database” seçeneğini seçelim.
Next butonuna tıklayarak hızlıca devam edelim. Data Synchronization adımında Automatic Seeding seçili olmasına dikkat edelim.
Son olarak ikinci SQL sunucusuna bağlanıp “Logins” kısmına ADFS için oluşturduğumuz gMSA hesabını ekleyelim. Eğer bunu yapmazsak olası bir SQL Server failover durumunda ikinci sunucuda bu kullanıcı ekli olmadığı için yetki hatası oluşacak ve ADFS hizmeti çalışmayacaktır.
Bu işlem de bittikten sonra veri tabanı ile işimiz tamamen bitmiş oluyor.
İkinci ADFS sunucusuna bağlanarak Server Manager’dan ilgili rolü kuralım ve konfigürasyon sihirbazını başlatalım.
Bu sefer “Add a federation server to a federation server farm”ı seçip mevcut ADFS farm’ımıza yeni sunucumuzu ekleyelim.
“Specify Farm” aşamasında SQL AlwaysOn AG Listener bilgilerini girerek mevcut farm bilgilerini veri tabanından çekmesini sağlayalım.
Sertifikamızı seçiyoruz.
Bir önceki ADFS sunucusunu kullanırken oluşturduğumuz gMSA hesabını seçiyoruz.
Bir sonraki aşamada bütün ön gereksinimler kontrol edilecektir. Kontrolden geçtikten sonra kurulumu başlatabiliriz.
ADFS sunucularının kurulumu burada bitti. Şayet ADFS sunucularını dışarı açmayacaksak mevcut uygulamalarımızı ADFS ile entegre edebilir ve Single-Sign-On gibi özelliklerden faydalanmaya başlayabiliriz. Fakat uygulamalarımıza internet üzerinden erişilecekse ADFS’i WAP rolü üzerinden dışarıya açmamız gerekiyor.
WAP sunucularını kurmak için sunuculardan birine bağlanıp Server Manager’ı açalım. Rol ekleme aşamasında Remote Access’i seçelim.
Role Services aşamasında Web Application Proxy’yi seçelim.
Sihirbaz bittiğinde “Open the Web Application Proxy Wizard” linki belirecektir. Buna henüz tıklamayalım. Öncelikle WAP sunucularının güvenliği için ufak bir konuya değinelim.
WAP sunucuları AD domainine dahil olmadıkları ve DMZ segmentinde bulundukları için iç network’e erişimleri kısıtlı olmalıdır. ADFS sunucuları veya önlerinde duran load balancer’ın IP adresine 443 portu üzerinden erişmeleri ve ADFS hizmet adresini çözümleyebilmeleri yeterlidir. Bu işlem için host dosyasını kullanıp sadece belirttiğim adreslere erişmesi için kayıt eklemeniz yeterli olacaktır. WAP dışarıya açık bir sunucu olacağı için iç network’e erişimi gerektiğinden fazla olmamalıdır. Olası bir ele geçirilme durumunda buradan iç network’e sızılmaması için hem inbound hem de outbound erişim kurallarında minimum seviyede izin tanımlanmalıdır.
Bir önceki adımda çıkan linke tıklayıp WAP sunucusunun konfigürasyonuna başlayalım.
Federation service name kısmına ADFS hizmeti için belirlediğimi domaini yazalım. Kullanıcı adı/şifre kısmına ADFS sunucularında yönetici haklarına sahip bir kullanıcının bilgilerini girelim ve devam edelim.
SSL sertifikamızı seçelim ve sihirbazı tamamlayalım.
Bu işlemlerin aynısını ikinci WAP sunucusunda da tekrar edelim.
ADFS sunucusunun WAP ile entegre hale geldiğini ADFS yönetim panelinden teyit edebiliriz.
Artık ADFS hizmetini WAP üzerinden dışarıya açmış bulunmaktayız, fakat henüz WAP sunucumuza dışarıdan 80 ve 443 portları üzerinden erişilemiyor. Bunun için Azure panelinde sanal makinelerimizin Network Security Group ayarlarında bu portlar için inbound kural oluşturmamız gerekiyor.
Port_443 ve Port_80 isimli kuralları oluşturduktan sonra artık ADFS hizmetini test etmeye başlayabiliriz. Bu bir test ortamı olduğu için RDP portu dışarıya açık, fakat prod ortamlarında kesinlikle bu portu dış dünyaya açık halde bırakmamanız gerekiyor.
Elimizde henüz ADFS ile entegre edebileceğimiz bir uygulama olmadığı için ADFS’in oturum açma hizmetinin çalışabilirliğini test etmek için kullanabileceğimiz “IdpInitiatedSignon” özelliğini kullanacağız. Bu özellik ADFS ilk kurulduğunda varsayılan olarak kapalı olarak gelir. Durumunu öğrenmek için ADFS sunucularından birine bağlanıp powershell açalım ve aşağıdaki komutu çalıştıralım.
Get-AdfsProperties | Select-Object EnableIdpInitiatedSignonpage
Sonuç olarak “false” dönecektir. Özelliği aktif hale getirmek için şu komutu çalıştıralım.
Set-AdfsProperties -EnableIdpInitiatedSignonPage $true
Özelliği test etmek için aşağıda paylaşacağım linki, internet erişimi olan herhangi bir bilgisayardan test edebilirsiniz:
https://adfs-hizmet-adresi/adfs/ls/IdpInitiatedSignon.aspx
Bizim örneğimizde bu adres “https://adfs.bulutmekani.com/adfs/ls/IdpInitiatedSignon.aspx” oldu. Siz de kendi ortamınıza göre bu linki ayarlayabilirsiniz.
Eğer her şey düzgün bir şekilde yapılandırıldıysa şu sayfa ile karışılacaksınız:
“Sing in” butonuna tıkladıktan sonra AD kullanıcı bilgilerinizi girmeniz istenecektir. Bilgileriniz doğrulandıktan sonra başarılı bir şekilde oturum açtığınıza dair bilgi alacaksınız.
Böylece makalemizin sonuna gelmiş bulunmaktayız. ADFS konusunun daha da pekişmesi için Microsoft uygulamalarından birini ADFS hizmetiyle entegre etme işlemlerini de bir sonraki makalemde sizlerle paylaşmayı düşünüyorum.
Umarım faydalı bir makale serisi olmuştur.
Bir sonraki makalede görüşmek dileğiyle.