موږ Kubernetes ته د LDAP جواز ګړندی کوو

موږ Kubernetes ته د LDAP جواز ګړندی کوو

ستاسو د LDAP سرور سره Kubernetes وصل کولو او د کاروونکو او ډلو واردات تنظیم کولو لپاره د کیکلوک کارولو څرنګوالي په اړه یو کوچنی ښوونیز. دا به تاسو ته اجازه درکړي چې د خپلو کاروونکو لپاره RBAC تنظیم کړئ او د کوبرنیټس ډشبورډ او نورو غوښتنلیکونو خوندي کولو لپاره auth-proxy وکاروئ چې نه پوهیږي چې څنګه ځان ته اجازه ورکړي.

Keycloak نصب

راځئ فرض کړئ چې تاسو دمخه د LDAP سرور لرئ. دا کیدی شي فعال لارښود، FreeIPA، OpenLDAP یا هر څه وي. که تاسو د LDAP سرور نلرئ ، نو په اصولو کې تاسو کولی شئ په مستقیم ډول د کیکلوک انٹرفیس کې کارونکي رامینځته کړئ ، یا د عامه ODc چمتو کونکي (ګوګل ، ګیتوب ، ګیتلاب) وکاروئ ، پایله به نږدې ورته وي.

له هرڅه دمخه ، راځئ چې پخپله کیکلوک نصب کړو ، نصب کول په جلا توګه ترسره کیدی شي ، یا مستقیم د کبرنیټس کلستر ته ، د یوې قاعدې په توګه ، که تاسو د کوبرنیټس ډیری کلسترونه ولرئ ، نو دا به په جلا توګه نصب کول اسانه وي. له بلې خوا، تاسو کولی شئ تل وکاروئ رسمي هیلم چارټ او دا په مستقیم ډول په خپل کلستر کې نصب کړئ.

د کیکلوک ډیټا ذخیره کولو لپاره ، تاسو به ډیټابیس ته اړتیا ولرئ. ډیفالټ دی h2 (ټول معلومات په محلي توګه زیرمه شوي)، مګر دا د کارولو امکان هم لري postgres, mysql او یا mariadb.
که تاسو لاهم پریکړه وکړئ چې کیکلوک په جلا توګه نصب کړئ، تاسو کولی شئ نور تفصيلي لارښوونې په کې ومومئ رسمي اسناد.

د فدراسیون تشکیل

لومړی، راځئ چې یوه نوې سیمه جوړه کړو. سیمه زموږ د غوښتنلیک ځای دی. هر غوښتنلیک کولی شي د مختلف کاروونکو او اختیار تنظیماتو سره خپله ساحه ولري. د ماسټر اصلیت پخپله د کیکلوک لخوا کارول کیږي او د بل څه لپاره یې کارول غلط دي.

ټیله کول سیمه اضافه کړئ

انتخاب
ارزښت

نوم
kubernetes

نوم څرګند کړه
Kubernetes

د HTML ښودلو نوم
<img src="https://kubernetes.io/images/nav_logo.svg" width="400" >

Kubernetes په ډیفالټ ډول ګوري چې ایا د کارونکي بریښنالیک تایید شوی یا نه. څرنګه چې موږ خپل LDAP سرور کاروو، دا چک به تل بیرته راستانه شي false. راځئ چې په Kubernetes کې د دې ترتیب استازیتوب غیر فعال کړو:

د پیرودونکي ساحه -> enamel -> نقشه کونکي -> بریښنالیک تایید شوی (ړنګول)

اوس راځئ چې فدراسیون جوړ کړو، د دې لپاره موږ ته ځو:

د کارونکي فدراسیون -> چمتو کونکی اضافه کړئ… -> ldap

دلته د 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

DN تړل
uid=keycloak-svc,cn=users,cn=accounts,dc=example,dc=org

بانډ اعتبار
<password>

د کربروس تصدیق ته اجازه ورکړئ:
on

کربروس سیمه:
EXAMPLE.ORG

د سرور پرنسپل:
HTTP/[email protected]

کلیدي ټب:
/etc/krb5.keytab

کارن keycloak-svc باید مخکې له مخکې زموږ په LDAP سرور کې جوړ شي.

د فعال لارښود په حالت کې، په ساده ډول غوره کړئ پلورونکی: فعاله لارښود او اړین ترتیبات به په اتوماتيک ډول په فورمه کې داخل شي.

ټیله کول Save

اوس راځئ چې پرمخ لاړ شو:

د کارونکي فدراسیون -> 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

دا د فدراسیون تنظیم بشپړوي، راځئ چې د پیرودونکي تنظیم کولو ته لاړ شو.

د پیرودونکي تنظیم کول

راځئ یو نوی پیرودونکی جوړ کړو (یو اپلیکیشن چې کاروونکي به د کیکلوک څخه ترلاسه کړي). مخکې شه:

مشتريان -> جوړول

انتخاب
ارزښت

د پیرودونکي پیژند
kubernetes

د لاسرسي ډول
confidenrial

د روټ URL
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 واک لپاره د کبرنیټس تنظیم کول خورا کوچني دي او یو څه خورا پیچلي ندي. ټول هغه څه چې تاسو یې کولو ته اړتیا لرئ د خپل OIDC سرور CA سند دننه کړئ /etc/kubernetes/pki/oidc-ca.pem او د کیوب اپیسرور لپاره اړین اختیارونه اضافه کړئ.
د دې کولو لپاره، تازه کړئ /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 تشکیل هم تازه کړئ ترڅو د تازه کولو پرمهال دا تنظیمات له لاسه ورنکړي:

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 کلسترونو کې تکرار کړئ.

ابتدايي واک ورکول

د دې ګامونو وروسته، تاسو به دمخه د OIDC اجازه ترتیب سره د Kubernetes کلستر ولرئ. یوازینی ټکی دا دی چې ستاسو کاروونکي لا تر اوسه د مراجعینو ترتیب نه لري، او همدارنګه د دوی خپل kubeconfig. د دې ستونزې د حل لپاره، تاسو اړتیا لرئ چې د بریالیتوب واک وروسته کاروونکو ته د kubeconfig اتوماتیک صادرول تنظیم کړئ.

د دې کولو لپاره ، تاسو کولی شئ ځانګړي ویب غوښتنلیکونه وکاروئ چې تاسو ته اجازه درکوي د کارونکي تصدیق کړئ او بیا بشپړ شوی کیوب کنفګ ډاونلوډ کړئ. یو له خورا اسانه دی کوبیروس، دا تاسو ته اجازه درکوي چې ټول Kubernetes کلسترونه په یوه ترتیب کې تشریح کړئ او په اسانۍ سره د دوی ترمینځ تیر کړئ.

د Kuberos تنظیم کولو لپاره، دا کافی دی چې د kubeconfig لپاره ټیمپلیټ تشریح کړئ او د لاندې پیرامیټونو سره یې چل کړئ:

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

د نورو جزیاتو لپاره وګورئ کارېدنه په ګیتوب کې.

دا هم د کارولو امکان لري kubelogin که تاسو غواړئ په مستقیم ډول د کارونکي کمپیوټر ته اجازه ورکړئ. په دې حالت کې، کارن به په لوکل هوسټ کې د واک ورکولو فورمې سره براوزر پرانیزي.

پایله کیوب کنفګ په سایټ کې چیک کیدی شي 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 اسناد

د مستند پراکسي تنظیم کول

په زړه پوری پروژه ده keycloak- دروازې ساتونکی، کوم چې تاسو ته اجازه درکوي هر غوښتنلیک خوندي کړئ کارونکي ته اجازه درکوي چې د OIDC سرور ته تصدیق کړي. زه به تاسو ته وښیم چې تاسو څنګه کولی شئ دا د مثال په توګه د Kubernetes ډشبورډ په کارولو سره تنظیم کړئ:

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

Add a comment