Azure üzerinde çalışma gerçekleştiren hemen hemen herkesin karşılaştığı veya karşılaşacağı, bu sebeple de iyi bilinmesi gerektiğine inandığım kavramlardan birisi olan Service Principal’ı bu makale ile sizlere anlatıyor olacağım.
Azure Service Principal Nedir ?
Azure, hizmet hesabı olan bir “Service Principal” kavramına sahiptir. Windows ve Linux işletim sistemlerinde bu kavram bir service account’ a denk düşmektedir. Bu hesaplar genellikle zamanlanmış belirli bir görevi, web application havuzunu veya SQL Server servisini çalıştırmak için kullanılırlar.
Azure Service Principal, kullanıcılar tarafından oluşturulmuş uygulamalar, servisler ve otomasyon araçları tarafında belirli bir Azure kaynağına erişmek için oluşturulmuş bir güvenlik kimliğidir. Bu kapsamda Azure kaynağı içinde gerçekleştirelecek işlemler için yeterli izin ve kapsamı sağlamanıza izin vermektedir. Görevleri çalıştırmak için minimum yetkilendirme ilkesine sahip olduğu için, gerçekleştirelecek görevlerde kendi hesabınızı kullanmamanız önemlidir. Service Principal bu sayede güvenlik düzeyinide arttırmanızı sağlamış olmaktadır.
Örneğin; Azure portalı hiç kullanmadan bir sanal makinanın veya bir servisin pricing tier’ ını bir uygulama ve minimum yetkilendirme ile değiştirebilirsiniz. Bu gibi durumlarda da service principal’ a ihtiyacınız olacaktır.
Azure Service Principal gereksinim duyulan sayıda uygulama ve servis için oluşturulabilir.
Azure Service Principal’ ı Nasıl Oluşturabilirim ?
Azure Service Principal oluşturmak için Azure portal, AzureAD ve Azure modulleri ile powershell’ den yararlanabilirsiniz. Bu makalede service principal’ ın Azure portal üzerinden nasıl oluşturulduğunu göreceğiz.
Azure AD tenant’ ınız üzerinde uygulamanızın service principal’ ını oluştururak kaydetmek için Azure hesabınız ile Azure portala giriş yapınız.
Azure Active Directory üzerinden App registirations >> New registration seçeneğini seçerek ilerleyiniz.
Açılan register sayfasında application adını giriniz ve desteklenen hesap türünü seçiniz. Redirect URI altında application türünü Web olarak seçiniz. (Uygulamanız için tanımlı bir redirect URI girmeniz gerekiyorsa bu kısımı doldurabilirsiniz.)
Application kaydı tamamladıktan sonra uygulama detaylarını Overview pencerisinden görebilirsiniz. Application kodunuzda kullanmak üzere Application ID (Client ID) bilgisini ayrı bir yere kopyalayınız.
Client secret oluşturmak için Certificates & Secrets sayfasında New client secret seçeneğini seçerek ilerleyiniz.
Client secret’ı tanımlama ve sona erme süresi bilgilerini doldurarak ekleyiniz.
Oluşacak client secret değerini kopyalarak başka bir alana kaydediniz. Bu değeri oluştuktan sonra kopyalamadığınız takdirde bir daha geri getiremeyeceksiniz. Oluşturulan secret application id ile birlikte service principal’ ın uygulamada oturum açma işlemini sağlar.
Uygulamanın Azure aboneliğiniz altındaki kaynaklara, service principal’ ı kullanarak erişmesini sağlamak istiyorsanız belirli bir kaynak veya abonelik üzerinde service principal’a izin tanımlamanız gerekmektedir.
Belirli bir kaynak üzerinde service principal yetkilendirmesini gerçekleştirmek için Resources Groups içerisinden ilgili kaynak grubunu seçiniz.
Seçtiğiniz kaynak grubu altından Access Control (IAM) >> Role Assigment seçenekleri üzerinden ekle diyerek oluşturduğunuz service principal’ ı seçip izin tanımlamasını gerçekleştiriniz.