Microsoft Azure Files günümüzde birçok kuruluş tarafından talep gören, bununla birlikte birçok senaryoda da konumlandırdığımız bir servis olarak önümüze çıkmaktadır. Özellikle uzaktan çalışan kullanıcıların erişimleri ya da uzaktan çalışma senaryolarında yine Azure Virtual Desktop Infrastructre konularında da aktif olarak kullanılan ve konumlandırılan servistir.
Azure Files erişimleri için daha öncelerinde depolama anahtarları ve paylaşılan anahtarlar ile erişimler mümkün iken 2 yıl öncesinde Microsoft Azure üzerinde, Azure Files Servisi ile Azure Active Directory Role Based Account Control (RBAC) desteklediğini duyurdu. Böylelikle bizler Active Directory kullanıcılarımız için Azure Files servisi üzerinde yetkilendirmelerimizi RBAC ile yapabilir duruma geldik.
Böyle bir yapı için bizlerin Azure Files servisi yine buna bağlı olarak Azure Active Directory Domain Service kurulumlarını yapmamız gerekmekteydi. Böyle bir yapıda ise On-Premise yapımızda bulunan Active Directory servisimiz Azure AD Connect uygulaması ile Azure Active Directory ile senkronizasyonu yapmakta, diğer tarafta ise Azure Active Directory Domain Service hizmetimiz ise yetkilendirme noktasında kullanılmaktaydı. Böyle bir kurgu son derece sağlıklı çalışırken güvenlik ekiplerinin de dikkatini çekmiş ve bazı güvenlik riskleri olabileceğini söylemekteydiler. Bunun en temel sebebi Azure File Service için yetkilendirme de doğrudan Password Hash bilgisinin gönderiliyor olmasını bir risk olarak görülmesiydi. Böyle bir durumda elbette birçok senaryo konuşulabilir güvenlik riskleri ve önlemleri hakkında.
Bugün geldiğimiz noktada ise Azure Files servisimiz üzerinde, mevcut on-premise yapımızda bulunan Active Directory servisimiz ile yetkilendirmeleri doğrudan yapabiliyoruz. Peki bir adım öncesinde bahsettiğimiz senaryodan farkı ne? Burada doğrudan kullanıcı Hash bilgisi gönderilmeden ve doğrudan Azure AD servisi ile RBAC entegrasyonu yapılarak erişim kontrolleri sağlanabilmektedir.
Entegrasyon noktasında benzerlikler görünüyor olsa da böyle bir yapıda Azure AD Domain Service hizmetine ihtiyaç duymacağımız ve yine az önce bahsettiğimiz, kullanıcılarımın Hash bilgilerinin gönderilmemesi gibi temel ama önemli farklılıkları bulunmaktadır.
Burada oluşturulacak senaryo ise Azure Files servisimiz üzerinde oluşturacağımız bir File Share yapısını on-premise yapımızda bulunan Active Directory servisimiz ile entegrasyonunu sağlayacak ve bu entegrasyon ile birlikte RBAC kullanıcı yetkilendirmelerini sağlayabileceğiz.
Yapılandırmaya başlayabilmek için öncelikle Azure Portal üzerine geçiyoruz, İhtiyacımız olan bir Storage Account oluşturarak çalışmaya başlayacağız.
Azure portal üzerinde sağ tarafta bulunan panelimizde Storage Accounts seçimini yapıyoruz.
Gelen ekranımızda Add seçimini yaparak Storage Account oluşturmaya başlıyoruz.
Bizleri karşılayan ekranımızda Subscription bilgisini ve Resource Group bilgilerini yaptıktan sonra isimlendirmemizi yapıyoruz. Paylaşmış olduğum şema üzerinde de göreceğiniz üzere isimlendirmemizi “COZUMPARKFILES” olarak gerçekleştirdim. Replication kısmında ben Locally Redundant seçimi yapabilirsiniz. Burada ki seçimlerin ilgili farkları anlamak ya da hangi seçimi yapacağınız konusunda emin değilseniz aşağıdaki link üzerinden faydalanabilirsiniz.
https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy
kuruluşumuz ya da bizler için en uygun replikasyon metodunu belirledikten sonra Networking seçimini yaparak ilerliyoruz.
Networking ekranımızda yine üç farklı seçenek bulunmakta. Ben bu çalışmada Public olarak bütün erişimleri açmış durumdayım. Dilerseniz sizde kurumlar için en uygun ihtiyacı seçerek devam edebilirsiniz. Buradaki seçimlerimizi dağıtım sonrasında da değiştirebilirsiniz.
İlerlediğimizde karşılaştığımız Advanced tabında ise yine karşımıza seçenekler geliyor. Burada herhangi bir değişiklik yapmadan ilerliyorum.
Storage Account oluşturmak Create seçimini yaparak dağıtımı başlatıyoruz.
Oluşturmuş olduğumuz COZUMPARKFILES storage Account altına geçiyoruz. Burada oluşturmuş olduğumuz depolama hesabımız altında File Share oluşturmak olacak. Bunun için ekran görüntüsünde de göreceğiniz üzere File Share seçimi yapıyoruz.
File share seçimini yapıyoruz ve dosya paylaşımı için isimlendirmemizi ve kota bilgilerini tanımlayarak devam ediyoruz.
Evet ekran görüntüsünde de göreceğimiz üzere COZUMPARKSHARE isimli bir paylaşılmış dosyamızı Azure Files altında oluşturmuş olduk.
Azure portal üzerinde başarılı bir şekilde Storage Accounts ve oluşturmuş olduğumuz depolama hesabımız altında da paylaşılmış bir dosyamızı hazır hale getirdik. Yine Storage Account altında Configuration altında göreceğimiz Active Directory (AD) altında kendi on-premise yapımızda bulunan Active Directory servisimize register edeceğiz. Detaylar ile ilgili ihtiyaç duyacağınız kaynaklara yine ekran görüntüsünde de göreceğiniz üzere how to dökümantasyonunu görebilirsiniz.
Buraya kadar olan kısımların tamamını Azure üzerinde gerçekleştirdik. Şimdi On-Premise yapımızda yapacağımız çalışmalara başlayacağız.
Bunun için aşağıda bulunan url üzerinden ilgili Powershell modülünü indireceğiz ;
https://github.com/Azure-Samples/azure-files-samples/releases
Download etmiş olduğumu Powershell modülünü çıkarıyoruz. Burada bu işlemleri yaparken ben Active Directory sunucum üzerinden gerçekleştirdim. Sizler yetkili bir Active Directory kullanıcı hesabı ve Domain’e katılmış olan herhangi bir client / sunucu üzerinden de bu işlemleri gerçekleştirebiliriz.
Ekran görüntüsünde de göreceğimiz gibi C:\Hybrid dizini altına dosyalarımızı çıkardık.
Öncelikle komutlarımızı yürüteceğimiz Powershell üzerinde aşağıdaki komut se
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Currentuser
İlgili komut setini çalışıtırıyor ve onaylıyoruz.
Yine ekran görüntüsünde görüldüğü gibi powerhell modülünü çıkardığımız dizine geçiyoruz.
.\CopyToPSPath.ps1
Dizine çıkardığımız alanda bulunan ilgili komutu çalıştırıyoruz. Böylelikle modülleri ilgili Powershell dizinine kopyalama işlemini gerçekleştirmiş oluyoruz.
Import-Module -name AzFilesHybrid
Böylelikle indirmiş olduğumu ve ilgili Powershell dizinine kopyalamış olduğumuz AzFilesHybrid modülünü import ediyoruz.
Öncelikle Powershell üzerinde ilgili Azure Portale erişimlerimizi sağlayacağız.
Connect-AzAccount
Komut setimizi çalıştırdıktan sonra device code numarası ile login oluyoruz.
Login işlemini gerçekleştirdikten sonra , hangi Azure Subscription üzerinde işlem yapacağımızı belirleyeceğiz.
Select-AzSubscription -SubscriptionName "Azure Subscription Name"
Başarılı bir şekilde ilgili adımlarımızı gerçekleştirdikten sonra şimdi artık import ettiğimiz PowerShell modülümüz ile birlikte artık Azure üzerinde oluşturmuş olduğumuz Azure Storage hesabımızı on-premise yapımızda bulunan Active Directory servisimiz üzerinde offline olarak katılımını sağlayacağız.
Bunun için aşağıda ki komut setini kullanarak devam edeceğiz.
join-AzStorageAccountForAuth -ResourceGroupName “AzureFilesAD” -Name “cozumparkfiles” -DomainAccountType “ComputerAccount” -OrganizationalUnitDistinguishedName “OU=Cozumpark,DC=ytirpanci,DC=info”
Evet ilgili komut setini çalıştırdıktan sonra On-Premise yapımızda bulunan Active Directory üzerinde hesabımızı kontrol ediyoruz.
Görüldüğü gibi CozumPark Organization Unit altında COZUMPARKFILES isimli hesabımızı yani Azure üzerinde oluşturduğumuz Azure Storage Accounts ile aynı isimde oluştuğunu görüyoruz. Burada komut seti içerisinde farklı bir isimde Active Directory üzerinde oluşmasını istersek -Override parametresini kullanabilirsiniz.
Evet oluşturduğumuz hesabı Active Directory altında gördük. Şimdi Azure Portal üzerine geçiyoruz ve Storage hesabımızın Domain üyesi olup olmadığını göreceğiz.
Ekran görüntüsünde de görüleceği üzere artık Storage Accounts ytirpanci.info domainine katıldığını görebiliyoruz.
Bu adım sonrasında herhangi bir sorun olup olmadığını da gözlemleyeceğiz. Bunun için yine aşağıda belirtilen Powershell komutlarını koşturacağız.
$cozumparkstorageaccount = Get-AzStorageAccount -ResourceGroupName “AzureFilesAD” -Name “cozumparkfiles”
Storage Account bilgisini aldıktan sonra aşağıdaki komut seti ile directory servislerimizi listeleyeceğiz.
$cozumparkstorageaccount.AzureFilesIdentityBasedAuth.DirectoryServiceOptions
Komut setimizi çalıştırdıktan sonra aktif olarak Active Directory servisini görüyor olmamız gerekiyor. Ekran görüntüsünde de göreceğimiz üzere AD servisimizi görüyoruz.
Şimdi ise aktif olan dizin hizmet bilgilerimizi Azure Storage hesabımızdan çekip kontrol edeceğiz.
$cozumparkstorageaccount.AzureFilesIdentityBasedAuth.ActiveDirectoryProperties
Evet almış olduğumuz çıktılar ile birlikte On-Premise yapımızda bulunan ve domaine üye olarak katılan hesap bilgilerini görebiliyoruz.
Böylelikle Active Directory kullanıcılarımızın kerberos authentication ile dosyalara erişimlerini yönetebilir ve Azure RBAC ile yetkilendirmelerini sağlayabilecek durumdayız.
Test etmek için ortamımda iki adet kullanıcı bulunmakta. Bu kullanıcıları Azure Portal üzerinde yetkilendirmelerini sağlayacağız.
Bunun için Azure Portal üzerinde oluşturmuş olduğumuz Storage Accounts altında yine daha önce oluşturduğumuz cozumparkfiles isimli share edilmiş olan dosyamızı seçiyoruz. Yetkilendirme için Access Control (IAM) seçimini yapıyoruz. Add role diyerek ekran görüntüsünde görülen Azure gruplarına Active Directory kullanıcılarımızı ekleyerek devam ediyoruz.
Evet Active Directory üzerinde var olan ve Azure AD Connect ile eşitlenmiş olan FileUser01 isimli kullanıcımızı yetkilendirmiş olduk.
Bununla birlikte bir diğer var olan FileUser02 isimli kullanıcımız daha var ve yetkilendirmesini yapmadık. Dolayısı ile erişimleri her iki kullanıcı ile test ederek yapımızın çalıştığını gözlemleyeceğiz.
Bunun için aşağıdaki komut setleri ile network drive olarak Azure üzerinde oluşturmuş olduğumuz cozumparkfiles paylaşım dosyasına erişimleri test edeceğiz.,
Net Use Y: \\cozumparkfiles.file.core.windows.net\cozumparkshare
Komut setini her iki kullanıcı hesabımız ile network drive olarak eklemeyi deneyelim.
Evet ekran görüntüsünde de görüleceği üzere network drive olarak eklediğimiz Azure File Share üzerine yetkisi verilmiş olan FileUser01 isimli kullanıcımızın başarılı bir şekilde eriştiğini bununla birlikte herhangi bir yetki tanımı yapmadığımız FileUser02 isimli kullanıcının erişimlerinin olmadığını görüyoruz.
Böylelikle on-premise yapımızda bulunan Active Directory servisimiz üzerinde var olan kullanıcılarımız herhangi bir servise ya da bileşene ihtiyaç duymadan Azure Files servisini, Azure RBAC yetkilendirmesi ile doğrudan kullandırabileceğiz. Bununla birlikte genel olarak önerdiğim senaryo Azure File Sync ile senkronizasyonları tamamlanmış ve dağıtık yapıları bulunan kurumların ya da işletmelerin NTFS izinleri ile birlikte Azure’a taşınması ve bu dosya sunucumuzun Active Directory entegrasyonu ile birlikte kullanırlılığı son derece efektif hale getirmesini sağlayacaktır.