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)과 제공된 암호를 사용하여 단순 바인딩이 시도됩니다.

다음 단계를 수행합니다.

  1. 구성된 URL의 속성 및 필터를 사용자가 입력한 사용자 이름과 결합하여 검색 필터를 생성합니다.
  2. 생성된 필터를 사용하여 디렉터리를 검색합니다. 검색에서 정확히 하나의 항목을 반환하지 않으면 액세스를 거부합니다.
  3. 검색에서 검색된 항목의 DN과 사용자 제공 암호를 사용하여 LDAP 서버에 바인딩합니다.
  4. 바인딩에 실패하면 액세스를 거부합니다.
  5. 바인딩이 성공하면 구성된 속성을 ID, 이메일 주소, 표시 이름, 기본 사용자 이름으로 사용하여 ID를 빌드합니다.

구성된 URL은 RFC 2255 URL이며, 사용할 LDAP 호스트 및 검색 매개변수를 지정합니다. URL 구문은 다음과 같습니다.

ldap://host:port/basedn?attribute?scope?filter

이 URL의 경우

URL 구성 요소설명

ldap

일반 LDAP의 경우 ldap 문자열을 사용합니다. 보안 LDAP(LDAPS)의 경우 대신 ldaps를 사용합니다.

host:port

LDAP 서버의 이름 및 포트입니다. ldap의 경우 기본값은 localhost:389 이고 LDAPS의 경우 localhost:636입니다.

basedn

모든 검색을 시작해야 하는 디렉터리 분기의 DN입니다. 적어도 디렉터리 트리의 맨 위에 있어야 하지만 디렉터리에 하위 트리를 지정할 수도 있습니다.

attribute

검색할 속성입니다. RFC 2255에서는 쉼표로 구분된 속성 목록을 사용할 수 있지만 제공되는 속성 수와 관계없이 첫 번째 속성만 사용됩니다. 속성이 제공되지 않는 경우 기본값은 uid를 사용하는 것입니다. 사용할 하위 트리의 모든 항목에서 고유한 속성을 선택하는 것이 좋습니다.

scope

검색 범위입니다. one 또는 sub일 수 있습니다. 범위가 제공되지 않는 경우 기본값은 sub 범위를 사용하는 것입니다.

filter

유효한 LDAP 검색 필터입니다. 제공하지 않는 경우 기본값은 (objectClass=*)입니다.

검색을 수행할 때 속성, 필터, 제공된 사용자 이름을 결합하여 다음과 같은 검색 필터가 생성됩니다.

(&(<filter>)(<attribute>=<username>))

예를 들어 다음과 같은 URL을 살펴보십시오.

ldap://ldap.example.com/o=Acme?cn?sub?(enabled=true)

클라이언트가 사용자 이름 bob을 사용하여 연결을 시도하는 경우 결과 검색 필터는 (&(enabled=true)(cn=bob))입니다.

LDAP 디렉터리에서 검색에 인증이 필요한 경우 항목을 검색하는 데 사용할 bindDNbindPassword를 지정하십시오.

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 인코딩 인증 기관 번들이 포함됩니다. insecurefalse인 경우에만 사용됩니다.
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 오브젝트를 생성해야 합니다.

추가 리소스

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

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

사전 요구 사항

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

절차

  1. 정의된 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. 이 경우 이 경고를 무시해도 됩니다.

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

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

    $ oc whoami