Azure Container Apps'te yönetilen kimlikler
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 atayabileceğiniz tek başına bir Azure kaynağıdır. Kapsayıcı uygulamasının kullanıcı tarafından atanan birden çok kimliği olabilir. Kullanıcı tarafından atanan kimlikler 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 kimliklerle:
- Uygulamanız yönetilen kimlikle kaynaklara bağlanır. Kapsayıcı uygulamanızda kimlik bilgilerini yönetmeniz gerekmez.
- 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. Kapsayıcı uygulamanızın yaşam döngüsünden bağımsızdır.
- Kapsayıcı uygulamanızın kapsayıcılarını çekmek için kullanıcı adı ve parola olmadan özel bir Azure Container Registry ile kimlik doğrulaması yapmak için yönetilen kimliği kullanabilirsiniz.
- Dapr bileşenleri aracılığıyla Dapr özellikli uygulamalar için bağlantılar oluşturmak üzere yönetilen kimlik kullanabilirsiniz
Yaygın kullanım örnekleri
Sistem tarafından atanan kimlikler aşağıdaki iş yükleri için en iyisidir:
- tek bir kaynak içinde yer alan
- bağımsız kimliklere ihtiyaç duyar
Kullanıcı tarafından atanan kimlikler aşağıdaki iş yükleri için idealdir:
- birden çok kaynakta çalıştırabilir ve tek bir kimliği paylaşabilir
- güvenli bir kaynak için ön yetkilendirme gerekiyor
Sınırlamalar
Init kapsayıcıları yalnızca tüketim ortamlarında ve ayrılmış iş yükü profili ortamlarında yönetilen kimliklere erişemez
Yönetilen kimlikleri yapılandırma
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.
Not
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.
Sistem tarafından atanan kimlik ekleme
Azure portalında kapsayıcı uygulamanıza gidin.
Ayarlar grubunda Kimlik'i seçin.
Sistem tarafından atanan sekmesinde Durum'a Açık olarak geçin.
Kaydet'i seçin.
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.
İlk olarak, kullanıcı tarafından atanan bir kimlik kaynağı oluşturmanız gerekir.
Kullanıcı tarafından atanan yönetilen kimlikleri yönetme bölümünde bulunan adımlara göre kullanıcı tarafından atanan bir yönetilen kimlik kaynağı oluşturun.
Azure portalında kapsayıcı uygulamanıza gidin.
Ayarlar grubunda Kimlik'i seçin.
Kullanıcı tarafından atanan sekmesinde Ekle'yi seçin.
Daha önce oluşturduğunuz kimliği arayın ve seçin.
Ekle'yi seçin.
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ç kullandığınızda 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. Belirteç yenilemeyi zorlama desteklenmez.
Uygulama kodunda Azure hizmetlerine bağlanma
Yönetilen kimliklerle bir 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ı, tercih ettiğiniz dilde genel bir HTTP GET
istemcisiyle gönderebileceğiniz standart bir HTTP isteğiyle uygulamanın içinden kullanılabilir. .NET, JavaScript, Java ve Python için Azure Identity istemci kitaplığı bu REST uç noktası üzerinde bir soyutlama sağlar. Hizmete özgü istemciye bir kimlik bilgisi nesnesi ekleyerek diğer Azure hizmetlerine bağlanabilirsiniz.
Not
Azure Identity istemci kitaplığını kullanırken, kullanıcı tarafından atanan yönetilen kimlik istemci kimliğini açıkça belirtmeniz gerekir.
Not
Entity Framework Core ile Azure SQL veri kaynaklarına bağlanırken, yönetilen kimlik bağlantısı için özel bağlantı dizesi sağlayan Microsoft.Data.SqlClient'ı kullanmayı göz önünde bulundurun.
.NET uygulamaları için, yönetilen kimlikle çalışmanın en basit yolu .NET için Azure Identity istemci kitaplığını kullanmaktır. Daha fazla bilgi için şu kaynaklara gözatın:
- Projenize Azure Identity istemci kitaplığı ekleme
- Sistem tarafından atanan kimlikle Azure hizmetine erişme
- Kullanıcı tarafından atanan kimlikle Azure hizmetine erişme
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, bu nesne çoğu senaryoda etkilidir.
Ölçek kuralları için yönetilen kimlik kullanma
Yönetilen kimlikleri destekleyen Azure hizmetleriyle kimlik doğrulaması yapmak için ölçek kurallarınızda yönetilen kimlikleri kullanabilirsiniz. Ölçek kuralınızda yönetilen kimlik kullanmak için, ölçek kuralınızdaki özellik yerine auth
özelliğini kullanınidentity
. özelliği için identity
kabul edilebilir değerler, kullanıcı tarafından atanan bir kimliğin Azure kaynak kimliği veya system
sistem tarafından atanan bir kimlik kullanmaktır.
Not
Ölçek kurallarında yönetilen kimlik kimlik doğrulaması genel önizleme aşamasındadır. API sürümünde 2024-02-02-preview
kullanılabilir.
Aşağıdaki ARM şablonu örneği, yönetilen kimliğin Azure Kuyruk Depolama ölçek kuralıyla nasıl kullanılacağını gösterir:
Kuyruk depolama hesabı, depolama hesabını tanımlamak için özelliğini kullanırken accountName
özelliği hangi yönetilen kimliğin identity
kullanılacağını belirtir. özelliğini kullanmanız auth
gerekmez.
"scale": {
"minReplicas": 1,
"maxReplicas": 10,
"rules": [{
"name": "myQueueRule",
"azureQueue": {
"accountName": "mystorageaccount",
"queueName": "myqueue",
"queueLength": 2,
"identity": "<IDENTITY1_RESOURCE_ID>"
}
}]
}
Yönetilen kimliği ölçek kurallarıyla kullanma hakkında daha fazla bilgi edinmek için bkz . Azure Container Apps'te ölçeklendirme kurallarını ayarlama.
Yönetilen kimlik kullanılabilirliğini denetleme
Container Apps, init kapsayıcılarını ve ana kapsayıcıları belirtmenize olanak tanır. Varsayılan olarak, tüketim iş yükü profili ortamındaki hem ana hem de giriş kapsayıcıları, diğer Azure hizmetlerine erişmek için yönetilen kimliği kullanabilir. Yalnızca tüketim ortamlarında ve ayrılmış iş yükü profili ortamlarında yönetilen kimliği yalnızca ana kapsayıcılar kullanabilir. Yönetilen kimlik erişim belirteçleri, kapsayıcı uygulamasında yapılandırılan her yönetilen kimlik için kullanılabilir. Ancak bazı durumlarda yönetilen kimlik için yalnızca init kapsayıcısı veya ana kapsayıcı erişim belirteçleri gerektirir. Diğer durumlarda, yönetilen kimliği yalnızca kapsayıcı görüntüsünü çekmek için Azure Container Registry'nize erişmek için kullanabilirsiniz ve uygulamanızın kendisinin Azure Container Registry'nize erişimi olması gerekmez.
API sürümünden 2024-02-02-preview
başlayarak, en düşük ayrıcalık güvenlik ilkesini izlemek için başlatma ve ana aşamalar sırasında kapsayıcı uygulamanız için hangi yönetilen kimliklerin kullanılabilir olduğunu denetleyebilirsiniz. Aşağıdaki seçenekler bulunur:
Init
: Yalnızca init kapsayıcıları için kullanılabilir. Yönetilen kimlik gerektiren ancak artık ana kapsayıcıda yönetilen kimliğe ihtiyacınız kalmadığında bazı başlatma işleri gerçekleştirmek istediğinizde bunu kullanın. Bu seçenek şu anda yalnızca iş yükü profili tüketim ortamlarında desteklenmektedirMain
: Yalnızca ana kapsayıcılar için kullanılabilir. Init kapsayıcınızın yönetilen kimliğe ihtiyacı yoksa bunu kullanın.All
: Tüm kapsayıcılar tarafından kullanılabilir. Bu değer, varsayılan ayardır.None
: Hiçbir kapsayıcı tarafından kullanılamaz. Bunu yalnızca ACR görüntü çekme, ölçeklendirme kuralları veya Key Vault gizli dizileri için kullanılan ve kapsayıcılarınızda çalışan kod için kullanılabilir olması gerekmeyen bir yönetilen kimliğiniz varsa kullanın.
Aşağıdaki ARM şablonu örneği, bir iş yükü profili tüketim ortamında aşağıdaki gibi bir kapsayıcı uygulamasının nasıl yapılandırıldığını gösterir:
- Kapsayıcı uygulamasının sistem tarafından atanan kimliğini yalnızca ana kapsayıcılarla kısıtlar.
- Kullanıcı tarafından atanan belirli bir kimliği yalnızca init kapsayıcılarıyla kısıtlar.
- Kapsayıcılardaki kodun bu yönetilen kimliği kullanarak kayıt defterine erişmesine izin vermeden Azure Container Registry görüntü çekmesi için kullanıcı tarafından atanan belirli bir kimliği kullanır. Bu örnekte kapsayıcıların kayıt defterine erişmesi gerekmez.
Bu yaklaşım, kötü amaçlı bir aktör kapsayıcılara yetkisiz erişim elde ederse erişilebilen kaynakları sınırlar.
{
"location": "eastus2",
"identity":{
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"<IDENTITY1_RESOURCE_ID>":{},
"<ACR_IMAGEPULL_IDENTITY_RESOURCE_ID>":{}
}
},
"properties": {
"workloadProfileName":"Consumption",
"environmentId": "<CONTAINER_APPS_ENVIRONMENT_ID>",
"configuration": {
"registries": [
{
"server": "myregistry.azurecr.io",
"identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID"
}],
"identitySettings":[
{
"identity": "ACR_IMAGEPULL_IDENTITY_RESOURCE_ID",
"lifecycle": "None"
},
{
"identity": "<IDENTITY1_RESOURCE_ID>",
"lifecycle": "Init"
},
{
"identity": "system",
"lifecycle": "Main"
}]
},
"template": {
"containers":[
{
"image":"myregistry.azurecr.io/main:1.0",
"name":"app-main"
}
],
"initContainers":[
{
"image":"myregistry.azurecr.io/init:1.0",
"name":"app-init",
}
]
}
}
}
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 öğesini 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.