17장. LDAP 그룹 동기화
관리자는 그룹을 사용하여 사용자를 관리하고 권한을 변경하며 협업을 개선할 수 있습니다. 조직에서 이미 사용자 그룹을 생성하여 LDAP 서버에 저장했을 수 있습니다. OpenShift Container Platform은 이러한 LDAP 레코드를 내부 OpenShift Container Platform 레코드와 동기화하므로 한 곳에서 그룹을 관리할 수 있습니다. OpenShift Container Platform은 현재 그룹 멤버십을 정의하는 RFC 2307, Active Directory, 보강된 Active Directory라는 세 가지 공통 스키마를 사용하여 LDAP 서버와 그룹의 동기화를 지원합니다.
LDAP 구성에 대한 자세한 내용은 LDAP ID 공급자 구성을 참조하십시오.
그룹을 동기화하려면 cluster-admin
권한이 있어야 합니다.
17.1. LDAP 동기화 구성 정보
LDAP 동기화를 실행하려면 동기화 구성 파일이 필요합니다. 이 파일에는 다음과 같은 LDAP 클라이언트 구성 세부 사항이 있습니다.
- LDAP 서버 연결에 필요한 구성
- LDAP 서버에서 사용되는 스키마에 종속된 동기화 구성 옵션
- OpenShift Container Platform 그룹 이름을 LDAP 서버의 그룹에 매핑하는 관리자 정의 이름 매핑 목록
구성 파일의 형식은 사용 중인 스키마(RFC 2307, Active Directory 또는 보강된 Active Directory)에 따라 다릅니다.
- LDAP 클라이언트 구성
- 구성의 LDAP 클라이언트 구성 섹션에서는 LDAP 서버에 대한 연결을 정의합니다.
구성의 LDAP 클라이언트 구성 섹션에서는 LDAP 서버에 대한 연결을 정의합니다.
LDAP 클라이언트 구성
url: ldap://10.0.0.0:389 1 bindDN: cn=admin,dc=example,dc=com 2 bindPassword: password 3 insecure: false 4 ca: my-ldap-ca-bundle.crt 5
- 1
- 연결 프로토콜, 데이터베이스를 호스팅하는 LDAP 서버의 IP 주소, 연결할 포트로
scheme://host:port
형식으로 되어 있습니다. - 2
- 바인딩 DN으로 사용할 선택적 고유 이름(DN)입니다. OpenShift Container Platform에서는 동기화 작업을 위한 항목을 검색하는 데 높은 권한이 필요한 경우 이 고유 이름을 사용합니다.
- 3
- 바인딩에 사용할 선택적 암호입니다. OpenShift Container Platform에서는 동기화 작업을 위한 항목을 검색하는 데 높은 권한이 필요한 경우 이 암호를 사용합니다. 이 값은 환경 변수, 외부 파일 또는 암호화된 파일로 제공될 수도 있습니다.
- 4
false
인 경우 보안 LDAP(ldaps://
) URL이 TLS를 사용하여 연결되고 안전하지 않은 LDAP(ldap://
) URL은 TLS로 업그레이드됩니다.true
인 경우 서버에 TLS 연결이 이루어지지 않으며ldaps://
URL 스키마를 사용할 수 없습니다.- 5
- 구성된 URL에 대한 서버 인증서의 유효성을 확인하는 데 사용할 인증서 번들입니다. 비어있는 경우 OpenShift Container Platform은 시스템에서 신뢰하는 루트를 사용합니다.
insecure
가false
로 설정된 경우에만 적용됩니다.
- LDAP 쿼리 정의
- 동기화 구성은 동기화에 필요한 항목에 대한 LDAP 쿼리 정의로 구성됩니다. LDAP 쿼리의 특정 정의는 LDAP 서버에 멤버십 정보를 저장하는 데 사용하는 스키마에 따라 다릅니다.
LDAP 쿼리 정의
baseDN: ou=users,dc=example,dc=com 1 scope: sub 2 derefAliases: never 3 timeout: 0 4 filter: (objectClass=person) 5 pageSize: 0 6
- 1
- 모든 검색이 시작되는 디렉터리 분기의 DN(고유 이름)입니다. 디렉터리 트리의 최상위를 지정해야 하지만 디렉터리의 하위 트리를 지정할 수도 있습니다.
- 2
- 검색 범위입니다. 유효한 값은
base
,one
또는sub
입니다. 값이 정의되지 않은 경우sub
범위로 가정됩니다. 범위 옵션에 대한 설명은 아래 표를 참조하십시오. - 3
- LDAP 트리의 별칭에 관한 검색 동작입니다. 유효한 값은
never
,search
,base
또는always
입니다. 값이 정의되지 않은 경우 기본값은always
역참조 별칭으로 설정됩니다. 역참조 동작에 대한 설명은 아래 표를 참조하십시오. - 4
- 클라이언트에서 검색할 수 있는 시간 제한(초)입니다. 값이
0
이면 클라이언트 쪽 제한이 적용되지 않습니다. - 5
- 유효한 LDAP 검색 필터입니다. 정의되지 않은 경우 기본값은
(objectClass=*)
입니다. - 6
- 서버 응답 페이지의 최대 크기 옵션으로, LDAP 항목으로 측정합니다.
0
으로 설정하면 응답 페이지에 크기 제한이 없습니다. 클라이언트 또는 서버에서 기본적으로 허용하는 것보다 쿼리에서 더 많은 항목을 반환하는 경우, 페이징 크기를 설정해야 합니다.
LDAP 검색 범위 | 설명 |
---|---|
| 쿼리의 기본 DN에 의해 지정된 오브젝트만 고려합니다. |
| 쿼리의 기본 DN과 동일한 수준의 트리에 있는 모든 오브젝트를 고려합니다. |
| 쿼리에 대해 제공된 기본 DN을 기반으로 하는 전체 하위 트리를 고려합니다. |
역참조 행동 | 설명 |
---|---|
| LDAP 트리에 있는 별칭을 역참조하지 않도록 합니다. |
| 검색하는 동안 역참조 별칭만 발견되었습니다. |
| 기본 오브젝트를 찾는 동안 별칭만 역참조합니다. |
| 항상 LDAP 트리에 있는 모든 별칭을 역참조합니다. |
- 사용자 정의 이름 매핑
- 사용자 정의 이름 매핑은 OpenShift Container Platform 그룹의 이름을 LDAP 서버에서 그룹을 식별하는 고유 식별자에 명시적으로 매핑합니다. 매핑에서는 일반 YAML 구문을 사용합니다. 사용자 정의 매핑은 LDAP 서버의 모든 그룹에 대한 항목을 포함하거나 그룹의 하위 집합만 포함할 수 있습니다. LDAP 서버에 사용자 정의 이름 매핑이 없는 그룹이 있는 경우, 동기화 중 기본 동작은 OpenShift Container Platform 그룹 이름으로 지정된 속성을 사용하는 것입니다.
사용자 정의 이름 매핑
groupUIDNameMapping: "cn=group1,ou=groups,dc=example,dc=com": firstgroup "cn=group2,ou=groups,dc=example,dc=com": secondgroup "cn=group3,ou=groups,dc=example,dc=com": thirdgroup
17.1.1. RFC 2307 구성 파일 정보
RFC 2307 스키마를 사용하려면 사용자 항목 및 그룹 항목에 대한 LDAP 쿼리 정의와 내부 OpenShift Container Platform 레코드에서 해당 항목을 표시하는 데 사용할 속성을 제공해야 합니다.
명확히 하기 위해, OpenShift Container Platform에서 생성한 그룹의 경우 사용자용 필드 또는 관리자용 필드에 가급적 고유 이름 이외의 속성을 사용해야 합니다. 예를 들면 이메일로 OpenShift Container Platform 그룹의 사용자를 구분하고, 그룹 이름을 공통 이름으로 사용합니다. 다음 구성 파일에서는 이러한 관계를 생성합니다.
사용자 정의 이름 매핑을 사용하는 경우에는 구성 파일이 다릅니다.
RFC 2307 스키마를 사용하는 LDAP 동기화 구성: rfc2307_config.yaml
kind: LDAPSyncConfig apiVersion: v1 url: ldap://LDAP_SERVICE_IP:389 1 insecure: false 2 rfc2307: groupsQuery: baseDN: "ou=groups,dc=example,dc=com" scope: sub derefAliases: never pageSize: 0 groupUIDAttribute: dn 3 groupNameAttributes: [ cn ] 4 groupMembershipAttributes: [ member ] 5 usersQuery: baseDN: "ou=users,dc=example,dc=com" scope: sub derefAliases: never pageSize: 0 userUIDAttribute: dn 6 userNameAttributes: [ mail ] 7 tolerateMemberNotFoundErrors: false tolerateMemberOutOfScopeErrors: false
- 1
- 이 그룹의 레코드가 저장된 LDAP 서버의 IP 주소 및 호스트입니다.
- 2
false
인 경우 보안 LDAP(ldaps://
) URL이 TLS를 사용하여 연결되고 안전하지 않은 LDAP(ldap://
) URL은 TLS로 업그레이드됩니다.true
인 경우 서버에 TLS 연결이 이루어지지 않으며ldaps://
URL 스키마를 사용할 수 없습니다.- 3
- LDAP 서버에서 그룹을 고유하게 식별하는 속성입니다.
groupUIDAttribute
로 DN을 사용할 때는groupsQuery
필터를 지정할 수 없습니다. 세분화된 필터링의 경우 허용 목록/차단 목록 메서드를 사용하십시오. - 4
- 그룹 이름으로 사용할 속성입니다.
- 5
- 멤버십 정보를 저장하는 그룹의 속성입니다.
- 6
- LDAP 서버에서 사용자를 고유하게 식별하는 속성입니다. userUIDAttribute로 DN을 사용할 때는
usersQuery
필터를 지정할 수 없습니다. 세분화된 필터링의 경우 허용 목록/차단 목록 메서드를 사용하십시오. - 7
- OpenShift Container Platform 그룹 레코드에서 사용자 이름으로 사용할 속성입니다.
17.1.2. Active Directory 구성 파일 정보
Active Directory 스키마를 사용하려면 사용자 항목에 대한 LDAP 쿼리 정의와 내부 OpenShift Container Platform 그룹 레코드에서 해당 항목을 표시하는 속성을 제공해야 합니다.
명확히 하기 위해, OpenShift Container Platform에서 생성한 그룹의 경우 사용자용 필드 또는 관리자용 필드에 가급적 고유 이름 이외의 속성을 사용해야 합니다. 예를 들면 OpenShift Container Platform 그룹의 사용자는 이메일로 구분하지만, 그룹 이름은 LDAP 서버의 그룹 이름에 따라 정의합니다. 다음 구성 파일에서는 이러한 관계를 생성합니다.
Active Directory 스키마를 사용하는 LDAP 동기화 구성: active_directory_config.yaml
kind: LDAPSyncConfig apiVersion: v1 url: ldap://LDAP_SERVICE_IP:389 activeDirectory: usersQuery: baseDN: "ou=users,dc=example,dc=com" scope: sub derefAliases: never filter: (objectclass=person) pageSize: 0 userNameAttributes: [ mail ] 1 groupMembershipAttributes: [ memberOf ] 2
17.1.3. 보강된 Active Directory 구성 파일 정보
보강된 Active Directory 스키마를 사용하려면 사용자 항목 및 그룹 항목에 대한 LDAP 쿼리 정의와 내부 OpenShift Container Platform 그룹 레코드에서 해당 항목을 표시하는 속성을 제공해야 합니다.
명확히 하기 위해, OpenShift Container Platform에서 생성한 그룹의 경우 사용자용 필드 또는 관리자용 필드에 가급적 고유 이름 이외의 속성을 사용해야 합니다. 예를 들면 이메일로 OpenShift Container Platform 그룹의 사용자를 구분하고, 그룹 이름을 공통 이름으로 사용합니다. 다음 구성 파일에서는 이러한 관계를 생성합니다.
보강된 Active Directory 스키마를 사용하는 LDAP 동기화 구성: augmented_active_directory_config.yaml
kind: LDAPSyncConfig apiVersion: v1 url: ldap://LDAP_SERVICE_IP:389 augmentedActiveDirectory: groupsQuery: baseDN: "ou=groups,dc=example,dc=com" scope: sub derefAliases: never pageSize: 0 groupUIDAttribute: dn 1 groupNameAttributes: [ cn ] 2 usersQuery: baseDN: "ou=users,dc=example,dc=com" scope: sub derefAliases: never filter: (objectclass=person) pageSize: 0 userNameAttributes: [ mail ] 3 groupMembershipAttributes: [ memberOf ] 4