Csatlakozás az alkalmazásból az erőforrásokba hitelesítő adatok kezelése nélkül

A felügyelt identitásokkal rendelkező Azure-erőforrások mindig lehetőséget biztosítanak egy felügyelt identitás megadására a Microsoft Entra-hitelesítést támogató Azure-erőforrásokhoz való csatlakozáshoz. A felügyelt identitások támogatása feleslegessé teszi a fejlesztők számára a hitelesítő adatok kódban való kezelését. A felügyelt identitások az ajánlott hitelesítési lehetőségek az őket támogató Azure-erőforrások használatakor. Olvassa el a felügyelt identitások áttekintését.

Ez a lap bemutatja, hogyan konfigurálhat egy App Service-t az Azure Key Vaulthoz, az Azure Storage-hoz és a Microsoft SQL Serverhez való csatlakozáshoz. Ugyanezek az alapelvek használhatók minden olyan Azure-erőforráshoz, amely támogatja a felügyelt identitásokat, és amelyek a Microsoft Entra-hitelesítést támogató erőforrásokhoz csatlakoznak.

A kódminták az Azure Identity ügyfélkódtárát használják, amely az ajánlott módszer, mivel automatikusan kezeli az Ön számára szükséges lépések nagy részét, beleértve a kapcsolathoz használt hozzáférési jogkivonat beszerzését is.

Milyen erőforrásokhoz csatlakozhatnak a felügyelt identitások?

A felügyelt identitások bármilyen olyan erőforráshoz csatlakozhatnak, amely támogatja a Microsoft Entra-hitelesítést. Általában nincs szükség különleges támogatásra ahhoz, hogy az erőforrás lehetővé tegye a felügyelt identitások számára a csatlakozást.

Egyes erőforrások nem támogatják a Microsoft Entra-hitelesítést, vagy az ügyfélkódtáruk nem támogatja a jogkivonatokkal való hitelesítést. Olvassa el a felügyelt identitások biztonságos elérésére vonatkozó útmutatónkat anélkül, hogy a kódban vagy az alkalmazáskonfigurációban kellene tárolnia őket.

Felügyelt identitás létrehozása

A felügyelt identitásnak két típusa van: a rendszer által hozzárendelt és a felhasználó által hozzárendelt. A rendszer által hozzárendelt identitások közvetlenül egyetlen Azure-erőforráshoz vannak társítva. Az Azure-erőforrás törlésekor az identitás is. A felhasználó által hozzárendelt felügyelt identitás több Azure-erőforráshoz is társítható, életciklusa pedig független ezekétől az erőforrásoktól.

Ez a cikk bemutatja, hogyan hozhat létre és konfigurálhat egy felhasználó által hozzárendelt felügyelt identitást, amely a legtöbb forgatókönyv esetében ajánlott. Ha a használt forráserőforrás nem támogatja a felhasználó által hozzárendelt felügyelt identitásokat, tekintse meg az erőforrás-szolgáltató dokumentációját, amelyből megtudhatja, hogyan konfigurálhatja rendszer által hozzárendelt felügyelt identitásként.

Felhasználó által hozzárendelt felügyelt identitás létrehozása

Megjegyzés:

Új felhasználó által hozzárendelt felügyelt identitás létrehozásához olyan szerepkörre lesz szüksége, mint a "Felügyelt identitás közreműködője".

  1. Keressen rá a "Felügyelt identitások" kifejezésre a portál tetején található keresősávon, és válassza ki a megfelelő eredményt.

Screenshot of searching for managed identities in the portal.

  1. Válassza a "Létrehozás" gombot.

Screenshot showing a managed identity create button in the portal.

  1. Válassza ki az Előfizetés és erőforrás csoportot, és adja meg a felügyelt identitás nevét.

Screenshot showing a managed identity create screen in the portal.

  1. Az érvényesítési teszt futtatásához válassza a "Véleményezés + létrehozás" lehetőséget, majd a "Létrehozás" gombot.

  2. Az identitás létrehozásakor megjelenik egy megerősítést kérő képernyő.

Screenshot showing a managed identity confirmation screen after creation in the portal.

Most már rendelkezik egy identitással, amely társítható egy Azure-forráserőforráshoz. További információ a felhasználó által hozzárendelt felügyelt identitások kezeléséről.

A forráserőforrás konfigurálása felhasználó által hozzárendelt felügyelt identitás használatára

Az alábbi lépéseket követve konfigurálhatja az Azure-erőforrást úgy, hogy felügyelt identitással rendelkezzen a portálon keresztül. Az adott erőforrástípus dokumentációjában megtudhatja, hogyan konfigurálhatja az erőforrás identitását parancssori felület, PowerShell vagy ARM-sablon használatával.

Megjegyzés:

Az Azure-erőforrások rendszer által hozzárendelt identitáshoz való konfigurálásához "Írási" engedélyekre lesz szüksége. A felhasználó által hozzárendelt identitás azure-erőforráshoz való társításához szüksége lesz egy olyan szerepkörre, mint a "Managed Identity Operator".

  1. Keresse meg az erőforrást a portál tetején található keresősáv használatával

Screenshot showing a resource being searched for in the portal.

  1. Válassza ki az Identitás hivatkozást a navigációs sávon

Screenshot showing the link to the identity screen for a resource in the portal.

  1. Válassza a "Felhasználó által hozzárendelt" lapot

  2. Válassza a "Hozzáadás" gombot

Screenshot showing a user-assigned identity screen in the portal.

  1. Válassza ki a korábban létrehozott felhasználó által hozzárendelt identitást, és válassza a "Hozzáadás" lehetőséget

Screenshot showing a user-assigned identity being selected in the portal.

  1. Az identitás az erőforráshoz lesz társítva, és a lista frissül.

Screenshot showing a user-assigned identity has been associated with the Azure resource in the portal.

A forráserőforrás mostantól rendelkezik egy felhasználó által hozzárendelt identitással, amellyel csatlakozhat a célerőforrásokhoz.

Engedélyek hozzáadása az identitáshoz

Megjegyzés:

Szerepkör-hozzárendelések hozzáadásához a célerőforráshoz olyan szerepkörre lesz szüksége, mint a "Felhasználói hozzáférés Rendszergazda istrator" vagy a "Tulajdonos". Győződjön meg arról, hogy az alkalmazás futtatásához szükséges legkisebb jogosultságot biztosítja.

Most, hogy az App Service rendelkezik felügyelt identitással, meg kell adnia az identitásnak a megfelelő engedélyeket. Mivel ezt az identitást használja az Azure Storage használatához, az Azure Szerepköralapú hozzáférés-vezérlési (RBAC) rendszert fogja használni.

  1. Keresse meg azt az erőforrást, amelyhez csatlakozni szeretne a portál tetején található keresősáv használatával
  2. A bal oldali navigációs sávon válassza a "Hozzáférés-vezérlés (IAM)" hivatkozást.

Screenshot showing a resource summary screen in the portal.

  1. Válassza a képernyő tetején található "Hozzáadás" gombot, és válassza a "Szerepkör-hozzárendelés hozzáadása" lehetőséget.

Screenshot showing the add role assignment navigation in the portal.

  1. Megjelenik a szerepkörök listája. A szerepkörök adott engedélyeit a "Nézet" hivatkozásra kattintva tekintheti meg. Válassza ki az identitásnak adni kívánt szerepkört, és válassza a "Tovább" gombot.

Screenshot showing a role being selected in the portal.

  1. A rendszer kérni fogja, hogy válassza ki a szerepkört. Válassza a "Felügyelt identitás" lehetőséget, majd a "Tagok hozzáadása" hivatkozást.

Screenshot showing the identity type being selected in the portal.

  1. Megjelenik egy helyi panel a jobb oldalon, ahol a felügyelt identitás típusa alapján kereshet. Válassza a "Felhasználó által hozzárendelt felügyelt identitás" lehetőséget a "Felügyelt identitás" lehetőségből.

Screenshot showing managed identity being selected in the portal.

  1. Válassza ki a korábban létrehozott identitást és a "Kiválasztás" gombot. A környezeti panel bezárul, és az identitás hozzá lesz adva a listához.

Screenshot showing an identity being added to a resource in the portal.

  1. Válassza a "Véleményezés + hozzárendelés" gombot a szerepkör-hozzárendelés összegzésének megtekintéséhez, majd még egyszer a megerősítéshez.
  2. Válassza a "Szerepkör-hozzárendelések" lehetőséget, és megjelenik az erőforrás szerepkör-hozzárendeléseinek listája.

Screenshot showing the role assignment has been added in the portal.

A felügyelt identitás most már rendelkezik a megfelelő engedélyekkel az Azure-célerőforrás eléréséhez. További információ az Azure Szerepköralapú hozzáférés-vezérlésről.

A felügyelt identitás használata a kódban

Az App Service mostantól rendelkezik engedéllyel rendelkező felügyelt identitással. A kódban szereplő felügyelt identitással ahelyett, hogy hitelesítő adatokat tárol a kódban, használhatja a célerőforrásokat.

Az ajánlott módszer az Azure Identity-kódtár használata az előnyben részesített programozási nyelvhez. A támogatott nyelvek közé tartozik a .NET, a Java, a JavaScript, a Python, a Go és a C++. A kódtár hozzáférési jogkivonatokat szerez be Önnek, így egyszerűen csatlakozhat a célerőforrásokhoz.

Az Azure Identity-kódtár használata a fejlesztési környezetben

A C++ kódtár kivételével az Azure Identity-kódtárak támogatnak egy típust DefaultAzureCredential . DefaultAzureCredential automatikusan megkísérli a hitelesítést több mechanizmuson keresztül, beleértve a környezeti változókat vagy egy interaktív bejelentkezést. A hitelesítő adattípus a saját hitelesítő adataival használható a fejlesztési környezetben. Az éles Azure-környezetben is használható felügyelt identitással. Az alkalmazás üzembe helyezésekor nincs szükség kódmódosításra.

Ha felhasználó által hozzárendelt felügyelt identitásokat használ, explicit módon meg kell adnia azt a felhasználó által hozzárendelt felügyelt identitást is, amellyel hitelesítést kíván végezni az identitás ügyfélazonosítójának paraméterként való átadásával. Az ügyfél-azonosító lekéréséhez nyissa meg az identitást a portálon.

Screenshot showing the client ID for the managed identity in the portal.

További információ az Azure Identity-kódtárakról:

Blob elérése az Azure Storage-ban

using Azure.Identity;
using Azure.Storage.Blobs;

// code omitted for brevity

// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
    ManagedIdentityClientId = clientID
};
var credential = new DefaultAzureCredential(credentialOptions);                        

var blobServiceClient1 = new BlobServiceClient(new Uri("<URI of Storage account>"), credential);
BlobContainerClient containerClient1 = blobServiceClient1.GetBlobContainerClient("<name of blob>");
BlobClient blobClient1 = containerClient1.GetBlobClient("<name of file>");

if (blobClient1.Exists())
{
    var downloadedBlob = blobClient1.Download();
    string blobContents = downloadedBlob.Value.Content.ToString();                
}

Az Azure Key Vaultban tárolt titkos kód elérése

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;

// code omitted for brevity

// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
    ManagedIdentityClientId = clientID
};
var credential = new DefaultAzureCredential(credentialOptions);        

var client = new SecretClient(
    new Uri("https://<your-unique-key-vault-name>.vault.azure.net/"),
    credential);
    
KeyVaultSecret secret = client.GetSecret("<my secret>");
string secretValue = secret.Value;

Az Azure SQL Database elérése

using Azure.Identity;
using Microsoft.Data.SqlClient;

// code omitted for brevity

// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
    ManagedIdentityClientId = clientID
};

AccessToken accessToken = await new DefaultAzureCredential(credentialOptions).GetTokenAsync(
    new TokenRequestContext(new string[] { "https://database.windows.net//.default" }));                        

using var connection = new SqlConnection("Server=<DB Server>; Database=<DB Name>;")
{
    AccessToken = accessToken.Token
};
var cmd = new SqlCommand("select top 1 ColumnName from TableName", connection);
await connection.OpenAsync();
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
    Console.WriteLine(dr.GetValue(0).ToString());
}
dr.Close();	

Csatlakozás olyan erőforrásokhoz, amelyek nem támogatják a Microsoft Entra-azonosítót vagy a jogkivonatalapú hitelesítést a tárakban

Egyes Azure-erőforrások még nem támogatják a Microsoft Entra-hitelesítést, vagy az ügyfélkódtárak nem támogatják a jogkivonatokkal való hitelesítést. Ezek az erőforrások általában nyílt forráskódú technológiák, amelyek felhasználónevet és jelszót vagy hozzáférési kulcsot várnak egy kapcsolati sztring.

A hitelesítő adatok kódban vagy alkalmazáskonfigurációban való tárolásának elkerülése érdekében titkos kulcsként tárolhatja a hitelesítő adatokat az Azure Key Vaultban. A fenti példában szereplő példában lekérheti a titkos kódot az Azure KeyVaultból egy felügyelt identitással, és átadhatja a hitelesítő adatokat a kapcsolati sztring. Ez a megközelítés azt jelenti, hogy a hitelesítő adatokat nem kell közvetlenül a kódban vagy a környezetben kezelni.

Irányelvek a jogkivonatok közvetlen kezelése esetén

Bizonyos esetekben érdemes lehet manuálisan beszerezni a felügyelt identitásokhoz tartozó jogkivonatokat ahelyett, hogy beépített módszert használna a célerőforráshoz való csatlakozáshoz. Ezek a forgatókönyvek nem tartalmaznak ügyfélkódtárat a használt programozási nyelvhez vagy a célerőforráshoz, amelyhez csatlakozik, vagy nem az Azure-ban futó erőforrásokhoz csatlakozik. A jogkivonatok manuális beszerzésekor a következő irányelveket biztosítjuk:

A beszerzett jogkivonatok gyorsítótárazása

A teljesítmény és a megbízhatóság érdekében javasoljuk, hogy az alkalmazás gyorsítótárazza a jogkivonatokat a helyi memóriában, vagy titkosítsa őket, ha lemezre szeretné menteni őket. Mivel a felügyelt identitás jogkivonatai 24 órán át érvényesek, nem jár előnyökkel az új jogkivonatok rendszeres kérése, mivel a rendszer gyorsítótárazott jogkivonatot ad vissza a jogkivonatot kibocsátó végponttól. Ha túllépi a kérelemkorlátokat, korlátozott lesz a sebesség, és HTTP 429-hiba jelenik meg.

Jogkivonat beszerzésekor beállíthatja, hogy a jogkivonat gyorsítótára 5 perccel a expires_on jogkivonat létrehozásakor visszaadott (vagy azzal egyenértékű) tulajdonság előtt lejárjon.

Jogkivonat ellenőrzése

Az alkalmazásnak nem szabad egy jogkivonat tartalmára támaszkodnia. A jogkivonat tartalma csak az elérni kívánt célközönségnek (célerőforrásnak) szól, nem pedig a jogkivonatot kérő ügyfélnek. A jogkivonat tartalma a jövőben változhat vagy titkosítható.

Jogkivonatok nem tehetők közzé és nem helyezhetők át

A jogkivonatokat hitelesítő adatokként kell kezelni. Ne tegye közzé őket a felhasználók vagy más szolgáltatások számára; például naplózási/monitorozási megoldások. Nem szabad áthelyezni őket az őket használó forráserőforrásból, kivéve a célerőforráson való hitelesítést.

További lépések