เดžเด™เตเด™เตพ เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต‡เด•เตเด•เต LDAP เด…เด‚เด—เต€เด•เดพเดฐเด‚ เด‰เดฑเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดžเด™เตเด™เตพ เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต‡เด•เตเด•เต LDAP เด…เด‚เด—เต€เด•เดพเดฐเด‚ เด‰เดฑเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฟเด™เตเด™เดณเตเดŸเต† LDAP เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต Kubernetes เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต†เดฏเตเด‚ เด—เตเดฐเต‚เดชเตเดชเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด‡เดฑเด•เตเด•เตเดฎเดคเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ Keycloak เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ. เด‡เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เดพเดฏเดฟ RBAC เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเดจเตเด‚ Kubernetes เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเตเด‚ เดธเตเดตเดฏเด‚ เดŽเด™เตเด™เดจเต† เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดพเดคเตเดค เดฎเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เดชเดฐเดฟเดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต auth-proxy เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

เด•เต€เด•เตเดฒเต‹เด•เตเด•เต เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เด’เดฐเต 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" >

เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เด‡เดฎเต†เดฏเดฟเตฝ เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹ เด‡เดฒเตเดฒเดฏเต‹ เดŽเดจเตเดจเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ Kubernetes เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต. เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ LDAP เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดˆ เดšเต†เด•เตเด•เต เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เดฎเดŸเด™เตเด™เดฟเดตเดฐเตเด‚ false. Kubernetes-เตฝ เดˆ เด•เตเดฐเดฎเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดพเดคเดฟเดจเดฟเดงเตเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดพเด‚:

เด•เตเดฒเดฏเดจเตเดฑเต เดธเตเด•เต‹เดชเตเดชเตเด•เตพ -> เด‡เดฎเต†เดฏเดฟเตฝ -> เดฎเดพเดชเตเดชเตผเดฎเดพเตผ -> เด‡เดฎเต†เดฏเดฟเตฝ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต (เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•)

เด‡เดจเดฟ เดจเดฎเตเด•เตเด•เต เดซเต†เดกเดฑเต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเด‚, เด‡เดคเดฟเดจเดพเดฏเดฟ เดจเดฎเตเดฎเตพ เดชเต‹เด•เตเดจเตเดจเต:

เดฏเต‚เดธเตผ เดซเต†เดกเดฑเต‡เดทเตป -> เดฆเดพเดคเดพเดตเดฟเดจเต† เดšเต‡เตผเด•เตเด•เตเด•... -> 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>

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

เด‡เดคเต เดซเต†เดกเดฑเต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฃเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต, เดจเดฎเตเด•เตเด•เต เด•เตเดฒเดฏเดจเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚.

เด•เตเดฒเดฏเดจเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฃเด‚

เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเตเดคเดฟเดฏ เด•เตเดฒเดฏเดจเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚ (เด•เต€เด•เตเดฒเต‹เด•เตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต† เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป). เดจเดฎเตเด•เตเด•เต เดชเต‡เดพเด•เดพเด‚:

เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพ -> เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป

เด“เดชเตเดทเตป
เดตเดฟเดฒ

เด•เตเดฒเดฏเดจเตเดฑเต เดเดกเดฟ
kubernetes

เดชเตเดฐเดตเต‡เดถเดจ เดคเดฐเด‚
confidenrial

เดฑเต‚เดŸเตเดŸเต URL
http://kubernetes.example.org/

เดธเดพเดงเตเดตเดพเดฏ เดฑเต€เดกเดฏเดฑเด•เตโ€ŒเดŸเต เดฏเตเด†เตผเดเด•เตพ
http://kubernetes.example.org/*

เด…เดกเตโ€Œเดฎเดฟเตป URL
http://kubernetes.example.org/

เด—เตเดฐเต‚เดชเตเดชเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดธเตเด•เต‹เดชเตเดชเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚:

เด•เตเดฒเดฏเดจเตเดฑเต เดธเตเด•เต‹เดชเตเดชเตเด•เตพ -> เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป

เด“เดชเตเดทเตป
เดตเดฟเดฒ

เดซเดฒเด•เด‚
No template

เดชเต‡เดฐเต
groups

เดฎเตเดดเตเดตเตป เด—เตเดฐเต‚เดชเตเดชเต เดชเดพเดค
false

เด…เดตเตผเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เดฎเดพเดชเตเดชเตผ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•:

เด•เตเดฒเดฏเดจเตเดฑเต เดธเตเด•เต‹เดชเตเดชเตเด•เตพ -> เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ -> เดฎเดพเดชเตเดชเตผเดฎเดพเตผ -> เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป

เด“เดชเตเดทเตป
เดตเดฟเดฒ

เดชเต‡เดฐเต
groups

เดฎเดพเดชเตเดชเตผ เดคเดฐเด‚
Group membership

เดŸเต‹เด•เตเด•เตบ เด•เตเดฒเต†เดฏเดฟเด‚ เดชเต‡เดฐเต
groups

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เดณเตเดŸเต† เด•เตเดฒเดฏเดจเตเดฑเต เดธเตเด•เต‹เดชเตเดชเดฟเตฝ เด—เตเดฐเต‚เดชเตเดชเต เดฎเดพเดชเตเดชเดฟเด‚เด—เต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพ -> เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเตเดธเต -> เด•เตเดฒเดฏเดจเตเดฑเต เดธเตเด•เต‹เดชเตเดชเตเด•เตพ -> เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เด•เตเดฒเดฏเดจเตเดฑเต เดธเตเด•เต‹เดชเตเดชเตเด•เตพ

เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด• เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ ะฒ เดฒเดญเตเดฏเดฎเดพเดฏ เด•เตเดฒเดฏเดจเตเดฑเต เดธเตเด•เต‹เดชเตเดชเตเด•เตพเด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด• เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเดคเต เดšเต‡เตผเด•เตเด•เตเด•

เด‡เดจเดฟ เดจเดฎเตเด•เตเด•เต เดจเดฎเตเดฎเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเด‚, เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•:

เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพ -> เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเตเดธเต

เด“เดชเตเดทเตป
เดตเดฟเดฒ

เด…เด‚เด—เต€เด•เดพเดฐเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟ
ON

เดจเดฎเตเด•เตเด•เต เดคเดณเตเดณเดพเด‚ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด• เด‡เดคเต เด•เตเดฒเดฏเดจเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฃเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต, เด‡เดชเตเดชเต‹เตพ เดŸเดพเดฌเดฟเตฝ

เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพ -> เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเตเดธเต -> เด•เตเดฐเต†เดกเตปเดทเตเดฏเตฝ

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฟเดŸเตเดŸเดพเด‚ เดธเต€เด•เตเดฐเดŸเตเดŸเต เด…เดคเต เดžเด™เตเด™เตพ เดชเดฟเดจเตเดจเต€เดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

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 เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•:

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 เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•. เดเดฑเตเดฑเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เด’เดจเตเดจเดพเดฃเต เด•เตเดฌเต‡เดฐเต‹เดธเต, เดŽเดฒเตเดฒเดพ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เดณเตเด‚ เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเดฟเตฝ เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดตเดฏเตเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดฎเดพเดฑเดพเดจเตเด‚ เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

Kuberos เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, 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-เดฏเตเดŸเต† เด•เต‚เดŸเตเดคเตฝ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เด‡เดคเดฟเตฝ เด•เดพเดฃเดพเด‚ เด”เดฆเตเดฏเต‹เด—เดฟเด• เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป

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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•