Titkok kezelése Kubernetesben – CloudSavvy IT

Avatar admin | 2021.04.02. 5 Views 0 Likes 0 Ratings

5 Views 0 Ratings Rate it

A Kubernetes logót ábrázoló grafika

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.


Forrás link


5 Views 0 Ratings Rate it

  • Minden jog fenntartva 2019-2020. Hogyankészítsek.Hu Impresszum Adatkezelési szabályok