Jelszó nélküli kapcsolatok az Azure-szolgáltatásokhoz

Megjegyzés:

A jelszó nélküli kapcsolatok egy több Azure-szolgáltatást felölelő nyelvfüggetlen funkció. Bár a jelenlegi dokumentáció néhány nyelvre és szolgáltatásra összpontosít, jelenleg további dokumentációt készítünk más nyelvekhez és szolgáltatásokhoz.

Ez a cikk a jelszavakkal kapcsolatos biztonsági kihívásokat ismerteti, és jelszó nélküli kapcsolatokat vezet be az Azure-szolgáltatásokhoz.

Biztonsági kihívások jelszavakkal és titkos kódokkal

A jelszavakat és titkos kulcsokat körültekintően kell használni, és a fejlesztőknek soha nem szabad nem biztonságos helyre helyezniük őket. Számos alkalmazás csatlakozik a háttéradatbázishoz, a gyorsítótárhoz, az üzenetkezeléshez és az eseménykezelési szolgáltatásokhoz felhasználónevek, jelszavak és hozzáférési kulcsok használatával. Ha nyilvánosságra kerülnek, ezek a hitelesítő adatok arra használhatók, hogy jogosulatlanul hozzáférjenek a bizalmas információkhoz, például egy közelgő kampányhoz létrehozott értékesítési katalógushoz, vagy az ügyféladatokhoz, amelyeknek privátnak kell lenniük.

A jelszavak alkalmazásokba való beágyazása számos okból óriási biztonsági kockázatot jelent, beleértve a kódtárakon keresztüli felderítést is. Sok fejlesztő környezeti változók használatával külsőleg külsőre helyezi az ilyen jelszavakat, hogy az alkalmazások különböző környezetekből tölthesse be őket. Ez azonban csak a kockázatot magára a kódra váltódik végrehajtási környezetbe. Bárki, aki hozzáfér a környezethez, ellophatja a jelszavakat, ami viszont növeli az adatkiszivárgás kockázatát.

Az alábbi példakód bemutatja, hogyan csatlakozhat az Azure Storage-hoz egy tárfiókkulcs használatával. Sok fejlesztő azért látja el ezt a megoldást, mert ismerősnek érzi a korábban használt lehetőségeket, még akkor is, ha nem ideális megoldás. Ha az alkalmazás jelenleg hozzáférési kulcsokat használ, fontolja meg a jelszó nélküli kapcsolatokra való migrálást.

// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
    new Uri("https://<storage-account-name>.blob.core.windows.net"),
    new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));

A fejlesztőknek szorgalmasnak kell lenniük, hogy soha ne tegyenek közzé ilyen típusú kulcsokat vagy titkos kulcsokat nem biztonságos helyen. Számos vállalat szigorú biztonsági követelményekkel rendelkezik az Azure-szolgáltatásokhoz való csatlakozáshoz anélkül, hogy jelszavakat adnának meg a fejlesztőknek, operátoroknak vagy bárki másnak. Gyakran tárolóval tárolják és töltik be a jelszavakat az alkalmazásokba, és a jelszóváltási követelmények és eljárások hozzáadásával tovább csökkentik a kockázatot. Ez a megközelítés viszont növeli az üzemeltetés összetettségét, és időnként alkalmazáskapcsolat-kimaradásokhoz vezet.

Jelszó nélküli kapcsolatok és Teljes felügyelet

Mostantól jelszó nélküli kapcsolatokat használhat az alkalmazásokban az Azure-alapú szolgáltatásokhoz való csatlakozáshoz anélkül, hogy jelszavakat kellene elforgatnia. Bizonyos esetekben csak a konfigurációra van szükség – nincs szükség új kódra. Teljes felügyelet a "soha nem megbízható, mindig ellenőrizze és hitelesítő adatok nélküli" elvet használja. Ez azt jelenti, hogy az összes kommunikációt úgy lehet biztonságossá tenni, hogy megbízik a gépekben vagy a felhasználókban csak az identitás ellenőrzése után, és mielőtt hozzáférést ad nekik a háttérszolgáltatásokhoz.

A biztonságos, jelszó nélküli kapcsolatokhoz ajánlott hitelesítési lehetőség a felügyelt identitások és az Azure szerepköralapú hozzáférés-vezérlés (RBAC) együttes használata. Ezzel a megközelítéssel nem kell manuálisan nyomon követnie és kezelnie a felügyelt identitások különböző titkos kulcsait, mivel ezeket a feladatokat az Azure belsőleg biztonságosan kezeli.

Az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokat a Service Csatlakozás or használatával konfigurálhatja, vagy manuálisan is konfigurálhatja őket. A service Csatlakozás or lehetővé teszi a felügyelt identitásokat az olyan alkalmazás-üzemeltetési szolgáltatásokban, mint az Azure Spring Apps, a Azure-alkalmazás Service és az Azure Container Apps. A service Csatlakozás or emellett jelszó nélküli kapcsolatokkal konfigurálja a háttérszolgáltatásokat felügyelt identitások és az Azure RBAC használatával, és hidratálja az alkalmazásokat a szükséges kapcsolati adatokkal.

Ha megvizsgálja egy jelszó nélküli kapcsolatokhoz konfigurált alkalmazás futó környezetét, láthatja a teljes kapcsolati sztring. A kapcsolati sztring például egy adatbázis-kiszolgáló címét, egy adatbázisnevet és egy utasítást tartalmaz, amely a hitelesítést egy Azure-hitelesítési beépülő modulnak delegálja, de nem tartalmaz jelszavakat vagy titkos kulcsokat.

Az alábbi videó az alkalmazások és az Azure-szolgáltatások jelszó nélküli kapcsolatait mutatja be, példaként Java-alkalmazásokat használva. Hasonló lefedettség várható más nyelvek esetében is.


A DefaultAzureCredential bemutatása

Az Azure-szolgáltatásokhoz a Microsoft Entra ID-n és szerepköralapú hozzáférés-vezérlésen (RBAC) keresztüli jelszó nélküli kapcsolatok implementálhatók az Azure Identity-ügyfélkódtárak használatával DefaultAzureCredential .

Fontos

Egyes nyelveknek explicit módon kell implementálniuk DefaultAzureCredential a kódjukat, míg mások belsőleg használnak DefaultAzureCredential mögöttes beépülő modulokat vagy illesztőprogramokat.

DefaultAzureCredential több hitelesítési módszert támogat, és automatikusan meghatározza, hogy melyiket érdemes futtatókörnyezetben használni. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi fejlesztés és éles környezet) környezetspecifikus kód implementálása nélkül.

A hitelesítő adatok keresésének sorrendje és helye DefaultAzureCredential nyelvenként eltérő:

Ha például helyileg dolgozik a .NET-en, általában azzal a fiókkal hitelesíti magát, DefaultAzureCredential amellyel a fejlesztő bejelentkezett a Visual Studióba, az Azure CLI-be vagy az Azure PowerShellbe. Amikor az alkalmazás üzembe van helyezve az Azure-ban, DefaultAzureCredential automatikusan felderíti és használja a társított üzemeltetési szolgáltatás felügyelt identitását, például Azure-alkalmazás szolgáltatást. Ehhez az áttűnéshez nincs szükség kódmódosításra.

Megjegyzés:

A felügyelt identitás biztonsági identitást biztosít egy alkalmazás vagy szolgáltatás megjelenítéséhez. Az identitást az Azure platform kezeli, és nem követeli meg a titkos kulcsok kiépítését vagy elforgatását. A felügyelt identitásokról az áttekintési dokumentációban olvashat bővebben.

Az alábbi példakód bemutatja, hogyan csatlakozhat a Service Bushoz jelszó nélküli kapcsolatok használatával. Más dokumentáció részletesebben ismerteti, hogyan migrálhat erre a beállításra egy adott szolgáltatáshoz. A .NET-alkalmazások átadhatnak egy példányt DefaultAzureCredential egy szolgáltatásügyfél-osztály konstruktorának. DefaultAzureCredential automatikusan felderíti az adott környezetben elérhető hitelesítő adatokat.

ServiceBusClient serviceBusClient = new(
    new Uri("https://<your-service-bus-namespace>.blob.core.windows.net"),
    new DefaultAzureCredential());

Kapcsolódó információk

A jelszó nélküli kapcsolatok részletesebb magyarázatáért tekintse meg a több Azure-alkalmazás és szolgáltatás közötti jelszó nélküli kapcsolatok konfigurálását ismertető fejlesztői útmutatót.