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

Bu makalede, 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.

Önemli

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.

Not

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

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. Kimlik Azure platformu tarafından yönetilir ve herhangi bir gizli dizi sağlamanızı veya döndürmenizi gerektirmez. Microsoft Entra Id'deki yönetilen kimlikler hakkında daha fazla bilgi için bkz . Azure kaynakları için yönetilen kimlikler.

Uygulamanız için iki tür kimlik verilebilir:

  • Sistem tarafından atanan bir kimlik uygulamanıza bağlıdır ve uygulamanız silinirse silinir. Bir uygulama sistem tarafından atanan yalnızca bir kimliğe sahip olabilir.
  • Kullanıcı tarafından atanan kimlik ise uygulamanıza atanabilen tek başına bir Azure kaynağıdır. Bir uygulama için kullanıcı tarafından atanan birden çok kimlik olabilir.

Yönetilen kimlik yapılandırması yuvaya özgüdür. Portalda bir dağıtım yuvası için yönetilen kimlik 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. Genellikle yuva adı ile <app-name>/slots/<slot-name>benzerdir.

Bu videoda, App Service için yönetilen kimliklerin nasıl kullanılacağı gösterilmektedir.

Videodaki adımlar aşağıdaki bölümlerde de açıklanmıştır.

Sistem tarafından atanan kimlik ekleme

  1. Uygulamanızın sayfasının sol gezinti bölmesinde aşağı kaydırarak Ayarlar grubuna gelin.

  2. Kimlik'i seçin.

  3. Sistem tarafından atanan sekmesinde Durum'aAçık olarak geçin. Kaydet'e tıklayın.

    Durum'un Açık olarak değiştirileceği yeri gösteren ve ardından Kaydet'i seçen ekran görüntüsü.

Kullanıcı tarafından atanan kimlik ekleme

Kullanıcı tarafından atanan kimlikle uygulama oluşturmak için, kimliği oluşturmanız ve ardından kaynak tanımlayıcısını uygulama yapılandırmanıza eklemeniz gerekir.

İlk olarak, kullanıcı tarafından atanan bir kimlik kaynağı oluşturmanız gerekir.

  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 gezinti bölmesinde aşağı kaydırarak Ayarlar grubuna gelin.

  3. Kimlik'i seçin.

  4. Kullanıcı tarafından atanan>Ekle'yi seçin.

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

    App Service'te yönetilen kimlik

    Ekle'yi seçtiğinizde uygulama yeniden başlatılır.

Hedef kaynağı yapılandırma

Uygulama veya işlevinizden erişime izin vermek için hedef kaynağı yapılandırmanız gerekebilir. Örneğin, Key Vault'a erişmek için bir belirteç isterseniz, uygulamanızın veya işlevinizin yönetilen kimliğini içeren bir erişim ilkesi de eklemeniz gerekir. Aksi takdirde, geçerli bir belirteç kullansanız bile Key Vault'a yaptığınız çağrılar reddedilir. Aynı durum Azure SQL Veritabanı için de geçerlidir. Microsoft Entra belirteçlerini destekleyen kaynaklar hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra kimlik doğrulamasını destekleyen Azure hizmetleri.

Önemli

Yönetilen kimlikler için arka uç hizmetleri, yaklaşık 24 saat boyunca kaynak URI'sine göre bir önbellek tutar. Belirli bir hedef kaynağın erişim ilkesini güncelleştirir ve bu kaynak için hemen bir belirteç alırsanız, belirtecin süresi dolana kadar eski izinlere sahip önbelleğe alınmış bir belirteç almaya devam edebilirsiniz. Şu anda belirteç yenilemeyi zorlamanın bir yolu yoktur.

Uygulama kodunda Azure hizmetlerine Bağlan

Yönetilen kimliğiyle bir uygulama Azure SQL Veritabanı, Azure Key Vault ve Azure Depolama gibi Microsoft Entra ID ile korunan Azure kaynakları için belirteçler alabilir. Bu belirteçler kaynağa erişen uygulamayı temsil eder ve uygulamanın belirli bir kullanıcısını temsil eder.

App Service ve Azure İşlevleri, belirteç alma için dahili olarak erişilebilir bir REST uç noktası sağlar. REST uç noktasına, her dilde genel bir HTTP istemcisiyle uygulanabilen standart bir HTTP GET ile uygulamanın içinden erişilebilir. .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ğlan, hizmete özgü istemciye kimlik bilgisi nesnesi eklemek kadar kolaydır.

Ham HTTP GET isteği aşağıdaki örneğe benzer:

GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: localhost:4141
X-IDENTITY-HEADER: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a

Örnek yanıt aşağıdaki gibi görünebilir:

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": "5E29463D-71DA-4FE0-8E69-999B57DB23B0"
}

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 değerini kasayla bir istemci bağlantısına eklersiniz access_token .

REST uç noktası hakkında daha fazla bilgi için bkz . REST uç noktası başvurusu.

Kimliği kaldırma

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 gezinti bölmesinde aşağı kaydırarak Ayarlar grubuna gelin.

  2. Kimlik'i seçin. Ardından kimlik türüne göre adımları izleyin:

    • Sistem tarafından atanan kimlik: Sistem tarafından atanan sekmesinde Durum seçeneğini Kapalı olarak değiştirin. Kaydet'e tıklayın.
    • Kullanıcı tarafından atanan kimlik: Kullanıcı tarafından atanan sekmesini seçin, kimliğin onay kutusunu seçin ve Kaldır'ı seçin. Onaylamak için Evet'i seçin.

Not

Ayrıca, yerel belirteç hizmetini devre dışı bırakabilen WEBSITE_DISABLE_MSI ayarlanabilen bir uygulama ayarı da vardır. Ancak, kimliği yerinde bırakır ve araçlar yönetilen kimliği "açık" veya "etkin" olarak göstermeye devam eder. Sonuç olarak, bu ayarın kullanılması önerilmez.

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ç hizmetinin URL'si.
  • IDENTITY_HEADER - Sunucu tarafı istek sahteciliği (SSRF) saldırılarını azaltmaya yardımcı olmak için kullanılan üst bilgi. Değer platform tarafından döndürülür.

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

Parametre adı İçinde Açıklama
kaynak Sorgu Belirtecin alınması gereken kaynağın Microsoft Entra kaynak URI'si. Bu, Microsoft Entra kimlik doğrulamasını veya başka bir kaynak URI'sini destekleyen Azure hizmetlerinden biri olabilir.
api-sürümü Sorgu Kullanılacak belirteç API'sinin sürümü. 2019-08-01 adresini kullanın.
X-IDENTITY-HEADER Üst bilgi IDENTITY_HEADER ortam değişkeninin değeri. Bu üst bilgi, sunucu tarafı istek sahteciliği (SSRF) saldırılarını azaltmaya yardımcı olmak için kullanılır.
client_id Sorgu (İsteğe bağlı) Kullanılacak kullanıcı tarafından atanan kimliğin istemci kimliği. , mi_res_idveya object_idiçeren principal_idbir 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 Sorgu (İsteğe bağlı) Kullanılacak kullanıcı tarafından atanan kimliğin asıl kimliği. object_id 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 Sorgu (İsteğe bağlı) Kullanılacak kullanıcı tarafından atanan kimliğin Azure kaynak kimliği. , client_idveya object_idiçeren principal_idbir 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 almayı denerseniz, isteğe bağlı özelliklerden birini eklemeniz gerekir. Aksi takdirde belirteç hizmeti, sistem tarafından atanan bir kimlik için var olabilecek veya varolmayan bir belirteç almayı dener.

Sonraki adımlar