Microsoft kimlik onayı çerçevesi tarafından korunan API örneği

Bu makale, bir geliştirici olarak uygulama izinleri stratejinizien 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. Örnek olarak Microsoft Graph API'sini kullanırız çünkü Microsoft kimlik platformu onay çerçevesinin en kapsamlı kullanımını yapar.

İ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 Ekran Dizgesi 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 User.Access ilkesine en az ayrıcalıkla uyması için vardır (var olmayan gibi tek bir izin yerine). Geliştiricinin kullanıcının profilini güncelleştirmek için bir gereksinimi ve kodu yoksa, uygulama bunu istemez User.ReadWrite. Bu nedenle, kötü bir aktör 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 soyadı, 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.

User.ReadBasic.All'nin çalışma aralığı, User.Read'in gerçekleştirdiği her şeyle başlar. Ayrıca diğer kuruluş kullanıcıları için görünen ad, isim ve soyisim, 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österilecek Dize 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.

User.Read ve User.ReadWrite ile User.Read.All ve User.ReadWrite.All, bir uygulamanın minimum ayrıcalık ilkesine dayalı Sıfır Güven ilkesini izlemesini 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ü niyetli bir kişi bu bilgilere erişirse, bir kişinin yöneticisinden veya onun yöneticisinden gelen bir kimlik avı e-postası ile hedefli bir kimlik avı saldırısı düzenleyebilir.

User.ReadWrite.All güçlü bir işlem aralığıdır. Bu izne sahip bir uygulama, kiracıdaki tüm kullanıcıları güncelleştirebilir, hatta silebilir. Temsilci izni olarak, bir kullanıcı uygulamayı kullanırken, uygulama yalnızca mevcut 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 vermek veya reddetmek istediğinizde, uygulamanızı bir kiracı yöneticisi kullanıcısını göz önünde bulundurarak değerlendirin.

User.Read.All ve User.ReadWrite.All'in gücü göz önünde bulundurulduğunda, Microsoft Graph API tasarımcıları bu izinleri yönetici onayı gerektiren olarak belirlediler. İzinlerin ne zaman yönetici onayı gerektirdiğini belirtmek için izin tablomuza bir Admin? sütunu ekleyelim:

İzin Gösterilecek Dize 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 soyadı, 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 durumla sorunsuz bir şekilde başa çıkacak şekilde uygulamanızı tasarlayın. Onay olmaması, uygulamanızın belirteç almamasının birçok nedenden biridir.

Sonraki Adımlar