DBeaver에 Presto와 Db2 붙여보기

Overview

개발과 작업의 편의성을 위해 GUI가 필요한 경우가 있습니다.
SQL client이자 데이터베이스 관리도구인 DBeaverPrestoDb2를 붙이는 과정에 대해서 정리하겠습니다.

본 문서에서는 Openshift위의 Db2, Openshift위의 Cloud Pak for Data위의 WatsonX.data위의 Presto를 다루고 있지만 다른 환경에서도 필요한 정보는 동일할테니 참고용으로 보시면 될 것 같습니다.

Db2 SSL connection

1. certificate 뽑기

Db2의 ssl-server port(ex.50001)로 연결되는 route를 생성합니다.

kind: Route
apiVersion: route.openshift.io/v1
metadata:
  namespace: dbwh
  name: dbwh
spec:
  to:
    kind: Service
    name: c-db2wh-db2u-engn-svc
    weight: 100
  port:
    targetPort: ssl-server
  tls:
    termination: passthrough
  wildcardPolicy: None

그럼 443->50001로 연결되는 https endpoint가 생성될텐데요,

https://db2wh-dbwh.apps.endpoint.com

openssl로 해당 endpoint에 대한 certificate를 추출해주면 됩니다.

openssl s_client -showcerts -connect db2wh-dbwh.apps.endpoint.com:443

rootCA와 그와 연결된 chain CA를 모두 추출해 chain.pem 파일로 생성합니다.

2. Java trust KeyStore 생성

DBeaver설치 시 같이 설치되는 keytool 커맨드를 통해 jks파일을 생성합니다.

$ "C:\Program Files\DBeaver\jre\bin\keytool.exe" -import -alias mydb2demo -file /path/to/chain.pem -storetype JKS -keystore mydb2demo.jks

3. DBeaver Connection

필요한 정보를 기입해줍니다.
https연결이므로 포트는 기본 443,
연결하고자하는 DB이름, 권한을 가진 유저의 정보를 입력해줍니다.

다음 Driver Properties탭으로 이동하여 ssl관련 정보들을 기입해줍니다.

sslConnection : true
sslTrustStoreLocation: 위에서 만든 jks파일의 위치
sslTrustStorePassword: 위에서 만든 jks파일의 비밀번호

테스트연결할때 아래와 같은 에러가 발생하면

[jcc][t4][2030][11211][4.33.31] A communication error occurred during operations on the connection's underlying socket, socket input stream, 
or socket output stream.  Error location: Reply.fill() - socketInputStream.read (-1).  Message: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. ERRORCODE=-4499, SQLSTATE=08001
  PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
  PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    unable to find valid certification path to requested target
    unable to find valid certification path to requested target

윈도우 > 설정 > 연결 > use Windows trust store의 체크를 해제하고 DBeaver를 재시작한 뒤 다시 시도하면 됩니다.

이래도 안된다면 인증서가 valid한 녀석인지 다시한번 확인!

연결 성공!

Presto SSL connection

1. certificate 뽑기

위 Db2 connection처럼 route를 만들고 인증서를 추출 -> jks로 생성해도 되지만 이 문서에서는 Presto의 truststore.jks를 직접 pod에서 가져와서 연결하는 방법을 기술하겠습니다.

presto coordinator pod에서 truststore.jks를 찾습니다.

sh-5.1$ cd /mnt/infra/tls
sh-5.1$ ls
ca.crt  keystore.p12  lh-ssl-ks.jks  lh-ssl-ts.jks  pki  tls.crt  tls.key  truststore.jks  truststore.p12

truststore.jks를 로컬로 복사, path를 기억해둡니다.

2. DBeaver Connection

필요한 정보를 기입해줍니다.
https연결이므로 포트는 기본 443,
연결하고자하는 스키마의이름, 권한을 가진 유저의 정보를 입력해줍니다.

다음 Driver Properties탭으로 이동하여 ssl관련 정보들을 기입해줍니다.

SSL : True
SSLTrustStorePath: 위에서 만든 jks파일의 위치
SLLTrustStorePassword: 위에서 만든 jks파일의 비밀번호 (기본은 changeit)

연결 성공!


댓글남기기