Javaslatok az alkalmazás titkos kulcsainak védelmére
Az Azure Well-Architected Framework biztonsági ellenőrzőlistára vonatkozó javaslatra vonatkozik:
SE:09 | Az alkalmazás titkos kódjának védelme a tárolók megkeményítésével, a hozzáférés és a manipuláció korlátozásával, valamint a műveletek naplózásával. Futtasson egy megbízható és rendszeres rotációs folyamatot, amely improvizálhatja a vészhelyzetek forgatását. |
---|
Ez az útmutató az alkalmazások bizalmas információinak védelmére vonatkozó javaslatokat ismerteti. A titkos kódok megfelelő kezelése elengedhetetlen az alkalmazás, a számítási feladat és a kapcsolódó adatok biztonságának és integritásának fenntartásához. A titkos kódok helytelen kezelése adatsértésekhez, szolgáltatáskimaradáshoz, jogszabályi előírások megsértéséhez és egyéb problémákhoz vezethet.
A hitelesítő adatok, például az API-kulcsok, a nyílt engedélyezési (OAuth) jogkivonatok és az SSH-kulcsok titkos kulcsok. Egyes hitelesítő adatok, például az ügyféloldali OAuth-jogkivonatok futásidőben dinamikusan hozhatók létre. A dinamikus titkos kulcsokat ideiglenes jellegük ellenére is védeni kell. A nem hitelesítő adatok, például a tanúsítványok és a digitális aláírási kulcsok is érzékenyek lehetnek. A megfelelőségi követelmények miatt a általában titkosnak nem tekintett konfigurációs beállításokat alkalmazáskulcsként kell kezelni.
Meghatározások
Kifejezés | Definíció |
---|---|
Diplomák | A titkosításhoz vagy visszafejtéshez a nyilvános kulcsokat tartalmazó digitális fájlok. |
Igazolás | A közzétevő vagy a fogyasztó személyazonosságának ellenőrzésére használt információk egy kommunikációs csatornán. |
Hitelesítő adatok vizsgálata | A forráskód ellenőrzésének folyamata annak érdekében, hogy a titkos kulcsok ne legyenek benne. |
Titkosítás | Az a folyamat, amellyel az adatok olvashatatlanná és titkos kóddal zárolva lesznek. |
Kulcs | Titkos kód, amely titkosított adatok zárolására vagy zárolásának feloldására szolgál. |
Minimális jogosultságú hozzáférés | Egy Teljes felügyelet alapelv, amelynek célja egy feladatfüggvény végrehajtásához szükséges engedélyek készletének minimalizálása. |
Felügyelt identitás | Az erőforrásokhoz rendelt és az Azure által felügyelt identitás. |
Nemsecret | Olyan információk, amelyek nem veszélyeztetik a számítási feladat biztonsági helyzetét, ha kiszivárog. |
Változtatás | A titkos kódok rendszeres frissítésének folyamata, hogy ha feltörik őket, csak korlátozott ideig legyenek elérhetők. |
Titkos | A rendszer bizalmas összetevője, amely megkönnyíti a számítási feladatok összetevői közötti kommunikációt. Ha kiszivárog, a titkos kódok feltörést okozhatnak. |
X.509 | A nyilvános kulcsú tanúsítványok formátumát meghatározó szabvány. |
Fontos
Ne kezelje a nem titkosokat titkos kódokként. A titkos kódok olyan működési szigort igényelnek, amely szükségtelen a nem titkos kódok számára, és ez többletköltséget eredményezhet.
Az alkalmazáskonfigurációs beállítások, például az alkalmazás által használt API-k URL-címei nem biztonságosak. Ezeket az információkat nem szabad az alkalmazáskóddal vagy az alkalmazás titkos kódjával tárolni. Érdemes lehet dedikált konfigurációkezelő rendszert használni, például Azure-alkalmazás Konfigurációt a beállítások kezeléséhez. További információ: Mi Azure-alkalmazás konfiguráció?
Főbb tervezési stratégiák
A titkos kulcskezelési stratégiának a lehető legkisebbre kell csökkentenie a titkos kulcsokat, és a platformfunkciók kihasználásával integrálnia kell őket a környezetbe. Ha például felügyelt identitást használ az alkalmazáshoz, a hozzáférési adatok nem ágyazódnak be kapcsolati sztring, és biztonságosan tárolhatók az adatok egy konfigurációs fájlban. A titkos kódok tárolása és kezelése előtt vegye figyelembe a következő aggályos területeket:
A létrehozott titkos kulcsokat szigorú hozzáférés-vezérléssel biztonságos tárolóban kell tartani.
A titkos kulcsok rotálása proaktív művelet, míg a visszavonás reaktív.
Csak megbízható identitások férhetnek hozzá a titkos kódokhoz.
A titkos kódokhoz való hozzáférés ellenőrzéséhez és ellenőrzéséhez auditnaplót kell fenntartania.
Ezen pontok köré olyan stratégiát hozhat létre, amely segít megelőzni az identitáslopást, elkerülni az elutasítást, és minimalizálni a szükségtelen információknak való kitettséget.
Számítási feladatok titkos kulcsának kezelése
Ha lehetséges, kerülje a titkos kulcsok létrehozását. A felelősség platformra történő delegálásának módjai. Használhatja például a platform beépített felügyelt identitásait a hitelesítő adatok kezeléséhez. Kevesebb titkos kulcs esetén csökken a felület, és kevesebb időt töltenek a titkos kódok kezelésével.
Javasoljuk, hogy a kulcsoknak három különböző szerepkörük legyen: felhasználó, rendszergazda és auditor. A szerepkör-megkülönböztetés segít biztosítani, hogy csak a megbízható identitások férhessenek hozzá a titkos kódokhoz a megfelelő szintű engedélyekkel. A fejlesztőket, rendszergazdákat és más releváns munkatársakat a titkos kódok kezelésének és a biztonsági ajánlott eljárások fontosságának megismertetése.
Előmegosztott kulcsok
A hozzáférést úgy szabályozhatja, hogy különböző kulcsokat hoz létre az egyes felhasználók számára. Az ügyfél például egy külső API-val kommunikál egy előre megadott kulccsal. Ha egy másik ügyfélnek ugyanahhoz az API-hoz kell hozzáférnie, egy másik kulcsot kell használnia. Ne ossza meg a kulcsokat akkor sem, ha két fogyasztó azonos hozzáférési mintákkal vagy szerepkörökben rendelkezik. A fogyasztói hatókörök idővel változhatnak, és nem frissítheti egymástól függetlenül az engedélyeket, és nem különböztetheti meg a használati mintákat a kulcsok megosztása után. A különálló hozzáférés megkönnyíti a visszavonást is. Ha egy felhasználó kulcsa sérült, egyszerűbb visszavonni vagy elforgatni a kulcsot anélkül, hogy más felhasználókat érintenének.
Ez az útmutató különböző környezetekre vonatkozik. Ezt a kulcsot nem szabad használni az előkészítési és az éles környezetekben sem. Ha ön a felelős az előmegosztott kulcsok létrehozásáért, győződjön meg arról, hogy több kulcsot hoz létre több ügyfél támogatásához.
További információ: Identitás- és hozzáférés-kezelésre vonatkozó javaslatok.
Titkos tárterület
Egy titkos kódkezelő rendszer, például az Azure Key Vault használatával titkos kulcsokat tárolhat egy edzett környezetben, titkosíthatja a inaktív és az átvitel közbeni titkosítást, valamint naplózhatja a hozzáférést és a titkos kulcsok módosításait. Ha alkalmazáskulcsokat kell tárolnia, tartsa őket a forráskódon kívül a könnyű elforgatás érdekében.
A tanúsítványokat csak a Key Vaultban vagy az operációs rendszer tanúsítványtárolójában szabad tárolni. Az X.509-tanúsítvány tárolása például nem ajánlott PFX-fájlban vagy lemezen. Ha magasabb szintű biztonságra van szüksége, válassza azokat a rendszereket, amelyek hardveres biztonsági modullal (HSM) rendelkeznek szoftveralapú titkos kulcstárolók helyett.
Kompromisszum: A HSM-megoldásokat magasabb költséggel kínáljuk. A hozzáadott biztonsági rétegek miatt az alkalmazás teljesítményére is hatással lehet.
A dedikált titkos kódkezelő rendszer megkönnyíti az alkalmazás titkos kulcsainak tárolását, terjesztését és hozzáférésének szabályozását. Csak az engedélyezett identitások és szolgáltatások férhetnek hozzá a titkos tárakhoz. A rendszerhez való hozzáférés engedélyekkel korlátozható. Engedélyek hozzárendelésekor mindig alkalmazza a minimális jogosultsági megközelítést.
A hozzáférést titkos szinten is szabályoznia kell. Minden titkos kódnak csak egyetlen erőforrás-hatókörhöz kell hozzáférése. Hozzon létre elkülönítési határokat, hogy az összetevők csak a szükséges titkos kulcsokat használhassák. Ha egy izolált összetevő biztonsága sérül, nem tudja átvenni az irányítást más titkos kulcsok és potenciálisan a teljes számítási feladat felett. A titkos kulcsok elkülönítésének egyik módja több kulcstartó használata. Az extra kulcstartók létrehozásának nincs többletköltsége.
A titkos hozzáférés naplózásának és figyelésének megvalósítása. Naplózza, hogy ki fér hozzá a titkos kódokhoz, és mikor azonosítja a jogosulatlan vagy gyanús tevékenységeket. A biztonsági szempontból történő naplózással kapcsolatos információkért tekintse meg a biztonsági monitorozásra és fenyegetésészlelésre vonatkozó ajánlásokat.
Titkos kulcsok rotálása
Legyen egy folyamat, amely fenntartja a titkos higiéniát. A titkos kódok hosszúsága befolyásolja a titkos kód kezelését. A támadási vektorok csökkentése érdekében a titkos kulcsokat a lehető leggyakrabban ki kell vonni, és új titkos kódokra kell cserélni.
Gondosan kezelje az OAuth hozzáférési jogkivonatokat, figyelembe véve azok élettartamát. Fontolja meg, hogy az expozíciós időszakot rövidebb időszakra kell-e módosítani. A frissítési jogkivonatokat biztonságosan kell tárolni, és csak korlátozott mértékben szabad az alkalmazásnak kitéve. A megújított tanúsítványoknak új kulcsot is használniuk kell. További információ a frissítési jogkivonatokról: Biztonságos OAuth 2.0 A frissítési jogkivonatok nevében.
A titkos kulcsokat az élettartamuk lejárta után cserélje le, a számítási feladat már nem használja őket, vagy ha feltörték őket. Ezzel szemben ne vonja ki az aktív titkos kulcsokat, hacsak nem vészhelyzetről van szó. A titkos kódok állapotát a hozzáférési naplók megtekintésével határozhatja meg. A titkos kulcsok rotálási folyamatai nem befolyásolhatják a számítási feladat megbízhatóságát vagy teljesítményét. Használjon olyan stratégiákat, amelyek redundanciát építenek ki a titkos kódokban, a fogyasztókban és a hozzáférési módszerekben a zökkenőmentes rotáció érdekében.
További információ arról, hogy az Azure Storage hogyan kezeli a rotációt: Fiókhozzáférés-kulcsok kezelése.
A rotációs folyamatokat emberi beavatkozás nélkül kell automatizálni és üzembe helyezni. A titkos kulcsok tárolása egy olyan titkos kódtárban, amely natív módon támogatja a rotációs fogalmakat, leegyszerűsítheti ezt a működési feladatot.
Számítási feladatok titkos kulcsának biztonságos használata
Titkos kódgenerátorként vagy operátorként biztonságosan el kell tudnia osztani a titkos kulcsokat. Számos szervezet használ eszközöket a titkos kulcsok biztonságos megosztására mind a szervezeten belül, mind a külső partnerek számára. Eszköz hiányában rendelkeznie kell egy olyan eljárással, amely megfelelően átadja a hitelesítő adatokat a jogosult címzetteknek. A vészhelyreállítási terveknek titkos helyreállítási eljárásokat kell tartalmazniuk. Legyen egy folyamat olyan helyzetekre, amikor egy kulcs sérül vagy kiszivárog, és igény szerint újra kell létrehozni. A titkos kódok használatakor vegye figyelembe az alábbi ajánlott biztonsági eljárásokat:
A kemény bekódolás megakadályozása
A kódösszetevőkben, például az alkalmazáskódokban, a konfigurációs fájlokban és a build-üzembe helyezési folyamatokban ne legyen nehezen kódtitkok statikus szövegként . Ez a magas kockázatú eljárás sebezhetővé teszi a kódot, mert a titkos kódok mindenki számára elérhetők, akik olvasási hozzáféréssel rendelkezik.
Ezt a helyzetet elkerülheti a felügyelt identitások használatával, hogy ne kelljen hitelesítő adatokat tárolnia. Az alkalmazás a hozzárendelt identitással hitelesít más erőforrásokon az identitásszolgáltatón (IdP) keresztül. A fejlesztés során hamis titkos kódokat tartalmazó, nem gyártási környezetekben tesztelheti a valódi titkos kulcsok véletlen expozícióját.
Olyan eszközöket használjon, amelyek rendszeresen észlelik az alkalmazáskódban közzétett titkos kulcsokat , és összetevőket építenek ki. Ezeket az eszközöket git-előmegrendelési horogként is hozzáadhatja, amelyek a forráskód véglegesítése előtt hitelesítő adatokat keresnek. Rendszeresen tekintse át és fertőtlenítse az alkalmazásnaplókat, hogy ne legyenek véletlenül titkos kulcsok rögzítve. Az észlelést a társértékelésekkel is megerősítheti.
Feljegyzés
Ha a vizsgálati eszközök felfedeznek egy titkos kulcsot, ezt a titkos kulcsot feltörtnek kell tekinteni. Ezt vissza kell vonni.
Válasz a titkos kulcsok rotálására
Számítási feladat tulajdonosaként ismernie kell a titkos kulcsok rotálási tervét és szabályzatát, hogy az új titkos kulcsokat a felhasználók minimális zavarása mellett beépíthesse. Ha egy titkos kód el van forgatva, előfordulhat, hogy a régi titkos kód érvénytelen, de az új titkos kód nem lett elhelyezve. Ebben az ablakban az alkalmazás által elérni kívánt összetevő nem nyugtázza a kéréseket. Ezeket a problémákat minimalizálhatja, ha újrapróbálkozó logikát épít be a kódba. Egyidejű hozzáférési mintákat is használhat, amelyek lehetővé teszik, hogy több hitelesítő adattal rendelkezzen, amelyek biztonságosan módosíthatók anélkül, hogy befolyásolnák egymást.
Dolgozzon az operatív csapattal, és legyen része a változáskezelési folyamatnak. A hitelesítő adatok tulajdonosainak tudatnia kell, ha az alkalmazás egy olyan részét leszereli, amely már nem szükséges hitelesítő adatokat használ.
Integrálja a titkos kulcsok lekérését és konfigurációját az automatizált üzembehelyezési folyamatba. A titkos kulcsok lekérése segít biztosítani, hogy a titkos kulcsok automatikusan lekérhetők legyenek az üzembe helyezés során. Titkos kódinjektálási mintákkal titkos kódokat is beszúrhat az alkalmazáskódba vagy a konfigurációba futásidőben, ami megakadályozza, hogy a titkos kulcsok véletlenül ki legyenek téve a naplóknak vagy a verziókövetésnek.
Az Azure megkönnyítése
Titkos kulcsok tárolása a Key Vault használatával. Titkos kulcsokat tárol az Azure titkos kódkezelő rendszerében, a Key Vaultban, az Azure Managed HSM-ben és más helyeken. További információ: A megfelelő kulcskezelési megoldás kiválasztása.
Identitásalapú hozzáférés-vezérlés integrálása. A Microsoft Entra-azonosítók és a felügyelt identitások segítenek minimalizálni a titkos kódok szükségességét. A Microsoft Entra ID rendkívül biztonságos és használható felületet biztosít a hozzáférés-vezérléshez a kulcsforgatás kezelésére szolgáló beépített mechanizmusokkal, a rendellenességek és egyebek mellett.
Az Azure szerepköralapú hozzáférés-vezérlés (RBAC) használatával engedélyeket rendelhet hozzá egy adott hatókörhöz tartozó felhasználókhoz, csoportokhoz és alkalmazásokhoz.
Hozzáférési modell használatával vezérelheti a kulcstartókat, engedélyeket és titkos kulcsokat. További információ: Access-modell áttekintése.
Titkos kódok észlelésének implementálása. Integrálhatja a számítási feladatban a gyanús tevékenységeket észlelő folyamatokat, és rendszeresen ellenőrzi, hogy vannak-e közzétett kulcsok az alkalmazás kódjában. Néhány lehetőség a következők:
- Azure DevOps Credential Scanner-feladat
- Felhőhöz készült Defender titkos kódok vizsgálata
- Microsoft Defender a Key Vaulthoz
- GitHub Secret Scanner
Ne tároljon kulcsokat és titkos kulcsokat semmilyen környezettípushoz az alkalmazáskonfigurációs fájlokban, illetve a folyamatos integrációs és folyamatos kézbesítési (CI/CD) folyamatokban. A fejlesztőknek Visual Studio Connected Services-et vagy csak helyi fájlokat kell használniuk a hitelesítő adatok eléréséhez.
Kapcsolódó hivatkozások
- Az Access-modell áttekintése
- Azure DevOps Credential Scanner-feladat
- A Microsoft Security DevOps Azure DevOps bővítmény konfigurálása
- Az Azure DevOps-hoz készült GitHub Advanced Security konfigurálása
- Felhőhöz készült Defender titkos kódok vizsgálata
- A megfelelő kulcskezelési megoldás kiválasztása
- Fiókelérési kulcsok kezelése
- Microsoft Defender a Key Vaulthoz
- Javaslatok a biztonsági monitorozásra és a fenyegetésészlelésre
- Identitás- és hozzáférés-kezelésre vonatkozó javaslatok
- Biztonságos OAuth 2.0 a webszolgáltatásokhoz tartozó frissítési jogkivonatok nevében
- Visual Studio Connected Services
Közösségi hivatkozások
Biztonsági ellenőrzőlista
Tekintse meg a javaslatok teljes készletét.