Aracılığıyla paylaş


App Service ve Azure İşlevleri için yönetilen kimlikleri kullanma

Bu makalede, Azure App Service ve Azure İşlevleri uygulamaları için yönetilen kimlik oluşturma ve bunu diğer kaynaklara erişmek için kullanma adımları gösterilmektedir.

Microsoft Entra Id'den yönetilen kimlik, uygulamanızın Azure Key Vault gibi diğer Microsoft Entra korumalı kaynaklara kolayca erişmesini sağlar. Azure platformu kimliği yönetir, bu yüzden herhangi bir gizli bilgiyi sağlamanıza veya döndürmenize gerek yoktur. Microsoft Entra Id'deki yönetilen kimlikler hakkında daha fazla bilgi için bkz . Azure kaynakları için yönetilen kimlikler.

Uygulamanıza iki tür kimlik vekleyebilirsiniz:

  • Sistem tarafından atanan bir kimlik uygulamaya bağlıdır ve uygulama silinirse silinir. Bir uygulama yalnızca bir sistem tarafından atanan kimliğe sahip olabilir.
  • Kullanıcı tarafından atanan kimlik ise uygulamanıza atanabilen tek başına bir Azure kaynağıdır. Bir uygulamanın kullanıcı tarafından atanan birden çok kimliği olabilir. Kullanıcı tarafından atanan bir kimlik, iki App Service uygulaması gibi birden çok Azure kaynağına atanabilir.

Yönetilen kimlik yapılandırması, yuvaya özeldir. Bir dağıtım yuvasi için yönetilen kimliği portaldan yapılandırmak için önce yuvaya gidin. Azure portalından Microsoft Entra kiracınızda web uygulamanızın veya dağıtım yuvanızın yönetilen kimliğini bulmak için, bunu doğrudan kiracınızın Genel Bakış sayfasından arayın.

Uyarı

Yönetilen kimlikler Azure Arc'ta dağıtılan uygulamalar için kullanılamaz.

Yönetilen kimlikler dizinler arası senaryoları desteklemediğinden, uygulamanız abonelikler veya kiracılar arasında geçirilirse beklendiği gibi davranmaz. Böyle bir taşıma işleminden sonra yönetilen kimlikleri yeniden oluşturmak için bkz. Aboneliği başka bir dizine taşırsam yönetilen kimlikler otomatik olarak yeniden oluşturulacak mı?. Aşağı akış kaynaklarının yeni kimliği kullanmak için erişim ilkelerinin güncelleştirilmiş olması da gerekir.

Önkoşullar

Bu makaledeki adımları gerçekleştirmek için Azure kaynaklarınız üzerinde en düşük izin kümenizin olması gerekir. İhtiyacınız olan belirli izinler senaryonuza göre değişir. Aşağıdaki tabloda en yaygın senaryolar özetlemektedir:

Senaryo Gerekli izin Örnek yerleşik roller
Sistem tarafından atanan kimlik oluşturma Microsoft.Web/sites/write uygulamanın üzerinde veya Microsoft.Web/sites/slots/write yuvasının üzerinde Web Sitesi Katkıda Bulunanı
Kullanıcı tarafından atanan kimlik oluşturma Microsoft.ManagedIdentity/userAssignedIdentities/write kimliğin oluşturulacağı kaynak grubu üzerinden Yönetilen Kimlik Katılımcısı
Uygulamanıza kullanıcı tarafından atanan bir kimlik atayın Microsoft.Web/sites/write uygulama üzerinden, Microsoft.Web/sites/slots/write yuva üzerinden veya
Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action kimlik üzerinden
Web Sitesi Katkıcısı ve Yönetilen Kimlik Operatörü
Azure rol atamaları oluşturma Microsoft.Authorization/roleAssignments/write hedef kaynak kapsamının üzerinde Rol Tabanlı Erişim Denetimi Yöneticisi veya Kullanıcı Erişimi Yöneticisi

Sistem tarafından atanan kimlik ekleme

Sistem tarafından atanan yönetilen kimliği etkinleştirmek için aşağıdaki yönergeleri kullanın.

  1. Azure portalında uygulamanızın sayfasına gidin.

  2. Soldaki menüden Ayarlar>Kimlik'i seçin.

  3. Sistem tarafından atanan sekmesinde, Durum'u Açık olarak ayarlayın. Ardından Kaydet'i seçin.

Kullanıcı tarafından atanan kimlik ekleme

Kullanıcı tarafından atanan bir kimliğe sahip bir uygulama oluşturmak için, kimliği oluşturun ve ardından kaynak tanımlayıcısını uygulama yapılandırmanıza ekleyin.

  1. Bu yönergelere göre kullanıcı tarafından atanan bir yönetilen kimlik kaynağı oluşturun.

  2. Uygulamanızın sayfasının sol menüsünde Ayarlar>Kimliği'ni seçin.

  3. Kullanıcı Ataması seçeneğini ve ardından Ekle seçeneğini seçin.

  4. Daha önce oluşturduğunuz kimliği arayın, seçin ve ardından Ekle'yi seçin.

Bu adımları tamamladıktan sonra uygulama yeniden başlatılır.

Hedef kaynağı yapılandırma

Uygulamanızdan erişime izin vermek için hedef kaynağı yapılandırmanız gerekir. Çoğu Azure hizmeti için bir rol ataması oluşturarak hedef kaynağı yapılandırabilirsiniz.

Bazı hizmetler Azure rol tabanlı erişim denetimi dışında mekanizmalar kullanır. Bir kimlik kullanarak erişimi yapılandırmayı anlamak için her hedef kaynağın belgelerine bakın. Microsoft Entra belirteçlerini destekleyen kaynaklar hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra kimlik doğrulamasını destekleyen Azure hizmetleri.

Örneğin, Azure Key Vault'ta bir gizliliğe erişmek için bir jeton talep ederseniz, yönetilen kimliğin hedef kasadaki gizliliklerle çalışabilmesini sağlayan bir rol ataması da oluşturmanız gerekir. Aksi takdirde, geçerli bir belirteç kullansanız bile Key Vault aramalarınızı reddeder. Aynı durum Azure SQL Veritabanı ve diğer hizmetler için de geçerlidir.

Önemli

Yönetilen kimlikler için arka uç hizmetleri yaklaşık 24 saat boyunca kaynak URI'sine göre bir önbellek tutar ve yönetilen kimliğin grubu veya rol üyeliğinde yapılan değişikliklerin geçerli olması bu kadar zaman alabilir. Şu anda yönetilen kimliğe ait belirtecin süresi dolmadan yenilenmeye zorlanması mümkün değildir. İzin eklemek veya kaldırmak için yönetilen kimliğin grup veya rol üyeliğini değiştirirseniz, kimliği kullanan Azure kaynağının doğru erişime sahip olması için yaklaşık 24 saat beklemeniz gerekebilir.

Grupların veya rol üyeliklerinin alternatifleri için, Yetkilendirme için yönetilen kimliklerin kullanım sınırlamaları bölümüne bakın.

Uygulama kodunda Azure hizmetlerine bağlanma

Yönetilen kimliğiyle bir uygulama, Azure SQL Veritabanı, Azure Key Vault ve Azure Depolama gibi Microsoft Entra Id'nin korunmasına yardımcı olduğu Azure kaynakları için belirteçler alabilir. Bu belirteçler, uygulamanın belirli bir kullanıcısını değil kaynağa erişen uygulamayı temsil eder.

App Service ve Azure İşlevleri, belirteç alma için dahili olarak erişilebilir bir REST uç noktası sağlar. Standart bir HTTP GET isteği kullanarak REST uç noktasına uygulamanın içinden erişebilirsiniz. İsteği her dilde genel bir HTTP istemcisiyle uygulayabilirsiniz.

.NET, JavaScript, Java ve Python için Azure Identity istemci kitaplığı bu REST uç noktası üzerinde bir soyutlama sağlar ve geliştirme deneyimini basitleştirir. Diğer Azure hizmetlerine bağlanmak, hizmete özgü istemciye kimlik bilgisi nesnesi eklemek kadar kolaydır.

Ham HTTP GET isteği sağlanan iki ortam değişkenini kullanır ve aşağıdaki örneğe benzer:

GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: <ip-address-:-port-in-IDENTITY_ENDPOINT>
X-IDENTITY-HEADER: <value-of-IDENTITY_HEADER>

Örnek yanıt aşağıdaki örneğe benzer olabilir:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJ0eXAi…",
    "expires_on": "1586984735",
    "resource": "https://vault.azure.net",
    "token_type": "Bearer",
    "client_id": "00001111-aaaa-2222-bbbb-3333cccc4444"
}

Bu yanıt, Microsoft Entra hizmet-hizmet erişim belirteci isteğinin yanıtıyla aynıdır. Key Vault'a erişmek için access_token değerini kasayla bağlantısı olan bir istemciye ekleyin.

REST uç noktası hakkında daha fazla bilgi için bu makalenin devamında yer alan REST uç nokta başvurusuna bakın.

Kimliği kaldır

Sistem tarafından atanan bir kimliği kaldırdığınızda, bu kimlik Microsoft Entra Id'den silinir. Uygulama kaynağını sildiğinizde sistem tarafından atanan kimlikler de Microsoft Entra Id'den otomatik olarak kaldırılır.

  1. Uygulamanızın sayfasının sol menüsünde Ayarlar>Kimliği'ni seçin.

  2. Kimlik türüne göre adımları izleyin:

    • Sistem tarafından atanan kimlik için: Sistem tarafından atanan sekmesinde Durum'aKapalı olarak geçin. Ardından Kaydet'i seçin.
    • Kullanıcı tarafından atanan kimlik için: Kullanıcı tarafından atanan sekmesini seçin, kimliğin onay kutusunu seçin ve ardından Kaldır'ı seçin. Onaylamak için Evet'i seçin.

Uyarı

Yalnızca yerel belirteç hizmetini devre dışı bırakabilecek bir uygulama ayarı da ayarlayabilirsiniz: WEBSITE_DISABLE_MSI. Ancak kimliği olduğu gibi bırakır. Araçlar, yönetilen kimliğin hâlâ açık veya etkin olduğunu gösteriyor. Sonuç olarak, bu ayarı kullanmanızı önermeyiz.

REST uç nokta başvurusu

Yönetilen kimliğe sahip bir uygulama, iki ortam değişkeni tanımlayarak bu uç noktayı kullanılabilir hale getirir:

  • IDENTITY_ENDPOINT: Yerel belirteç hizmetine URL.
  • IDENTITY_HEADER: Sunucu tarafı istek sahteciliği (SSRF) saldırılarını azaltmaya yardımcı olabilecek üst bilgi. Platform değeri döndürüyor.

IDENTITY_ENDPOINT değişkeni, uygulamanızın belirteç isteğinde bulunabileceği yerel bir URL'dir. Bir kaynağın belirtecini almak için bu uç noktaya bir HTTP GET isteği gönderin. Aşağıdaki parametreleri ekleyin:

Parametre adı İçinde Açıklama
resource Soru Jeton alınması gereken kaynağın Microsoft Entra kaynak URI'si. Bu kaynak , Microsoft Entra kimlik doğrulamasını veya başka bir kaynak URI'sini destekleyen Azure hizmetlerinden biri olabilir.
api-version Soru Kullanılacak belirteç API'sinin sürümü. 2019-08-01 adresini kullanın.
X-IDENTITY-HEADER Başlık Ortam değişkeninin IDENTITY_HEADER değeri. Bu başlık, SSRF saldırılarını azaltmaya yardımcı olmak için kullanılır.
client_id Soru (İsteğe bağlı) Kullanıcı tarafından atanan kimliğin kullanılacak istemci kimliği. principal_id, mi_res_id veya object_id içeren bir istekte kullanılamaz. Tüm kimlik parametreleri (client_id, principal_id, object_idve mi_res_id) atlanırsa, sistem tarafından atanan kimlik kullanılır.
principal_id Soru (Opsiyonel) Kullanıcıya atanmış kimliğin kullanılacak ana kimlik numarası. object_id parametresi bunun yerine kullanılabilecek bir diğer addır. client_id, mi_res_id veya object_id içeren bir istekte kullanılamaz. Tüm kimlik parametreleri (client_id, principal_id, object_idve mi_res_id) atlanırsa, sistem tarafından atanan kimlik kullanılır.
mi_res_id Soru (Opsiyonel) Kullanıcıya atanan kimliğin kullanılacak Azure kaynak kimliği. principal_id, client_id veya object_id içeren bir istekte kullanılamaz. Tüm kimlik parametreleri (client_id, principal_id, object_idve mi_res_id) atlanırsa, sistem tarafından atanan kimlik kullanılır.

Önemli

Kullanıcı tarafından atanan kimlikler için belirteçleri almaya çalışıyorsanız isteğe bağlı özelliklerden birini ekleyin. Aksi takdirde, belirteç hizmeti, var olabilir veya olmayabilir, sistem tarafından atanmış bir kimlik için bir belirteç almaya çalışır.

Aşağıdaki eğitimleri göz önünde bulundurun: