Microsoft Entra Id'den yönetilen kimlik, kapsayıcı uygulamanızın diğer Microsoft Entra korumalı kaynaklara erişmesini sağlar. Microsoft Entra Id'deki yönetilen kimlikler hakkında daha fazla bilgi için bkz . Azure kaynakları için yönetilen kimlikler.
Kapsayıcı uygulamanıza iki tür kimlik verilebilir:
Sistem tarafından atanan bir kimlik kapsayıcı uygulamanıza bağlıdır ve kapsayıcı uygulamanız silindiğinde silinir. Bir uygulama sistem tarafından atanan yalnızca bir kimliğe sahip olabilir.
Kullanıcı tarafından atanan kimlik, kapsayıcı uygulamanıza ve diğer kaynaklara atanabilen tek başına bir Azure kaynağıdır. Kapsayıcı uygulamasının kullanıcı tarafından atanan birden çok kimliği olabilir. Kimlik, siz silene kadar var olur.
Yönetilen kimlik neden kullanılır?
Microsoft Entra kimlik doğrulamasını destekleyen herhangi bir hizmette kimlik doğrulaması yapmak için çalışan bir kapsayıcı uygulamasında yönetilen kimlik kullanabilirsiniz.
Yönetilen kimliğe belirli izinler vermek için rol tabanlı erişim denetimini kullanabilirsiniz.
Sistem tarafından atanan kimlikler otomatik olarak oluşturulur ve yönetilir. Kapsayıcı uygulamanız silindiğinde silinirler.
Kullanıcı tarafından atanan kimlikleri ekleyip silebilir ve bunları birden çok kaynağa atayabilirsiniz. Bunlar kapsayıcı uygulamanızın yaşam döngüsünden bağımsızdır.
Yönetilen kimliklerinizi şu şekilde yapılandırabilirsiniz:
Azure portal
Azure CLI
Azure Resource Manager (ARM) şablonunuz
Çalışan bir kapsayıcı uygulamasına yönetilen kimlik eklendiğinde, silindiğinde veya değiştirildiğinde uygulama otomatik olarak yeniden başlatılmaz ve yeni bir düzeltme oluşturulmaz.
Dekont
11 Nisan 2022'ye kadar dağıtılan bir kapsayıcı uygulamasına yönetilen kimlik eklerken yeni bir düzeltme oluşturmanız gerekir.
Kapsayıcı uygulamanızın sayfasının sol gezinti bölmesinde aşağı kaydırarak Ayarlar grubuna gelin.
Kimlik'i seçin.
Sistem tarafından atanan sekmesinde Durum'aAçık olarak geçin. Kaydet'i seçin.
az containerapp identity assign Sistem tarafından atanan bir kimlik oluşturmak için komutunu çalıştırın:
az containerapp identity assign --name myApp --resource-group myResourceGroup --system-assigned
Kapsayıcı uygulamanızın ve kaynaklarınızın dağıtımını otomatikleştirmek için ARM şablonu kullanılabilir. Sistem tarafından atanan bir kimlik eklemek için ARM şablonunuza bir identity bölüm ekleyin.
"identity": {
"type": "SystemAssigned"
}
Sistem tarafından atanan türü eklemek, Azure'a uygulamanız için kimlik oluşturmasını ve yönetmesini söyler. Eksiksiz bir ARM şablonu örneği için bkz . ARM API Belirtimi.
ve az containerapp job createdahil olmak üzere az containerapp create bazı Azure CLI komutları giriş için YAML dosyalarını destekler. Sistem tarafından atanan bir kimlik eklemek için YAML dosyanıza bir identity bölüm ekleyin.
identity:
type: SystemAssigned
Sistem tarafından atanan türü eklemek, Azure'a uygulamanız için kimlik oluşturmasını ve yönetmesini söyler. Tam bir YAML şablonu örneği için bkz . ARM API Belirtimi.
Kullanıcı tarafından atanan kimlik ekleme
Bir kapsayıcı uygulamasını kullanıcı tarafından atanan bir kimlikle yapılandırmak için önce kimliği oluşturmanız ve ardından kapsayıcı uygulamanızın yapılandırmasına kaynak tanımlayıcısını eklemeniz gerekir. Azure portalı veya Azure CLI aracılığıyla kullanıcı tarafından atanan kimlikler oluşturabilirsiniz. Kullanıcı tarafından atanan kimlikleri oluşturma ve yönetme hakkında bilgi için bkz . Kullanıcı tarafından atanan yönetilen kimlikleri yönetme.
değerini kimliğin id özelliğiyle değiştirin<IDENTITY_RESOURCE_ID>. Birden fazla kullanıcı tarafından atanan kimlik atamak için parametresine --user-assigned boşlukla ayrılmış kimlik listesi sağlayın.
Kullanıcı tarafından atanan bir veya daha fazla kimlik eklemek için ARM şablonunuza bir identity bölüm ekleyin. ve <IDENTITY2_RESOURCE_ID> öğesini eklemek istediğiniz kimliklerin kaynak tanımlayıcılarıyla değiştirin<IDENTITY1_RESOURCE_ID>.
Nesneye userAssignedIdentities anahtar olarak kimliğin kaynak tanımlayıcısı ile bir öğe ekleyerek kullanıcı tarafından atanan her kimliği belirtin. Değer olarak boş bir nesne kullanın.
Bir uygulama hem sistem tarafından atanan hem de kullanıcı tarafından atanan kimliklere aynı anda sahip olabilir. Bu durumda type özelliği olacaktır SystemAssigned,UserAssigned.
Kullanıcı tarafından atanan bir veya daha fazla kimlik eklemek için YAML yapılandırma dosyanıza bir identity bölüm ekleyin. ve <IDENTITY2_RESOURCE_ID> öğesini eklemek istediğiniz kimliklerin kaynak tanımlayıcılarıyla değiştirin<IDENTITY1_RESOURCE_ID>.
Nesneye userAssignedIdentities anahtar olarak kimliğin kaynak tanımlayıcısı ile bir öğe ekleyerek kullanıcı tarafından atanan her kimliği belirtin. Değer olarak boş bir nesne kullanın.
Bir uygulama hem sistem tarafından atanan hem de kullanıcı tarafından atanan kimliklere aynı anda sahip olabilir. Bu durumda type özelliği olacaktır SystemAssigned,UserAssigned.
Hedef kaynağı yapılandırma
Bazı kaynaklar için, erişim vermek için uygulamanızın yönetilen kimliği için rol atamalarını yapılandırmanız gerekir. Aksi takdirde, uygulamanızdan Azure Key Vault ve Azure SQL Veritabanı gibi hizmetlere yapılan çağrılar, bu kimlik için geçerli bir belirteç kullansanız bile reddedilir. Azure rol tabanlı erişim denetimi (Azure RBAC) hakkında daha fazla bilgi edinmek için bkz . RBAC nedir?. 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 kimliklerle uygulama Azure SQL Veritabanı, Azure Key Vault ve Azure Depolama gibi Microsoft Entra Id kullanan Azure kaynaklarına erişmek 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.
Container Apps, belirteçleri almak 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. Diğer Azure hizmetlerine Bağlan, hizmete özgü istemciye kimlik bilgisi nesnesi eklemek kadar kolaydır.
Bağlantılı örneklerde kullanılır DefaultAzureCredential. Aynı desen Azure'da (yönetilen kimliklerle) ve yerel makinenizde (yönetilen kimlikler olmadan) çalıştığından çoğu senaryo için kullanışlıdır.
Bağlantılı örneklerde kullanılır DefaultAzureCredential. Aynı desen Azure'da (yönetilen kimliklerle) ve yerel makinenizde (yönetilen kimlikler olmadan) çalıştığından çoğu senaryo için kullanışlıdır.
JavaScript için Azure Identity istemci kitaplığına ilişkin daha fazla kod örneği için bkz . Azure Kimlik örnekleri.
Bağlantılı örneklerde kullanılır DefaultAzureCredential. Aynı desen Azure'da (yönetilen kimliklerle) ve yerel makinenizde (yönetilen kimlikler olmadan) çalıştığından çoğu senaryo için kullanışlıdır.
Bağlantılı örneklerde kullanılır DefaultAzureCredential. Aynı desen Azure'da (yönetilen kimliklerle) ve yerel makinenizde (yönetilen kimlikler olmadan) çalıştığından çoğu senaryo için kullanışlıdır.
Java için Azure Identity istemci kitaplığına ilişkin daha fazla kod örneği için bkz . Azure Kimlik Örnekleri.
Azure hizmetinin kaynak URI'sini belirterek yerel uç noktadan belirteç almak için aşağıdaki betiği kullanın. Belirteci almak için yer tutucuyu kaynak URI'siyle değiştirin.
Ortam değişkeninden belirteç uç noktası URL'sini IDENTITY_ENDPOINT alın. x-identity-header ortam değişkeninde depolanan GUID'yi IDENTITY_HEADER içerir.
GET http://localhost:42356/msi/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
x-identity-header: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a
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 ekleyeceksiniz access_token .
REST uç nokta başvurusu
Yönetilen kimliğe sahip bir kapsayıcı uygulaması, iki ortam değişkeni tanımlayarak kimlik uç noktasını kullanıma sunar:
IDENTITY_ENDPOINT - kapsayıcı uygulamanızın belirteç isteğinde bulunabileceği yerel URL.
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.
Bir kaynağın belirtecini almak için, aşağıdaki parametreler de dahil olmak üzere uç noktaya bir HTTP GET isteği gönderin:
Parametre adı
In
Açıklama
kaynak
Sorgu
Belirtecin alınması gereken kaynağın Microsoft Entra kaynak URI'si. Kaynak, 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" veya üzerini kullanın.
X-IDENTITY-HEADER
Üst bilgi
Ortam değişkeninin IDENTITY_HEADER değeri. Bu üst bilgi, sunucu tarafı istek sahteciliği (SSRF) saldırılarını azaltı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.
Yönetilen kimlikleri görüntüleme
Aşağıdaki Azure CLI komutunu kullanarak sistem tarafından atanan ve kullanıcı tarafından atanan yönetilen kimlikleri gösterebilirsiniz. Çıktı, kapsayıcı uygulamanıza atanan tüm yönetilen kimliklerin yönetilen kimlik türünü, kiracı kimliklerini ve asıl kimliklerini gösterir.
az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>
Yönetilen kimliği kaldırma
Sistem tarafından atanan bir kimliği kaldırdığınızda, bu kimlik Microsoft Entra Id'den silinir. Kapsayıcı uygulama kaynağını sildiğinizde sistem tarafından atanan kimlikler de Microsoft Entra Id'den otomatik olarak kaldırılır. Kapsayıcı uygulamanızdan kullanıcı tarafından atanan yönetilen kimliklerin kaldırılması, bunları Microsoft Entra Id'den kaldırmaz.
Uygulamanızın sayfasının sol gezinti bölmesinde aşağı kaydırarak Ayarlar grubuna gelin.
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'i seçin.
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.
Sistem tarafından atanan kimliği kaldırmak için:
az containerapp identity remove --name <APP_NAME> --resource-group <GROUP_NAME> --system-assigned
Kullanıcı tarafından atanan bir veya daha fazla kimliği kaldırmak için: