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.
Azure Functions Serisi #10 - AuthorizationYandaki 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.

  • Anonymous
    Oluşturulan functionlara dışarıdan herhangi bir yetkilendirme olmaksızın erişilebilmesi anlamına gelmektedir.
  • Function
    Function seviyesinde erişim belirleyebilmek için kullanılır. Azure portal üzerinden erişim belirleyicisi olarak kullanılacak ‘Function Key’ verilmekte ve tüm erişim bu key üzerinden gerçekleştirilmektedir.
  • Admin
    Bu level’da ‘Function’a özgü bir erişim belirleyicisi olarak koruma sağlar. ‘Function Key’e nazaran ‘Master Key’ ile erişim sağlanmasını gerçekleştirmektedir.

    Function Key ile Master Key arasındaki fark nedir?
    Azure; authorization işlemlerinde bizlere şimdi sözünü ettiğimiz ‘function key’ ve ‘master key’ ile birlikte ayriyetten ‘default key’ isimli bir değer daha vermektedir. Bu ‘default key’ değeri ile yetkilendirmesi ‘Function’ seviyesinde olanlara erişilebilirken, ‘Admin’ seviyesinde olanlara erişim sağlanamamaktadır.

    En yüksek seviyede koruma ‘Admin’dir.

    Burada functionların authorization seviyelerine göre erişimi için kullandıkları key değerlerine karşı şöyle bir tablo karşımıza çıkmaktadır;

    Function Admin
    function key
    default key
    master key

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.
Azure Functions Serisi #10 - Authorization
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.
Azure Functions Serisi #10 - Authorization
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.

Azure Functions Serisi #10 - Authorization
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.
Azure Functions Serisi #10 - Authorization
İ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;
Azure Functions Serisi #10 - Authorizationkey 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.
Azure Functions Serisi #10 - Authorization
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…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. 11 Ağustos 2020

    […] Azure Functions Serisi #10 – Authorization […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*