사용자 관리
Keycloak을 ID 공급자로 사용하고 LDAP 또는 Active Directory 페더레이션 또는 로컬 관리 계정을 통해 IBM Bob 온프레미스의 사용자 접근을 관리합니다.
IBM Bob 온프레미스에는 사용자 인증 및 접근 관리를 위한 Keycloak ID 공급자가 포함되어 있습니다. 사용자는 기존 LDAP 또는 Active Directory 환경에서 페더레이션하거나 Keycloak에서 직접 생성할 수 있습니다. 프로비저닝 방법에 관계없이 사용자는 서비스에 접근하기 전에 적절한 Bob 역할을 할당받아야 합니다.
개요
| 개념 | 설명 |
|---|---|
| ID 공급자 | Keycloak — Bob 오퍼레이터가 배포 및 관리합니다. |
| 사용자 소스 | 사용자를 Keycloak에서 직접 생성하거나 LDAP 또는 Active Directory 서비스에서 페더레이션할 수 있습니다. |
| 인증 | 사용자는 OpenID Connect(OIDC)를 사용하여 Keycloak을 통해 인증합니다. Keycloak은 bob-authn이 Bob 베어러 토큰으로 교환하는 수명이 짧은 인증 코드를 발급합니다. |
| 권한 부여 | Bob 기능에 대한 접근은 Keycloak 내에서 사용자에게 할당된 역할에 의해 제어됩니다. |
| 구성 방법 | LDAP 통합은 bobctl configure-idp 명령을 사용하여 BobLDAP 커스텀 리소스를 통해 관리됩니다. |
지원되는 LDAP 디렉터리 유형
Bob 온프레미스는 모든 LDAPv3 호환 디렉터리 서비스를 지원합니다. LDAP 구성의 vendor 매개변수는 선택한 디렉터리 유형에 대한 프로토콜별 설정을 정의하는 Keycloak 공급자 템플릿을 결정합니다.
vendor 값 | 디렉터리 유형 |
|---|---|
other | OpenLDAP 및 기타 일반 LDAPv3 호환 디렉터리 서비스 |
ad | Microsoft Active Directory |
rhds | Red Hat Directory Server |
tivoli | IBM Security Directory Server (이전 명칭: Tivoli Directory Server) |
edirectory | NetIQ / Micro Focus eDirectory |
인증 및 페더레이션 아키텍처
사용자가 로그인하면 Bob은 인증을 처리하는 Keycloak으로 요청을 전달합니다. 모든 사용자는 Keycloak을 통해 인증합니다. LDAP 페더레이션은 선택 사항이며 구성된 경우에만 활성화됩니다.
- LDAP 페더레이션 활성화: Keycloak은 LDAP 디렉터리에 대해 직접 사용자를 인증합니다. 사용자 비밀번호는 LDAP 디렉터리에 유지되며 Keycloak에 저장되지 않습니다.
- LDAP 페더레이션 비활성화: Keycloak은 로컬 Keycloak 사용자 저장소를 사용하여 사용자를 인증합니다.
인증 흐름
- 사용자가 자격 증명을 입력합니다.
- Keycloak이 사용자를 인증합니다.
- Keycloak이 수명이 짧은 인증 코드를 발급합니다.
bob-authn이 인증 코드를 Bob 베어러 토큰으로 교환합니다.- 이후 모든 API 요청은 Bob이 발급한 토큰을 사용합니다.
사용자 동기화 동작
Bob 온프레미스는 LDAP 구성의 userSync.enabled 설정을 통해 구성되는 두 가지 동기화 모드를 지원합니다:
| 모드 | userSync.enabled | 동작 |
|---|---|---|
| 온디맨드 | false (기본값) | 사용자가 처음으로 성공적으로 로그인할 때만 Keycloak으로 가져오므로 초기 디렉터리 스캔이 필요하지 않습니다. 이 옵션은 매우 큰 디렉터리 환경에 권장됩니다. |
| 즉시 동기화 (권장) | true | LDAP 공급자가 등록되면 일회성 전체 동기화가 디렉터리의 모든 사용자를 가져옵니다. 초기 가져오기 후 Keycloak은 5분마다 자동으로 사용자 업데이트를 동기화합니다. 이 접근 방식은 모든 사용자가 즉시 사용 가능하도록 보장하며, adminEmails를 통해 지정된 관리자 계정은 사용자가 먼저 로그인하지 않아도 프로비저닝할 수 있습니다. |
온디맨드 동기화
모든 사용자를 즉시 가져오는 것이 현실적이지 않은 매우 큰 디렉터리에 이 모드를 사용합니다.
첫 번째 인증 시도 중:
- 사용자를 Keycloak으로 가져옵니다.
- SCIM을 통해 사용자가 Bob에 프로비저닝됩니다.
- 프로비저닝 지연 시간으로 인해 첫 번째 로그인 시도가 실패합니다.
- 프로비저닝이 완료된 후 사용자가 성공적으로 로그인할 수 있습니다.
즉시 동기화
대부분의 배포에 권장됩니다. 동기화가 완료된 후 모든 사용자를 즉시 사용할 수 있으며 프로비저닝을 위해 로그인할 필요가 없습니다.
동기화 주기는 현재 5분으로 고정되어 있습니다.
SCIM으로 사용자 동기화
IBM Bob 온프레미스는 Keycloak에 내장된 커스터마이즈된 SCIM 2.0 플러그인을 사용하여 Keycloak과 Bob 간에 사용자 계정을 동기화합니다. Bob 오퍼레이터가 이 통합을 자동으로 구성하므로 추가 구성이 필요하지 않습니다.
사용자 동기화 작동 방식
Keycloak에서 사용자 라이프사이클 이벤트가 발생하면 SCIM 플러그인이 해당 이벤트를 bob-admin 서비스로 전송합니다. 그러면 Bob이 이벤트를 기반으로 사용자 접근 및 프로필 정보를 업데이트합니다.
이 동기화는 LDAP 페더레이션 사용자와 Keycloak 관리 콘솔에서 직접 생성된 사용자를 포함하여 Keycloak이 관리하는 모든 사용자에게 적용됩니다.
| 사용자 이벤트 | Bob 작업 |
|---|---|
| 사용자 생성 또는 첫 로그인 | 사용자를 프로비저닝하고 Bob에 대한 접근 권한을 부여합니다 |
| 사용자 업데이트 | 프로필 변경 사항을 동기화합니다 |
| LDAP에서 사용자 제거 | 사용자 데이터를 유지하면서 Bob에 대한 접근을 취소합니다 |
LDAP에서 사용자를 제거하면 Bob에 대한 접근이 취소되지만 데이터가 삭제되지는 않습니다. 사용자가 디렉터리에 다시 추가되면 접근이 복원되고 이전에 생성된 작업을 계속 사용할 수 있습니다.
동기화 확인
Bob은 현재 SCIM 동기화가 활성화되어 있음을 확인하는 상태 조건이나 상태 확인을 제공하지 않습니다. 프로비저닝이 작동하는지 확인하려면 테스트 사용자를 생성하거나 가져오고 첫 로그인 후 또는 초기 userSync 가져오기 후 Bob에 사용자가 나타나는지 확인합니다.
역할 및 그룹 멤버십 관리
IBM Bob은 Keycloak 그룹을 사용하여 사용자 역할을 제어합니다. Bob 오퍼레이터가 자동으로 필요한 그룹 및 역할 매핑을 생성하고 유지 관리합니다.
| Keycloak 그룹 | 부여된 Keycloak 역할 | 추가 대상 |
|---|---|---|
bob-users | bob-user | 모든 인증된 사용자는 렐름의 기본 그룹을 통해 첫 번째 성공적인 로그인 시 자동으로 추가됩니다. |
bob-admins | bob-admin | BobLDAP 구성의 adminEmails 필드에 지정된 사용자는 각 조정 주기 동안 오퍼레이터에 의해 자동으로 할당됩니다. |
관리자 접근 권한
모든 인증된 사용자는 기본 Bob 접근 권한을 받습니다.
관리자 권한을 부여하려면:
- IDP 구성 파일의
adminEmails에 사용자의 이메일 주소를 추가합니다. - 변경 사항을 적용합니다:
./bobctl configure-idp --config my-idp.yaml
관리자 권한을 취소하려면:
adminEmails에서 이메일 주소를 제거합니다.- 구성을 다시 적용합니다.
bobctl configure-idp는 Bob 관리자 접근 권한을 관리하는 유일하게 지원되는 방법입니다. adminEmails에 이메일 주소를 추가해도 사용자 계정이 생성되지는 않습니다 — 사용자는 LDAP 페더레이션 또는 직접 사용자 생성을 통해 Keycloak에 이미 존재해야 합니다.
Keycloak 관리
Bob 온프레미스에는 ID 및 접근 관리 서비스를 제공하는 Keycloak 배포가 포함됩니다. Keycloak 관리는 Bob 관리와 별개이며 각 인터페이스는 다른 목적을 제공합니다.
관리 인터페이스
| 인터페이스 | URL | 목적 |
|---|---|---|
| Keycloak 관리 콘솔 | https://bob-keycloak.<namespace>.<ingress-domain> | Keycloak 인프라, 사용자, 그룹, ID 공급자 및 페더레이션 설정을 관리합니다. |
| Bob 관리 UI | https://bob.<namespace>.<ingress-domain>/admin | Bob 사용자, 역할, 초대 및 테넌트별 설정을 관리합니다. |
Bob 오퍼레이터는 설치 중에 두 라우트를 자동으로 생성합니다.
이번 릴리스의 Bob 관리자 UI에서는 활동 로그를 사용할 수 없습니다. 서비스 로그에 접근하려면 OpenShift Container Platform 콘솔 또는 CLI에서 직접 인증 서비스(Authentication service), 권한 부여 서비스(Authorisation service) 및 관리자 서비스(Admin service)의 파드 로그를 확인하세요. 자세한 내용은 알려진 제한 사항을 참조하세요.
Keycloak 관리 콘솔 접근
클러스터에서 Keycloak 라우트를 찾으려면 다음을 실행합니다:
oc get route -n <instance-namespace> | grep keycloak클러스터 시크릿에서 초기 관리자 자격 증명을 가져옵니다:
oc get secret bob-keycloak-initial-admin \
-n <instance-namespace> \
-o jsonpath='{.data.username}' | base64 -d && echooc get secret bob-keycloak-initial-admin \
-n <instance-namespace> \
-o jsonpath='{.data.password}' | base64 -d && echobob-keycloak-initial-admin 시크릿을 수정하지 마세요. Bob 오퍼레이터는 조정 중에 이 자격 증명을 사용합니다. 저장된 자격 증명을 변경하면 오퍼레이터 관리 기능이 중단될 수 있습니다.
개인 관리자 계정이 필요한 경우 초기 관리자 자격 증명으로 로그인하고 지속적인 관리 작업을 위해 master 렐름에 별도의 사용자를 생성하세요.
로그인한 후 Keycloak 콘솔의 왼쪽 상단 모서리에 있는 렐름 선택기를 사용하여 bob 렐름으로 전환합니다. 모든 Bob 사용자, 그룹, ID 공급자 및 페더레이션 공급자는 이 렐름에서 관리됩니다.
Keycloak 렐름 이해
렐름은 자체 사용자, 자격 증명, 역할, 그룹 및 ID 공급자를 포함하는 격리된 관리 도메인입니다.
Bob 온프레미스는 두 가지 렐름을 사용합니다:
| 렐름 | 목적 |
|---|---|
| master | Keycloak 관리를 위해 예약됩니다. 이 렐름의 사용자는 Keycloak을 관리할 수 있지만 Bob에는 접근할 수 없습니다. |
| bob | 모든 Bob 사용자, 그룹, LDAP 페더레이션 공급자 및 애플리케이션 클라이언트를 포함합니다. Bob 오퍼레이터가 이 렐름을 생성하고 관리합니다. |
두 렐름은 완전히 독립적입니다. 한 렐름의 멤버십이나 권한은 다른 렐름의 리소스에 대한 접근을 부여하지 않습니다.
bob 렐름은 오퍼레이터가 관리합니다. Keycloak 콘솔을 통해 직접 변경할 수 있지만 IBM 지원은 Bob 인증 및 접근에 영향을 미치는 문제 해결에 한정됩니다.
LDAP 페더레이션 공급자 관리
bobctl configure-idp 또는 BobLDAP 커스텀 리소스를 통해 구성된 LDAP 페더레이션 공급자는 bob 렐름의 사용자 페더레이션 섹션에 표시됩니다.
Bob 오퍼레이터는 LDAP 공급자가 생성될 때 등록합니다. Keycloak 콘솔에서 직접 수행된 후속 변경 사항은 해당 BobLDAP 커스텀 리소스로 다시 동기화되지 않습니다.
일관된 구성 관리를 위해 가능하면 BobLDAP 커스텀 리소스 및 bobctl configure-idp 명령을 사용합니다.
보안 고려 사항
Keycloak을 관리할 때 다음 권장 사항을 따릅니다:
bob-keycloak-initial-admin시크릿에 대한 접근을 클러스터 관리자로 제한합니다.bob렐름에서 Bob 관리 작업을 수행합니다.master렐름은 Keycloak 인프라 관리에만 사용합니다.- 명시적으로 요구되고 지원되지 않는 한 추가 렐름이나 클라이언트를 생성하지 않습니다.
- Keycloak 콘솔에서 공급자 설정을 직접 편집하는 대신
BobLDAP리소스를 통해 LDAP 페더레이션을 관리합니다. - 초기 관리자 계정을 비상 또는 부트스트랩 계정으로 취급하고, 일상적인 관리 작업에는 전용 개인 관리자 계정을 사용합니다.
직접 Keycloak 사용자 관리
LDAP 디렉터리를 통합하지 않고 Keycloak 내에서 직접 사용자를 생성하고 관리할 수 있습니다. 이 접근 방식은 개념 증명 환경, 소규모 배포 또는 LDAP 서버를 사용할 수 없는 설치에 적합합니다. 기업 디렉터리 서비스를 이미 사용하는 프로덕션 환경의 경우 LDAP 페더레이션이 권장되는 접근 방식입니다.
사용자 추가
로컬 사용자를 생성하려면 bob 렐름의 사용자 섹션을 열고 새 사용자 계정을 생성합니다. 사용자를 저장한 후 비밀번호를 구성하고 적절한 그룹 멤버십을 할당합니다:
- 표준 접근 권한을 부여하려면 bob-users에 사용자를 추가합니다.
- 관리자 접근 권한을 부여하려면 bob-users와 bob-admins 모두에 사용자를 추가합니다.
비밀번호 관리
로컬 관리 사용자의 비밀번호는 Keycloak 관리 콘솔을 통해 관리됩니다. 사용자 레코드를 열고 자격 증명 탭을 사용하여 사용자의 비밀번호를 생성, 업데이트 또는 재설정합니다.
사용자 제거
사용자의 접근을 제거하려면 Keycloak 관리 콘솔에서 사용자 레코드를 열고 계정을 삭제하거나 비활성화합니다. 비활성화된 사용자는 더 이상 인증할 수 없지만 사용자 정보는 시스템에서 계속 사용할 수 있습니다.