اسان LDAP اختيار کي Kubernetes کي تيز ڪريون ٿا

اسان LDAP اختيار کي Kubernetes کي تيز ڪريون ٿا

هڪ مختصر سبق جنهن تي توهان ڪبرنيٽس کي پنهنجي 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

وڌيڪ تفصيلي ڄاڻ لاءِ ڏسو استعمال Github تي.

اهو پڻ استعمال ڪرڻ ممڪن آهي ڪوبيلو ان جيڪڏھن توھان چاھيو ٿا ته سڌو سنئون صارف جي ڪمپيوٽر تي. انهي صورت ۾، صارف مقامي هوسٽ تي اختيار جي فارم سان هڪ برائوزر کوليندو.

نتيجو kubeconfig ويب سائيٽ تي چيڪ ڪري سگهجي ٿو jwt.io. بس قدر نقل ڪريو 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 لاءِ وڌيڪ مثال ملي سگھن ٿا سرڪاري Kubernetes دستاويز

تصنيف پراڪسي ترتيب ڏيڻ

هڪ شاندار منصوبو آهي دربان- دربان, جيڪو توهان کي اجازت ڏئي ٿو ڪنهن به ايپليڪيشن کي تحفظ فراهم ڪندي صارف کي OIDC سرور جي تصديق ڪرڻ جي صلاحيت سان. مان توهان کي ڏيکاريندس ته ڪبرنيٽس ڊيش بورڊ استعمال ڪندي ان کي ڪيئن ترتيب ڏيو مثال طور:

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

تبصرو شامل ڪريو