Czym jest RBAC w Kubernetes?¶
RBAC (Role-Based Access Control) to mechanizm w Kubernetes, który określa jakie są uprawnienia każdego użytkownika korzystającego z klastra.
Decyduje, który użytkownik/system może wykonać jakie operacje na jakich zasobach.
Dzięki RBAC można określać, że np. UserA może zrobić tylko wyświetlenie listy Podów, zaś inny np. Developer może tworzyć nowe Pody, Deploymenty, Service, itd.
RBAC odpowiada za autoryzację, kolejny etap po uwierzytelnieniu (sprawdzeniu kim jest użytkownik, próbujący wykonać jakieś czynności oraz czy API key jest poprawny).
Określa się co user może zrobić poprzez API Server Kubernetes.
Szablon manifestu RBAC¶
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: <user_name>
rules:
- apiGroups: [""]
resources: [""]
verbs: [""]
resourceNames: [""]
Przykładowa rola RBAC¶
Przykładowa definicja dostępu dla użytkownika developer do tworzenia nowych Podów, tylko i wyłącznie o nazwach blue lub orange (w definicji Poda metadata.name):
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: developer
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["create"]
resourceNames: ["blue", "orange"]
User developer nie będzie mógł nic po za tym zrobić, przykładowo wyświetlić listy Podów, Deploymentów.
Tylko może zrobić coś takiego: