เจ…เจธเฉ€เจ‚ LDAP เจ…เจงเจฟเจ•เจพเจฐ เจจเฉ‚เฉฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฒ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚

เจ…เจธเฉ€เจ‚ LDAP เจ…เจงเจฟเจ•เจพเจฐ เจจเฉ‚เฉฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฒ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ LDAP เจธเจฐเจตเจฐ เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจธเจฎเฉ‚เจนเจพเจ‚ เจฆเฉ‡ เจ†เจฏเจพเจค เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจ•เฉ€เจ•เจฒเฉŒเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒเฅค เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฒเจˆ RBAC เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเจฎเจพเจฃ-เจชเฉเจฐเจพเจ•เจธเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเฉ‡เจตเฉ‡เจ—เจพ เจœเฉ‹ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ•เฉ€เจ•เจฒเฉŒเจ• เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ

เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เฉฑเจ• LDAP เจธเจฐเจตเจฐ เจนเฉˆเฅค เจ‡เจน เจเจ•เจŸเจฟเจต เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€, เจซเฉเจฐเฉ€เจ†เจˆเจชเฉ€เจ, เจ“เจชเจจเจเจฒเจกเฉ€เจเจชเฉ€ เจœเจพเจ‚ เจนเฉ‹เจฐ เจ•เฉเจ เจตเฉ€ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ LDAP เจธเจฐเจตเจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจธเจฟเจงเจพเจ‚เจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ Keycloak เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเจฟเฉฑเจš เจธเจฟเฉฑเจงเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเจพเจ‚ เจœเจจเจคเจ• oidc เจชเฉเจฐเจฆเจพเจคเจพ (Google, Github, Gitlab) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจจเจคเฉ€เจœเจพ เจฒเจ—เจญเจ— เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ†เจชเจพเจ‚ เจ•เฉ€เจ•เจฒเฉ‹เจ• เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ€เจเฅค เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจœเจพเจ‚ เจธเจฟเฉฑเจงเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ•เจˆ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจนเจจ, เจคเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจฆเฉ‚เจœเฉ‡ เจชเจพเจธเฉ‡, เจคเฉเจธเฉ€เจ‚ เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจงเจฟเจ•เจพเจฐเจค เจนเฉˆเจฒเจฎ เจšเจพเจฐเจŸ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจ†เจชเจฃเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹เฅค

เจ•เฉ€เจ•เจฒเฉŒเจ• เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจกเจฟเจซเจพเจฒเจŸ เจนเฉˆ h2 (เจธเจพเจฐเจพ เจกเฉ‡เจŸเจพ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ), เจชเจฐ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจตเฉ€ เจธเฉฐเจญเจต เจนเฉˆ postgres, mysql เจœ mariadb.
เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจ•เฉ€เจ•เจฒเฉŒเจ• เจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจฎเจฟเจฒเจฃเจ—เฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผ.

เจซเฉˆเจกเจฐเฉ‡เจธเจผเจจ เจฆเฉ€ เจธเจฅเจพเจชเจจเจพ

เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจ–เฉ‡เจคเจฐ เจฌเจฃเจพเจˆเจเฅค เจ–เฉ‡เจคเจฐ เจธเจพเจกเฉ€ เจ…เจฐเจœเจผเฉ€ เจฆเจพ เจธเจฅเจพเจจ เจนเฉˆ. เจนเจฐเฉ‡เจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเจพ เจตเฉฑเจ–-เจตเฉฑเจ– เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเจพเจฒ เจ†เจชเจฃเจพ เจ–เฉ‡เจคเจฐ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฎเจพเจธเจŸเจฐ เจฐเฉ€เจ…เจฒเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจ•เจฒเฉŒเจ• เจฆเฉเจ†เจฐเจพ เจ–เฉเจฆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจšเฉ€เจœเจผ เจฒเจˆ เจตเจฐเจคเจฃเจพ เจ—เจฒเจค เจนเฉˆเฅค

เจ‡เฉฑเจฅเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ เจ–เฉ‡เจคเจฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹

เจšเฉ‹เจฃ
เจฎเฉเฉฑเจฒ

เจจเจพเจฎ
kubernetes

เจฆเจฟเจ–เจพเจ‡เจ† เจนเฉ‹เจ‡เจ† เจจเจพเจฎ
Kubernetes

HTML เจกเจฟเจธเจชเจฒเฉ‡ เจจเจพเจฎ
<img src="https://kubernetes.io/images/nav_logo.svg" width="400" >

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจœเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€ เจˆเจฎเฉ‡เจฒ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจนเฉ‹เจˆ เจนเฉˆ เจœเจพเจ‚ เจจเจนเฉ€เจ‚เฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ–เฉเจฆ เจฆเฉ‡ 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>

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

เจฐเฉ‚เจŸ URL
http://kubernetes.example.org/

เจตเฉˆเจง เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ URIs
http://kubernetes.example.org/*

เจเจกเจฎเจฟเจจ URL
http://kubernetes.example.org/

เจ†เจ‰ เจธเจฎเฉ‚เจนเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจธเจ•เฉ‹เจช เจตเฉ€ เจฌเจฃเจพเจˆเจ:

เจ—เจพเจนเจ• เจฆเจพเจ‡เจฐเฉ‡ -> เจฌเจฃเจพเจ“

เจšเฉ‹เจฃ
เจฎเฉเฉฑเจฒ

เจซเจฐเจฎเจพ
No template

เจจเจพเจฎ
groups

เจชเฉ‚เจฐเจพ เจธเจฎเฉ‚เจน เจฎเจพเจฐเจ—
false

เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจฎเฉˆเจชเจฐ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเฉ‹:

เจ—เจพเจนเจ• เจฆเจพเจ‡เจฐเฉ‡ -> เจ—เจฐเฉเฉฑเจช -> เจฎเฉˆเจชเจฐเจธ -> เจฌเจฃเจพเจ“

เจšเฉ‹เจฃ
เจฎเฉเฉฑเจฒ

เจจเจพเจฎ
groups

เจฎเฉˆเจชเจฐ เจฆเฉ€ เจ•เจฟเจธเจฎ
Group membership

เจŸเฉ‹เจ•เจจ เจฆเจพเจ…เจตเฉ‡ เจฆเจพ เจจเจพเจฎ
groups

เจนเฉเจฃ เจธเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจธเจ•เฉ‹เจช เจตเจฟเฉฑเจš เจฎเฉˆเจชเจฟเฉฐเจ— เจ—เจฐเฉเฉฑเจช เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

เจ—เฉเจฐเจพเจนเจ• -> เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ -> เจ—เจพเจนเจ• เจฆเจพเจ‡เจฐเฉ‡ -> เจกเจฟเจซเฉŒเจฒเจŸ เจ•เจฒเจพเจ‡เฉฐเจŸ เจธเจ•เฉ‹เจชเจธ

เจšเฉเจฃเฉ‹ เจ—เจฐเฉเฉฑเจช ะฒ เจ‰เจชเจฒเจฌเจง เจ—เจพเจนเจ• เจฆเจพเจ‡เจฐเฉ‡, เจชเฉเจฐเฉˆเจธ เจšเฉเจฃเจฟเจ† เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹

เจนเฉเจฃ เจธเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเฉ€เจ, เจ‡เจธ 'เจคเฉ‡ เจœเจพเจ“:

เจ—เฉเจฐเจพเจนเจ• -> เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ

เจšเฉ‹เจฃ
เจฎเฉเฉฑเจฒ

เจ…เจงเจฟเจ•เจพเจฐ เจธเจฎเจฐเจฅเจฟเจค
ON

เจšเจฒเฉ‹ เจฆเจฌเจพเจ“ เจจเฉ‚เฉฐ เจฌเจšเจพ เจ…เจคเฉ‡ เจ‡เจธ เจจเจพเจฒ เจ•เจฒเจพเจ‡เฉฐเจŸ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจชเฉ‚เจฐเจพ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ, เจนเฉเจฃ เจŸเฉˆเจฌ 'เจคเฉ‡

เจ—เฉเจฐเจพเจนเจ• -> เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ -> เจ•เฉเจฐเฉˆเจกเฉˆเจ‚เจธเจผเฉ€เจ…เจฒ

เจคเฉเจธเฉ€เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจฐเจพเจœเจผ เจœเจฟเจธ เจฆเฉ€ เจ…เจธเฉ€เจ‚ เจ…เฉฑเจ—เฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ

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

เจ‡เจน เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจ‡เจนเจจเจพเจ‚ เจ•เจฆเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจธเจพเจฐเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจฆเฉเจนเจฐเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจ…เจงเจฟเจ•เจพเจฐ

เจ‡เจนเจจเจพเจ‚ เจ•เจฆเจฎเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจธเฉฐเจฐเจšเจฟเจค OIDC เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจตเจพเจฒเจพ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจธเจฟเจฐเจซ เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจกเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจ•เฉ‹เจฒ เจ…เจœเฉ‡ เจคเฉฑเจ• เจธเฉฐเจฐเจšเจฟเจค เจ•เจฒเจพเจ‡เฉฐเจŸ เจœเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจ†เจชเจฃเฉ€ kubeconfig เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจซเจฒ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฒเจˆ kubeconfig เจฆเฉ€ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจตเฉฐเจก เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผ เจตเฉˆเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจซเจฟเจฐ เจคเจฟเจ†เจฐ-เจ•เฉ€เจคเฉ€ kubeconfig เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค เจธเจญ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจฆเฉ‡ เจ‡เฉฑเจ• เจนเฉˆ เจ•เฉเจฌเฉ‡เจฐเฉ‹เจธ, เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ Kubernetes เจ•เจฒเฉฑเจธเจŸเจฐเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจธเจตเจฟเจš เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจ•เฉเจฌเฉ‡เจฐเฉ‹เจธ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฒเจˆ, เจธเจฟเจฐเจซ kubeconfig เจฒเจˆ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเจพเจฒ เจšเจฒเจพเจ“:

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

เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฒเจˆ เจตเฉ‡เจ–เฉ‹ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ Github 'เจคเฉ‡.

เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจตเฉ€ เจธเฉฐเจญเจต เจนเฉˆ kubelogin เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจธเจฟเฉฑเจงเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฒเฉ‹เจ•เจฒเจนเฉ‹เจธเจŸ 'เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจซเจพเจฐเจฎ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจฌเฉเจฐเจพเจ‰เจœเจผเจฐ เจ–เฉ‹เจฒเฉเจนเฉ‡เจ—เจพเฅค

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ 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 เจฆเจธเจคเจพเจตเฉ‡เจœเจผ

เจชเฉเจฐเจฎเจพเจฃ-เจชเฉเจฐเจพเจ•เจธเฉ€ เจธเฉˆเฉฑเจŸ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจ‡เฉฑเจ• เจธเจผเจพเจจเจฆเจพเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจนเฉˆ keycloak - เจฆเจฐเจฌเจพเจจ, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹