App Service ve Azure Işlevleri için Yönetilen kimlikler kullanma

Bu konu, App Service ve Azure Işlevleri uygulamaları için yönetilen bir kimlik oluşturmayı ve diğer kaynaklara erişmek için nasıl kullanılacağını gösterir.

Önemli

App Service ve Azure Işlevleri için Yönetilen kimlikler, uygulamanız abonelikler/kiracılar arasında geçirilirse beklendiği gibi davranır. Uygulamanın, özelliği devre dışı bırakıp yeniden etkinleştirerek gerçekleştirilen yeni bir kimlik alması gerekir. Aşağıdaki kimliği kaldırma bölümüne bakın. Aşağı akış kaynakları, yeni kimliği kullanmak için erişim ilkelerinin güncelleştirilmesini de gerekir.

Not

Yönetilen kimlikler, Azure Arc 'da dağıtılan uygulamalariçin kullanılamaz.

Azure Active Directory (Azure AD) tarafından yönetilen bir kimlik, uygulamanızın Azure Key Vault gibi diğer Azure AD 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. Azure AD 'de Yönetilen kimlikler hakkında daha fazla bilgi için bkz. Azure kaynakları Için Yönetilen kimlikler.

Uygulamanıza iki tür kimlik verilebilir:

  • Sistem tarafından atanan bir kimlik uygulamanıza bağlanır ve uygulamanız silinirse silinir. Uygulamanın yalnızca bir sistem tarafından atanmış kimliği olabilir.
  • Kullanıcı tarafından atanan bir kimlik , uygulamanıza atanabilecek tek başına bir Azure kaynağıdır. Bir uygulamada birden çok kullanıcı tarafından atanan kimlik olabilir.

Sistem tarafından atanan kimlik ekleme

Sistem tarafından atanan kimlik ile uygulama oluşturmak, uygulamada ek bir özellik ayarlanmasını gerektirir.

Azure portalını kullanma

Portalda yönetilen bir kimlik ayarlamak için öncelikle normal olarak bir uygulama oluşturun ve ardından özelliği etkinleştirmeniz gerekir.

  1. Portalda genellikle yaptığınız gibi bir uygulama oluşturun. Portalda bu sayfaya gidin.

  2. Bir işlev uygulaması kullanıyorsanız, platform özellikleri' ne gidin. Diğer uygulama türleri için, sol gezinti bölmesinde Ayarlar grubuna gidin.

  3. Kimlik seçin.

  4. Sistem atandı sekmesinde durumu Açık olarak değiştirin. Kaydet’e tıklayın.

    Durumun açık olduğunu gösteren ekran görüntüsü ve sonra Kaydet ' i seçin.

Not

Web uygulamanız veya yuva uygulamanız için yönetilen kimliği Azure portal, Kurumsal uygulamalar altında, Kullanıcı ayarları bölümüne bakın. Genellikle yuva adı öğesine benzerdir <app name>/slots/<slot name> .

Azure CLI'yı kullanma

Azure CLI kullanarak yönetilen kimlik ayarlamak için komutunu mevcut bir uygulamada az webapp identity assign kullansanız gerekir. Bu bölümdeki örnekleri çalıştırmaya üç seçeneğiniz vardır:

  • Azure Cloud Shell'den Azure portal.
  • Aşağıdaki kod Azure Cloud Shell sağ üst köşesinde yer alan "Deneyin" düğmesi aracılığıyla ekli kodu kullanın.
  • Yerel CLI konsolunu kullanmayı tercih ediyorsanız Azure CLI'nın en son sürümünü (2.0.31 veya sonraki bir sürümü) yükleyin.

Aşağıdaki adımlar, CLI kullanarak bir web uygulaması oluşturma ve bu uygulamaya kimlik atama konusunda size yol sağlar:

  1. Azure CLI'yi yerel bir konsolda kullanıyorsanız, önce az login kullanarak Azure'da oturum açın. Uygulamayı dağıtmak istediğiniz Azure aboneliğiyle ilişkili bir hesap kullanın:

    az login
    
  2. CLI kullanarak bir web uygulaması oluşturun. CLI'nın App Service ile nasıl kullanıla App Service için bkz. CLI örnekleri:

    az group create --name myResourceGroup --location westus
    az appservice plan create --name myPlan --resource-group myResourceGroup --sku S1
    az webapp create --name myApp --resource-group myResourceGroup --plan myPlan
    
  3. Bu identity assign uygulamanın kimliğini oluşturmak için komutunu çalıştırın:

    az webapp identity assign --name myApp --resource-group myResourceGroup
    

Azure PowerShell’i kullanma

Not

Bu makale Azure Az PowerShell modülünü kullanacak şekilde güncelleştirilmiştir. Az PowerShell modülü, Azure ile etkileşim kurmak için önerilen PowerShell modülüdür. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Aşağıdaki adımlar, uygulama oluşturma ve uygulama kimliği atama konusunda size yol Azure PowerShell. Web uygulaması ve işlev uygulaması oluşturma yönergeleri farklıdır.

Web Azure PowerShell için web uygulaması kullanma

  1. Gerekirse, Azure PowerShell kılavuzunda bulunan yönergeleri kullanarak Azure PowerShellçalıştırın ve ardından Azure ile Login-AzAccount bağlantı oluşturmak için çalıştırın.

  2. Web uygulaması oluşturmak için Azure PowerShell. PowerShell örnekleriyle Azure PowerShell kullanma App Service daha App Service bkz. :

    # Create a resource group.
    New-AzResourceGroup -Name $resourceGroupName -Location $location
    
    # Create an App Service plan in Free tier.
    New-AzAppServicePlan -Name $webappname -Location $location -ResourceGroupName $resourceGroupName -Tier Free
    
    # Create a web app.
    New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname -ResourceGroupName $resourceGroupName
    
  3. Bu Set-AzWebApp -AssignIdentity uygulamanın kimliğini oluşturmak için komutunu çalıştırın:

    Set-AzWebApp -AssignIdentity $true -Name $webappname -ResourceGroupName $resourceGroupName 
    

İşlev Azure PowerShell için uygulama kullanma

  1. Gerekirse, Azure PowerShell kılavuzunda bulunan yönergeleri kullanarak Azure PowerShellçalıştırın ve ardından Azure ile Login-AzAccount bağlantı oluşturmak için çalıştırın.

  2. İşlev uygulamasını kullanarak bir Azure PowerShell. Azure Işlevleri ile Azure PowerShell kullanma hakkında daha fazla örnek için, az. Functions başvurusunabakın:

    # Create a resource group.
    New-AzResourceGroup -Name $resourceGroupName -Location $location
    
    # Create a storage account.
    New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -SkuName $sku
    
    # Create a function app with a system-assigned identity.
    New-AzFunctionApp -Name $functionAppName -ResourceGroupName $resourceGroupName -Location $location -StorageAccountName $storageAccountName -Runtime $runtime -IdentityType SystemAssigned
    

Bunun yerine, var olan bir işlev uygulamasını da güncelleştirebilirsiniz Update-AzFunctionApp .

Azure Resource Manager şablonu kullanma

Azure Resource Manager şablonu, Azure kaynaklarınızın dağıtımını otomatikleştirmek için kullanılabilir. App Service ve Işlevlerine dağıtma hakkında daha fazla bilgi edinmek için bkz. App Service kaynak dağıtımını otomatikleştirme ve Azure Işlevlerinde kaynak dağıtımını otomatikleştirme.

Microsoft.Web/sitesKaynak tanımına aşağıdaki özelliği ekleyerek, herhangi bir kaynak türü bir kimlikle oluşturulabilir:

"identity": {
    "type": "SystemAssigned"
}

Not

Bir uygulama aynı anda hem sistem tarafından hem de Kullanıcı tarafından atanan kimliklere sahip olabilir. Bu durumda, type özelliği SystemAssigned,UserAssigned

Sistem tarafından atanan tür eklendiğinde Azure, uygulamanız için kimlik oluşturma ve yönetme konusunda sizi söyler.

Örneğin, bir Web uygulaması aşağıdaki gibi görünebilir:

{
    "apiVersion": "2016-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('appName')]",
    "location": "[resourceGroup().location]",
    "identity": {
        "type": "SystemAssigned"
    },
    "properties": {
        "name": "[variables('appName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "hostingEnvironment": "",
        "clientAffinityEnabled": false,
        "alwaysOn": true
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
    ]
}

Site oluşturulduğunda, aşağıdaki ek özelliklere sahiptir:

"identity": {
    "type": "SystemAssigned",
    "tenantId": "<TENANTID>",
    "principalId": "<PRINCIPALID>"
}

Tenantıd özelliği, kimliğin ait olduğu Azure AD kiracısını tanımlar. PrincipalId, uygulamanın yeni kimliği için benzersiz bir tanımlayıcıdır. Azure AD 'de hizmet sorumlusu, App Service veya Azure Işlevleri örneğine verdiğiniz aynı ada sahiptir.

Bu özelliklere şablonda daha sonraki bir aşamada başvuru yapmanız gerekiyorsa, bu örnekte olduğu gibi bayrağıyla birlikte reference() şablon işlevi aracılığıyla bunu yapabilirsiniz 'Full' :

{
    "tenantId": "[reference(resourceId('Microsoft.Web/sites', variables('appName')), '2018-02-01', 'Full').identity.tenantId]",
    "objectId": "[reference(resourceId('Microsoft.Web/sites', variables('appName')), '2018-02-01', 'Full').identity.principalId]",
}

Kullanıcı tarafından atanan kimlik ekleme

Kullanıcı tarafından atanan kimlik ile uygulama oluşturmak için kimlik oluşturmanız ve ardından kaynak tanımlayıcısını uygulama yapılandırmaya eklemeniz gerekir.

Azure portalını kullanma

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

  1. Bu yönergeleregöre Kullanıcı tarafından atanan bir yönetilen kimlik kaynağı oluşturun.

  2. Portalda genellikle yaptığınız gibi bir uygulama oluşturun. Portalda bu sayfaya gidin.

  3. İşlev uygulaması kullanıyorsanız Platform özellikleri'ne gidin. Diğer uygulama türleri için, aşağı kaydırarak sol gezinti bölmesindeki Ayarlar grubuna gidin.

  4. Kimlik'i seçin.

  5. Kullanıcı tarafından atanan sekmesinde Ekle'ye tıklayın.

  6. Daha önce oluşturduğunuz kimliği arayın ve seçin. Ekle'ye tıklayın.

    App Service'de yönetilen kimlik

Azure PowerShell’i kullanma

Not

Bu makale Azure Az PowerShell modülünü kullanacak şekilde güncelleştirilmiştir. Az PowerShell modülü, Azure ile etkileşim kurmak için önerilen PowerShell modülüdür. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Aşağıdaki adımlar, uygulama oluşturma ve uygulama kimliği atama konusunda size yol Azure PowerShell.

Not

Azure PowerShell için Azure App Service sürümü, kullanıcı tarafından Azure App Service kimlikleri desteklemez. Aşağıdaki yönergeler, Azure İşlevleri.

  1. Gerekirse, Azure PowerShell kılavuzunda bulunan yönergeleri kullanarak Azure PowerShellçalıştırın ve ardından Azure ile Login-AzAccount bağlantı oluşturmak için çalıştırın.

  2. İşlev uygulamasını kullanarak bir Azure PowerShell. Azure İşlevleri ile Azure PowerShell kullanma hakkında daha fazla Azure İşlevleri için Az.Functions başvurusuna bakın. Aşağıdaki betik ayrıca kullanıcı tarafından atanan yönetilen kimliği oluşturma, listeye ekleme veya silme için ayrı olarak yüklemesi gereken kimlikleri New-AzUserAssignedIdentity Azure PowerShell.

    # Create a resource group.
    New-AzResourceGroup -Name $resourceGroupName -Location $location
    
    # Create a storage account.
    New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -SkuName $sku
    
    # Create a user-assigned identity. This requires installation of the "Az.ManagedServiceIdentity" module.
    $userAssignedIdentity = New-AzUserAssignedIdentity -Name $userAssignedIdentityName -ResourceGroupName $resourceGroupName
    
    # Create a function app with a user-assigned identity.
    New-AzFunctionApp -Name $functionAppName -ResourceGroupName $resourceGroupName -Location $location -StorageAccountName $storageAccountName -Runtime $runtime -IdentityType UserAssigned -IdentityId $userAssignedIdentity.Id
    

Bunun yerine, mevcut bir işlev uygulamasını kullanarak da Update-AzFunctionApp güncelleştirebilirsiniz.

Azure Resource Manager şablonu kullanma

Azure Azure Resource Manager dağıtımını otomatikleştirmek için bir şablon kullanılabilir. App Service ve İşlevler'e dağıtma hakkında daha fazla bilgi edinmek için bkz. App Service'de kaynak dağıtımını otomatik hale Azure İşlevleri.

Kaynak tanımına aşağıdaki bloğu dahil etmek ve yerine istenen kimliğin kaynak kimliğini yazarak herhangi bir türde kaynak bir Microsoft.Web/sites <RESOURCEID> kimlikle oluşturulabilir:

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<RESOURCEID>": {}
    }
}

Not

Bir uygulamanın aynı anda hem sistem tarafından atanan hem de kullanıcı tarafından atanan kimlikleri olabilir. Bu durumda, type özelliği SystemAssigned,UserAssigned

Kullanıcı tarafından atanan türü eklemek, Azure 'un uygulamanız için belirtilen kullanıcı tarafından atanan kimliğini kullanmasını söyler.

Örneğin, bir Web uygulaması aşağıdaki gibi görünebilir:

{
    "apiVersion": "2016-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('appName')]",
    "location": "[resourceGroup().location]",
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {}
        }
    },
    "properties": {
        "name": "[variables('appName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "hostingEnvironment": "",
        "clientAffinityEnabled": false,
        "alwaysOn": true
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
    ]
}

Site oluşturulduğunda, aşağıdaki ek özelliklere sahiptir:

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<RESOURCEID>": {
            "principalId": "<PRINCIPALID>",
            "clientId": "<CLIENTID>"
        }
    }
}

PrincipalId, Azure AD yönetimi için kullanılan kimlik için benzersiz bir tanımlayıcıdır. ClientID, uygulamanın çalışma zamanı çağrıları sırasında hangi kimliğin kullanılacağını belirtmek için kullanılan yeni kimliği için benzersiz bir tanımlayıcıdır.

Azure kaynakları için belirteçleri alma

Bir uygulama, Azure Key Vault gibi Azure AD tarafından korunan diğer kaynaklara erişmek için belirteçleri almak üzere yönetilen kimliğini kullanabilir. Bu belirteçler, uygulamanın belirli bir kullanıcısı değil, kaynağa erişen uygulamayı temsil eder.

Uygulamanızdaki erişime izin vermek için hedef kaynağı yapılandırmanız gerekebilir. Örneğin, Key Vault erişmek için bir belirteç istemeniz durumunda uygulamanızın kimliğini içeren bir erişim ilkesi eklediğinizden emin olmanız gerekir. Aksi takdirde, belirteci içerse bile Key Vault çağrılarınız reddedilir. Azure Active Directory belirteçlerini destekleyen kaynaklar hakkında daha fazla bilgi edinmek için bkz. Azure AD kimlik doğrulamasını destekleyen Azure hizmetleri.

Önemli

Yönetilen kimlikler için arka uç Hizmetleri, yaklaşık 24 saat boyunca kaynak URI başına 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 izinlerle önbelleğe alınmış bir belirteç almaya devam edebilirsiniz. Şu anda belirteç yenilemeyi zorlamaya yönelik bir yol yoktur.

App Service ve Azure Işlevlerinde belirteç almak için basit bir REST Protokolü vardır. Bu, tüm uygulamalar ve diller için kullanılabilir. .NET ve Java için Azure SDK, bu protokol üzerinden bir soyutlama sağlar ve yerel bir geliştirme deneyimini kolaylaştırır.

REST protokolünü kullanma

Not

"2017-09-01" API sürümünü kullanan bu protokolün eski bir sürümü, yerine üst bilgi kullandı ve yalnızca kullanıcı tarafından atanan özelliğini secret X-IDENTITY-HEADER kabul clientid etti. Ayrıca, bir expires_on zaman damgası biçiminde döndürüldü. MSI_ENDPOINT bir diğer ad olarak IDENTITY_ENDPOINT ve MSI_SECRET için diğer ad olarak IDENTITY_HEADER. Protokolün bu sürümü şu anda barındırma planlarının Linux Tüketimi gereklidir.

Yönetilen kimliğe sahip bir uygulamada tanımlanmış iki ortam değişkeni vardır:

  • IDENTITY_ENDPOINT - yerel belirteç hizmetinin URL'si.
  • IDENTITY_HEADER - sunucu tarafı istek sahtecilik (SSRF) saldırılarını azaltmak için kullanılan üst bilgi. Değer platform tarafından döndürülür.

Uygulama IDENTITY_ENDPOINT, uygulamanıza belirteç isteğide bulunan yerel bir URL'dir. Bir kaynağa belirteç almak için, aşağıdaki parametreler de dahil olmak üzere bu uç noktasına bir HTTP GET isteğinde bulundurabilirsiniz:

Parametre adı İçinde Description
kaynak Sorgu Belirteci almak için kaynağın Azure AD kaynak URI'si. Bu, Azure AD kimlik doğrulamasını destekleyen Azure hizmetlerinden biri veya başka bir kaynak URI'si olabilir.
api-sürümü Sorgu Kullanılacak belirteç API'si sürümü. Lütfen "2019-08-01" veya üzerini kullanın (şu anda yalnızca "2017-09-01" sunan Linux Tüketimi kullanmadıkça yukarıdaki nota bakın).
X-IDENTITY-HEADER Üst bilgi Ortam değişken IDENTITY_HEADER değeri. Bu üst bilgi, sunucu tarafı istek sahtecilik (SSRF) saldırılarını azaltmak için kullanılır.
client_id Sorgu (İsteğe bağlı) Kullanılacak kullanıcı tarafından atanan kimliğin istemci kimliği. , veya içeren bir principal_id mi_res_id istekte object_id kullanılamaz. Tüm kimlik parametreleri (, client_id , principal_id object_id ve mi_res_id ) atlanırsa, sistem tarafından atanan kimlik kullanılır.
principal_id Sorgu Seçim 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_id ve mi_res_id ) atlanırsa, sistem tarafından atanan kimlik kullanılır.
mi_res_id Sorgu Seçim Kullanılacak kullanıcı tarafından atanan kimliğin Azure Kaynak KIMLIĞI. ,, Veya içeren bir istek üzerinde kullanılamaz principal_id client_id object_id . Tüm kimlik parametreleri (, client_id , principal_id object_id ve 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 eklemeniz gerekir. Aksi takdirde, belirteç hizmeti sistem tarafından atanan bir kimlik için belirteç edinmeye çalışır, bu da mevcut olabilir.

Başarılı bir 200 Tamam yanıtı, aşağıdaki özelliklere sahip bir JSON gövdesi içerir:

Özellik adı Description
access_token İstenen erişim belirteci. Çağıran Web hizmeti, alıcı Web hizmetinde kimlik doğrulaması yapmak için bu belirteci kullanabilir.
client_id Kullanılan kimliğin istemci KIMLIĞI.
expires_on Erişim belirtecinin süresi dolduğu zaman aralığı. Tarih, "1970-01-01T0:0: 0Z UTC" (belirtecin talebine karşılık gelir) için saniye sayısı olarak gösterilir exp .
not_before Erişim belirtecin etkili olduğu ve kabul edilenin zaman zamanları. Tarih, "1970-01-01T0:0:0Z UTC" (belirteci talebine karşılık gelen) saniye sayısı olarak nbf temsil edilir.
kaynak Erişim belirtecin istenen kaynağı, isteğin sorgu resource dizesi parametresiyle eşler.
token_type Belirteç türü değerini gösterir. Azure AD'nin desteklediği tek tür Taşıyıcı'dır. Taşıyıcı belirteçler hakkında daha fazla bilgi için bkz. OAuth 2.0 Yetkilendirme Çerçevesi: Taşıyıcı Belirteç Kullanımı (RFC 6750).

Bu yanıt, Azure AD hizmetten hizmete erişim belirteci isteğine verilen yanıtla aynıdır.

REST protokolü örnekleri

Örnek bir istek aşağıdaki gibi olabilir:

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

Kod örnekleri

İpucu

.NET dilleri için, bu isteği kendiniz yapmak yerine Microsoft.Azure.Services.AppAuthentication da kullanabilirsiniz.

private readonly HttpClient _client;
// ...
public async Task<HttpResponseMessage> GetToken(string resource)  {
    var request = new HttpRequestMessage(HttpMethod.Get, 
        String.Format("{0}/?resource={1}&api-version=2019-08-01", Environment.GetEnvironmentVariable("IDENTITY_ENDPOINT"), resource));
    request.Headers.Add("X-IDENTITY-HEADER", Environment.GetEnvironmentVariable("IDENTITY_HEADER"));
    return await _client.SendAsync(request);
}

.NET için Microsoft.Azure.Services.AppAuthentication kitaplığını kullanma

.NET uygulamaları ve işlevleri için yönetilen kimlikle çalışmanın en basit yolu Microsoft.Azure.Services.AppAuthentication paketidir. Bu kitaplık ayrıca kodunuzu geliştirme makineniz üzerinde yerel olarak test etmek için Visual Studio, Azure CLIveya Active Directory Tümleşik Kimlik Doğrulaması'nın kullanıcı hesabını kullanmanızı sağlar. Bulutta barındırıldıklarında varsayılan olarak sistem tarafından atanan kimlik kullanılır, ancak kullanıcı tarafından atanan kimliğin istemci kimliğine başvurulan bir bağlantı dizesi ortam değişkeni kullanarak bu davranışı özelleştirebilirsiniz. Bu kitaplıkla geliştirme seçenekleri hakkında daha fazla bilgi için [bkz. Microsoft.Azure.Services.AppAuthentication başvurusu.] Bu bölümde, kodundaki kitaplığı nasıl başlatabilirsiniz?

  1. Uygulamanıza Microsoft.Azure.Services.AppAuthentication ve diğer gerekli NuGet paketlerine başvurular ekleyin. Aşağıdaki örnekte Microsoft.Azure.KeyVault da lanmıştır.

  2. Aşağıdaki kodu uygulamanıza ekleyerek doğru kaynağı hedefleyin. Bu örnekte Azure Key Vault çalışmak için iki yol gösterilmektedir:

    using Microsoft.Azure.Services.AppAuthentication;
    using Microsoft.Azure.KeyVault;
    // ...
    var azureServiceTokenProvider = new AzureServiceTokenProvider();
    string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://vault.azure.net");
    // OR
    var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
    

Kullanıcı tarafından atanan yönetilen kimlik kullanmak istiyorsanız, AzureServicesAuthConnectionString uygulama ayarını olarak ayarlayabilirsiniz RunAs=App;AppId=<clientId-guid> . <clientId-guid>Kullanmak istediğiniz kimliğin ISTEMCI kimliği ile değiştirin. Özel uygulama ayarlarını kullanarak ve değerlerini AzureServiceTokenProvider oluşturucusuna geçirerek, birden fazla bağlantı dizesi tanımlayabilirsiniz.

    var identityConnectionString1 = Environment.GetEnvironmentVariable("UA1_ConnectionString");
    var azureServiceTokenProvider1 = new AzureServiceTokenProvider(identityConnectionString1);
    
    var identityConnectionString2 = Environment.GetEnvironmentVariable("UA2_ConnectionString");
    var azureServiceTokenProvider2 = new AzureServiceTokenProvider(identityConnectionString2);

AzureServiceTokenProvider ve sunduğu işlemleri yapılandırma hakkında daha fazla bilgi edinmek için, MSI .net örneği Ile [Microsoft. Azure. Services. appauthentication başvurusu] ve App Service ve keykasası ' na bakın.

Java için Azure SDK 'sını kullanma

Java uygulamaları ve işlevleri için, yönetilen bir kimlikle çalışmanın en kolay yolu, Java Için Azure SDK'ıdır. Bu bölümde, kodunuzda kitaplığı kullanmaya nasıl başlacağınız gösterilmektedir.

  1. Azure SDK kitaplığınabir başvuru ekleyin. Maven projeleri için, bu kod parçacığını dependencies projenin Pod dosyasının bölümüne ekleyebilirsiniz:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure</artifactId>
        <version>1.23.0</version>
    </dependency>
    
  2. AppServiceMSICredentialsKimlik doğrulaması için nesnesini kullanın. Bu örnek, bu mekanizmanın Azure Key Vault çalışmak için nasıl kullanılabileceğini gösterir:

    import com.microsoft.azure.AzureEnvironment;
    import com.microsoft.azure.management.Azure;
    import com.microsoft.azure.management.keyvault.Vault
    //...
    Azure azure = Azure.authenticate(new AppServiceMSICredentials(AzureEnvironment.AZURE))
            .withSubscription(subscriptionId);
    Vault myKeyVault = azure.vaults().getByResourceGroup(resourceGroup, keyvaultName);
    
    

Kimlik kaldırma

Portal, PowerShell veya CLı kullanılarak oluşturulduğu gibi özellik devre dışı bırakılarak sistem tarafından atanan bir kimlik kaldırılabilir. Kullanıcı tarafından atanan kimlikler tek tek kaldırılabilir. Tüm kimlikleri kaldırmak için kimlik türünü "none" olarak ayarlayın.

Sistem tarafından atanan bir kimliğin bu şekilde kaldırılması, Azure AD 'den de silinecek. Uygulama kaynağı silindiğinde, sistem tarafından atanan kimlikler de Azure AD 'den otomatik olarak kaldırılır.

ARM şablonundakitüm kimlikleri kaldırmak için:

"identity": {
    "type": "None"
}

Azure PowerShell (yalnızca Azure İşlevleri) içinde tüm kimlikleri kaldırmak için:

# Update an existing function app to have IdentityType "None".
Update-AzFunctionApp -Name $functionAppName -ResourceGroupName $resourceGroupName -IdentityType None

Not

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

Sonraki adımlar