0Pricing
Kubernetes Basics · Lekcja

Secrets do poufnych danych

Bezpiecznie przechowuj poufne informacje, takie jak hasła i klucze API, oraz zarządzaj nimi za pomocą obiektów Secrets.

Secrets do poufnych danych to bezpłatna lekcja Kubernetes Basics na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kubernetes Basics, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.

Ochrona poufnych informacji

Podczas tworzenia aplikacji często mają Państwo do czynienia z poufnymi informacjami, takimi jak hasła do baz danych, klucze API czy prywatne certyfikaty.

Przechowywanie ich bezpośrednio w kodzie aplikacji lub plikach konfiguracyjnych stanowi poważne zagrożenie dla bezpieczeństwa! Może prowadzić do wycieku danych i ujawnienia informacji o systemie.

Wprowadzenie do Kubernetes Secrets

Kubernetes Secrets to obiekty przeznaczone do bezpiecznego przechowywania poufnych danych w klastrze.

Pomagają oddzielić poufne informacje od definicji Podów i kodu aplikacji, dzięki czemu wdrożenia są bezpieczniejsze i łatwiejsze w zarządzaniu.

  • Oddzielenie: Poufne dane nie trafiają do obrazów kontenerów ani plików YAML Podów.
  • Dostępność: Pody mogą korzystać z nich jako ze zmiennych środowiskowych lub zamontowanych plików.

Secrets a ConfigMaps

Być może pamiętają Państwo ConfigMaps z poprzedniej lekcji, gdzie służyły do przechowywania niesensytywnych danych konfiguracyjnych.

Secrets są podobne, ale przeznaczone konkretnie do danych poufnych. Oba typy przechowują pary klucz-wartość, jednak Secrets uwzględniają poufny charakter tych danych.

  • ConfigMaps: Do ogólnej, niesensytywnej konfiguracji (np. poziomów logowania, endpointów API).
  • Secrets: Do danych poufnych (np. haseł, tokenów, kluczy prywatnych).

Należy pamiętać, że Secrets są kodowane w base64, a nie domyślnie szyfrowane!

Tworzenie Secret z wartości literalnej

Najprostszym sposobem utworzenia Secret jest użycie wartości literalnej wraz z poleceniem kubectl create secret generic.

Jest to przydatne w przypadku pojedynczych, krótkich fragmentów poufnych danych, takich jak proste hasło.

kubectl create secret generic my-db-secret \
  --from-literal=username=admin \
  --from-literal=password=SuperSecretP@ssw0rd!

Tworzenie Secret z plików

W przypadku większych lub wielowierszowych poufnych danych, takich jak klucz prywatny albo kompletny plik konfiguracyjny, lepiej utworzyć Secret z plików.

Najpierw należy utworzyć pliki lokalnie, a następnie się do nich odwołać. Kubernetes odczyta zawartość plików i ją zapisze.

# Create local files first
echo "my-api-key-12345" > api-key.txt
echo "my-token-abcde" > auth-token.txt

# Create the Secret
kubectl create secret generic app-credentials \
  --from-file=api-key.txt \
  --from-file=auth-token.txt

Używanie Secrets jako zmiennych środowiskowych

Pody mogą korzystać z danych Secret, wstrzykując je bezpośrednio do swoich zmiennych środowiskowych. Jest to typowe rozwiązanie dla prostych par klucz-wartość.

Można odwołać się do pojedynczych kluczy z Secret albo do wszystkich za pomocą envFrom.

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-env
spec:
  containers:
  - name: my-app
    image: nginx:latest
    env:
    - name: DB_USERNAME
      valueFrom:
        secretKeyRef:
          name: my-db-secret
          key: username
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-db-secret
          key: password

Używanie Secrets jako zamontowanych plików

W przypadku poufnych plików, takich jak certyfikaty i klucze prywatne, albo gdy aplikacja oczekuje konfiguracji w określonych ścieżkach, można zamontować Secrets jako pliki wewnątrz Poda.

Każdy klucz w Secret staje się plikiem w zamontowanym katalogu, a jego wartość stanowi zawartość tego pliku.

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-vol
spec:
  containers:
  - name: my-app
    image: nginx:latest
    volumeMounts:
    - name: app-secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: app-secret-volume
    secret:
      secretName: app-credentials

Bezpieczeństwo Secrets

Choć Secrets chronią dane przed przypadkowym podejrzeniem, nie są uniwersalnym rozwiązaniem. Należy pamiętać o następujących kwestiach:

  • Kodowanie Base64: Secrets są kodowane w base64, a nie szyfrowane. Każdy, kto ma dostęp do Secret, może go zdekodować.
  • RBAC: Należy używać kontroli dostępu opartej na rolach (RBAC), aby ograniczyć osoby uprawnione do odczytywania, tworzenia lub modyfikowania Secrets.
  • Szyfrowanie danych w spoczynku: Aby zapewnić rzeczywiste bezpieczeństwo, należy włączyć szyfrowanie danych w spoczynku dla danych etcd (magazynu danych Kubernetes). Dostawcy usług chmurowych często oferują taką funkcję.

Aktualizowanie Secrets

Jeśli poufne dane ulegną zmianie, należy zaktualizować Secret. Ponowne uruchomienie polecenia kubectl create secret z nowymi wartościami spowoduje jego aktualizację. Można też użyć polecenia kubectl apply -f ze zaktualizowanym plikiem YAML.

Uruchomione Pody korzystające z Secret nie pobiorą automatycznie wprowadzonych zmian. Aby zastosować zmiany, zazwyczaj trzeba zrestartować Pody korzystające z Secret lub wdrożyć je ponownie.

Szybkie sprawdzenie: Secrets

Wyobraźmy sobie, że mają Państwo prywatny klucz API, do którego aplikacja musi mieć dostęp. Która metoda jest najbezpieczniejsza i najbardziej odpowiednia do przechowywania tego klucza i udostępniania go Podowi Kubernetes?

Podsumowanie: Secrets do poufnych danych

Świetnie! Wiedzą już Państwo, jak obsługiwać poufne dane w Kubernetes!

  • Secrets przechowują poufne informacje, takie jak hasła i klucze API.
  • Są kodowane w base64 i mogą być używane jako zmienne środowiskowe lub zamontowane pliki.
  • Aby zapewnić maksymalne bezpieczeństwo, należy zawsze stosować RBAC i rozważyć szyfrowanie danych w spoczynku.
  • Należy pamiętać, że Pody trzeba zrestartować, aby pobrały aktualizacje Secret.

Często zadawane pytania

Czy lekcja „Secrets do poufnych danych” jest bezpłatna?

Tak — pełny tekst „Secrets do poufnych danych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kubernetes Basics, przejdź na CoddyKit PRO. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.

Co nauczysz się w „Secrets do poufnych danych”?

Bezpiecznie przechowuj poufne informacje, takie jak hasła i klucze API, oraz zarządzaj nimi za pomocą obiektów Secrets. Ćwiczysz Kubernetes Basics z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kubernetes Basics?

Nie wymagamy żadnego doświadczenia. Kubernetes Basics w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Secrets do poufnych danych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kubernetes Basics?

Tak. Każda lekcja Kubernetes Basics zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. ConfigMaps do konfiguracji
  2. Secrets do poufnych danych
  3. Woluminy trwałe i żądania zasobów
  4. StorageClass i dynamiczne udostępnianie zasobów
← Powrót do Kubernetes Basics