Aracılığıyla paylaş


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

  1. Azure portalında kapsayıcı uygulamanıza gidin.

  2. Ayarlar grubunda Kimlik'i seçin.

  3. Sistem tarafından atanan sekmesinde Durum'a Açık olarak geçin.

  4. Kaydet'i seçin.

Sistem tarafından atanan kimliklerin ekran görüntüsü.

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.

  1. 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.

  2. Azure portalında kapsayıcı uygulamanıza gidin.

  3. Ayarlar grubunda Kimlik'i seçin.

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

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

  6. Ekle'yi seçin.

Kullanıcı tarafından atanan kimliklerin ekran görüntüsü.

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:

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-previewkullanı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-previewbaş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 desteklenmektedir
  • Main: 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.

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

  2. 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.

Sonraki adımlar