13.3.8. 기본 인증(원격)
기본 인증은 사용자가 원격 ID 공급자에 대해 검증된 인증 정보를 사용하여 OpenShift Container Platform에 로그인할 수 있는 일반 백엔드 통합 메커니즘입니다.
기본 인증은 일반적이므로 이 ID 공급자를 고급 인증 구성에 사용할 수 있습니다. LDAP 페일오버를 구성하거나 컨테이너화된 기본 인증 리포지토리를 다른 고급 원격 기본 인증 구성의 시작점으로 사용할 수 있습니다.
기본 인증은 원격 서버에 대한 HTTPS 연결을 통해 잠재적인 사용자 ID 및 암호 스누핑 및 중간자 공격을 방지해야 합니다.
BasicAuthPasswordIdentityProvider
가 구성된 상태에서 사용자는 사용자 이름과 암호를 OpenShift Container Platform으로 전송한 다음, server-to-server 요청을 만들어 자격 증명을 기본 인증 헤더로 전달하여 원격 서버에 대해 해당 자격 증명의 유효성을 검사합니다. 이를 위해서는 사용자가 로그인하는 동안 사용자의 자격 증명을 OpenShift Container Platform에 보내야 합니다.
이 작업은 사용자 이름/암호 로그인 메커니즘에서만 작동하며, OpenShift Container Platform에서 원격 인증 서버에 네트워크를 요청할 수 있어야 합니다.
identityProviders
스탠자에서 BasicAuthPasswordIdentityProvider
를 설정하여 서버 대 서버 기본 인증 요청을 사용하여 원격 서버에 대해 사용자 이름과 암호를 검증합니다. 사용자 이름과 암호는 기본 인증으로 보호되고 JSON을 반환하는 원격 URL과 비교하여 유효성을 검사합니다.
401
응답은 인증 실패를 나타냅니다.
200
이외의 상태 또는 비어 있지 않은 "error" 키는 오류를 나타냅니다.
{"error":"Error message"}
sub
(제목) 키가 200
인 태는 실행 성공을 나타냅니다.
{"sub":"userid"} 1
- 1
- 제목은 인증된 사용자에게 고유해야 하며 수정할 수 없어야 합니다.
성공적인 응답은 선택적으로 다음과 같은 추가 데이터를 제공할 수 있습니다.
name
키를 사용하는 표시 이름. 예를 들면 다음과 같습니다.{"sub":"userid", "name": "User Name", ...}
email
키를 사용하는 이메일 주소. 예를 들면 다음과 같습니다.{"sub":"userid", "email":"user@example.com", ...}
preferred_username
키를 사용하는 기본 사용자 이름. 변경 불가능한 고유 주체가 데이터베이스 키 또는 UID이고 더 읽기 쉬운 이름이 존재하는 경우 유용합니다. 인증된 ID에 대해 OpenShift Container Platform 사용자를 프로비저닝할 때 힌트로 사용됩니다. 예를 들면 다음과 같습니다.{"sub":"014fbff9a07c", "preferred_username":"bob", ...}
13.3.8.1. 마스터에서 인증 구성
다음과 같은 사항이 있을 수 있습니다.
Openshift 설치를 이미 완료한 다음 /etc/origin/master/master-config.yaml 파일을 새 디렉토리(예:)로 복사합니다.
$ mkdir basicauthconfig; cp master-config.yaml basicauthconfig
OpenShift Container Platform을 아직 설치하지 않은 다음 OpenShift Container Platform API 서버를 시작하여 (미래) OpenShift Container Platform 마스터의 호스트 이름과 start 명령으로 생성한 구성 파일을 저장할 디렉터리를 지정합니다.
$ openshift start master --public-master=<apiserver> --write-config=<directory>
예를 들면 다음과 같습니다.
$ openshift start master --public-master=https://myapiserver.com:8443 --write-config=basicauthconfig
참고Ansible을 사용하여 설치하는 경우
identityProvider
구성을 Ansible 플레이북에 추가해야 합니다. 다음 단계를 사용하여 Ansible을 사용하여 설치한 후 수동으로 구성을 수정하는 경우 설치 도구 또는 업그레이드를 다시 실행할 때마다 수정 사항이 손실됩니다.
새 master-config.yaml 파일의
identityProviders
스탠자를 편집하고BasicAuthPasswordIdentityProvider
구성을 복사하여 기존 스탠자를 교체합니다.oauthConfig: ... identityProviders: - name: my_remote_basic_auth_provider 1 challenge: true 2 login: true 3 mappingMethod: claim 4 provider: apiVersion: v1 kind: BasicAuthPasswordIdentityProvider url: https://www.example.com/remote-idp 5 ca: /path/to/ca.file 6 certFile: /path/to/client.crt 7 keyFile: /path/to/client.key 8
- 1
- 이 공급자 이름은 반환된 사용자 ID 앞에 접두어로 지정되어 ID 이름을 형성합니다.
- 2
true인
경우 웹 이외의 클라이언트(예: CLI)의 인증되지 않은 토큰 요청이 이 프로바이더의WWW-Authenticate 챌린지
헤더가 전송됩니다.- 3
true인
경우 웹 콘솔과 같은 웹 클라이언트의 인증되지 않은 토큰 요청은 이 프로바이더가 지원하는 로그인 페이지로 리디렉션됩니다.- 4
- 위에서 설명한 대로 이 프로바이더의 ID와 사용자 오브젝트 간의 매핑 설정 방법을 제어합니다.
- 5
- 기본 인증 헤더에서 인증 정보를 수락하는 URL.
- 6
- 선택 사항: 구성된 URL에 대한 서버 인증서의 유효성을 검사하는 데 사용할 인증서 번들입니다.
- 7
- 선택 사항: 구성된 URL에 요청할 때 제공할 클라이언트 인증서입니다.
- 8
- 클라이언트 인증서의 키입니다.
certFile
이 지정된 경우 필수 항목입니다.
identityProviders
스탠자를 다음과 같이 수정합니다.-
공급자
이름을
배포와 관련된 고유한 이름으로 설정합니다. 이 이름은 반환된 사용자 ID 앞에 접두어로 지정되어 ID 이름을 형성합니다. -
필요한 경우
mappingMethod
를 설정하여 공급자의 ID와 사용자 오브젝트 간의 매핑 설정 방법을 제어합니다. -
기본 인증 헤더에서 자격 증명을 수락하는 서버에 연결하는 데 사용할 HTTPS
URL
을 지정합니다. -
선택적으로 구성된 URL에 대한 서버 인증서의 유효성을 검사하기 위해 사용할 인증서 번들로
ca
를 설정하거나 시스템에서 신뢰할 수 있는 루트를 사용하도록 비워 둡니다. -
선택적으로 구성된 URL에 요청할 때
certFile
을 클라이언트 인증서로 제거하거나 설정합니다. -
certFile
이 지정된 경우keyFile
을 클라이언트 인증서의 키로 설정해야 합니다.
- 변경 사항을 저장하고 파일을 종료합니다.
방금 수정한 구성 파일을 지정하여 OpenShift Container Platform API 서버를 시작합니다.
$ openshift start master --config=<path/to/modified/config>/master-config.yaml
구성되면 OpenShift Container Platform 웹 콘솔에 로그인하는 모든 사용자에게 기본 인증 자격 증명을 사용하여 로그인하라는 메시지가 표시됩니다.