
A Kubernetes Secrets lehetővé teszi a bizalmas információk biztonságos tárolását. A Secret használatával nincs szükség arra, hogy a bizalmas adatokat manifeszt definíciókba vagy egyszerű tároló képekbe sütjük.
A titkok első osztályú erőforrástípusok, amelyek bármelyik Pod-tól függetlenül léteznek. A Pods-nak megadod a Titkaidra vonatkozó hivatkozásokat. Az architektúra lehetővé teszi a titkokhoz való hozzáférés korlátozását csak azokhoz a Podokhoz, amelyeknek valóban szükségük van az adatokra.
A Titkokat általában olyan érzékeny állandókra használja, amelyekre a Podjainak szüksége lehet. Ideálisak hitelesítési kulcsok, adatbázis-hitelesítő adatok és API-tokenek tárolására.
Titok létrehozása
A titkok ugyanúgy készülnek, mint bármely más Kubernetes API-erőforrás. Te tudod használni Kubectl parancsok vagy egy YAML-jegyzék, amelyet azután a fürtjére alkalmaz. Ebben az oktatóanyagban példákat adunk a YAML fájlokra.
Itt van, hogyan definiálhat egy felhasználó által létrehozott titkot:
apiVersion: v1 kind: Secret type: Opaque metadata: name: demo-secret data: SECRET_USERNAME: dXNlcm5hbWUK SECRET_PASSWORD: cGFzc3dvcmQK
A titkok a kind és egyszerű tárgya data. A titkos példa két külön adatmezőt határoz meg, SECRET_USERNAME és SECRET_PASSWORD. Az értékeknek Base64-kódolásúnak kell lenniük – a fenti értékek eredetileg voltak username és password.
Ha Helm-sablonnal dolgozik, akkor a a-ban megadhatja titkos értékeit values.yaml fájl. Vezesse át őket b64enc a manifesztben, hogy Helm Base64-ként kódolja őket.
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: demo-secret
data:
SECRET_PASSWORD: {{ .Values.SecretPassword | b64enc }}
Ha nem szeretné, hogy az Base64 kódolja az értékeket, használhatja a stringData mező helyett. Tetszik data, stringData egy kulcs-érték párok térképe, de az értékeket szó szerint, kódolás nélkül dolgozzuk fel.
Titkos típusok
Az Opaque titkos típust kell használni önkényes adatokhoz, amelyeket Ön határoz meg. A Kubernetes meghatároz még néhány beépítettet titkos típusok meghatározott felhasználási szcenáriókhoz.
A rendelkezésre álló típusok a következők: service-account-token (Kubernetes szolgáltatás token), dockerconfigjson (egy sorosított Docker config.json fájl, a Docker hitelesítő adatok megadásához) és ssh-auth (adja meg az SSH hitelesítő adatokat). Ezen típusok mellett vannak megoldások a HTTP alaphitelesítéshez és a TLS tanúsítvány adatokhoz.
Minden titkos típus képes meghatározni saját extra mezőket és érvényesítési korlátozásokat. A titkos típushoz szükséges adatok biztosításához általában további megjegyzéseket kell beállítania a titkában.
Saját titkos típusazonosítókat hozhat létre, ha saját karakterláncot ad meg a type terület. A kapott titok funkcionálisan egyenértékű lesz a Opaque típus.
Titkok biztosítása a hüvelyeknek
Miután létrehoztál egy Titkot, elérhetővé kell tenni a podjaid számára. Titkos adatokat injektálhat környezeti változókként vagy kötetbe illesztett fájlként.
Itt van egy Pod-jegyzék, amely a titok adatait környezeti változókba vonja be:
apiVersion: v1
kind: Pod
metadata:
name: pod-with-secret
spec:
containers:
- name: demo-container
image: my-image:latest
envFrom:
- secretRef:
name: demo-secret
Használva envFrom, az összes kulcs-érték pár, amelyet a titokban definiáltak data tároló környezeti változókká lesz konvertálva. A korábbi titok titkával a tárolója lenne SECRET_USERNAME és SECRET_PASSWORD injektált környezeti változók. Az értékeket automatikusan a Base64 dekódolja.
Néha a környezeti változók helyett fájlokkal kell dolgozni. Így lehet titkot csatolni egy Kubernetes-kötetbe.
apiVersion: v1
kind: Pod
metadata:
name: pod-with-secret
spec:
containers:
- name: demo-container
image: my-image:latest
volumeMounts:
- name: secret-volume
mountPath: /secrets
volumes:
- name: secret-volume
secret:
secretName: demo-secret
Hozzáférés a /secrets könyvtárban a titkos adatok megtekintéséhez. Minden adatkulcsnak saját fájlja lesz. A fájl tartalma a kulcs Base64-dekódolt értéke lesz. Példánk titka írna /secrets/SECRET_USERNAME és /secrets/SECRET_PASSWORD fájlokat.
A megközelítés úgy működik, hogy Kubernetes-kötetet hoz létre a secret forrás. Ez a forrás feltölti a kötetet egy megnevezett titok adataival. A kötet ezután a konténerbe kerül az itt meghatározott úton volumeMounts.
Biztonsági szempontok
Az adatok titokban tartása nem teszi automatikusan biztonságossá. A Base64-kódolás felszínes homályt nyújt, de nem tévedés: ez az kódolás és nem Titkosítás. Bármi, amely hozzáfér a fürtjéhez, legyen az emberi felhasználó vagy egy megfelelően engedélyezett alkalmazás, lekérheti a sima szövegű titkos értékeket.
A titkok lényege, hogy csökkentsék a véletlenszerű adatok expozíciójának kockázatát a hüvelyek létrehozásakor és megtekintésekor. Csak titkokat adunk hogy Pods – és a Nodes-hez – amelyek valójában megkövetelik őket. A Node megsemmisíti a titkok helyi példányait, amikor az őket használó Pod megszűnik.
A Kubernetes vezérlősík titkos értékeket tárol az stb. Példányában. Ez egy kulcsérték-tároló, amely a Kubernetes-fürt adatait támogatja. Ha maximalizálni szeretné a biztonságot, meg kell tennie állítsa be a titkosítást nyugalomban az etcd áruházához. Ez titkosítja titkait az etcd-n belül.
Fel kell mérnie azt is, hogy az alkalmazásrétege hogyan kezeli a titkokat. Még a nyugalmi állapotú titkosítás engedélyezése esetén is a tárolók akaratlanul is kiszivárogtathatják a titkokat, ha munkanaplókba küldik őket, vagy külsõ szolgálatoknak küldenek. A Kubernetes titkok használata nem zárja ki a bizalmas adatok körültekintő kezelésének szükségességét a tárolóban.
Összegzés
A Kubernetes titkok segítségével bizalmas adatokat tárolhat és hozzáférhet a Kubernetes fürtön belül. A titkok használatával jobban szabályozhatja az információk expozícióját. Azt is egyértelművé teszi, hogy potenciálisan érzékeny értékeket kezel. Ez figyelmeztetésként szolgálhat a fürt felhasználói és rendszergazdái számára.
A hüvelyek titkokat fogyasztanak környezeti változóként vagy kötetre illesztett fájlként. A Kubernetes kezeli a titkok konténerekbe juttatását. A munkaterhelések a meglévő konfigurációs mechanizmusaik segítségével férhetnek hozzá az adatokhoz. A titkok alapértelmezés szerint nem teljesen biztonságosak, de a fürt szintű titkosítás aktiválásával növelheti a védelmüket.
