ہم LDAP کی اجازت کوبرنیٹس کو باندھ دیتے ہیں۔

ہم LDAP کی اجازت کوبرنیٹس کو باندھ دیتے ہیں۔

ایک مختصر ٹیوٹوریل کہ کس طرح آپ Keycloak کا استعمال اپنے LDAP سرور سے Kubernetes کو جوڑنے اور صارفین اور گروپوں کی درآمد کو ترتیب دینے کے لیے کر سکتے ہیں۔ یہ آپ کو اپنے صارفین کے لیے RBAC کو کنفیگر کرنے اور Kubernetes ڈیش بورڈ اور دیگر ایپلیکیشنز کی حفاظت کے لیے auth-proxy استعمال کرنے کی اجازت دے گا جو خود تصدیق نہیں کر سکتے۔

کی کلوک کی تنصیب

آئیے فرض کریں کہ آپ کے پاس پہلے سے ہی LDAP سرور موجود ہے۔ یہ ایکٹو ڈائریکٹری، فری آئی پی اے، اوپن ایل ڈی اے پی یا کوئی اور چیز ہوسکتی ہے۔ اگر آپ کے پاس LDAP سرور نہیں ہے، تو اصولی طور پر آپ Keycloak انٹرفیس میں براہ راست صارفین بنا سکتے ہیں، یا عوامی oidc فراہم کنندگان (Google, Github, Gitlab) کا استعمال کر سکتے ہیں، نتیجہ تقریباً ایک جیسا ہوگا۔

سب سے پہلے، آئیے Keycloak خود انسٹال کرتے ہیں۔ انسٹالیشن الگ سے یا براہ راست کسی Kubernetes کلسٹر میں کی جا سکتی ہے۔ ایک اصول کے طور پر، اگر آپ کے پاس کئی Kubernetes کلسٹرز ہیں، تو اسے الگ سے انسٹال کرنا آسان ہوگا۔ دوسری طرف آپ ہمیشہ استعمال کر سکتے ہیں۔ سرکاری ہیلم چارٹ اور اسے براہ راست اپنے کلسٹر میں انسٹال کریں۔

Keycloak ڈیٹا کو ذخیرہ کرنے کے لیے آپ کو ایک ڈیٹا بیس کی ضرورت ہوگی۔ پہلے سے طے شدہ ہے۔ h2 (تمام ڈیٹا مقامی طور پر ذخیرہ کیا جاتا ہے)، لیکن اسے استعمال کرنا بھی ممکن ہے۔ postgres, mysql یا mariadb.
اگر آپ اب بھی Keycloak کو الگ سے انسٹال کرنے کا فیصلہ کرتے ہیں، تو آپ کو مزید تفصیلی ہدایات ملیں گی۔ سرکاری دستاویزات.

فیڈریشن سیٹ اپ

سب سے پہلے، آئیے ایک نیا دائرہ بنائیں۔ دائرہ ہماری درخواست کی جگہ ہے۔ ہر ایپلیکیشن کا اپنا دائرہ مختلف صارفین اور اجازت کی ترتیبات کے ساتھ ہوسکتا ہے۔ ماسٹر دائرے کو 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

صارفین ڈی این
cn=users,cn=accounts,dc=example,dc=org

DN باندھو۔
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 سے وصول کرے گی)۔ آئیے آگے بڑھتے ہیں:

کلائنٹ -> تخلیق کریں

اختیار
قدر

کلائنٹ کی شناخت
kubernetes

رسائی کی قسم
confidenrial

روٹ یو آر ایل
http://kubernetes.example.org/

درست ری ڈائریکٹ URIs
http://kubernetes.example.org/*

ایڈمن یو آر ایل
http://kubernetes.example.org/

آئیے گروپس کے لیے ایک گنجائش بھی بنائیں:

کلائنٹ کے دائرہ کار -> تخلیق کریں

اختیار
قدر

سانچہ
No template

نام
groups

مکمل گروپ کا راستہ
false

اور ان کے لیے میپر مرتب کریں:

کلائنٹ کے دائرہ کار -> گروہوں -> میپرز -> تخلیق کریں

اختیار
قدر

نام
groups

میپر کی قسم
Group membership

ٹوکن کلیم کا نام
groups

اب ہمیں اپنے کلائنٹ کے دائرہ کار میں میپنگ گروپ کو فعال کرنے کی ضرورت ہے:

کلائنٹ -> کبرنیٹس -> کلائنٹ کے دائرہ کار -> ڈیفالٹ کلائنٹ کے دائرہ کار

منتخب کریں گروہوں в دستیاب کلائنٹ کے دائرہ کار، دبائیں منتخب شامل کریں۔

اب آئیے اپنی درخواست کی توثیق کو ترتیب دیں، یہاں جائیں:

کلائنٹ -> کبرنیٹس

اختیار
قدر

اجازت نامہ فعال ہے۔
ON

چلو دبائیں بچانے اور اس کے ساتھ کلائنٹ سیٹ اپ مکمل ہو گیا، اب ٹیب پر

کلائنٹ -> کبرنیٹس -> اسناد

آپ حاصل کر سکتے ہیں خفیہ جسے ہم مزید استعمال کریں گے۔

Kubernetes کو ترتیب دینا

OIDC کی اجازت کے لیے 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 سیٹ اپ کو مکمل کرتا ہے۔ آپ ان اقدامات کو اپنے تمام Kubernetes کلسٹرز میں دہرا سکتے ہیں۔

ابتدائی اجازت

ان اقدامات کے بعد، آپ کے پاس پہلے سے ہی ایک Kubernetes کلسٹر ہوگا جس میں ترتیب شدہ OIDC کی اجازت ہوگی۔ صرف ایک چیز یہ ہے کہ آپ کے صارفین کے پاس ابھی تک کنفیگر شدہ کلائنٹ یا ان کی اپنی kubeconfig نہیں ہے۔ اس مسئلے کو حل کرنے کے لیے، آپ کو کامیاب اجازت کے بعد صارفین کو kubeconfig کی خودکار تقسیم کو ترتیب دینے کی ضرورت ہے۔

ایسا کرنے کے لیے، آپ خصوصی ویب ایپلی کیشنز استعمال کر سکتے ہیں جو آپ کو صارف کی تصدیق کرنے اور پھر ریڈی میڈ kubeconfig ڈاؤن لوڈ کرنے کی اجازت دیتی ہیں۔ سب سے زیادہ آسان میں سے ایک ہے کوبیروس، یہ آپ کو تمام Kubernetes کلسٹرز کو ایک ترتیب میں بیان کرنے اور ان کے درمیان آسانی سے سوئچ کرنے کی اجازت دیتا ہے۔

Kuberos کو ترتیب دینے کے لیے، صرف kubeconfig کے لیے ٹیمپلیٹ کی وضاحت کریں اور اسے درج ذیل پیرامیٹرز کے ساتھ چلائیں۔

kuberos https://keycloak.example.org/auth/realms/kubernetes kubernetes /cfg/secret /cfg/template

مزید تفصیلی معلومات کے لیے دیکھیں استعمال گیتھب پر۔

اس کا استعمال بھی ممکن ہے۔ kubelogin اگر آپ صارف کے کمپیوٹر پر براہ راست اجازت دینا چاہتے ہیں۔ اس صورت میں، صارف لوکل ہوسٹ پر اجازت فارم کے ساتھ ایک براؤزر کھولے گا۔

نتیجے میں kubeconfig ویب سائٹ پر چیک کیا جا سکتا ہے jwt.io. صرف قیمت کاپی کریں۔ users[].user.auth-provider.config.id-token اپنے kubeconfig سے ویب سائٹ پر فارم تک اور فوری طور پر ایک ٹرانسکرپٹ وصول کریں۔

آر بی اے سی کو ترتیب دیا جا رہا ہے۔

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 دستاویزات

auth-proxy سیٹ کرنا

ایک شاندار منصوبہ ہے۔ چابی کا دربان، جو آپ کو صارف کو 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

نیا تبصرہ شامل کریں