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

Azure portal web uygulamanızın veya yuva uygulamanızın yönetilen kimliğini bulmak için, Enterprise uygulamalar' ın 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 CLı kullanarak yönetilen bir kimlik ayarlamak için, az webapp identity assign mevcut bir uygulamada komutunu kullanmanız gerekir. Bu bölümde örnekleri çalıştırmak için üç seçeneğiniz vardır:

  • Azure portal Azure Cloud Shell kullanın.
  • Aşağıdaki her kod bloğunun sağ üst köşesinde bulunan "dene" düğmesini kullanarak katıştırılmış Azure Cloud Shell kullanın.
  • Yerel bir CLı konsolu kullanmayı tercih ediyorsanız, en son Azure CLI sürümünü (2.0.31 veya üzeri) yükleyebilirsiniz.

Aşağıdaki adımlar, bir Web uygulaması oluşturma ve CLı kullanarak bir kimlik atama işleminde size kılavuzluk eder:

  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 hesabı kullanın:

    az login
    
  2. CLı kullanarak bir Web uygulaması oluşturun. CLı 'yı App Service ile kullanma hakkında daha fazla örnek için bkz. App SERVICE 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. identity assignBu 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 makalede, Azure ile etkileşim kurmak için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılı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, bir uygulama oluşturmak ve Azure PowerShell kullanarak bir kimlik atamak için size yol gösterecektir. Bir Web uygulaması ve bir işlev uygulaması oluşturma yönergeleri farklıdır.

bir web uygulaması için Azure PowerShell kullanma

  1. gerekirse, Azure PowerShell kılavuzundabulunan yönergeleri kullanarak Azure PowerShell yükleyip Login-AzAccount Azure ile bağlantı oluşturmak için öğesini çalıştırın.

  2. Azure PowerShell kullanarak bir Web uygulaması oluşturun. App Service Azure PowerShell kullanma hakkında daha fazla örnek için bkz. App Service PowerShell örnekleri:

    # 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. Set-AzWebApp -AssignIdentityBu uygulamanın kimliğini oluşturmak için komutunu çalıştırın:

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

işlev uygulaması için Azure PowerShell kullanma

  1. gerekirse, Azure PowerShell kılavuzundabulunan yönergeleri kullanarak Azure PowerShell yükleyip Login-AzAccount Azure ile bağlantı oluşturmak için öğesini çalıştırın.

  2. Azure PowerShell kullanarak bir işlev uygulaması oluşturun. 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. 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.

  4. Kimlik seçin.

  5. Kullanıcı atandı 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 yönetilen kimliği

Azure PowerShell’i kullanma

Not

Bu makalede, Azure ile etkileşim kurmak için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılı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, bir uygulama oluşturmak ve Azure PowerShell kullanarak bir kimlik atamak için size yol gösterecektir.

Not

Azure PowerShell command'in geçerli sürümü, Azure App Service için kullanıcı tarafından atanan kimlikleri desteklemez. Aşağıdaki yönergeler Azure Işlevleri içindir.

  1. gerekirse, Azure PowerShell kılavuzundabulunan yönergeleri kullanarak Azure PowerShell yükleyip Login-AzAccount Azure ile bağlantı oluşturmak için öğesini çalıştırın.

  2. Azure PowerShell kullanarak bir işlev uygulaması oluşturun. Azure işlevleri ile Azure PowerShell kullanma hakkında daha fazla örnek için, Az. Functions başvurusunabakın. Aşağıdaki komut dosyası Ayrıca, New-AzUserAssignedIdentity Azure PowerShell kullanarak Kullanıcı tarafından atanan yönetilen kimlik oluşturma, listeleme veya silmeile ayrı olarak yüklenmesi gereken öğesinin kullanımını da sağlar.

    # 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, 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 blok eklenerek, <RESOURCEID> istenen KIMLIğIN kaynak kimliği ile değiştirilerek bir kimlik ile herhangi bir kaynak oluşturulabilir:

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

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

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ü kullanarak bu protokolün daha eski bir sürümü, secret yerine üst bilgiyi kullandı X-IDENTITY-HEADER ve yalnızca clientid Kullanıcı tarafından atanan özelliği kabul eder. Ayrıca, expires_on bir zaman damgası biçiminde döndürülür. MSI_ENDPOINT, IDENTITY_ENDPOINT bir diğer ad olarak kullanılabilir ve MSI_SECRET IDENTITY_HEADER için bir diğer ad olarak kullanılabilir. Protokolün bu sürümü şu anda Linux tüketim barındırma planları için gereklidir.

Yönetilen kimliğe sahip bir uygulama tanımlı iki ortam değişkenine sahiptir:

  • IDENTITY_ENDPOINT-yerel belirteç hizmeti URL 'SI.
  • IDENTITY_HEADER-sunucu tarafı istek sahteciliğini önleme (ssrf) saldırılarını azaltmaya yardımcı olmak için kullanılan bir üst bilgi. Değer, platform tarafından döndürülür.

IDENTITY_ENDPOINT , uygulamanızın belirteç isteyebileceği yerel bir URL 'dir. Bir kaynağın belirtecini almak için, bu uç noktaya yönelik bir HTTP GET isteği oluşturun ve aşağıdaki parametreleri de dahil edin:

Parametre adı İçinde Description
kaynak Sorgu Belirtecin alınması gereken kaynağın Azure AD Kaynak URI 'SI. Bu, Azure AD kimlik doğrulamasını veya DIĞER Kaynak URI 'Yi destekleyen Azure hizmetlerinden biridir.
api-sürümü Sorgu Kullanılacak belirteç API 'sinin sürümü. Lütfen "2019-08-01" veya üstünü kullanın (Şu anda yalnızca "2017-09-01" sağlayan Linux tüketimini kullanmadıkça, Yukarıdaki nota bakın).
X-ıDENTITY-HEADER Üst bilgi IDENTITY_HEADER ortam değişkeninin değeri. Bu üst bilgi, sunucu tarafı istek sahteciliğini önleme (ssrf) saldırılarını azaltmaya yardımcı olmak için kullanılır.
client_id Sorgu Seçim Kullanılacak kullanıcı tarafından atanan kimliğin istemci KIMLIĞI. ,, Veya içeren bir istek üzerinde kullanılamaz principal_id mi_res_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.
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 belirteci yürürlüğe girer ve kabul edilebilir. Tarih, "1970-01-01T0:0: 0Z UTC" (belirtecin talebine karşılık gelir) için saniye sayısı olarak gösterilir nbf .
kaynak İsteğin sorgu dizesi parametresiyle eşleşen erişim belirtecinin istendiği kaynak resource .
token_type Belirteç türü değerini gösterir. Azure AD 'nin desteklediği tek tür taşıyıcı. Taşıyıcı belirteçleri 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 yönelik yanıtile aynıdır.

REST protokol örnekleri

Örnek bir istek aşağıdakine benzeyebilir:

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

Bir ö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"
}

Kod örnekleri

İpucu

.NET dilleri için, bu isteği kendiniz taslağı yapmak yerine Microsoft. Azure. Services. AppAuthentication ' yi de 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 bir kimlikle çalışmanın en kolay yolu Microsoft. Azure. Services. AppAuthentication paketi aracılığıyla yapılır. bu kitaplık ayrıca, Visual Studio, Azure clıveya Active Directory tümleşik kimlik doğrulamasından kullanıcı hesabınızı kullanarak, kodunuzu geliştirme makinenizde yerel olarak sınamanızı sağlar. Bulutta barındırıldığında, varsayılan olarak sistem tarafından atanan bir kimlik kullanılır, ancak bu davranışı Kullanıcı tarafından atanan bir kimliğin istemci KIMLIĞINE başvuran bir bağlantı dizesi ortam değişkeni kullanarak özelleştirebilirsiniz. Bu kitaplıkla ilgili geliştirme seçenekleri hakkında daha fazla bilgi için [Microsoft. Azure. Services. AppAuthentication başvurusuna]bakın. Bu bölümde, kodunuzda kitaplığı kullanmaya nasıl başlacağınız gösterilmektedir.

  1. uygulamanıza Microsoft. Azure. Services. appauthentication ve diğer gerekli NuGet paketlerine başvurular ekleyin. Aşağıdaki örnek Microsoft. Azure. Keykasasınıde kullanı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 POM dosyasının bölümüne ekleyebilirsiniz:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure</artifactId>
        <version>1.23.0</version>
    </dependency>
    
  2. Kimlik doğrulaması AppServiceMSICredentials için nesnesini kullanın. Bu örnekte, bu mekanizmanın aşağıdakilerle çalışmak için nasıl Azure Key Vault:

    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);
    
    

Kimliği kaldırma

Sistem tarafından atanan kimlik, portal, PowerShell veya CLI kullanılarak, aynı oluşturulduktan sonra özelliği devre dışı bırakarak 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ü "Yok" olarak ayarlayın.

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

ARM şablonunda tü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