Microsoft kimlik onayı çerçevesi tarafından korunan API örneği
Bu makale, bir geliştirici olarak uygulama izinleri stratejinizi en az ayrıcalık sağlayacak şekilde tasarlamanıza yardımcı olabilir. Devam etmeden önce kayıt, izinler ve erişim için en iyi yöntemleri öğrenmek için API koruması makalesine bakın.
şimdi Microsoft kimlik platformu tarafından korunan bir API'nin Microsoft kimlik onayı çerçevesini nasıl kullandığına göz atalım. Microsoft kimlik platformu onay çerçevesinin en kapsamlı kullanımını sağladığından örneğimiz olarak Microsoft Graph API'sini kullanırız.
İzin adları için adlandırma kuralı
Microsoft Graph ekibi, iznin etkinleştirmiş olduğu kaynak erişimine bağlanmayı kolaylaştırmak için izin adları için bir adlandırma kuralı oluşturdu. Microsoft Graph izin adları basit bir resource.operation.constraint desenine bağlıdır. İki birincil işlem Read ve ReadWrite 'tir (güncelleştirme ve silme işlemlerini içerir).
kısıtlama öğesi, uygulamanızın dizinde sahip olduğu erişim derecesini etkiler. Microsoft Graph şu kısıtlamaları destekler:
- Tümü , uygulamanızın dizinde belirtilen türdeki tüm kaynaklarda işlemleri gerçekleştirmesine izin verir.
- Paylaşılan , uygulamanızın diğer kullanıcıların oturum açmış kullanıcıyla paylaştığı kaynaklarda işlemleri gerçekleştirmesine izin verir.
- AppFolder , uygulamanızın OneDrive'da ayrılmış bir klasördeki dosyaları okumasına ve yazmasına izin verir. Bu kısıtlama yalnızca Dosyalar izinler nesnesinde kullanıma sunulur ve yalnızca Microsoft hesapları için geçerlidir.
- Kısıtlama yok seçeneğini belirtirseniz, uygulamanız yalnızca oturum açmış kullanıcının sahip olduğu kaynaklarda işlemleri gerçekleştirebilir.
Belirli kaynaklara yönelik erişim ve işlemler
Microsoft Graph'taki kullanıcı nesnesine yönelik bazı izinlere veya kapsamlara göz atarak Microsoft API tasarımcılarının belirli kaynaklara yönelik belirli erişimi ve işlemleri nasıl etkinleştirdiğini görelim:
İzin | Görüntü Dizesi | Açıklama |
---|---|---|
User.Read |
Oturum açma ve kullanıcı profilini okuma | Kullanıcıların uygulamada oturum açmasına ve uygulamanın oturum açmış kullanıcıların profilini okumasına olanak tanır. Ayrıca uygulamanın oturum açmış kullanıcıların temel şirket bilgilerini okumasına da olanak tanır. |
User.ReadWrite |
Kullanıcı profiline okuma ve yazma erişimi | Uygulamanın oturum açmış kullanıcının tam profilini okumasına izin verir. Ayrıca uygulamanın oturum açmış olan kullanıcının profil bilgilerini kendi adına güncelleştirmesine de olanak tanır. |
User.Read
ve User.ReadWrite
uygulamaların Sıfır Güven en az ayrıcalık ilkesine uyması için var (bunun gibi User.Access
tek bir iznin olmamasının aksine) vardır. Geliştiricinin kullanıcının profilini güncelleştirmek için bir gereksinimi ve kodu yoksa, uygulama bunu istemez User.ReadWrite
. Bu nedenle, bir saldırgan uygulamanın güvenliğini tehlikeye atamaz ve verileri değiştirmek için bunu kullanamaz.
Bunun User.Read
yalnızca uygulamaya kullanıcı nesnesine erişim vermediğini görebilirsiniz. Her izin belirli bir işlem aralığını temsil eder. Geliştiricilerin ve yöneticilerin, herhangi bir iznin tam olarak neleri etkinleştirdiğini görmek için izin açıklamasını okuması önemlidir. User.Read
, geçerli kullanıcının profilinin tamamını okumayı etkinleştirmenin yanı sıra, uygulamanın Microsoft Graph'teki Kuruluşlar nesnesinden temel bilgileri görmesini sağlar.
Şimdi başka bir izne bakalım:
İzin | Görüntü Dizesi | Açıklama |
---|---|---|
User.ReadBasic.All |
Tüm kullanıcıların temel profillerini okuma | Uygulamanın, oturum açmış kullanıcı adına kuruluşunuzdaki diğer kullanıcıların temel profil özellikleri kümesini okumasına izin verir. Görünen ad, ad ve aile adı, e-posta adresi, açık uzantılar ve fotoğraf içerir. Uygulamanın oturum açmış kullanıcının profilinin tamamını okumasına izin verir. |
Her şeyle başlayan User.Read
işlem User.ReadBasic.All
aralığı. Ayrıca diğer kuruluş kullanıcıları için görünen ad, ad ve aile adı, e-posta adresi, fotoğraf ve açık uzantılara erişebilirsiniz. Belirli bir işlem aralığı, uygulamaların iyi bir kişi seçici kullanıcı arabirimine sahip olmasını sağlar ve belirli bir işlem aralığını etkinleştirmek için bir izin kullanan API tasarımcılarına örnektir.
Şimdi Microsoft Graph kullanıcı nesnesi üzerinde birkaç izne daha bakalım:
İzin | Görüntü Dizesi | Açıklama |
---|---|---|
User.Read.All |
Tüm kullanıcıların tam profillerini okuma | Uygulamanın, oturum açmış kullanıcı adına kuruluşunuzdaki diğer kullanıcıların profil özellikleri, raporları ve yöneticilerinin tam kümesini okumasına izin verir. |
User.ReadWrite.All |
Tüm kullanıcıların tam profillerini okuma ve yazma | Uygulamanın, oturum açmış kullanıcı adına kuruluşunuzdaki diğer kullanıcıların profil özellikleri, raporları ve yöneticilerinin tamamını okumasına ve yazmasına izin verir. Ayrıca uygulamanın oturum açmış kullanıcı adına kullanıcı oluşturmasına ve silmesine ve kullanıcı parolalarını sıfırlamasına da olanak tanır. |
ve User.ReadWrite
User.Read.All
ile User.Read
olduğu gibi veUser.ReadWrite.All
, bir uygulamanın en az ayrıcalık Sıfır Güven ilkesine uymasını sağlayan ayrı izinlerdir.
User.Read.All
ilginçtir çünkü kuruluştaki her kullanıcı bu özelliğe sahiptir (örneğin, Outlook'u açın, bir raporlama zincirinde yukarı ve aşağı gidin). Bir birey olarak, kuruluşunuzdaki diğer tüm kullanıcıların tam kullanıcı profilini görebilirsiniz. Ancak Microsoft Graph API tasarımcıları, kiracının kuruluş hiyerarşisini içerdiğinden uygulamanın aynı işlemi User.Read.All
gerçekleştirmesine yalnızca yöneticilerin izin vermesi gerektiğine karar verdi. Kötü bir aktör bu bilgilere erişirse, kimlik avı e-postasının bir kişinin yöneticisinden veya yöneticisinin yöneticisinden geldiği hedefli bir kimlik avı saldırısına bağlanabilir.
User.ReadWrite.All
güçlü bir işlem aralığıdır. Bu izin verilen bir uygulama, kiracıdaki tüm kullanıcıları güncelleştirebilir, hatta silebilir. Temsilci izni olarak, bir kullanıcı uygulamanın önünde olduğunda, uygulama yalnızca geçerli kullanıcının yapabileceklerini yapabilir. Normal kullanıcılar, uygulamanın izinlerinden bağımsız olarak diğer kullanıcıları güncelleştiremez veya silemez. Ancak kiracı yöneticisi uygulamayı kullandığında bu işlemleri gerçekleştirebilir. Bu izni verme veya reddetmeye karar verirken, uygulamanızı bir kiracı yöneticisi kullanıcısını göz önünde bulundurarak değerlendirmeniz gerekir.
Yönetici onayı gerektiren izinler
ve'nin User.Read.All
User.ReadWrite.All
gücü göz önünde bulundurulduğunda, Microsoft Graph API tasarımcıları bu izinleri yönetici onayı istemek olarak belirlemiştir. Bir Yönetici ekleyelim mi? İzinlerin ne zaman yönetici onayı gerektirdiğini belirtmek için izinler tablomuzun sütunu:
İzin | Görüntü Dizesi | Açıklama | Yönetici? |
---|---|---|---|
User.Read |
Oturum açma ve kullanıcı profilini okuma | Kullanıcıların uygulamada oturum açmasına ve uygulamanın oturum açmış kullanıcıların profilini okumasına olanak tanır. Ayrıca uygulamanın oturum açmış kullanıcıların temel şirket bilgilerini okumasına da olanak tanır. | Hayır |
User.ReadWrite |
Kullanıcı profiline okuma ve yazma erişimi | Uygulamanın oturum açmış kullanıcının tam profilini okumasına izin verir. Ayrıca uygulamanın oturum açmış olan kullanıcının profil bilgilerini kendi adına güncelleştirmesine de olanak tanır. | Hayır |
User.ReadBasic.All |
Tüm kullanıcıların temel profillerini okuma | Uygulamanın, oturum açmış kullanıcı adına kuruluşunuzdaki diğer kullanıcıların temel profil özellikleri kümesini okumasına izin verir. Görünen ad, ad ve aile adı, e-posta adresi, açık uzantılar ve fotoğraf içerir. Uygulamanın oturum açmış kullanıcının profilinin tamamını okumasına izin verir. | Hayır |
User.Read.All |
Tüm kullanıcıların tam profillerini okuma | Uygulamanın, oturum açmış kullanıcı adına kuruluşunuzdaki diğer kullanıcıların profil özellikleri, raporları ve yöneticilerinin tam kümesini okumasına izin verir. | Evet |
User.ReadWrite.All |
Tüm kullanıcıların tam profillerini okuma ve yazma | Uygulamanın, oturum açmış kullanıcı adına kuruluşunuzdaki diğer kullanıcıların profil özellikleri, raporları ve yöneticilerinin tamamını okumasına ve yazmasına izin verir. Ayrıca uygulamanın oturum açmış kullanıcı adına kullanıcı oluşturmasına ve silmesine ve kullanıcı parolalarını sıfırlamasına da olanak tanır. | Evet |
Yönetici onayı gerektiren izinler isteme makalesinde gösterildiği gibi, kiracı yöneticileri gereksinimleri geçersiz kılabilir ve kiracılarındaki uygulama izinlerinden herhangi birini veya tümünü yönetici onayı gerektiren olarak belirleyebilir. İsteğinizden belirteç almadığınızda uygulamanızı düzgün bir şekilde işleyecek şekilde tasarlamanız akıllıca olur. Onay olmaması, uygulamanızın belirteç almamasının birçok nedenden biridir.
Sonraki adımlar
- Başka bir API'den API çağırmak, başka bir API'yi çağırması gereken bir API'niz olduğunda Sıfır Güven sağlamanıza ve bir kullanıcı adına çalışırken uygulamanızı güvenli bir şekilde geliştirmenize yardımcı olur.
- Kaynaklara erişmek için yetkilendirme alma, uygulamanız için kaynak erişim izinleri alırken Sıfır Güven en iyi şekilde nasıl sağlayacağınızı anlamanıza yardımcı olur.
- Belirteçleri özelleştirme, Microsoft Entra belirteçlerinde alabileceğiniz bilgileri açıklar. En az ayrıcalıkla uygulama sıfır güven güvenliğini artırırken esnekliği ve denetimi geliştirmek için belirteçlerin nasıl özelleştirileceği açıklanır.
- Belirteçlerde grup taleplerini ve uygulama rollerini yapılandırma, uygulama rol tanımlarıyla uygulamalarınızı yapılandırmayı ve uygulama rollerine güvenlik grupları atamayı gösterir. Bu yöntemler, en az ayrıcalıkla uygulama sıfır güven güvenliğini artırırken esnekliği ve denetimi geliştirmeye yardımcı olur.
- Yönetici onayı gerektiren istek izinleri, uygulama izinleri yönetici onayı gerektirdiğinde izin ve onay deneyimini açıklar.
- Bu Hızlı Başlangıçta: web API'sini Microsoft kimlik platformu ile koruyun, bir ASP.NET web API'sinin nasıl korunduğunu gösteren bir kod örneğini indirin ve çalıştırın.
- Bu Öğretici - Azure API Management'ta API'nizi dönüştürme ve koruma bölümünde, API HTTP yanıt gövdesinde teknoloji yığını bilgilerini ve özgün URL'leri gizlemek için ortak ilkeleri yapılandırma hakkında bilgi edinin.
- Yetkilendirme en iyi yöntemleri , uygulamalarınız için en iyi yetkilendirme, izin ve onay modellerini uygulamanıza yardımcı olur.