Hitelesítés Azure-erőforrásokhoz a helyszínen üzemeltetett JavaScript-alkalmazásokból

Az Azure-on kívül ( például helyszíni vagy külső adatközpontban) üzemeltetett alkalmazásoknak a Microsoft Entra ID-n keresztül egy alkalmazásszolgáltatás-tagot kell használniuk az Azure-szolgáltatásokhoz való hitelesítéshez. Az alábbi szakaszokban a következő ismereteket ismerheti meg:

  • Alkalmazás regisztrálása a Microsoft Entra-ban egy szolgáltatási főszereplő létrehozásához
  • Szerepkörök hozzárendelése hatókörengedélyekhez
  • Hogyan hitelesítsünk szolgáltatás főnév alkalmazásával az alkalmazásod kódjából

A dedikált alkalmazásszolgáltatás-tagok használatával betarthatja a minimális jogosultság elvét az Azure-erőforrások elérésekor. Az engedélyek az alkalmazás adott követelményeire korlátozódnak a fejlesztés során, megakadályozva a más alkalmazásokhoz vagy szolgáltatásokhoz szánt Azure-erőforrásokhoz való véletlen hozzáférést. Ez a megközelítés segít elkerülni azokat a problémákat is, amikor az alkalmazást éles környezetbe helyezik át, mivel biztosítja, hogy a fejlesztési környezetben ne rendelkezzen túlzott jogosultságokkal.

Minden olyan környezethez létre kell hozni egy másik alkalmazásregisztrációt, amelyben az alkalmazás üzemel. Ez lehetővé teszi a környezetspecifikus erőforrás-engedélyek konfigurálását minden egyes szolgáltatásnévhez, és biztosítja, hogy az egyik környezetben üzembe helyezett alkalmazás ne beszéljen egy másik környezetben lévő Azure-erőforrásokkal.

Az alkalmazás regisztrálása az Azure-ban

Az alkalmazásszolgáltatás fő objektumai egy azure-beli alkalmazásregisztráción keresztül jönnek létre az Azure Portal vagy az Azure CLI használatával.

  1. Az Azure portálon a keresősáv segítségével lépjen az alkalmazásregisztrációk lapra.

  2. A Alkalmazásregisztrációk lapon válassza az + Új regisztráció lehetőséget.

  3. Az alkalmazás regisztrálása oldalon:

    • A Név mezőben adjon meg egy leíró értéket, amely tartalmazza az alkalmazás nevét és a célkörnyezetet.
    • A Támogatott fióktípusokesetén válassza csak ebben a szervezeti címtárban lévő fiókokat (csak Microsoft Ügyfél által vezetett – Egyetlen bérlő), vagy amelyik a legjobban megfelel a követelményeknek.
  4. Az alkalmazás regisztrálásához és a szolgáltatásfőfelhasználó létrehozásához válassza a Regisztrálás lehetőséget.

    Képernyőkép arról, hogyan hozhat létre alkalmazásregisztrációt az Azure Portalon.

  5. Az alkalmazás alkalmazásregisztrációs lapján másolja ki a alkalmazás (ügyfél) azonosítóját és címtár (bérlő) azonosítóját, majd illessze be őket egy ideiglenes helyre, hogy később használhassa őket az alkalmazáskód-konfigurációkban.

  6. Válassza Tanúsítvány vagy titkos hozzáadása lehetőséget az alkalmazás hitelesítő adatainak beállításához.

  7. A Tanúsítványok > titkos kódok lapon válassza az + Új ügyfélkód lehetőséget.

  8. A megnyíló Ügyfélkód hozzáadása legördülő panelen:

    • A Leírásmezőben adja meg az Aktuális értéket.
    • A Lejárat értéknél hagyja meg az alapértelmezett 180 napos ajánlott értéket.
    • Válassza a Hozzáadás lehetőséget a titkos kód hozzáadásához.
  9. A Tanúsítványok & titkos kulcsok lapon másolja ki az ügyfél titkos kódjának Érték tulajdonságát egy későbbi lépésben való használatra.

    Megjegyzés:

    Az ügyfél titkos kódjának értéke csak egyszer jelenik meg az alkalmazásregisztráció létrehozása után. Több ügyféltitkot is hozzáadhat anélkül, hogy érvénytelenítené ezt az ügyféltitkot, de ennek az értékét többé nem lehet megjeleníteni.

Szerepkörök hozzárendelése az application service principalhez

Ezután határozza meg, hogy az alkalmazásnak milyen szerepkörökre (engedélyekre) van szüksége az erőforrásokhoz, és rendelje hozzá ezeket a szerepköröket a létrehozott szolgáltatásnévhez. A szerepkörök az erőforrás, az erőforráscsoport vagy az előfizetés hatókörében rendelhetők hozzá. Ez a példa bemutatja, hogyan rendelhet hozzá szerepköröket az erőforráscsoport hatóköréhez, mivel a legtöbb alkalmazás egyetlen erőforráscsoportba csoportosítja az összes Azure-erőforrást.

  1. Az Azure Portalon lépjen az alkalmazást tartalmazó erőforráscsoport Áttekintés lapjára.

  2. A bal oldali navigációs sávon válassza a Hozzáférés-vezérlés (IAM) lehetőséget.

  3. A Hozzáférés-vezérlés (IAM) lapon válassza a + Hozzáadás lehetőséget, majd a legördülő menüben válassza a Szerepkör-hozzárendelés hozzáadása lehetőséget. A Szerepkör-hozzárendelés hozzáadása lap számos lapot biztosít a szerepkörök konfigurálásához és hozzárendeléséhez.

  4. A Szerepkör lapon a keresőmezővel keresse meg a hozzárendelni kívánt szerepkört. Jelölje ki a szerepkört, majd kattintson a Tovább gombra.

  5. A Tagok lapon:

    • Az értékhez való hozzáférés hozzárendeléséhez válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget.
    • A Tagok értéknél válassza a + Tagok kijelölése lehetőséget a Tagok kijelölése úszó panel megnyitásához.
    • Keresse meg a korábban létrehozott szolgáltatásnevet, és válassza ki a szűrt eredmények közül. Válassza a , majd a lehetőséget a csoport kijelöléséhez és a lebegő panel bezárásához.
    • Válassza a Véleményezés + hozzárendelés lehetőséget a Tagok lap alján.

    Képernyőkép arról, hogyan rendelhet szerepkört a szolgáltatástulajdonoshoz.

  6. A Véleményezés + hozzárendelés lapon válassza a Véleményezés + hozzárendelés lehetőséget a lap alján.

Az alkalmazáskörnyezet változóinak beállítása

Futásidőben az Azure Identity Librarybizonyos hitelesítő adatai – például DefaultAzureCredential, EnvironmentCredentialés ClientSecretCredential– konvenció szerint keresnek szolgáltatásnév-információkat a környezeti változókban. A környezeti változók többféleképpen konfigurálhatók a JavaScript használatakor, az eszköztől és a környezettől függően.

A választott megközelítéstől függetlenül konfigurálja a következő környezeti változókat egy szolgáltatásnévhez:

  • AZURE_CLIENT_ID: Az Azure-ban regisztrált alkalmazás azonosítására szolgál.
  • AZURE_TENANT_ID: A Microsoft Entra tenant azonosítója.
  • AZURE_CLIENT_SECRET: Az alkalmazáshoz létrehozott titkos hitelesítő adatok.

A Visual Studio Code-ban a környezeti változók a projekt launch.json fájljában állíthatók be. Ezeket az értékeket a rendszer automatikusan beszedi az alkalmazás indításakor. Ezek a konfigurációk azonban nem utaznak az alkalmazással az üzembe helyezés során, ezért környezeti változókat kell beállítania a célüzemeltetési környezetben.

"configurations": [
{
    "env": {
        "NODE_ENV": "development",
        "AZURE_CLIENT_ID": "<your-client-id>",
        "AZURE_TENANT_ID":"<your-tenant-id>",
        "AZURE_CLIENT_SECRET": "<your-client-secret>"
    }
}

Hitelesítés az Azure-szolgáltatásokban az alkalmazásból

Az Azure Identity-kódtár különböző hitelesítő adatokat biztosít– a TokenCredential különböző forgatókönyvekhez és a Microsoft Entra hitelesítési folyamatokhoz igazított implementációkat. Az alábbi lépések bemutatják, hogyan használható a ClientSecretCredential a szolgáltatás-alapelvek helyben és termelési környezetben történő használata során.

A kód implementálása

Adja hozzá a @azure/identitáscsomagot a Node.js projekthez:

npm install @azure/identity

Az Azure-szolgáltatások speciális ügyfélosztályokkal érhetők el a különböző Azure SDK-ügyfélkódtárakból. Az azure SDK-ügyfélobjektumot az alkalmazásban létrehozó JavaScript-kód esetén kövesse az alábbi lépéseket:

  1. Importálja az osztályt ClientSecretCredential a @azure/identity modulból.
  2. Hozzon létre egy ClientSecretCredential objektumot az tenantId, clientId és clientSecret.
  3. Adja át a ClientSecretCredential példányt az Azure SDK kliennsobjektum-konstruktorának.

Erre a megközelítésre a következő kódszegmensben látható példa:

import { BlobServiceClient } from '@azure/storage-blob';
import { ClientSecretCredential } from '@azure/identity';

// Authentication
const tenantId = process.env.AZURE_TENANT_ID;
const clientId = process.env.AZURE_CLIENT_ID;
const clientSecret = process.env.AZURE_CLIENT_SECRET;

// Azure Storage account name
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;

if (!tenantId || !clientId || !clientSecret || !accountName) {
  throw Error('Required environment variables not found');
}

const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  credential
);

Egy másik módszer az objektum közvetlen átadása ClientSecretCredential az Azure SDK-ügyfélkonstruktornak:

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new ClientSecretCredential(tenantId, clientId, clientSecret)
);