7장. ID 공급자 구성
7.1. htpasswd ID 공급자 구성
htpasswd
ID 공급자를 구성하여 사용자가 htpasswd 파일에서 인증 정보를 사용하여 OpenShift Container Platform에 로그인할 수 있도록 합니다.
htpasswd ID 공급자를 정의하려면 다음 작업을 수행합니다.
-
htpasswd
파일을 생성하여 사용자 및 암호 정보를 저장합니다. -
htpasswd
파일을 나타내는 시크릿을 생성합니다. - 시크릿을 참조하는 htpasswd ID 공급자 리소스를 정의합니다.
- 리소스를 기본 OAuth 구성에 적용하여 ID 공급자를 추가합니다.
7.1.1. OpenShift Container Platform의 ID 공급자 정보
기본적으로는 kubeadmin
사용자만 클러스터에 있습니다. ID 공급자를 지정하려면 해당 ID 공급자를 설명하는 CR(사용자 정의 리소스)을 생성하여 클러스터에 추가해야 합니다.
/
, :
, %
를 포함하는 OpenShift Container Platform 사용자 이름은 지원되지 않습니다.
7.1.2. htpasswd 인증 정보
OpenShift Container Platform에서 htpasswd 인증을 사용하면 htpasswd 파일을 기반으로 사용자를 식별할 수 있습니다. htpasswd 파일은 각 사용자의 사용자 이름과 해시된 암호를 포함하는 플랫 파일입니다. htpasswd
유틸리티를 사용하여 이 파일을 생성할 수 있습니다.
프로덕션 환경에는 OpenShift Container Platform에서 htpasswd 인증을 사용하지 마십시오. htpasswd 인증은 개발 환경에만 사용합니다.
7.1.3. htpasswd 파일 생성
htpasswd 파일을 생성하는 방법에 대한 지침은 다음 섹션 중 하나를 참조하십시오.
7.1.3.1. Linux를 사용하여 htpasswd 파일 생성
htpasswd ID 공급자를 사용하려면 htpasswd
를 사용하여 클러스터의 사용자 이름 및 암호가 포함된 플랫 파일을 생성해야 합니다.
사전 요구 사항
-
htpasswd
유틸리티에 액세스할 수 있습니다. Red Hat Enterprise Linux에서는httpd-tools
패키지를 설치하면 액세스할 수 있습니다.
절차
사용자 이름과 해시된 암호로 플랫 파일을 생성하거나 업데이트합니다.
$ htpasswd -c -B -b </path/to/users.htpasswd> <username> <password>
이 명령에서는 해시된 버전의 암호를 생성합니다.
예를 들면 다음과 같습니다.
$ htpasswd -c -B -b users.htpasswd <username> <password>
출력 예
Adding password for user user1
인증 정보를 파일에 계속 추가하거나 업데이트합니다.
$ htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>
7.1.3.2. Windows를 사용하여 htpasswd 파일 생성
htpasswd ID 공급자를 사용하려면 htpasswd
를 사용하여 클러스터의 사용자 이름 및 암호가 포함된 플랫 파일을 생성해야 합니다.
사전 요구 사항
-
htpasswd.exe
에 액세스할 수 있습니다. 이 파일은 많은 Apache httpd 배포판의\bin
디렉터리에 포함되어 있습니다.
절차
사용자 이름과 해시된 암호로 플랫 파일을 생성하거나 업데이트합니다.
> htpasswd.exe -c -B -b <\path\to\users.htpasswd> <username> <password>
이 명령에서는 해시된 버전의 암호를 생성합니다.
예를 들면 다음과 같습니다.
> htpasswd.exe -c -B -b users.htpasswd <username> <password>
출력 예
Adding password for user user1
인증 정보를 파일에 계속 추가하거나 업데이트합니다.
> htpasswd.exe -b <\path\to\users.htpasswd> <username> <password>
7.1.4. htpasswd 시크릿 생성
htpasswd ID 공급자를 사용하려면 htpasswd 사용자 파일이 포함된 시크릿을 정의해야 합니다.
사전 요구 사항
- htpasswd 파일을 생성합니다.
절차
htpasswd 사용자 파일이 포함된
Secret
오브젝트를 생성합니다.$ oc create secret generic htpass-secret --from-file=htpasswd=<path_to_users.htpasswd> -n openshift-config 1
- 1
--from-file
인수에 대한 사용자 파일이 포함된 보안 키의 이름은 위의 명령과 같이htpasswd
로 지정해야 합니다.
작은 정보다음 YAML을 적용하여 시크릿을 생성할 수도 있습니다.
apiVersion: v1 kind: Secret metadata: name: htpass-secret namespace: openshift-config type: Opaque data: htpasswd: <base64_encoded_htpasswd_file_contents>
7.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
추가 리소스
-
모든 ID 공급자에 공통된
mappingMethod
와 같은 매개변수에 대한 자세한 내용은 ID 공급자 매개변수를 참조하십시오.
7.1.6. 클러스터에 ID 공급자 추가
클러스터를 설치한 후에는 사용자가 인증할 수 있도록 ID 공급자를 추가하십시오.
사전 요구 사항
- OpenShift Container Platform 클러스터를 생성합니다.
- ID 공급자의 CR(사용자 정의 리소스)을 만듭니다.
- 관리자로 로그인해야 합니다.
절차
정의된 CR을 적용합니다.
$ oc apply -f </path/to/CR>
참고CR이 존재하지 않는 경우
oc apply
를 통해 새 CR을 생성하고 다음 경고를 트리거할 수 있습니다.Warning: oc apply should be used on resources created by either oc create --save-config or oc apply
. 이 경우 이 경고를 무시해도 됩니다.암호를 입력하라는 메시지가 표시되면 암호를 입력하여 ID 공급자의 사용자로 클러스터에 로그인합니다.
$ oc login -u <username>
사용자가 로그인했는지 확인하고 사용자 이름을 표시합니다.
$ oc whoami
7.1.7. htpasswd ID 공급자의 사용자 업데이트
기존 htpasswd ID 공급자에서 사용자를 추가하거나 제거할 수 있습니다.
사전 요구 사항
-
htpasswd 사용자 파일이 포함된
Secret
오브젝트를 생성했습니다. 이 절차에서는 이름을htpass-secret
이라고 가정합니다. -
htpasswd ID 공급자를 구성했습니다. 이 절차에서는 이름이
my_htpasswd_provider
라고 가정합니다. -
htpasswd
유틸리티에 액세스할 수 있습니다. Red Hat Enterprise Linux에서는httpd-tools
패키지를 설치하면 액세스할 수 있습니다. - 클러스터 관리자 권한이 있어야 합니다.
절차
htpass-secret
Secret
오브젝트에서 htpasswd 파일을 검색하여 파일 시스템에 저장합니다.$ oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 --decode > users.htpasswd
users.htpasswd
파일에서 사용자를 추가하거나 제거합니다.새로운 사용자 추가:
$ htpasswd -bB users.htpasswd <username> <password>
출력 예
Adding password for user <username>
기존 사용자 제거:
$ htpasswd -D users.htpasswd <username>
출력 예
Deleting password for user <username>
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 -
작은 정보다음 YAML을 적용하여 시크릿을 대체할 수 있습니다.
apiVersion: v1 kind: Secret metadata: name: htpass-secret namespace: openshift-config type: Opaque data: htpasswd: <base64_encoded_htpasswd_file_contents>
하나 이상의 사용자를 제거한 경우 각 사용자에 대한 기존 리소스를 추가로 제거해야 합니다.
User
오브젝트 삭제:$ oc delete user <username>
출력 예
user.user.openshift.io "<username>" deleted
사용자를 제거해야 합니다. 그러지 않으면 토큰이 만료되지 않는 한 사용자가 토큰을 계속 사용할 수 있습니다.
사용자의
Identity
오브젝트 삭제:$ oc delete identity my_htpasswd_provider:<username>
출력 예
identity.user.openshift.io "my_htpasswd_provider:<username>" deleted
7.1.8. 웹 콘솔을 사용하여 ID 공급자 구성
CLI 대신 웹 콘솔을 통해 ID 공급자(IDP)를 구성합니다.
사전 요구 사항
- 웹 콘솔에 클러스터 관리자로 로그인해야 합니다.
절차
-
Administration
Cluster Settings으로 이동합니다. - Configuration 탭에서 OAuth 를 클릭합니다.
- ID 공급자 섹션의 추가 드롭다운 메뉴에서 ID 공급자를 선택합니다.
기존 IDP를 덮어쓰지 않고 웹 콘솔을 통해 여러 IDP를 지정할 수 있습니다.