6장. ID 공급자 구성

6.1. HTPasswd ID 공급자 구성

6.1.1. OpenShift Container Platform의 ID 공급자 정보

기본적으로는 kubeadmin 사용자만 클러스터에 있습니다. ID 공급자를 지정하려면 해당 ID 공급자를 설명하는 CR(사용자 정의 리소스)을 생성하여 클러스터에 추가해야 합니다.

참고

/, :, %를 포함하는 OpenShift Container Platform 사용자 이름은 지원되지 않습니다.

HTPasswd ID 공급자를 정의하려면 다음 단계를 수행해야 합니다.

6.1.2. Linux를 사용하여 HTPasswd 파일 생성

HTPasswd ID 공급자를 사용하려면 htpasswd를 사용하여 클러스터의 사용자 이름 및 암호를 포함하는 플랫 파일을 생성해야 합니다.

사전 요구 사항

  • htpasswd 유틸리티에 액세스할 수 있습니다. Red Hat Enterprise Linux에서는 httpd-tools 패키지를 설치하면 액세스할 수 있습니다.

절차

  1. 사용자 이름과 해시된 암호로 플랫 파일을 생성하거나 업데이트합니다.

    $ htpasswd -c -B -b </path/to/users.htpasswd> <user_name> <password>

    이 명령에서는 해시된 버전의 암호를 생성합니다.

    예를 들면 다음과 같습니다.

    $ htpasswd -c -B -b users.htpasswd user1 MyPassword!

    출력 예

    Adding password for user user1

  2. 인증 정보를 파일에 계속 추가하거나 업데이트합니다.

    $ htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>

6.1.3. Windows를 사용하여 HTPasswd 파일 생성

HTPasswd ID 공급자를 사용하려면 htpasswd를 사용하여 클러스터의 사용자 이름 및 암호를 포함하는 플랫 파일을 생성해야 합니다.

사전 요구 사항

  • htpasswd.exe에 액세스할 수 있습니다. 이 파일은 많은 Apache httpd 배포판의 \bin 디렉터리에 포함되어 있습니다.

절차

  1. 사용자 이름과 해시된 암호로 플랫 파일을 생성하거나 업데이트합니다.

    > htpasswd.exe -c -B -b <\path\to\users.htpasswd> <user_name> <password>

    이 명령에서는 해시된 버전의 암호를 생성합니다.

    예를 들면 다음과 같습니다.

    > htpasswd.exe -c -B -b users.htpasswd user1 MyPassword!

    출력 예

    Adding password for user user1

  2. 인증 정보를 파일에 계속 추가하거나 업데이트합니다.

    > htpasswd.exe -b <\path\to\users.htpasswd> <user_name> <password>

6.1.4. HTPasswd 시크릿 생성

HTPasswd ID 공급자를 사용하려면 HTPasswd 사용자 파일이 포함된 시크릿을 정의해야 합니다.

사전 요구 사항

  • HTPasswd 파일을 생성합니다.

절차

  • HTPasswd 사용자 파일이 포함된 OpenShift 컨테이너 플랫폼 Secret 오브젝트를 생성합니다.

    $ oc create secret generic htpass-secret --from-file=htpasswd=</path/to/users.htpasswd> -n openshift-config
    참고

    --from-file 인수에 대한 사용자 파일이 포함된 보안 키의 이름은 위의 명령과 같이 htpasswd로 지정해야 합니다.

6.1.5. HTPasswd CR 샘플

다음 CR(사용자 정의 리소스)에는 HTPasswd ID 공급자에 대한 매개변수 및 허용 가능한 값이 표시되어 있습니다.

HTPasswd CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: my_htpasswd_provider 1
    mappingMethod: claim 2
    type: HTPasswd
    htpasswd:
      fileData:
        name: htpass-secret 3

1
이 공급자 이름은 공급자 사용자 이름에 접두어로 지정되어 ID 이름을 형성합니다.
2
이 공급자의 ID와 User 오브젝트 간 매핑 설정 방법을 제어합니다.
3
htpasswd를 사용하여 생성한 파일이 포함된 기존 시크릿입니다.

추가 리소스

  • 모든 ID 공급자에 공통되는 mappingMethod와 같은 매개변수에 대한 자세한 내용은 ID 공급자 매개변수를 참조하십시오.

6.1.6. 클러스터에 ID 공급자 추가

클러스터를 설치한 후에는 사용자가 인증할 수 있도록 ID 공급자를 추가하십시오.

사전 요구 사항

  • OpenShift Container Platform 클러스터를 생성합니다.
  • ID 공급자의 CR(사용자 정의 리소스)을 만듭니다.
  • 관리자로 로그인해야 합니다.

절차

  1. 정의된 CR을 적용합니다.

    $ oc apply -f </path/to/CR>
    참고

    CR이 없으면 oc apply 에서 새 CR을 생성하고 다음 경고를 트리거할 수 있습니다. 경고: oc apply는 oc create --save-config 또는 oc apply에서 생성한 리소스에 사용해야 합니다. 이 경우 이 경고를 무시해도 됩니다.

  2. 암호를 입력하라는 메시지가 표시되면 암호를 입력하여 ID 공급자의 사용자로 클러스터에 로그인합니다.

    $ oc login -u <username>
  3. 사용자가 로그인했는지 확인하고 사용자 이름을 표시합니다.

    $ oc whoami

6.1.7. HTPasswd ID 공급자의 사용자 업데이트

기존 HTPasswd ID 공급자의 사용자를 추가하거나 제거할 수 있습니다.

사전 요구 사항

  • HTPasswd 사용자 파일이 포함된 Secret 오브젝트를 생성했습니다. 이 절차에서는 이름을 htpass-secret이라고 가정합니다.
  • HTPasswd ID 공급자를 구성했습니다. 이 절차에서는 이름이 my_htpasswd_provider라고 가정합니다.
  • htpasswd 유틸리티에 액세스할 수 있습니다. Red Hat Enterprise Linux에서는 httpd-tools 패키지를 설치하면 액세스할 수 있습니다.
  • 클러스터 관리자 권한이 있어야 합니다.

절차

  1. htpass-secret Secret 오브젝트에서 HTPasswd 파일을 검색하여 파일 시스템에 저장합니다.

    $ oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 --decode > users.htpasswd
  2. users.htpasswd 파일에서 사용자를 추가하거나 제거합니다.

    • 새로운 사용자 추가:

      $ htpasswd -bB users.htpasswd <username> <password>

      출력 예

      Adding password for user <username>

    • 기존 사용자 제거:

      $ htpasswd -D users.htpasswd <username>

      출력 예

      Deleting password for user <username>

  3. users.htpasswd 파일에서 htpass-secret Secret 오브젝트를 업데이트된 사용자로 교체합니다.

    $ oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd --dry-run=client -o yaml -n openshift-config | oc replace -f -
  4. 하나 이상의 사용자를 제거한 경우 각 사용자에 대한 기존 리소스를 추가로 제거해야 합니다.

    1. User 오브젝트 삭제:

      $ oc delete user <username>

      출력 예

      user.user.openshift.io "<username>" deleted

      사용자를 제거해야 합니다. 그러지 않으면 토큰이 만료되지 않는 한 사용자가 토큰을 계속 사용할 수 있습니다.

    2. 사용자의 Identity 오브젝트 삭제:

      $ oc delete identity my_htpasswd_provider:<username>

      출력 예

      identity.user.openshift.io "my_htpasswd_provider:<username>" deleted

6.1.8. 웹 콘솔을 사용하여 ID 공급자 구성

CLI 대신 웹 콘솔을 통해 ID 공급자(IDP)를 구성합니다.

사전 요구 사항

  • 웹 콘솔에 클러스터 관리자로 로그인해야 합니다.

절차

  1. 관리클러스터 설정으로 이동합니다.
  2. 글로벌 구성 탭에서 OAuth를 클릭합니다.
  3. ID 공급자 섹션의 추가 드롭다운 메뉴에서 ID 공급자를 선택합니다.
참고

기존 IDP를 덮어쓰지 않고 웹 콘솔을 통해 여러 IDP를 지정할 수 있습니다.