MLOPS/SERVING
[kubeflow] multi-user
개발허재
2023. 1. 4. 16:59
Kubeflow와 함께 설치되는 auth 라는 네임스페이스 안의 dex는 사용자 정보를 파일에 직접 저장하고 있습니다.
이 파일은 ConfigMap에 저장되어 있습니다.
dex 라는 ConfigMap을 조회하면 설정 정보를 볼 수 있습니다.
다음 명령어를 실행하면, dex 의 설정 정보를 확인할 수 있습니다.
$ kubectl -n auth get cm dex -o yaml
apiVersion: v1
data:
config.yaml: |
issuer: http://dex.auth.svc.cluster.local:5556/dex
storage:
type: kubernetes
config:
inCluster: true
web:
http: 0.0.0.0:5556
logger:
level: "debug"
format: text
oauth2:
skipApprovalScreen: true
enablePasswordDB: true
staticPasswords:
- email: user@example.com
hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72
# https://github.com/dexidp/dex/pull/1601/commits
# FIXME: Use hashFromEnv instead
username: user
userID: "15841185641784"
staticClients:
# https://github.com/dexidp/dex/pull/1664
- idEnv: OIDC_CLIENT_ID
redirectURIs: ["/login/oidc"]
name: 'Dex Login Application'
secretEnv: OIDC_CLIENT_SECRET
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","data":{"config.yaml":"issuer: http://dex.auth.svc.cluster.local:5556/dex\nstorage:\n type: kubernetes\n config:\n inCluster: true\nweb:\n http: 0.0.0.0:5556\nlogger:\n level: \"debug\"\n format: text\noauth2:\n skipApprovalScreen: true\nenablePasswordDB: true\nstaticPasswords:\n- email: user@example.com\n hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72\n # https://github.com/dexidp/dex/pull/1601/commits\n # FIXME: Use hashFromEnv instead\n username: user\n userID: \"15841185641784\"\nstaticClients:\n# https://github.com/dexidp/dex/pull/1664\n- idEnv: OIDC_CLIENT_ID\n redirectURIs: [\"/login/oidc\"]\n name: 'Dex Login Application'\n secretEnv: OIDC_CLIENT_SECRET\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"dex","namespace":"auth"}}
creationTimestamp: "2023-01-03T10:12:50Z"
name: dex
namespace: auth
resourceVersion: "537028"
uid: 8530a1d1-03f6-427a-8096-da180eebe3a8
staticPasswords 블록을 보면, 사용자 이메일과 패스워드의 해시값을 확인할 수 있습니다.
패스워드는 “BCrypt”를 이용하여 해시값을 생성한 후 사용하고 있습니다.
참고로 설치할때 기본으로 생성되는 이메일은 user@example.com이고, 패스워드는 12341234입니다.
패스워드 해시값은 다양한 방법으로 만들수 있습니다.
만약 파이썬을 사용하고 있다면 bcrypt 라이브러리를 사용할 수 있습니다.
사용자 추가하기
dex에 새로운 사용자를 추가해 보겠습니다.
ConfigMap을 직접 수정하는 방식으로 진행하겠습니다. 다음 명령어를 실행하여, 편집 화면을 실행합니다.
kubectl -n auth edit cm dex
staticPasswords 필드에 새로운 사용자를 추가합니다. hash 필드에 생성한 패스워드의 해시값을 지정합니다. username은 적당한 이름을 지정하면 됩니다. userID는 고유한 값을 사용해야합니다. UID 같은것을 사용할 수 있습니다.
staticPasswords:
- email: user@example.com
hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72
# https://github.com/dexidp/dex/pull/1601/commits
# FIXME: Use hashFromEnv instead
username: user
userID: "15841185641784"
- email: jaeuheo@example.com
hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72
# https://github.com/dexidp/dex/pull/1601/commits
# FIXME: Use hashFromEnv instead
username: jaeuheo
userID: jaeuheo
변경할 설정 사항을 적용하기 위해서 dex를 재시작합니다.
kubectl -n auth rollout restart deployment dex