Kubernetes Role-Based Access Control(RBAC)

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Udhibiti wa Upatikanaji kulingana na Majukumu (RBAC)

Kubernetes ina moduli ya idhini inayoitwa Udhibiti wa Upatikanaji kulingana na Majukumu (RBAC) ambayo husaidia kuweka ruhusa za matumizi kwa seva ya API.

Modeli ya ruhusa ya RBAC imejengwa kutoka kwa sehemu tatu tofauti:

  1. Jukumu/Jukumu la Kikundi – Ruhusa halisi. Ina mipangilio inayowakilisha seti ya ruhusa. Kila maelekezo yanajumuisha rasilimali na vitendo. Kitendo ni hatua itakayotekelezwa kwenye rasilimali.

  2. Mada (Mtumiaji, Kikundi au Akaunti ya Huduma) – Kitu ambacho kitapokea ruhusa.

  3. Kufunga Jukumu/Jukumu la Kikundi – Uhusiano kati ya Jukumu/Jukumu la Kikundi na mada.

Tofauti kati ya "Jukumu" na "Jukumu la Kikundi" ni mahali tu ambapo jukumu litatumika – "Jukumu" litatoa upatikanaji kwa eneo moja tu maalum, wakati "Jukumu la Kikundi" linaweza kutumika katika eneo zote kwenye kikundi. Zaidi ya hayo, Jukumu la Kikundi pia linaweza kutoa upatikanaji kwa:

  • rasilimali za kikundi (kama vile nodi).

  • vituo vya bila rasilimali (kama vile /healthz).

  • rasilimali za eneo (kama vile Pods), katika maeneo yote.

Kuanzia Kubernetes 1.6 na kuendelea, sera za RBAC zimekuwa zimeamilishwa kwa chaguo-msingi. Lakini ili kuwezesha RBAC unaweza kutumia kitu kama:

kube-apiserver --authorization-mode=Example,RBAC --other-options --more-options

Mifano

Katika kiolezo cha Role au ClusterRole utahitaji kuonyesha jina la jukumu, eneo (katika majukumu) na kisha apiGroups, rasilimali na maneno ya jukumu:

  • apiGroups ni safu inayojumuisha nafasi tofauti za API ambazo sheria hii inatumika. Kwa mfano, ufafanuzi wa Pod hutumia apiVersion: v1. Inaweza kuwa na thamani kama rbac.authorization.k8s.io au [*].

  • resources ni safu inayotaja rasilimali zipi sheria hii inatumika. Unaweza kupata rasilimali zote kwa: kubectl api-resources --namespaced=true

  • maneno ni safu inayojumuisha maneno yanayoruhusiwa. Kitenzi katika Kubernetes hufafanua aina ya hatua unayohitaji kutumia kwa rasilimali. Kwa mfano, kitenzi cha orodha hutumiwa dhidi ya makusanyo wakati "pata" hutumiwa dhidi ya rasilimali moja.

Maneno ya Sheria

(Maelezo haya yalichukuliwa kutoka nyaraka)

Kitenzi cha HTTPkitenzi cha ombi

POST

umba

GET, HEAD

pata (kwa rasilimali binafsi), orodha (kwa makusanyo, ikiwa ni pamoja na maudhui kamili ya kitu), angalia (kwa kufuatilia rasilimali binafsi au mkusanyiko wa rasilimali)

PUT

sasisha

PATCH

kipande

DELETE

futa (kwa rasilimali binafsi), futa mkusanyo (kwa makusanyo)

Kubernetes mara kwa mara huchunguza idhini kwa ruhusa za ziada kwa kutumia maneno maalum. Kwa mfano:

  • kitenzi cha tumia kwenye rasilimali za podsecuritypolicies katika kikundi cha API cha sera.

  • maneno ya unganisha na kukuza kwenye rasilimali za roles na clusterroles katika kikundi cha API cha rbac.authorization.k8s.io.

  • kitenzi cha jifanya kwenye watumiaji, makundi, na akaunti za huduma katika kikundi cha msingi cha API, na userextras katika kikundi cha API cha uthibitishaji.k8s.io.

Unaweza kupata maneno yote ambayo kila rasilimali inasaidia kwa kutekeleza kubectl api-resources --sort-by name -o wide

Mifano

Role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: defaultGreen
name: pod-and-pod-logs-reader
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list", "watch"]
Jukumu la Kikundi cha Kikluster
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
# "namespace" omitted since ClusterRoles are not namespaced
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]

Kwa mfano, unaweza kutumia ClusterRole kuruhusu mtumiaji fulani kuendesha:

kubectl get pods --all-namespaces

RoleBinding na ClusterRoleBinding

Kutoka kwa nyaraka: RoleBinding inatoa ruhusa zilizoelezwa katika jukumu kwa mtumiaji au kikundi cha watumiaji. Inashikilia orodha ya wahusika (watumiaji, vikundi, au akaunti za huduma), na kumbukumbu ya jukumu linalopewa. RoleBinding inatoa ruhusa ndani ya namespace maalum wakati ClusterRoleBinding inatoa ufikiaji huo kwa kiwango cha kikundi.

piVersion: rbac.authorization.k8s.io/v1
# This role binding allows "jane" to read pods in the "default" namespace.
# You need to already have a Role named "pod-reader" in that namespace.
kind: RoleBinding
metadata:
name: read-pods
namespace: default
subjects:
# You can specify more than one "subject"
- kind: User
name: jane # "name" is case sensitive
apiGroup: rbac.authorization.k8s.io
roleRef:
# "roleRef" specifies the binding to a Role / ClusterRole
kind: Role #this must be Role or ClusterRole
name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
apiGroup: rbac.authorization.k8s.io
ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
# This cluster role binding allows anyone in the "manager" group to read secrets in any namespace.
kind: ClusterRoleBinding
metadata:
name: read-secrets-global
subjects:
- kind: Group
name: manager # Name is case sensitive
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io

Ruhusa zinaongezeka kwa hivyo ikiwa una jukumu la kikundi na "orodha" na "futa" siri unaweza kuiongeza na Jukumu na "pata". Kwa hivyo kuwa mwangalifu na jaribu mara kwa mara majukumu na ruhusa zako na taja ni NINI KURUHUSIWA, kwa sababu kila kitu ni KUKATALIWA kwa chaguo-msingi.

Kutambua RBAC

# Get current privileges
kubectl auth can-i --list
# use `--as=system:serviceaccount:<namespace>:<sa_name>` to impersonate a service account

# List Cluster Roles
kubectl get clusterroles
kubectl describe clusterroles

# List Cluster Roles Bindings
kubectl get clusterrolebindings
kubectl describe clusterrolebindings

# List Roles
kubectl get roles
kubectl describe roles

# List Roles Bindings
kubectl get rolebindings
kubectl describe rolebindings

Matumizi ya Majukumu/ Majukumu ya Kikundi kwa Ajili ya Kuongeza Mamlaka

pageAbusing Roles/ClusterRoles in Kubernetes
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated