-
2. midPoint & PostgreSQL 저장소 연동Tutorials & Tips/MidPoint Server 2022. 4. 28. 10:07
MidPoint 저장소
MidPoint는 기본적으로 내장된 H2 데이터베이스를 사용하여 데이터를 저장합니다. 내장된 H2 데이터베이스는 midPoint, 데모 환경, 개발 및 유사한 Non-Production 목적으로 사용할 수 있습니다. 사전 프로덕션 및 프로덕션 사용을 위해서는 PostgreSQL 데이터베이스 환경으로 설정을 변경하여 사용하여야 합니다.
midPoint 서버 상에서 관리하는 데이터들을 관계형 데이터베이스에 저장합니다. midPoint에서 지원하는 데이터베이스는 오픈 소스 관계형 데이터베이스인 PostgreSQL입니다. midPoint에는 PostgreSQL 관련 기능을 활용하여 PostgreSQL 데이터베이스에 맞게 특별히 조정된 데이터 저장 메커니즘(일명 "리포지토리")의 구현이 포함되어 있습니다.
<그림 1. midPoint 서버 및 저장소 구성도> 개요
Native PostgreSQL 저장소를 사용하여 midPoint를 구성하려면 다음의 과정들을 수행해야 합니다.
- MidPoint 배포판을 다운로드 받아 설치
MidPoint 배포판에 대한 다운로드 및 설치는 이전 문서를 참조하시기 바랍니다. - PostgreSQL 데이터베이스 설치 및 설정
- config.xml 파일에 postgreSQL 저장소를 위한 설정을 구성합니다.
- 마지막으로 midPoint를 실행할 수 있습니다.
PostgreSQL 설치
1. PostgreSQL 설치
PostgreSQL 버전 13 이상이 지원되며, 이 문서는 현재 14.x 버전을 기준으로 작성함에 따라 가능한 14.x 안정적인 최신 버전을 사용하는 것이 좋습니다.
1단계 : CentOS 상에 PostgreSQL Yum Repository 추가
$ sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo yum -y update$ sudo reboot
해당 로그인 계정 (본 tutorial 에서는 midpoint) 이 sudo 권한이 없어 위 명령어 수행 도중에 오류가 발생할 경우에 /etc/sudoers 파일에 아래와 같이 설정하여 해당 계정에 sudo 권한 부여하도록 합니다.
<그림 2. 일반 계정에 대한 sudo 권한 부여 설정> 2단계 : CentOS 에 PostgreSQL 14 설치하기
PostgreSQL Yum Repository 를 성공적으로 추가한 뒤에 PostgreSQL 14를 설치를 진행하도록 합니다.
저장소에서 PostgreSQL 14 패키지를 사용할 수 있는 지 확인하도록 합니다.
$ sudo yum search postgresql14
<그림 3. postgreSQL 14 패키지 사용 여부 확인> 이제 CentOS 7에 PostgreSQL 14 패키지를 설치하도록 합니다.
$ sudo yum -y install postgresql14 postgresql14-server
3단계 : PostgreSQL 14 설정 구성Database 설치 구성 상에 다양한 설정은 개별적인 환경을 고려하여 변경하도록 하며, 이 문서에는 midPoint 서버 설정에 관련된 필수 설정 내용만 다루도록 합니다.
postgreSQL 서버를 원격에서 접속이 가능하도록 하기 위해 에 Listen 주소를 서버 IP 주소로 설정하거나 모든 인터페이스에 대해 " * "를 설정합니다.
/var/lib/pgsql/14/data/postgresql.conf 파일에서 listen_address를 '*' 로 변경하여 저장합니다.<그림 4. postgreSQL 원격 접속 설정> 사용자(및 JDBC 드라이버)가 원격으로 데이터베이스에 접근하기 위해 /var/lib/pgsql/14/data/pg_hba.conf 에 아래와 같이 추가 설정을 하도록 합니다.
host all all 0.0.0.0/0 md5
<그림 5. postgreSQL 원격 접속 설정> postgresql.conf 또는 pg_hba.conf 구성을 변경한 뒤에 적용하기 위해서는 database 서비스를 다시 재구동 해야 합니다.
Database 설정이 완료되면, postgreSQL 서버 서비스를 재구동하고, 서비스 상태를 확인하도록 합니다.
$ sudo systemctl restart postgresql-14
<그림 6. postgreSQL 14 서비스 재구동> $ sudo systemctl status postgresql-14
<그림 7. postgreSQL 14 서비스 상태 확인> 4단계 : Database 내 사용자, Database 및 테이블 생성
bash루트 또는 sudo 가능 사용자로 시작한다고 가정 하고 먼저 psql데이터베이스 관리자로 실행해 보겠습니다.
$ sudo -i -u postgres psql
다음으로 우리는 midPoint에 대한 사용자와 데이터베이스를 생성할 것입니다. 다음 예에서는 midpoint데이터베이스 수퍼유저로 사용자를 생성합니다.
<그림 8. postgreSQL 14 사용자 생성> postgres=# CREATE USER midpoint WITH PASSWORD 'password' LOGIN SUPERUSER;
postgres=# CREATE DATABASE midpoint WITH OWNER = midpoint ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;
데이터베이스를 초기화하려면 해당 database 사용자 (여기서는 midpoint 라는 사용자로 생성함) 계정으로 데이터베이스 (여기서는 midpoint라는 DB명으로 생성함) 에 연결한 뒤에, midpoint 서버가 설치된$(midpoint_home)/doc/config/sql/native-new 아래 경로의 .sql 파일들을 이용하여 배포 패키지와 함께 제공되는 다음 스키마 파일의 내용을 실행합니다.
- postgres-new.sql : 감사 (Audit) 테이블이 없는 기본 저장소 스키마의 내용입니다. 이 파일은 또한 public누락된 경우 스키마를 생성합니다.
- postgres-new-audit.sql : 감사 (Audit) 스키마의 내용입니다. 기본 리포지토리 스키마 위에 적용하거나 다른 데이터베이스에 별도로 적용할 수 있습니다. 두 스키마를 모두 적용하려면 기본 저장소 스키마를 먼저 적용한 다음 감사 스키마를 적용합니다.
- postgres-new-quartz.sql : midPoint 스케줄러에 필요한 테이블이 있는 스크립트입니다. ( Quartz Schduler 사용 ). 이러한 테이블은 선택 사항이지만 필요할 경우에 대비하여 생성하는 것이 좋습니다. 테이블은 기본 리포지토리 스키마에서 생성되어야 합니다.
psql 명령어를 사용하여 다음과 같이 데이터베이스 초기화에 사용하는 것이 좋습니다.
export PGPASSWORD=password # psql의 비밀번호, 건너뛰고 대화식으로 입력할 수 있습니다.
# 스키마의 이전 테이블을 교체하려면 아래 명령어를 수행하며, 최초 수행인 경우는 제외함
# psql -h localhost -d midpoint -U midpoint -c "drop schema public cascade"
psql -h localhost -d 중간점 -U 중간점 -f postgres-new.sql -f postgres-new-audit.sql -f postgres-new-quartz.sql5단계 : Dbeaver 를 이용하여 접속 확인
위의 4단계까지 Database 관련 설정이 모두 끝난 뒤에, Dbeaver 등의 tool 을 이용하여 원격 접속하여 테이블들이 정상적으로 생성 여부를 확인하도록 합니다.
<그림 9. DBeaver 연결 테스트> <그림 10. midPoint 서버용 테이블 생성 여부 확인> 3. midPoint 서버 내 config.xml 파일 수정
기본적으로 저장소 구성은 midPoint 홈 디렉토리의 config.xml 내부에 저장됩니다.
이 디렉토리는 midPoint를 처음 시작할 때 생성되며, 기본 설정은 편의상의 이유로 config.xml 에는 내장된 H2 데이터베이스를 사용할 수 있도록 미리 구성되어 있습니다.
$(midpoint home)/doc/config 경로 아래의 config-native.xml 파일을 $(midpoint home)/var 경로로 복사하도록 한 뒤에 기존의 config.xml 은 별도로 복사한 뒤에 config-native.xml 파일명을 config.xml 로 변경합니다.
config.xml 파일 내에 아래의 저장소 관련된 기본 구성 옵션 값들을 변경하도록 합니다.
- jdbcUrl
JDBC 연결을 위한 URL입니다. 이것은 반드시 사용해야 하며(권장되지 않는 항목이 없는 경우 dataSource) 선택적으로 사용자 이름과 비밀번호를 포함할 수 있습니다. (기본값 : jdbc:postgresql://localhost:5432/midpoint) - jdbcUsername
JDBC 연결을 위한 사용자 이름입니다. 사용자 이름이 필요하지 않거나 JDBC URL 또는 기타 방법으로 제공되는 경우 비어 있을 수 있습니다. (예시:midpoint) - jdbcPassword
JDBC 연결을 위한 암호입니다. 비밀번호가 필요하지 않거나 JDBC URL 등에 제공되지 않은 경우 비어 있을 수 있습니다. (예시:password)
<그림 11. config.xml 파일 설정> 4. midPoint 서버 구동 및 서비스 접속
모든 설정이 완료되면 $(midpoint_home)/bin/midpoint.sh start 명령어를 통해 서버를 구동하도록 하며, 로그 내용은 $(midpoint_home)/var/log/midpoint.log 에서 확인 가능합니다.
아래의 로그 내용과 같이 기존에 내장된 H2 Database 가 아닌 postgreSQL 서버를 기본 저장소로 연결하여 구동되는 것을 확인할 수 있습니다.
<그림 12. midpoint 서버 로그 확인> 5분 이내로 서비스 구동이 완료되면 관리 콘솔에 접속하여 로그인을 통해 서비스 정상 구동 여부를 확인하도록 합니다.
http://$(midpoint 서버 IP 또는도메인주소):8080/midpoint/
(administrator/5ecr3t)
<그림 13. midPoint 사용자 콘솔 로그인 페이지> <그림 14. midPoint 서버 메인 페이지> 'Tutorials & Tips > MidPoint Server' 카테고리의 다른 글
[keycloak] google 연동 (0) 2023.01.17 1. midPoint 서버 설치하기 (0) 2022.04.22 - MidPoint 배포판을 다운로드 받아 설치