Yalnızca uygulama erişimini anlama
Bir uygulama Microsoft Graph gibi bir kaynağa doğrudan eriştiğinde, erişimi tek bir kullanıcının kullanabileceği dosya veya işlemle sınırlı değildir. Uygulama API'leri doğrudan kendi kimliğini kullanarak çağırır ve yönetici haklarına sahip bir kullanıcı veya uygulamanın kaynaklara erişmek için yetkilendirmesi gerekir. Bu senaryo yalnızca uygulama erişimidir.
Yalnızca uygulama erişimini ne zaman kullanmalıyım?
Çoğu durumda, yalnızca uygulama erişimi temsilci erişiminden daha geniş ve daha güçlüdür, bu nedenle yalnızca gerektiğinde yalnızca uygulama erişimi kullanmanız gerekir. Aşağıdakiler genellikle doğru seçimdir:
- Uygulamanın kullanıcı girişi olmadan otomatik bir şekilde çalışması gerekir. Örneğin, belirli kişilerden gelen e-postaları denetleten ve otomatik yanıtlar gönderen günlük bir betik.
- Uygulamanın birden çok farklı kullanıcıya ait kaynaklara erişmesi gerekir. Örneğin, bir yedekleme veya veri kaybı önleme uygulamasının her birinin farklı katılımcıları olan birçok farklı sohbet kanalından ileti alması gerekebilir.
- Kimlik bilgilerini yerel olarak depolamak ve uygulamanın kullanıcı veya yönetici olarak "olarak" oturum açmasına izin vermek istediğinizi fark edebilirsiniz.
Buna karşılık, bir kullanıcının kendi kaynaklarını yönetmek için normalde oturum açabileceği yalnızca uygulama erişimini asla kullanmamalısınız. Bu tür senaryoların en az ayrıcalıklı olması için temsilci erişimi kullanması gerekir.
Bir uygulamayı yalnızca uygulama çağrıları yapmak için yetkilendirme
Yalnızca uygulama aramaları yapmak için istemci uygulamanıza uygun uygulama rollerini atamanız gerekir. Uygulama rolleri, yalnızca uygulama izinleri olarak da adlandırılır. Yalnızca rolü tanımlayan kaynak uygulaması bağlamında erişim verdikleri için uygulama rolleridir.
Örneğin, bir kuruluşta oluşturulan tüm ekiplerin listesini okumak için uygulamanıza Microsoft Graph Team.ReadBasic.All
uygulama rolünü atamanız gerekir. Bu uygulama rolü, Kaynak uygulaması Microsoft Graph olduğunda bu verileri okuma olanağı sağlar. Bu atama, istemci uygulamanızı diğer hizmetler aracılığıyla bu verileri görüntülemesine izin verebilen bir Teams rolüne atamaz.
Geliştirici olarak, uygulama kaydınızda uygulama rolleri olarak da adlandırılan tüm gerekli yalnızca uygulama izinlerini yapılandırmanız gerekir. Uygulamanızın yalnızca uygulama için istenen izinlerini Azure portalı veya Microsoft Graph aracılığıyla yapılandırabilirsiniz. Yalnızca uygulama erişimi dinamik onayı desteklemez, bu nedenle çalışma zamanında tek tek izinler veya izin kümeleri isteyemezsiniz.
Uygulamanızın ihtiyaç duyduğu tüm izinleri yapılandırdıktan sonra, kaynaklara erişmesi için yönetici onayı alması gerekir. Örneğin, yalnızca En az Ayrıcalıklı Rol Yöneticisi rolüne sahip kullanıcılar Microsoft Graph API'sine yalnızca uygulama izinleri (uygulama rolleri) verebilir. Uygulama Yöneticisi ve Bulut Uygulaması Yöneticisi gibi diğer yönetici rollerine sahip kullanıcılar, diğer kaynaklar için yalnızca uygulama izinleri verebilir.
Yönetici kullanıcılar Azure portalını kullanarak veya Microsoft Graph API aracılığıyla program aracılığıyla izinler oluşturarak yalnızca uygulama izinleri verebilir. Uygulamanızın içinden etkileşimli onay da isteyebilirsiniz, ancak yalnızca uygulama erişimi için kullanıcı gerektirmediğinden bu seçenek tercih edilemez.
Outlook.com veya Xbox Live hesapları gibi Microsoft Hesaplarına sahip tüketici kullanıcılar hiçbir zaman yalnızca uygulama erişimine izin vermez.
Her zaman en az ayrıcalık ilkesini izleyin: Hiçbir zaman uygulamanızın ihtiyaç duymadığı uygulama rolleri istememelisiniz. Bu ilke, uygulamanızın güvenliği ihlal edilirse güvenlik riskini sınırlamaya yardımcı olur ve yöneticilerin uygulamanıza erişim izni vermelerini kolaylaştırır. Örneğin, yalnızca uygulamanızın ayrıntılı profil bilgilerini okumadan kullanıcıları tanımlaması gerekiyorsa, yerine User.Read.All
daha sınırlı bir Microsoft Graph User.ReadBasic.All
uygulaması rolü istemeniz gerekir.
Kaynak hizmeti için uygulama rolleri tasarlama ve yayımlama
Microsoft Entra Id'de diğer istemcilerin çağırabileceği API'leri kullanıma sunan bir hizmet oluşturuyorsanız, uygulama rolleri (yalnızca uygulama izinleri) ile otomatik erişimi desteklemek isteyebilirsiniz. Microsoft Entra yönetim merkezindeki uygulama kaydınızın Uygulama rolleri bölümünde uygulamanız için uygulama rollerini tanımlayabilirsiniz. Uygulama rolleri oluşturma hakkında daha fazla bilgi için bkz . Uygulama için rolleri bildirme.
Başkalarının kullanması için uygulama rollerini kullanıma sunarken, bunları atayacak yöneticiye senaryonun açık açıklamalarını sağlayın. Uygulama rolleri genellikle mümkün olduğunca dar olmalıdır ve yalnızca uygulama erişimi kullanıcı haklarıyla kısıtlanmadığından belirli işlevsel senaryoları desteklemelidir. Hizmetinizin içerdiği tüm API'lere ve kaynaklara tam veya tam read
read/write
erişim veren tek bir rolü ortaya çıkarmaktan kaçının.
Not
Uygulama rolleri (yalnızca uygulama izinleri) kullanıcılara ve gruplara atamayı destekleyecek şekilde de yapılandırılabilir. Hedeflenen erişim senaryonuz için uygulama rollerinizi doğru yapılandırdığınızdan emin olun. API'nizin uygulama rollerinin yalnızca uygulama erişimi için kullanılmasını planlıyorsanız, uygulama rollerini oluştururken izin verilen tek üye türü olarak uygulamaları seçin.
Yalnızca uygulama erişimi nasıl çalışır?
Yalnızca uygulama erişimi hakkında hatırlamanız gereken en önemli şey, çağrı yapan uygulamanın kendi adına ve kendi kimliği olarak hareket etmesidir. Kullanıcı etkileşimi yoktur. Uygulama bir kaynak için belirli bir uygulama rolüne atanmışsa, uygulamanın bu uygulama rolü tarafından yönetilen tüm kaynaklara ve işlemlere tam olarak kısıtlanmamış erişimi vardır.
Bir uygulama bir veya daha fazla uygulama rolüne (yalnızca uygulama izinleri) atandıktan sonra, istemci kimlik bilgileri akışını veya desteklenen diğer kimlik doğrulama akışlarını kullanarak Microsoft Entra ID'den yalnızca uygulama belirteci isteyebilir. Atanan roller, uygulamanın erişim belirtecinin talebine eklenir roles
.
Bazı senaryolarda, uygulama kimliği erişimin verilip verilmeyeceğini, temsilci çağrısındaki kullanıcı haklarına benzer şekilde belirleyebilir. Örneğin, Application.ReadWrite.OwnedBy
uygulama rolü bir uygulamaya uygulamanın sahip olduğu hizmet sorumlularını yönetme olanağı verir.
Yalnızca uygulama erişim örneği - Microsoft Graph aracılığıyla otomatik e-posta bildirimi
Aşağıdaki örnekte gerçekçi bir otomasyon senaryosu gösterilmektedir.
Alice, Bir Windows dosya paylaşımında bulunan bölüm raporlama klasörü yeni bir belgeyi her kaydedişinde ekibİ e-postayla bilgilendirmek istiyor. Alice, klasörü incelemek ve yeni dosyaları bulmak için Bir PowerShell betiği çalıştıran zamanlanmış bir görev oluşturur. Betik daha sonra kaynak API'si (Microsoft Graph) tarafından korunan bir posta kutusunu kullanarak bir e-posta gönderir.
Betik herhangi bir kullanıcı etkileşimi olmadan çalışır, bu nedenle yetkilendirme sistemi yalnızca uygulama yetkilendirmesini denetler. Exchange Online, çağrıyı yapan istemciye yönetici tarafından uygulama izni (uygulama rolü) Mail.Send
verilip verilmediğini denetler. Uygulamaya verilmemişse Mail.Send
Exchange Online isteği başarısız olur.
POST /users/{id}/{userPrincipalName}/sendMail | İstemci uygulamasına Mail.Send izni verildi | İstemci uygulamasına Mail.Send verilmedi |
---|---|---|
Betik, e-posta göndermek için Alice'in posta kutusunu kullanır. | 200 – Erişim verildi. Yönetici, uygulamanın herhangi bir kullanıcı olarak posta göndermesine izin verdi. | 403 - Yetkisiz. Yönetici bu istemcinin e-posta göndermesine izin vermedi. |
Betik, e-posta göndermek için ayrılmış bir posta kutusu oluşturur. | 200 – Erişim verildi. Yönetici, uygulamanın herhangi bir kullanıcı olarak posta göndermesine izin verdi. | 403 - Yetkisiz. Yönetici bu istemcinin e-posta göndermesine izin vermedi. |
Verilen örnek, uygulama yetkilendirmesinin basit bir çizimidir. Üretim Exchange Online hizmeti, uygulama izinlerini belirli Exchange Online posta kutularıyla sınırlama gibi diğer birçok erişim senaryosunu destekler.