Oideachadh beag air mar a chleachdas tu Keycloak gus Kubernetes a cheangal ris an t-seirbheisiche LDAP agad agus cuir a-steach luchd-cleachdaidh agus buidhnean. Leigidh seo leat RBAC a stèidheachadh airson do luchd-cleachdaidh agus auth-proxy a chleachdadh gus deas-bhòrd Kubernetes agus tagraidhean eile nach eil eòlach air iad fhèin a cheadachadh a dhìon.
Stàladh Keycloak
Gabhamaid ris gu bheil frithealaiche LDAP agad mu thràth. Dh’ fhaodadh e a bhith mar Active Directory, FreeIPA, OpenLDAP no ge bith dè. Mura h-eil frithealaiche LDAP agad, an uairsin ann am prionnsapal faodaidh tu luchd-cleachdaidh a chruthachadh gu dìreach anns an eadar-aghaidh Keycloak, no solaraichean oidc poblach a chleachdadh (Google, Github, Gitlab), bidh an toradh cha mhòr an aon rud.
An toiseach, leig leinn Keycloak fhèin a chuir a-steach, faodar an stàladh a dhèanamh air leth, no gu dìreach gu buidheann Kubernetes, mar riaghailt, ma tha grunn chlàran Kubernetes agad, bhiodh e na b’ fhasa a stàladh air leth. Air an làimh eile, faodaidh tu an-còmhnaidh a chleachdadh
Gus dàta Keycloak a stòradh, bidh feum agad air stòr-dàta. Tha am bun-bheachd h2
(tha a h-uile dàta air a stòradh gu h-ionadail), ach tha e comasach cuideachd a chleachdadh postgres
, mysql
no mariadb
.
Ma cho-dhùnas tu fhathast Keycloak a chuir a-steach air leth, gheibh thu stiùireadh nas mionaidiche ann
Suidheachadh Caidreachas
An toiseach, cruthaichidh sinn rìoghachd ùr. Is e rìoghachd àite an tagraidh againn. Faodaidh a rìoghachd fhèin a bhith aig gach tagradh le diofar luchd-cleachdaidh agus suidheachaidhean ceadachaidh. Tha am prìomh rìoghachd air a chleachdadh le Keycloak fhèin agus tha e ga chleachdadh airson rud sam bith eile ceàrr.
Brùth Cuir ris an rìoghachd
roghainn
luach
Ainm
kubernetes
Ainm-taisbeanaidh
Kubernetes
Ainm taisbeanaidh HTML
<img src="https://kubernetes.io/images/nav_logo.svg" width="400" >
Bidh Kubernetes gu bunaiteach a’ sgrùdadh a bheil post-d an neach-cleachdaidh air a dhearbhadh no nach eil. Leis gu bheil sinn a’ cleachdadh ar frithealaiche LDAP fhèin, cha mhòr nach till an t-seic seo air ais false
. Nach cuir sinn à comas riochdachadh an t-suidheachaidh seo ann an Kubernetes:
Sgòthan teachdaiche -> Seòladh post-dealain -> Mappers -> post-d air a dhearbhadh (Sguab às)
A-nis leig dhuinn an caidreachas a stèidheachadh, airson seo thèid sinn gu:
Caidreachas luchd-cleachdaidh -> Cuir solaraiche ris… -> ldap
Seo eisimpleir de shuidheachadh airson FreeIPA:
roghainn
luach
Ainm taisbeanaidh consola
freeipa.example.org
Reiceadair
Red Hat Directory Server
Feart UUID LDAP
ipauniqueid
URL ceangail
ldaps://freeipa.example.org
Cleachdaiche DN
cn=users,cn=accounts,dc=example,dc=org
Ceangail DN
uid=keycloak-svc,cn=users,cn=accounts,dc=example,dc=org
Ceangal Creideas
<password>
Leig le dearbhadh Kerberos:
on
Rìoghachd Kerberos:
EXAMPLE.ORG
Prionnsapal an fhrithealaiche:
HTTP/[email protected]
tab iuchrach:
/etc/krb5.keytab
Cleachdaiche keycloak-svc
feumar a chruthachadh ro làimh air an t-seirbheisiche LDAP againn.
Ann an cùis Active Directory, dìreach tagh Neach-reic: Active Directory agus thèid na roghainnean riatanach a chuir a-steach don fhoirm gu fèin-ghluasadach.
Brùth Save
A-nis gluaisidh sinn air adhart:
Caidreachas luchd-cleachdaidh -> freeipa.example.org -> Mappers -> A’ chiad ainm
roghainn
luach
Feartan ldap
givenName
A-nis cuir an comas mapadh buidhne:
Caidreachas luchd-cleachdaidh -> freeipa.example.org -> Mappers -> Cruthaich
roghainn
luach
Ainm
groups
Seòrsa mapper
group-ldap-mapper
Buidhnean LDAP DN
cn=groups,cn=accounts,dc=example,dc=org
Ro-innleachd airson buidheann luchd-cleachdaidh a luchdadh a-nuas
GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE
Cuiridh seo crìoch air suidheachadh a’ chaidreachais, gluaisidh sinn air adhart gu bhith a’ stèidheachadh an neach-dèiligidh.
Suidheachadh cliant
Cruthaichidh sinn teachdaiche ùr (iarrtas a gheibh luchd-cleachdaidh bho Keycloak). Tiugainn:
Luchd-dèiligidh -> Cruthaich
roghainn
luach
Client a 'Chlàir
kubernetes
Seòrsa ruigsinneachd
confidenrial
URL root
http://kubernetes.example.org/
URIs Redirect dligheach
http://kubernetes.example.org/*
URL rianachd
http://kubernetes.example.org/
Cruthaichidh sinn cuideachd cothrom airson buidhnean:
Sgòthan teachdaiche -> Cruthaich
roghainn
luach
teamplaid
No template
Ainm
groups
Slighe buidheann slàn
false
Agus suidhich mapper dhaibh:
Sgòthan teachdaiche -> buidhnean -> Mappers -> Cruthaich
roghainn
luach
Ainm
groups
Seòrsa Mapper
Group membership
Ainm Tagraidh Token
groups
A-nis feumaidh sinn mapadh buidhne a chomasachadh anns an raon teachdaiche againn:
Luchd-dèiligidh -> cubairnean -> Sgòthan teachdaiche -> Sgòthan teachdaiche bunaiteach
Tagh buidhnean в Sgòthan teachdaiche rim faighinncliog Cuir ris a chaidh a thaghadh
A-nis leig leinn dearbhadh an tagraidh againn a stèidheachadh, rachaibh gu:
Luchd-dèiligidh -> cubairnean
roghainn
luach
Ceadachadh air a chomasachadh
ON
Leig leinn putadh sàbhail agus cuiridh seo crìoch air suidheachadh an neach-dèiligidh, a-nis air an taba
Luchd-dèiligidh -> cubairnean -> teisteasan
gheibh thu dìomhair a chleachdas sinn nas fhaide air adhart.
A 'rèiteachadh Kubernetes
Tha stèidheachadh Kubernetes airson cead OIDC gu math beag agus chan e rudeigin gu math toinnte. Chan eil agad ach a chuir a-steach teisteanas CA an t-seirbheisiche OIDC agad /etc/kubernetes/pki/oidc-ca.pem
agus cuir ris na roghainnean riatanach airson kube-apiserver.
Gus seo a dhèanamh, ùraich /etc/kubernetes/manifests/kube-apiserver.yaml
air bhur maighstiribh uile :
...
spec:
containers:
- command:
- kube-apiserver
...
- --oidc-ca-file=/etc/kubernetes/pki/oidc-ca.pem
- --oidc-client-id=kubernetes
- --oidc-groups-claim=groups
- --oidc-issuer-url=https://keycloak.example.org/auth/realms/kubernetes
- --oidc-username-claim=email
...
Agus cuideachd ùraich an rèiteachadh kubeadm sa bhuidheann gus nach caill thu na roghainnean sin rè an ùrachaidh:
kubectl edit -n kube-system configmaps kubeadm-config
...
data:
ClusterConfiguration: |
apiServer:
extraArgs:
oidc-ca-file: /etc/kubernetes/pki/oidc-ca.pem
oidc-client-id: kubernetes
oidc-groups-claim: groups
oidc-issuer-url: https://keycloak.example.org/auth/realms/kubernetes
oidc-username-claim: email
...
Bidh seo a’ crìochnachadh suidheachadh Kubernetes. Faodaidh tu na ceumannan seo ath-aithris thairis air na cruinneachaidhean Kubernetes agad gu lèir.
Ùghdarrachadh Tòiseachaidh
Às deidh na ceumannan seo, bidh cruinneachadh Kubernetes agad mu thràth le cead OIDC air a rèiteachadh. Is e an aon phuing nach eil teachdaiche aig an luchd-cleachdaidh agad fhathast, a bharrachd air an kubeconfig aca fhèin. Gus an duilgheadas seo fhuasgladh, feumaidh tu cuir a-mach fèin-ghluasadach kubeconfig a rèiteachadh do luchd-cleachdaidh às deidh cead soirbheachail.
Gus seo a dhèanamh, faodaidh tu tagraidhean lìn sònraichte a chleachdadh a leigeas leat an neach-cleachdaidh a dhearbhadh agus an uairsin an kubeconfig crìochnaichte a luchdachadh sìos. Is e aon den fheadhainn as freagarraiche
Gus Kuberos a rèiteachadh, tha e gu leòr cunntas a thoirt air an teamplaid airson kubeconfig agus a ruith leis na paramadairean a leanas:
kuberos https://keycloak.example.org/auth/realms/kubernetes kubernetes /cfg/secret /cfg/template
Airson tuilleadh fiosrachaidh faic
Tha e comasach cuideachd a chleachdadh
Faodar an kubeconfig a thig às a sgrùdadh air an làrach users[].user.auth-provider.config.id-token
bhon kubeconfig agad gu foirm air an làrach agus faigh an tar-sgrìobhadh sa bhad.
Suidheachadh RBAC
Nuair a bhios tu a’ rèiteachadh RBAC, faodaidh tu iomradh a thoirt air an dà chuid an t-ainm-cleachdaidh (raon name
anns an tòcan jwt) agus airson buidheann de luchd-cleachdaidh (raon groups
ann an jwt token). Seo eisimpleir de shuidheachadh ceadan airson buidheann kubernetes-default-namespace-admins
:
kubernetes-default-namespace-admins.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: default-admins
namespace: default
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kubernetes-default-namespace-admins
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: default-admins
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: kubernetes-default-namespace-admins
Gheibhear barrachd eisimpleirean airson RBAC ann an
A' suidheachadh ùghdar-proxy
Tha pròiseact mìorbhaileach ann
deas-bhòrd-proxy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubernetes-dashboard-proxy
spec:
replicas: 1
template:
metadata:
labels:
app: kubernetes-dashboard-proxy
spec:
containers:
- args:
- --listen=0.0.0.0:80
- --discovery-url=https://keycloak.example.org/auth/realms/kubernetes
- --client-id=kubernetes
- --client-secret=<your-client-secret-here>
- --redirection-url=https://kubernetes-dashboard.example.org
- --enable-refresh-tokens=true
- --encryption-key=ooTh6Chei1eefooyovai5ohwienuquoh
- --upstream-url=https://kubernetes-dashboard.kube-system
- --resources=uri=/*
image: keycloak/keycloak-gatekeeper
name: kubernetes-dashboard-proxy
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /oauth/health
port: 80
initialDelaySeconds: 3
timeoutSeconds: 2
readinessProbe:
httpGet:
path: /oauth/health
port: 80
initialDelaySeconds: 3
timeoutSeconds: 2
---
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard-proxy
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: kubernetes-dashboard-proxy
type: ClusterIP
Source: www.habr.com