7.3. LDAP ID 공급자 구성
단순 바인드 인증을 사용하여 LDAPv3 서버에 대해 사용자 이름 및 암호의 유효성을 확인하도록 ldap
ID 공급자를 구성합니다.
7.3.1. OpenShift Container Platform의 ID 공급자 정보
기본적으로는 kubeadmin
사용자만 클러스터에 있습니다. ID 공급자를 지정하려면 해당 ID 공급자를 설명하는 CR(사용자 정의 리소스)을 생성하여 클러스터에 추가해야 합니다.
/
, :
, %
를 포함하는 OpenShift Container Platform 사용자 이름은 지원되지 않습니다.
7.3.2. LDAP 인증 정보
LDAP 디렉터리는 인증 중 제공된 사용자 이름과 일치하는 항목으로 검색됩니다. 고유한 일치 항목이 1개 발견되는 경우 해당 항목의 고유 이름(DN)과 제공된 암호를 사용하여 단순 바인딩이 시도됩니다.
다음 단계를 수행합니다.
-
구성된
URL
의 속성 및 필터를 사용자가 입력한 사용자 이름과 결합하여 검색 필터를 생성합니다. - 생성된 필터를 사용하여 디렉터리를 검색합니다. 검색에서 정확히 하나의 항목을 반환하지 않으면 액세스를 거부합니다.
- 검색에서 검색된 항목의 DN과 사용자 제공 암호를 사용하여 LDAP 서버에 바인딩합니다.
- 바인딩에 실패하면 액세스를 거부합니다.
- 바인딩이 성공하면 구성된 속성을 ID, 이메일 주소, 표시 이름, 기본 사용자 이름으로 사용하여 ID를 빌드합니다.
구성된 URL
은 RFC 2255 URL이며, 사용할 LDAP 호스트 및 검색 매개변수를 지정합니다. URL 구문은 다음과 같습니다.
ldap://host:port/basedn?attribute?scope?filter
이 URL의 경우
URL 구성 요소 | 설명 |
---|---|
|
일반 LDAP의 경우 |
|
LDAP 서버의 이름 및 포트입니다. ldap의 경우 기본값은 |
| 모든 검색을 시작해야 하는 디렉터리 분기의 DN입니다. 적어도 디렉터리 트리의 맨 위에 있어야 하지만 디렉터리에 하위 트리를 지정할 수도 있습니다. |
|
검색할 속성입니다. RFC 2255에서는 쉼표로 구분된 속성 목록을 사용할 수 있지만 제공되는 속성 수와 관계없이 첫 번째 속성만 사용됩니다. 속성이 제공되지 않는 경우 기본값은 |
|
검색 범위입니다. |
|
유효한 LDAP 검색 필터입니다. 제공하지 않는 경우 기본값은 |
검색을 수행할 때 속성, 필터, 제공된 사용자 이름을 결합하여 다음과 같은 검색 필터가 생성됩니다.
(&(<filter>)(<attribute>=<username>))
예를 들어 다음과 같은 URL을 살펴보십시오.
ldap://ldap.example.com/o=Acme?cn?sub?(enabled=true)
클라이언트가 사용자 이름 bob
을 사용하여 연결을 시도하는 경우 결과 검색 필터는 (&(enabled=true)(cn=bob))
입니다.
LDAP 디렉터리에서 검색에 인증이 필요한 경우 항목을 검색하는 데 사용할 bindDN
및 bindPassword
를 지정하십시오.
7.3.3. LDAP 시크릿 생성
ID 공급자를 사용하려면 bindPassword
필드가 포함된 OpenShift Container Platform Secret
오브젝트를 정의해야 합니다.
프로세스
bindPassword
필드가 포함된Secret
오브젝트를 생성합니다.$ oc create secret generic ldap-secret --from-literal=bindPassword=<secret> -n openshift-config 1
- 1
--from-literal
인수에 대한 bindPassword를 포함하는 시크릿 키를bindPassword
라고 해야 합니다.
작은 정보다음 YAML을 적용하여 시크릿을 생성할 수도 있습니다.
apiVersion: v1 kind: Secret metadata: name: ldap-secret namespace: openshift-config type: Opaque data: bindPassword: <base64_encoded_bind_password>
7.3.4. 구성 맵 생성
ID 공급자는 openshift-config
네임스페이스에서 OpenShift Container Platform ConfigMap
오브젝트를 사용하여 인증 기관 번들을 포함합니다. 이들은 주로 ID 공급자에 필요한 인증서 번들을 포함하는 데 사용됩니다.
절차
다음 명령을 사용하여 인증 기관을 포함하는 OpenShift Container Platform
ConfigMap
오브젝트를 정의합니다. 인증 기관은ConfigMap
오브젝트의ca.crt
키에 저장해야 합니다.$ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
작은 정보다음 YAML을 적용하여 구성 맵을 만들 수 있습니다.
apiVersion: v1 kind: ConfigMap metadata: name: ca-config-map namespace: openshift-config data: ca.crt: | <CA_certificate_PEM>
7.3.5. LDAP CR 샘플
다음 CR(사용자 정의 리소스)에는 LDAP ID 공급자에 대한 매개변수 및 허용 가능한 값이 표시되어 있습니다.
LDAP CR
apiVersion: config.openshift.io/v1 kind: OAuth metadata: name: cluster spec: identityProviders: - name: ldapidp 1 mappingMethod: claim 2 type: LDAP ldap: attributes: id: 3 - dn email: 4 - mail name: 5 - cn preferredUsername: 6 - uid bindDN: "" 7 bindPassword: 8 name: ldap-secret ca: 9 name: ca-config-map insecure: false 10 url: "ldaps://ldaps.example.com/ou=users,dc=acme,dc=com?uid" 11
- 1
- 이 공급자 이름은 반환된 사용자 ID 앞에 접두어로 지정되어 ID 이름을 형성합니다.
- 2
- 이 공급자의 ID와
User
오브젝트 간 매핑 설정 방법을 제어합니다. - 3
- ID로 사용할 속성 목록입니다. 비어 있지 않은 첫 번째 속성이 사용됩니다. 하나 이상의 속성이 필요합니다. 나열된 어떤 속성에도 값이 없는 경우 인증이 실패합니다. 정의된 속성은 raw로 검색되므로 바이너리 값을 사용할 수 있습니다.
- 4
- 이메일 주소로 사용할 속성 목록입니다. 비어 있지 않은 첫 번째 속성이 사용됩니다.
- 5
- 표시 이름으로 사용할 속성 목록입니다. 비어 있지 않은 첫 번째 속성이 사용됩니다.
- 6
- 이 ID에 대해 사용자를 프로비저닝할 때 기본 사용자 이름으로 사용할 속성 목록입니다. 비어 있지 않은 첫 번째 속성이 사용됩니다.
- 7
- 검색 단계에서 바인딩하는 데 사용할 선택적 DN입니다.
bindPassword
가 정의된 경우 설정해야 합니다. - 8
- 바인딩 암호가 포함된 OpenShift Container Platform
Secret
오브젝트에 대한 선택적 참조입니다.bindDN
이 정의된 경우 설정해야 합니다. - 9
- 선택 사항: OpenShift Container Platform
ConfigMap
오브젝트에 대한 참조로, 구성된 URL에 대한 서버 인증서의 유효성 확인에 사용할 PEM 인코딩 인증 기관 번들이 포함됩니다.insecure
가false
인 경우에만 사용됩니다. - 10
true
인 경우 서버에 TLS 연결이 이루어지지 않습니다.false
인 경우ldaps://
URL은 TLS를 사용하여 연결되고,ldap://
URL은 TLS로 업그레이드됩니다.ldaps://
URL을 사용 중인 경우 이 URL은 항상 TLS를 사용하여 연결을 시도하므로false
로 설정해야 합니다.- 11
- 사용할 LDAP 호스트 및 검색 매개변수를 지정하는 RFC 2255 URL입니다.
LDAP 통합을 위해 사용자를 허용 목록에 추가하려면 lookup
매핑 방법을 사용하십시오. LDAP에서 로그인하려면 클러스터 관리자가 각 LDAP 사용자에 대한 Identity
오브젝트 및 User
오브젝트를 생성해야 합니다.
추가 리소스
-
모든 ID 공급자에 공통된
mappingMethod
와 같은 매개변수에 대한 자세한 내용은 ID 공급자 매개변수를 참조하십시오.
7.3.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