هڪ مختصر سبق جنهن تي توهان ڪبرنيٽس کي پنهنجي LDAP سرور سان ڳنڍڻ ۽ صارفين ۽ گروپن جي درآمد کي ترتيب ڏيڻ لاءِ Keycloak ڪيئن استعمال ڪري سگهو ٿا. اهو توهان کي توهان جي استعمال ڪندڙن لاءِ RBAC ترتيب ڏيڻ جي اجازت ڏيندو ۽ Kubernetes ڊيش بورڊ ۽ ٻين ايپليڪيشنن کي بچائڻ لاءِ auth-proxy استعمال ڪريو جيڪي پاڻ کي تصديق نٿا ڪري سگهن.
Keycloak لڳائڻ
اچو ته فرض ڪريو ته توهان وٽ اڳ ۾ ئي هڪ LDAP سرور آهي. اهو ٿي سگهي ٿو Active Directory، FreeIPA، OpenLDAP يا ٻيو ڪجهه. جيڪڏهن توهان وٽ LDAP سرور نه آهي، ته پوءِ اصولي طور تي توهان صارف ٺاهي سگهو ٿا سڌو Keycloak انٽرفيس ۾، يا استعمال ڪري سگهو ٿا عوامي oidc فراهم ڪندڙ (Google، Github، Gitlab)، نتيجو لڳ ڀڳ ساڳيو هوندو.
سڀ کان پهرين، اچو ته Keycloak پاڻ انسٽال ڪريون. انسٽاليشن الڳ الڳ يا سڌي طرح ڪبرنيٽس ڪلسٽر ۾ ڪري سگهجي ٿي. ضابطي جي طور تي، جيڪڏهن توهان وٽ ڪيترائي ڪبرنيٽس ڪلسٽر آهن، ته ان کي الڳ الڳ انسٽال ڪرڻ آسان ٿيندو. ٻئي طرف توهان هميشه استعمال ڪري سگهو ٿا
Keycloak ڊيٽا کي ذخيرو ڪرڻ لاء توهان کي ڊيٽابيس جي ضرورت پوندي. ڊفالٽ آهي h2
(سڀ ڊيٽا مقامي طور تي ذخيرو ٿيل آهي)، پر اهو پڻ استعمال ڪرڻ ممڪن آهي postgres
, mysql
يا mariadb
.
جيڪڏهن توهان اڃا به الڳ الڳ Keycloak انسٽال ڪرڻ جو فيصلو ڪيو ٿا، توهان کي وڌيڪ تفصيلي هدايتون ملنديون
وفاق جي جوڙجڪ
سڀ کان پهرين، اچو ته هڪ نئون دائرو ٺاهي. Realm اسان جي اپليڪيشن جي جاء آهي. هر ائپليڪيشن کي مختلف استعمال ڪندڙن ۽ اختيار جي سيٽنگن سان گڏ پنهنجو دائرو حاصل ڪري سگھي ٿو. ماسٽر جي دائري کي Keycloak پاران استعمال ڪيو ويو آهي ۽ ان کي ڪنهن ٻئي لاء استعمال ڪرڻ غلط آهي.
پڪو علائقو شامل ڪريو
اختيار
قدر
نالو
kubernetes
نالي جو نالو
Kubernetes
HTML ڊسپلي جو نالو
<img src="https://kubernetes.io/images/nav_logo.svg" width="400" >
Kubernetes ڊفالٽ طور چيڪ ڪري ٿو ته صارف جي اي ميل جي تصديق ٿيل آهي يا نه. جيئن ته اسان پنهنجو LDAP سرور استعمال ڪندا آهيون، اهو چيڪ لڳ ڀڳ هميشه واپس ايندو false
. اچو ته Kubernetes ۾ هن اختيار جي نمائندگي کي بند ڪريون:
ڪلائنٽ اسڪوپس -> اي ميل -> نقشا -> اي ميل تصديق ٿيل (حذف)
هاڻي اچو ته وفاق قائم ڪريون؛ هن کي ڪرڻ لاءِ، وڃو:
استعمال ڪندڙ فيڊريشن -> مهيا ڪندڙ شامل ڪريو... -> ايل ڊي پي
هتي FreeIPA لاء سيٽنگون جو هڪ مثال آهي:
اختيار
قدر
ڪنسول ڊسپلي جو نالو
freeipa.example.org
ووٽر
Red Hat Directory Server
UUID LDAP وصف
ipauniqueid
ڪنيڪشن URL
ldaps://freeipa.example.org
استعمال ڪندڙ DN
cn=users,cn=accounts,dc=example,dc=org
بينڊ ڊي اين
uid=keycloak-svc,cn=users,cn=accounts,dc=example,dc=org
بانڊ سند
<password>
Kerberos جي تصديق جي اجازت ڏيو:
on
ڪربروس جو علائقو:
EXAMPLE.ORG
سرور پرنسپل:
HTTP/[email protected]
ڪي ٽيب:
/etc/krb5.keytab
استعمال ڪندڙ keycloak-svc
اسان جي LDAP سرور تي اڳ ۾ پيدا ٿيڻ جي ضرورت آهي.
فعال ڊاريڪٽري جي صورت ۾، توهان کي صرف چونڊڻ جي ضرورت آهي وڪرو ڪندڙ: فعال ڊاريڪٽري ۽ ضروري سيٽنگون پاڻمرادو فارم ۾ داخل ٿينديون.
پڪو سانڍيو
هاڻي اچو ته اڳتي وڌون:
استعمال ڪندڙ فيڊريشن -> freeipa.example.org -> نقشا -> پهريون نالو
اختيار
قدر
Ldap خاصيت
givenName
هاڻي اچو ته گروپ ميپنگ کي فعال ڪريون:
استعمال ڪندڙ فيڊريشن -> freeipa.example.org -> نقشا -> ٺاهيو
اختيار
قدر
نالو
groups
ماپ جو قسم
group-ldap-mapper
LDAP گروپ DN
cn=groups,cn=accounts,dc=example,dc=org
يوزر گروپ واپس وٺڻ واري حڪمت عملي
GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE
هاڻي ته فيڊريشن سيٽ اپ مڪمل ٿي چڪو آهي، اچو ته ڪلائنٽ کي ترتيب ڏيڻ ڏانهن وڃو.
ڪسٽمر سيٽ اپ
اچو ته هڪ نئون ڪلائنٽ ٺاهيو (هڪ ايپليڪيشن جيڪا صارفين کي Keycloak کان وصول ڪندي). اچو ته اڳتي وڌون:
خريدار -> ٺاهيو
اختيار
قدر
ڪسٽمر ID
kubernetes
رسائي جو قسم
confidenrial
روٽ يو آر ايل
http://kubernetes.example.org/
صحيح ريڊائريڪٽ URIs
http://kubernetes.example.org/*
منتظم URL
http://kubernetes.example.org/
اچو ته گروپن لاءِ گنجائش پڻ ٺاھيون:
ڪلائنٽ اسڪوپس -> ٺاهيو
اختيار
قدر
سانچي
No template
نالو
groups
مڪمل گروپ رستو
false
۽ انھن لاء ھڪڙو نقشو ٺاھيو:
ڪلائنٽ اسڪوپس -> گروهن -> نقشا -> ٺاهيو
اختيار
قدر
نالو
groups
ميپر جو قسم
Group membership
ٽوڪن دعوي جو نالو
groups
هاڻي اسان کي اسان جي ڪلائنٽ جي دائري ۾ ميپنگ گروپ کي فعال ڪرڻ جي ضرورت آهي:
خريدار -> ڪبرنيٽ -> ڪلائنٽ اسڪوپس -> ڊفالٽ ڪلائنٽ اسڪوپس
چونڊيو گروهن в دستياب ڪلائنٽ اسڪوپس، دٻايو منتخب ٿيل شامل ڪريو
ھاڻي اچو ته اسان جي ايپليڪيشن جي تصديق کي ترتيب ڏيو، ڏانھن وڃو:
خريدار -> ڪبرنيٽ
اختيار
قدر
اجازت ڏيڻ چالو ڪيو ويو
ON
اچو ته پريس ڪريو محفوظ ۽ انهي سان گڏ ڪلائنٽ سيٽ اپ مڪمل ٿي چڪو آهي، هاڻي ٽيب تي
خريدار -> ڪبرنيٽ -> معتبر
توهان حاصل ڪري سگهو ٿا خفيه جنهن کي اسان اڳتي استعمال ڪنداسين.
Kubernetes ترتيب ڏيڻ
او آءِ ڊي سي جي اجازت لاءِ ڪبرنيٽس کي ترتيب ڏيڻ انتهائي معمولي ۽ تمام پيچيده نه آهي. توهان کي صرف ڪرڻ جي ضرورت آهي توهان جي OIDC سرور جو CA سرٽيفڪيٽ داخل ڪريو /etc/kubernetes/pki/oidc-ca.pem
۽ kube-apiserver لاءِ ضروري آپشن شامل ڪريو.
هن کي ڪرڻ لاء، تازه ڪاري /etc/kubernetes/manifests/kube-apiserver.yaml
توهان جي سڀني ماسٽرن تي:
...
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
...
انهي سان گڏ، ڪلستر ۾ kubeadm config کي اپڊيٽ ڪريو جيئن تازه ڪاري ڪرڻ دوران اهي سيٽنگون وڃائڻ نه ڏيو:
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
...
اهو مڪمل ڪري ٿو Kubernetes سيٽ اپ. توھان انھن قدمن کي ورجائي سگھوٿا توھان جي سڀني ڪبرنيٽس ڪلسٽرن ۾.
ابتدائي اختيار
انهن قدمن کان پوءِ، توهان وٽ اڳ ۾ ئي ڪوبرنيٽس ڪلستر هوندو جنهن سان ترتيب ڏنل OIDC اختيار آهي. صرف هڪ شيء اها آهي ته توهان جي صارفين اڃا تائين هڪ ترتيب ڏنل ڪلائنٽ يا انهن جي پنهنجي kubeconfig نه آهي. هن مسئلي کي حل ڪرڻ لاء، توهان کي ڪامياب اختيار کان پوء صارفين کي kubeconfig جي خودڪار ورڇ کي ترتيب ڏيڻ جي ضرورت آهي.
هن کي ڪرڻ لاء، توهان خاص ويب ايپليڪيشنون استعمال ڪري سگهو ٿا جيڪي توهان کي صارف جي تصديق ڪرڻ جي اجازت ڏين ٿا ۽ پوء تيار ڪيل kubeconfig ڊائون لوڊ ڪريو. سڀ کان وڌيڪ آسان مان هڪ آهي
Kuberos کي ترتيب ڏيڻ لاء، صرف kubeconfig لاء ٽيمپليٽ بيان ڪريو ۽ ان کي ھيٺين پيراگرافن سان هلائڻ:
kuberos https://keycloak.example.org/auth/realms/kubernetes kubernetes /cfg/secret /cfg/template
وڌيڪ تفصيلي ڄاڻ لاءِ ڏسو
اهو پڻ استعمال ڪرڻ ممڪن آهي
نتيجو kubeconfig ويب سائيٽ تي چيڪ ڪري سگهجي ٿو users[].user.auth-provider.config.id-token
توهان جي kubeconfig کان فارم ڏانهن ويب سائيٽ تي ۽ فوري طور تي هڪ ٽرانسڪرپٽ حاصل ڪريو.
RBAC ترتيب ڏيڻ
RBAC ترتيب ڏيڻ وقت، توھان ٻئي استعمال ڪندڙ نالو (فيلڊ name
jwt ٽوڪن ۾، ۽ في صارف گروپ (فيلڊ groups
jwt ٽوڪن ۾). هتي هڪ گروپ جي حقن کي قائم ڪرڻ جو هڪ مثال آهي 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
RBAC لاءِ وڌيڪ مثال ملي سگھن ٿا
تصنيف پراڪسي ترتيب ڏيڻ
هڪ شاندار منصوبو آهي
dashboard-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
جو ذريعو: www.habr.com