Informacje na temat wpisów tajnych platformy Kubernetes

Ukończone

Jednym z największych zagadnień podczas pracy z aplikacjami rozproszonymi jest sposób zarządzania poufnymi informacjami, takimi jak hasła, połączenia i podobne dane. Platforma Kubernetes umożliwia zabezpieczenie tych danych za pomocą zasobu o nazwie Wpis tajny.

Informacje na temat wpisów tajnych

W usłudze Kubernetes wpisy tajne umożliwiają przechowywanie poufnych informacji w sposób bezpieczniejszy niż format zwykłego tekstu w zasobnikach i wdrożeniach. Wpisy tajne są przeznaczone do przechowywania haseł i innych poufnych danych.

Wpisy tajne kubernetes kodują swoje dane w formacie base64. Chociaż base64 nie jest algorytmem szyfrowania, platforma Kubernetes może zobaczyć, że informacje są zakodowane i mogą ukryć te informacje przed danymi wyjściowymi poleceń, takimi jak kubectl describe. Ten proces nie ma miejsce w przypadku konfiguracji zwykłego tekstu. Wpisy tajne są zawsze ograniczone do jednej przestrzeni nazw, aby uniknąć dodatkowego ujawnienia poufnych danych innym obciążeniom w klastrze.

Typy wpisów tajnych

Istnieją różne typy wpisów tajnych. Najczęściej używanym i domyślnym typem jest Opaque, który przechowuje zdefiniowane przez użytkownika dowolne dane. Inne typowe typy to:

  • kubernetes.io/service-account-token: definiuje token konta usługi i jest tworzony automatycznie podczas tworzenia nowego konta usługi.
  • kubernetes.io/basic-auth: Poświadczenia na potrzeby uwierzytelniania podstawowego.
  • kubernetes.io/tls: dane klienta lub serwera TLS używane do obsługi połączeń HTTPS z poziomu zasobu ruchu przychodzącego, na przykład.

Napiwek

Aby uzyskać więcej informacji, zobacz oficjalną dokumentację dotyczącą wpisów tajnych platformy Kubernetes.

Tworzenie i używanie wpisu tajnego

Zgodnie z oficjalną dokumentacją usługi Kubernetes Secrets można użyć wpisu tajnego na trzy różne sposoby:

  • Instalowany jako pliki w woluminie w kontenerach w ramach zasobnika lub wdrożenia.
  • Przywoływany jako zmienna środowiskowa w specyfikacji zasobnika lub wdrożenia.
  • Używany przez składnik Kubelet przy ściąganiu obrazów z rejestrów prywatnych za pośrednictwem klucza imagePullSecret w specyfikacji zasobnika.

Wpisy tajne można tworzyć jak każdy inny zasób Kubernetes, używając pliku manifestu kubectl YAML lub polecenia. Specyfikacja wpisu tajnego jest następująca:

apiVersion: v1
kind: Secret
metadata:
  name: secret-name
  namespace: secret-namespace
type: Opaque
data:
  key_name: "key value in base64 format"

W przypadku wpisu tajnego z tą specyfikacją należy zakodować wartości przed utworzeniem wpisu tajnego. Jeśli chcesz utworzyć wpis tajny z wartością zwykłego tekstu i zezwolić usłudze Kubernetes na automatyczne kodowanie, użyj polecenia stringData zamiast data:

apiVersion: v1
kind: Secret
metadata:
  name: secret-name
  namespace: secret-namespace
type: Opaque
stringData:
  key_name: "key value in plain format"

Aplikacja odbiera zdekodowany ciąg wpisu tajnego jako przekazaną do niej wartość zamiast zakodowanej.

Aktualizacje wpisów tajnych

Wszystkie wpisy tajne instalowane jako woluminy wewnątrz zasobnika są automatycznie aktualizowane po zmianie ich wartości. Ta zmiana może nie wystąpić natychmiast z powodu konfiguracji narzędzia Kubelet, ale dzieje się to automatycznie, więc nie trzeba ponownie uruchamiać zasobnika.

W przypadkach, gdy wpisy tajne są powiązane ze zmiennymi środowiskowymi, nie są automatycznie aktualizowane, co powoduje konieczność ponownego uruchomienia zasobnika, aby zmiany zaczęły obowiązywać.

Sprawdź swoją wiedzę

1.

Dlaczego wpisy tajne Kubernetes są bezpieczniejsze niż wartości w postaci zwykłego tekstu?

2.

Jak można używać wpisów tajnych w aplikacji?

3.

Jak jest używany algorytm Base64 we wpisach tajnych?