Zbudowałeś Kubernetes? Teraz wypróbuj te 5 narzędzi RBAC do kontroli uprawnień
Opublikowany: 2022-03-14Kubernetes RBAC to wydajna metoda autoryzacji oparta na rolach służąca do zapewniania szczegółowego dostępu do zasobów w klastrze Kubernetes.
Jeśli jednak nie jest właściwie używany, może łatwo spowodować katastrofę zgodności. Dlatego potrzebujemy narzędzi RBAC do audytu i lokalizacji ryzykownych uprawnień w Kubernetes.
W tym artykule omówimy, czym jest Kubernetes RBAC, dlaczego ważne jest kontrolowanie ryzykownych uprawnień i odkrywanie narzędzi, które mogą nam najlepiej pomóc w kontrolowaniu ryzykownych uprawnień!
Co to jest RBAC?
Kontrola dostępu oparta na rolach (RBAC) to mechanizm zabezpieczeń, w którym każda autoryzacja dostępu jest oparta na rolach przypisanych do użytkownika. Dzięki temu systemowi możliwe jest zatem ograniczenie dostępu do zasobów klastra Kubernetes (przestrzeni nazw, podów, zadań) do aplikacji lub użytkowników.
W Kubernetes zasady RBAC mogą służyć do zarządzania prawami dostępu użytkownika systemu (użytkownika lub grupy), a także kont usług (konta usługi).
Istnieją inne sposoby autoryzacji użytkowników w Kubernetes, takie jak ABAC (kontrola dostępu oparta na atrybutach), poprzez Webhook lub autoryzację węzła, ale najczęściej używanym i natywnym mechanizmem autoryzacji dostępnym w stabilnej wersji jest RBAC.
Praktycznie cała interakcja z zasobami odbywa się za pośrednictwem jego serwera API, co oznacza, że ostatecznie wszystko ogranicza się do wysyłania żądań HTTP do tego serwera (niezbędny element węzła/węzłów nadrzędnych lub Panelu sterowania).
Kubernetes ma cztery obiekty związane z kontrolą RBAC, które można łączyć, aby ustawić uprawnienia dostępu do zasobów klastra. Są to Role, ClusterRole, RoleBinding i ClusterRoleBinding. Aby pracować z tymi obiektami, podobnie jak wszystkie obiekty Kubernetes, należy użyć interfejsu API Kubernetes.
Role w Kubernetes
W Kubernetes istnieją dwa typy ról: Role i ClusterRole. Największa różnica między nimi polega na tym, że rola należy do konkretnej przestrzeni nazw, podczas gdy rola ClusterRole jest globalna dla klastra. Tak więc w przypadku ClusterRole jego nazwa musi być unikatowa, ponieważ należy do klastra. W przypadku roli dwie różne przestrzenie nazw mogą mieć rolę o tej samej nazwie.
Inną różnicą, o której należy wspomnieć, jest to, że rola umożliwia dostęp do zasobów znajdujących się w tej samej przestrzeni nazw, podczas gdy ClusterRole, oprócz możliwości udzielania dostępu do zasobów w dowolnej przestrzeni nazw, może również zapewniać dostęp do zasobów w tej samej przestrzeni nazw, takich jak węzły pośród innych.
Teraz, gdy znamy rodzaje ról, następną rzeczą jest wiedzieć, komu możemy przypisać te role. W tym przypadku mamy Konta Użytkowników, Konta Usług i Grupy. Konta użytkowników to konta przypisane do konkretnego użytkownika, natomiast konta usług są wykorzystywane przez procesy. Na przykład wyobraźmy sobie, że nasza aplikacja musi programowo uzyskiwać dostęp do zasobów z klastra, do tego użyjemy konta usługi.
Na koniec potrzebujemy „kleju”, który wiąże rolę z kontem (użytkownikiem lub usługą) lub grupą. W Kubernetes dostępne są dwa zasoby: RoleBinding i ClusterRoleBinding. RoleBinding może odwoływać się do roli, która znajduje się w tej samej przestrzeni nazw, podczas gdy ClusterRoleBinding może odwoływać się do dowolnej roli w dowolnej przestrzeni nazw i globalnie przypisywać uprawnienia.
Przypominam, że uprawnienia zezwalają tylko na dostęp do zasobów, ponieważ „domyślnie wszystko jest zakazane” i można przypisać kilka ról temu samemu użytkownikowi
Jedynym warunkiem wstępnym korzystania z RBAC jest włączenie go w naszym klastrze przy użyciu opcji „ –authorization-mode=RBAC
”. Możemy to sprawdzić za pomocą polecenia:
kubectl api-versions
Czym są ryzykowne uprawnienia RBAC i jak je naprawić?
Wszelkie uprawnienia, które umożliwiają lub mogą zezwolić na nieautoryzowany dostęp do zasobów pod, są uważane za ryzykowne uprawnienia. Na przykład, jeśli użytkownik ma uprawnienia do edycji, może edytować własną rolę i uzyskiwać dostęp do zasobów, do których nie ma dostępu w inny sposób. Może to spowodować problem ze zgodnością. Podobnie, jeśli stare uprawnienia pozostaną niezaznaczone, niektórzy użytkownicy mogą uzyskać dostęp do zasobów, których już nie potrzebują.

Ręczne znalezienie tak ryzykownych uprawnień jest trudne i czasochłonne, gdy masz dużą liczbę ról. Aby przeprowadzić ten proces, istnieje wiele narzędzi audytu uprawnień RBAC, które pomagają przeskanować cały klaster w celu zlokalizowania ryzykownych uprawnień. Ważne jest również, aby zrozumieć, że skuteczność RBAC zależy od aktualnych zasad RBAC, które z kolei wymagają regularnej inspekcji uprawnień.
Poniżej przedstawiono niektóre z najlepszych narzędzi RBAC do kontroli uprawnień w oparciu o różne języki i interfejsy użytkownika.
KubiScan
KubiScan to oparte na Pythonie narzędzie RBAC do skanowania ryzykownych uprawnień w klastrze Kubernetes. Narzędzie musi zostać uruchomione w węźle głównym, a następnie można je uruchomić bezpośrednio z terminala, aby uzyskać listę ryzykownych uprawnień. Kubiscan może być używany do znajdowania ryzykownych ról, ról klastrów, powiązań ról, powiązań klastrów, tematów, podów, a nawet kontenerów.
Krane
Krane firmy Appvia to oparte na Ruby narzędzie do analizy statycznej i wizualizacji Kubernetes RBAC. Może być uruchamiany zarówno lokalnie jako CLI, jak i w potoku CI/CD. Co więcej, może również działać jako samodzielna usługa w kontenerze Kubernetes. Krane udostępnia funkcję analizowania uprawnień RBAC za pomocą widoków drzewa aspektowego i wykresów sieci. Daje również alerty o wszelkich ryzykownych uprawnieniach dzięki integracji ze Slack.

Narzędzie RBAC
Narzędzie RBAC firmy InsightCloudSec to samodzielne narzędzie do audytu uprawnień zbudowane w Go. Pozwala nie tylko na skanowanie i wyróżnianie ryzykownych uprawnień RBAC, ale także umożliwia generowanie zasad RBAC na podstawie audytu uprawnień za pomocą funkcji Auditgen. Narzędzie RBAC oferuje również funkcję wizualizacji RBAC.
Fairwinds
Fairwinds Insight to samodzielne narzędzie, które zapewnia szereg funkcji bezpieczeństwa i zgodności Kubernetes. Jego funkcja egzekwowania zasad umożliwia inspekcję uprawnień RBAC i skanowanie ich pod kątem standardowych i niestandardowych zasad. Fairwinds oferuje demo na żądanie.

Menedżer uprawnień
Permission Manager firmy Sighup to oparte na JavaScript narzędzie do zarządzania uprawnieniami Kubernetes. Oferuje łatwy i inicjatywny sposób zarządzania uprawnieniami użytkowników w klastrze Kubernetes. Permission Manager oferuje również wersję Enterprise narzędzia, która pozwala na wykonanie podstawowego audytu uprawnień RBAC.
Wniosek
Kubernetes RBAC to wydajny sposób zarządzania dostępem do zasobów w klastrze Kubernetes. Jeśli jednak nie zostanie prawidłowo zaimplementowana, może to prowadzić do problemów z bezpieczeństwem i zgodnością. Można tego jednak uniknąć, stale przeprowadzając audyt uprawnień za pomocą narzędzi audytowych RBAC.
Możesz być także zainteresowany sprawdzonymi metodami Kubernetes.