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.txtUż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: passwordUż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-credentialsBezpieczeń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
- ConfigMaps do konfiguracji
- Secrets do poufnych danych
- Woluminy trwałe i żądania zasobów
- StorageClass i dynamiczne udostępnianie zasobów