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.