Yazılım Mimarileri ve Tasarım Desenleri Üzerine

Azure Functions Serisi #10 – Authorization

Merhaba,

Bu içeriğimizde Azure Function uygulamalarında ki Authorization seviyelerini inceleyeceğiz.

Authorization Level Nedir?

Azure Function uygulaması oluştururken bizden beklenen ve function’a dışarıdan erişim seviyesini belirlememizi sağlayan yetki seviyesidir.
Yandaki görselde de görüldüğü üzere Visual Studio üzerinden Azure Function uygulaması oluştururken karşımıza ‘Function’, ‘Anonymous’ ve ‘Admin’ olmak üzere üç farklı Authorization seviyesi gelmektedir. Şimdi gelin bu seviyelerin ne olduklarını ve erişimsel açıdan nasıl bir davranış sergilediklerini inceleyelim;

Authorization, tüm trigger türleri için geçerlidir.

Tabi bu seviyeleri erişimsel koruma bakımından en küçükten büyüğe göre sıralayarak izah etmekte fayda var.

Bir Function’da Authorization’ı Canlı Görelim

Şimdi gelin Azure portal üzerinden bir Azure Function oluşturalım ve yukarıda bahsedilen tüm key’lerle birlikte authorization level’larını inceleyelim.

Öncelikle ‘Authorization level’ değeri ‘Function’ olan bir Azure Function oluşturunuz. Oluşturulan function’ın overview sayfasına giriniz ve sol menüden ‘Function Keys’ sekmesine tıklayınız.

Görüldüğü üzere burada ‘default key’ bulunmaktadır. Bizler bu key ile function’ımıza erişim sağlayabilmekteyiz. Ayriyetten ‘function key’ oluşturabilmek için hemen üstteki ‘New function key’ butonuna tıklayabilirsiniz.

Oluşturulacak key’in adını belirttikten sonra value kısmında istediğiniz değeri belirtebilirsiniz. Boş geçtiğiniz taktirde kendisinin güvenliğin hakkını verecek cinsten otomatik bir değer oluşturacağından şüpheniz olmasın.


Sonuç olarak ‘Function’ authorization level’ına karşılık function keylerimizi oluşturmuş bulunmaktayız. Bu trigger’ı tetikleyebilmek için her iki key’den birini kullanmanız yeterli olacaktır.

Peki nasıl kullanacağız?
Bunun için ‘Code + Test’ sayfasında güzel bir örnek mevcuttur.

İlgili sayfaya geldiğinizde ‘Get function URL’ kısmından size verilecek url’de erişim belirleyicisi olarak hangi key’in kullanması gerektiğini seçebilmektesiniz. Bunun için biraz önce oluşturduğumuz key değerlerimiz ekran alıntısından da gördüğünüz üzere ilgili tool’da listelenmektedir. Biryandan da function’a erişim sağlayabilmek için oluşturulmuş url’i incelerseniz eğer
https://functionsexample.azurewebsites.net/api/HttpTrigger1?code=LOnO9aL50gPGZdZSTwNnZ/SSWw81d9/RuCSS7L4Vp9psaEL5kpyc4A==
şeklinde olduğunu göreceksiniz. Burada seçilen key, ‘code’ isminde bir querystring değişkeni ile url üzerinde taşınmakta ve böylece ilgili function’a erişim doğrulanarak, sağlanabilmektedir.

İlgili url’i aşağıdaki gibi test ederseniz eğer;
key değerinin ufakcıkda olsa değiştirilmesi neticesinde function’ın tetiklenmediğini gözlemleyebilirsiniz.

Local’de tanımlanmış bir function hangi authorization level ile oluşturulmuş olursa olsun kullanırken yetki gerektirmemektedir. Yetki bir tek cloud’da önemsenmektedir.

‘Admin’ seviyesinde oluşturulan bir function’da ise sade ve sadece ‘master key’ ile erişim sağlanabilmektedir. Bunu denemenizi tavsiye ederim…

App Keys İle Ortak Key Oluşturma
Authentication seviyesi ‘Function’ olan her bir function’a özel ayrı ayrı function key oluşturmaktansa, merkezi tek bir default key üreterek bu key’i müşterek olarak kullanabilirsiniz. Benzer mantıkla authentication seviyesi ‘Admin’ olan functionlara ise ortak ‘master key’ üretebilir ve kullanabilirsiniz. Bunun için function app’e giriniz ve sol menüdeki ‘Functions’ kategorisindeki ‘App keys’ sekmesine tıklayınız.

Açılan sayfada authorization level’ına göre; ‘Admin’ için ‘_master’ ve ‘Function’ için ‘default’ değerleri tanımlanmıştır ve ortak olarak kullanılabilecek şekilde bulunmaktadırlar. Tabi ki de istek doğrultusunda müşterek bir key ekleyebilmekte ya da var olanları silebilmekte yahut güncelleyebilmektesiniz.

Nihai olarak, Azure Function servislerinde önem ve kritik arz eden authorization konusunu tüm detaylarıyla incelemiş ve yapısal olarak tanımlayabilmiş bulunmaktayız. Sonraki içeriklerimizde ise Azure Function Binding yapısı üzerine detaylıca bir incelemede bulunacağız. O halde ilgili makalelerde buluşuncaya dek şimdilik görüşmek üzere…

İlgilenenlerin faydalanması dileğiyle…
İyi çalışmalar…

Mobil sürümden çık