የኤልዲኤፒ ፈቃድን ወደ ኩበርኔትስ እንሰካለን።

የኤልዲኤፒ ፈቃድን ወደ ኩበርኔትስ እንሰካለን።

ኩበርኔትስን ከኤልዲኤፒ አገልጋይዎ ጋር ለማገናኘት እና የተጠቃሚዎችን እና ቡድኖችን ማስመጣትን ለማዋቀር ኪክሎክን እንዴት መጠቀም እንደሚችሉ ላይ ትንሽ አጋዥ ስልጠና። ይህ RBACን ለተጠቃሚዎችዎ እንዲያዘጋጁ እና የኩበርኔትስ ዳሽቦርድን እና ሌሎች እንዴት እራሳቸውን እንደፈቀዱ የማያውቁ አፕሊኬሽኖችን ለመጠበቅ auth-proxyን እንዲጠቀሙ ይፈቅድልዎታል።

የቁልፍ ካባ መጫኛ

ቀደም ሲል የኤልዲኤፒ አገልጋይ እንዳለህ እናስብ። እሱ አክቲቭ ማውጫ፣ ፍሪIPA፣ OpenLDAP ወይም ሌላ ሊሆን ይችላል። የኤልዲኤፒ አገልጋይ ከሌልዎት በመርህ ደረጃ ተጠቃሚዎችን በቀጥታ በ Keycloak በይነገጽ ውስጥ መፍጠር ወይም የህዝብ ኦዲክ አቅራቢዎችን (Google ፣ Github ፣ Gitlab) መጠቀም ይችላሉ ውጤቱ ከሞላ ጎደል ተመሳሳይ ይሆናል።

በመጀመሪያ ደረጃ, Keycloak ን እራሱ እንጭነው, መጫኑ በተናጥል ሊከናወን ይችላል, ወይም በቀጥታ ወደ Kubernetes ክላስተር, እንደ አንድ ደንብ, ብዙ የኩበርኔትስ ስብስቦች ካሉዎት, በተናጥል ለመጫን ቀላል ይሆናል. በሌላ በኩል, ሁልጊዜም መጠቀም ይችላሉ ኦፊሴላዊ የሄልም ገበታ እና በቀጥታ ወደ ክላስተርዎ ይጫኑት።

የ Keycloak ውሂብን ለማከማቸት, የውሂብ ጎታ ያስፈልግዎታል. ነባሪው ነው። h2 (ሁሉም መረጃዎች በአገር ውስጥ ይከማቻሉ), ግን መጠቀምም ይቻላል postgres, mysql ወይም mariadb.
አሁንም የ Keycloak ን በተናጠል ለመጫን ከወሰኑ በ ውስጥ የበለጠ ዝርዝር መመሪያዎችን ማግኘት ይችላሉ። ኦፊሴላዊ ሰነዶች.

ፌዴሬሽን ማዋቀር

መጀመሪያ አዲስ ግዛት እንፍጠር። ግዛት የመተግበሪያችን ቦታ ነው። እያንዳንዱ መተግበሪያ ከተለያዩ ተጠቃሚዎች እና የፍቃድ ቅንብሮች ጋር የራሱ ግዛት ሊኖረው ይችላል። ዋናው ግዛት በ Keycloak በራሱ ​​ጥቅም ላይ ይውላል እና ለሌላ ነገር መጠቀም ስህተት ነው.

ግፋ ግዛት ጨምር

አማራጭ
ዋጋ

ስም
kubernetes

መጠሪያው ስም
Kubernetes

የኤችቲኤምኤል ማሳያ ስም
<img src="https://kubernetes.io/images/nav_logo.svg" width="400" >

Kubernetes በነባሪ የተጠቃሚው ኢሜይል መረጋገጡን ወይም አለመረጋገጡን ያረጋግጣል። የራሳችንን LDAP አገልጋይ እየተጠቀምን ስለሆነ ይህ ቼክ ሁልጊዜ ማለት ይቻላል ይመለሳል false. የዚህን ቅንብር ውክልና በኩበርኔትስ እናስወግድ፡-

የደንበኛ ወሰኖች -> ኢሜል -> ካርታዎች -> ኢሜል ተረጋግጧል (ሰርዝ)

አሁን ፌዴሬሽኑን እናቋቁማለን፣ ለዚህም እንሄዳለን፡-

የተጠቃሚ ፌዴሬሽን -> አቅራቢ አክል… -> ldap

ለ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>

የከርቤሮስን ማረጋገጥ ፍቀድ፡
on

የከርቤሮስ ግዛት፡
EXAMPLE.ORG

የአገልጋይ ዋና፡
HTTP/[email protected]

ቁልፍ ትር፡
/etc/krb5.keytab

ተጠቃሚው keycloak-svc በእኛ LDAP አገልጋይ ላይ አስቀድሞ መፈጠር አለበት።

በActive Directory ጉዳይ ላይ በቀላሉ ይምረጡ ሻጭ፡ ንቁ ማውጫ እና አስፈላጊዎቹ መቼቶች በቅጹ ውስጥ በራስ-ሰር እንዲገቡ ይደረጋል.

ግፋ አስቀምጥ

አሁን እንቀጥል፡-

የተጠቃሚ ፌዴሬሽን -> freeipa.example.org -> ካርታዎች -> የመጀመሪያ ስም

አማራጭ
ዋጋ

Ldap ባህሪያት
givenName

አሁን የቡድን ካርታ ስራን አንቃ፡-

የተጠቃሚ ፌዴሬሽን -> freeipa.example.org -> ካርታዎች -> ፈጠረ

አማራጭ
ዋጋ

ስም
groups

የካርታ አይነት
group-ldap-mapper

የኤልዲኤፒ ቡድኖች ዲኤን
cn=groups,cn=accounts,dc=example,dc=org

የተጠቃሚ ቡድን ሰርስሮ ማውጣት ስትራቴጂ
GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE

ይህ የፌዴሬሽኑን አደረጃጀት ያጠናቅቃል፣ ደንበኛን ወደ ማዋቀር እንቀጥል።

የደንበኛ ማዋቀር

አዲስ ደንበኛ እንፍጠር (ተጠቃሚዎችን ከKeycloak የሚቀበል መተግበሪያ)። እንሂድ:

ደንበኞች -> ፈጠረ

አማራጭ
ዋጋ

የደንበኛ መታወቂያ
kubernetes

የመዳረሻ ዓይነት
confidenrial

ስርወ URL
http://kubernetes.example.org/

ትክክለኛ የማዘዋወር URIs
http://kubernetes.example.org/*

አስተዳዳሪ ዩአርኤል
http://kubernetes.example.org/

ለቡድኖች ወሰን እንፈጥራለን፡-

የደንበኛ ወሰኖች -> ፈጠረ

አማራጭ
ዋጋ

አብነት
No template

ስም
groups

ሙሉ የቡድን መንገድ
false

እና ካርታ አዘጋጅላቸው፡-

የደንበኛ ወሰኖች -> ቡድኖች -> ካርታዎች -> ፈጠረ

አማራጭ
ዋጋ

ስም
groups

የካርታ አይነት
Group membership

ማስመሰያ የይገባኛል ጥያቄ ስም
groups

አሁን የቡድን ካርታ በደንበኛ ወሰን ውስጥ ማንቃት አለብን፡-

ደንበኞች -> kubernetes -> የደንበኛ ወሰኖች -> ነባሪ የደንበኛ ወሰን

እንመርጣለን ቡድኖች в የሚገኙ የደንበኛ ወሰን, ይጫኑ የተመረጠውን ያክሉ

አሁን የእኛን መተግበሪያ ማረጋገጫ እናዋቅር፣ ወደሚከተለው ይሂዱ፡-

ደንበኞች -> kubernetes

አማራጭ
ዋጋ

ፍቃድ ነቅቷል።
ON

እንገፋ ማስቀመጥ እና ይሄ የደንበኛ ቅንብርን ያጠናቅቃል, አሁን በትሩ ላይ

ደንበኞች -> kubernetes -> ምስክርነቶች

ማግኘት ትችላለህ ምሥጢራዊ በኋላ የምንጠቀመው.

Kubernetes በማዋቀር ላይ

Kubernetes ለ OIDC ፍቃድ ማዋቀር በጣም ቀላል እና በጣም የተወሳሰበ ነገር አይደለም። የሚያስፈልግህ የ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 ውቅረትን በክላስተር ውስጥ ያዘምኑ።

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 ፍቃድ የተዋቀረ የኩበርኔትስ ክላስተር ይኖረዎታል። ብቸኛው ነጥብ የእርስዎ ተጠቃሚዎች ገና የተዋቀረ ደንበኛ የላቸውም፣ እንዲሁም የራሳቸው kubeconfig። ይህንን ችግር ለመፍታት ከተሳካ ፍቃድ በኋላ የ kubeconfig ን በራስ ሰር ለተጠቃሚዎች ማዋቀር ያስፈልግዎታል።

ይህንን ለማድረግ ተጠቃሚውን እንዲያረጋግጡ እና የተጠናቀቀውን kubeconfig እንዲያወርዱ የሚያስችልዎትን ልዩ የድር መተግበሪያዎችን መጠቀም ይችላሉ። በጣም ምቹ ከሆኑት አንዱ ነው ኩቤሮስ, ሁሉንም የ Kubernetes ስብስቦችን በአንድ ውቅረት እንዲገልጹ እና በቀላሉ በመካከላቸው እንዲቀያየሩ ያስችልዎታል.

Kuberos ን ለማዋቀር የ kubeconfig አብነት መግለጽ በቂ ነው እና ከሚከተሉት መለኪያዎች ጋር ያሂዱት።

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

ለተጨማሪ ዝርዝሮች ይመልከቱ አጠቃቀም በ Github ላይ.

መጠቀምም ይቻላል kubelogin በተጠቃሚው ኮምፒውተር ላይ በቀጥታ መፍቀድ ከፈለጉ። በዚህ አጋጣሚ ተጠቃሚው በ localhost ላይ የፍቃድ ቅጽ ያለው አሳሽ ይከፍታል።

የተገኘው kubeconfig በጣቢያው ላይ ሊረጋገጥ ይችላል jwt.io. እሴቱን ብቻ ይቅዱ users[].user.auth-provider.config.id-token ከእርስዎ kubeconfig ወደ ጣቢያው ቅፅ እና ግልባጩን ወዲያውኑ ያግኙ።

RBAC ማዋቀር

RBAC ን ሲያዋቅሩ ሁለቱንም የተጠቃሚ ስም (መስክ name በjwt token) እና ለተጠቃሚዎች ቡድን (መስክ groups በjwt token)። ለቡድን ፈቃዶችን የማዘጋጀት ምሳሌ እዚህ አለ። kubernetes-default-namespace-admins:

kubernetes-ነባሪ-ስም ቦታ-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 አገልጋይን እንዲያረጋግጥ በመፍቀድ ማንኛውንም መተግበሪያ እንዲጠብቁ ያስችልዎታል። የኩበርኔትስ ዳሽቦርድን እንደ ምሳሌ በመጠቀም እንዴት ማዋቀር እንደሚችሉ አሳይሻለሁ፡-

ዳሽቦርድ-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

ምንጭ: hab.com

አስተያየት ያክሉ