Ajánlott eljárások a podok biztonságához az Azure Kubernetes Service-ben (AKS)

Amikor alkalmazásokat fejleszt és futtat az Azure Kubernetes Service-ben (AKS), a podok biztonsága kulcsfontosságú szempont. Az alkalmazásokat a minimálisan szükséges jogosultságok elvére kell tervezni. A privát adatok biztonságának megőrzése az ügyfelek szem előtt tartásával történik. Nem szeretne olyan hitelesítő adatokat, mint az adatbázis-kapcsolati sztring, kulcsok vagy titkos kulcsok és tanúsítványok, amelyek a külvilág számára vannak közzétéve, ahol a támadó rosszindulatú célokra kihasználhatná ezeket a titkos kulcsokat. Ne vegye fel őket a kódba, és ne ágyazza be őket a tárolórendszerképekbe. Ez a megközelítés kockázatot jelent az expozíció szempontjából, és korlátozza a hitelesítő adatok elforgatásának lehetőségét, mivel a tárolólemezképeket újra kell létrehozni.

Ez az ajánlott eljárásokat ismertető cikk a podok AKS-ben való védelméről szól. Az alábbiak végrehajtásának módját ismerheti meg:

  • A pod biztonsági környezetének használata a folyamatokhoz és szolgáltatásokhoz való hozzáférés korlátozásához vagy a jogosultságok eszkalálásához
  • Hitelesítés más Azure-erőforrásokkal Microsoft Entra Számítási feladat ID
  • Hitelesítő adatok kérése és lekérése egy digitális tárolóból, például az Azure Key Vaultból

A fürtbiztonságra és a tárolólemezkép-kezelésre vonatkozó ajánlott eljárásokat is elolvashatja.

Podok hozzáférésének védelme az erőforrásokhoz

Ajánlott eljárás – Ha más felhasználóként vagy csoportként szeretne futni, és korlátozni szeretné a mögöttes csomópontfolyamatokhoz és szolgáltatásokhoz való hozzáférést, határozza meg a pod biztonsági környezetének beállításait. Rendelje hozzá a legkevesebb szükséges jogosultságot.

Ahhoz, hogy az alkalmazások megfelelően fussanak, a podoknak definiált felhasználóként vagy csoportként kell futniuk, nem pedig gyökérként. A securityContext podok vagy tárolók esetében megadhatja az olyan beállításokat, mint a runAsUser vagy az fsGroup , hogy a megfelelő engedélyeket feltételezze. Csak a szükséges felhasználói vagy csoportengedélyeket rendelje hozzá, és ne használja a biztonsági környezetet további engedélyek feltételezésére. A runAsUser, a jogosultságok eszkalálása és más Linux-képességek beállításai csak Linux-csomópontokon és podokon érhetők el.

Ha nem gyökérfelhasználóként fut, a tárolók nem tudnak csatlakozni az 1024 alatti kiemelt portokhoz. Ebben a forgatókönyvben a Kubernetes Services használatával álcázhatja azt a tényt, hogy egy alkalmazás egy adott porton fut.

A podok biztonsági környezete további képességeket vagy engedélyeket is meghatározhat a folyamatok és szolgáltatások eléréséhez. A következő gyakori biztonsági környezet-definíciók állíthatók be:

  • az allowPrivilegeEscalation határozza meg, hogy a pod képes-e gyökérjogjogokat feltételezni. Az alkalmazásokat úgy tervezheti meg, hogy ez a beállítás mindig hamis legyen.
  • A Linux-képességek lehetővé teszik a pod számára a mögöttes csomópontfolyamatok elérését. Ügyeljen arra, hogy ezeket a képességeket hozzárendelje. Rendelje hozzá a legkevesebb szükséges jogosultságot. További információ: Linux-képességek.
  • Standard kiadás Linux labels egy Linux kernel biztonsági modul, amellyel hozzáférési szabályzatokat határozhat meg a szolgáltatásokhoz, folyamatokhoz és fájlrendszerekhez való hozzáféréshez. Ismét rendelje hozzá a legkevesebb szükséges jogosultságot. További információ: Standard kiadás Linux-beállítások a Kubernetesben

Az alábbi példa pod YAML-jegyzékfájlja a biztonsági környezet beállításait határozza meg:

  • A pod 1000-es felhasználói azonosítóként és a 2000-es csoportazonosító részeként fut
  • Nem lehet eszkalálni a használni kívánt jogosultságokat root
  • Lehetővé teszi, hogy a Linux-képességek hozzáférjenek a hálózati adapterekhez és a gazdagép valós idejű (hardveres) órájához
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  securityContext:
    fsGroup: 2000
  containers:
    - name: security-context-demo
      image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
      securityContext:
        runAsUser: 1000
        allowPrivilegeEscalation: false
        capabilities:
          add: ["NET_ADMIN", "SYS_TIME"]

A fürt operátorával együttműködve határozza meg, hogy milyen biztonsági környezetbeállításokra van szüksége. Próbálja meg megtervezni az alkalmazásokat a további engedélyek minimalizálása és a podhoz való hozzáférés érdekében. További biztonsági funkciókkal korlátozhatja a hozzáférést az AppArmor és a seccomp (biztonságos számítástechnika) használatával, amelyeket a fürt operátorai implementálhatnak. További információ: Biztonságos tárolóhozzáférés az erőforrásokhoz.

A hitelesítő adatok expozíciójának korlátozása

Ajánlott eljárás – Ne definiáljon hitelesítő adatokat az alkalmazáskódban. Az Azure-erőforrások felügyelt identitásainak használatával lehetővé teszi, hogy a pod hozzáférést kérjen más erőforrásokhoz. A digitális kulcsok és hitelesítő adatok tárolására és lekérésére egy digitális tárolót, például az Azure Key Vaultot is használni kell. A pod által felügyelt identitások csak Linux-podokhoz és tárolólemezképekhez használhatók.

A hitelesítő adatok alkalmazáskódban való közzététele kockázatának csökkentése érdekében kerülje a rögzített vagy megosztott hitelesítő adatok használatát. A hitelesítő adatokat vagy kulcsokat nem szabad közvetlenül a kódban szerepeltetni. Ha ezek a hitelesítő adatok elérhetővé válnak, az alkalmazást frissíteni és újra kell üzembe helyezni. Jobb módszer a podok saját identitásának és hitelesítésének módja, vagy a hitelesítő adatok automatikus lekérése egy digitális tárolóból.

Microsoft Entra Számítási feladat ID használata

A számítási feladatok identitása egy podon futó alkalmazás által használt identitás, amely hitelesítést végezhet más, azt támogató Azure-szolgáltatásokon, például a Storage-on vagy az SQL-en. Integrálható a Kubernetes natív képességeivel a külső identitásszolgáltatókkal való összevonás érdekében. Ebben a biztonsági modellben az AKS-fürt jogkivonatkibocsátóként működik, a Microsoft Entra ID OpenID Csatlakozás használatával felderíti a nyilvános aláíró kulcsokat, és ellenőrzi a szolgáltatásfiók-jogkivonat hitelességét, mielőtt kicseréli azt egy Microsoft Entra-jogkivonatra. A számítási feladat az Azure Identity ügyfélkódtárával az Azure SDK vagy a Microsoft Authentication Library (MSAL) használatával kicserélheti a kötetére kivetített szolgáltatásfiók-jogkivonatot egy Microsoft Entra-jogkivonatra.

A számítási feladatok identitásaival kapcsolatos további információkért lásd: AKS-fürt konfigurálása Microsoft Entra Számítási feladat ID alkalmazásokkal való használatához

Az Azure Key Vault használata a Titkos kulcstár CSI-illesztőprogramjával

A Microsoft Entra Számítási feladat ID lehetővé teszi a hitelesítést az Azure-szolgáltatások támogatásával szemben. Az Azure-erőforrásokhoz tartozó felügyelt identitásokkal nem rendelkező saját szolgáltatások vagy alkalmazások esetében továbbra is hitelesítő adatokkal vagy kulcsokkal hitelesíthet. Ezek a titkos tartalmak digitális tárolóval tárolhatók.

Ha az alkalmazásoknak hitelesítő adatokra van szükségük, kommunikálnak a digitális tárolóval, lekérik a legújabb titkos tartalmakat, majd csatlakoznak a szükséges szolgáltatáshoz. Az Azure Key Vault lehet ez a digitális tároló. A hitelesítő adatok Azure Key Vaultból pod által felügyelt identitások használatával történő lekérésének egyszerűsített munkafolyamata az alábbi ábrán látható:

Simplified workflow for retrieving a credential from Key Vault using a pod managed identity

A Key Vault segítségével tárolhatja és rendszeresen elforgathatja a titkos kulcsokat, például hitelesítő adatokat, tárfiókkulcsokat vagy tanúsítványokat. Az Azure Key Vaultot integrálhatja egy AKS-fürttel a Titkos kulcstár CSI-illesztőprogram azure Key Vault-szolgáltatójával. A Titkos kulcstár CSI-illesztőprogramja lehetővé teszi, hogy az AKS-fürt natív módon lekérje a titkos kulcs tartalmát a Key Vaultból, és biztonságosan csak a kérelmező podnak adja meg őket. A fürt operátorával együttműködve helyezze üzembe a Titkos kulcstár CSI-illesztőprogramját az AKS-feldolgozó csomópontokon. Egy Microsoft Entra Számítási feladat ID használatával hozzáférést kérhet a Key Vaulthoz, és lekérheti a titkos kulcsok tartalmát a Titkos kulcstár CSI-illesztőprogramon keresztül.

Következő lépések

Ez a cikk a podok biztonságossá tételéről szól. Ezen területek némelyikének implementálásához tekintse meg a következő cikkeket: