Kubernetes Role-Based Access Control(RBAC)
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Rooi Span Ekspert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Rooi Span Ekspert (GRTE)
Kubernetes het 'n autorisatiemodule genaamd Rolgebaseerde Toegangsbeheer (RBAC) wat help om gebruiksregte aan die API-bediener toe te ken.
RBAC se toestemmingsmodel is gebou uit drie individuele dele:
Rol\ClusterRol – Die werklike toestemming. Dit bevat reëls wat 'n stel toestemmings verteenwoordig. Elke reël bevat hulpbronne en werkwoorde. Die werkwoord is die aksie wat op die hulpbron toegepas sal word.
Onderwerp (Gebruiker, Groep of Diensrekening) – Die objek wat die toestemmings sal ontvang.
Rolbinding\ClusterRolbinding – Die verbinding tussen Rol\ClusterRol en die onderwerp.
Die verskil tussen “Rolle” en “ClusterRolle” is net waar die rol toegepas sal word – 'n “Rol” sal toegang tot slegs een spesifieke naamruimte verleen, terwyl 'n “ClusterRol” in alle naamruimtes in die kluster gebruik kan word. Boonop kan ClusterRolle ook toegang verleen tot:
kluster-geskepte hulpbronne (soos knope).
nie-hulpbron eindpunte (soos /healthz).
naamruimte hulpbronne (soos Pods), oor alle naamruimtes.
Vanaf Kubernetes 1.6 en verder, is RBAC beleide standaard geaktiveer. Maar om RBAC te aktiveer kan jy iets soos gebruik:
In die sjabloon van 'n Rol of 'n ClusterRol moet jy die naam van die rol, die naamruimte (in rolle) en dan die apiGroups, hulpbronne en werkwoorde van die rol aandui:
Die apiGroups is 'n array wat die verskillende API naamruimtes bevat waartoe hierdie reël van toepassing is. Byvoorbeeld, 'n Pod-definisie gebruik apiVersion: v1. Dit kan waardes hê soos rbac.authorization.k8s.io of [*].
Die hulpbronne is 'n array wat definieer watter hulpbronne hierdie reël van toepassing is. Jy kan al die hulpbronne vind met: kubectl api-resources --namespaced=true
Die werkwoorde is 'n array wat die toegelate werkwoorde bevat. Die werkwoord in Kubernetes definieer die soort aksie wat jy op die hulpbron moet toepas. Byvoorbeeld, die lys werkwoord word teen versamelings gebruik terwyl "get" teen 'n enkele hulpbron gebruik word.
(Hierdie inligting is geneem van the docs)
POST
skep
GET, HEAD
kry (vir individuele hulpbronne), lys (vir versamelings, insluitend volle objekinhoud), kyk (vir die kyk na 'n individuele hulpbron of versameling hulpbronne)
PUT
opdateer
PATCH
patch
DELETE
verwyder (vir individuele hulpbronne), verwyderversameling (vir versamelings)
Kubernetes kontroleer soms magtiging vir addisionele toestemmings met behulp van gespesialiseerde werkwoorde. Byvoorbeeld:
use
werkwoord op podsecuritypolicies
hulpbronne in die policy
API-groep.
bind
en escalate
werkwoorde op roles
en clusterroles
hulpbronne in die rbac.authorization.k8s.io
API-groep.
impersonate
werkwoord op users
, groups
, en serviceaccounts
in die kern API-groep, en die userextras
in die authentication.k8s.io
API-groep.
Jy kan alle werkwoorde wat elke hulpbron ondersteun vind deur kubectl api-resources --sort-by name -o wide
uit te voer
Byvoorbeeld kan jy 'n ClusterRole gebruik om 'n spesifieke gebruiker toe te laat om te loop:
Uit die dokumentasie: 'n rolbinding gee die toestemmings wat in 'n rol gedefinieer is aan 'n gebruiker of stel gebruikers. Dit hou 'n lys van onderwerpe (gebruikers, groepe of diensrekeninge), en 'n verwysing na die rol wat toegeken word. 'n RoleBinding gee toestemmings binne 'n spesifieke namespace terwyl 'n ClusterRoleBinding daardie toegang kluster-wyd gee.
Toestemmings is additief so as jy 'n clusterRole het met “lys” en “verwyder” geheime kan jy dit byvoeg met 'n Role met “kry”. Wees dus bewus en toets altyd jou rolle en toestemmings en specifiseer wat toegelaat is, want alles is standaard VERWEERD.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)