JDBC 연결을 위한 SSL 구성
대부분의 JDBC 커넥터는 단방향(표준) SSL을 지원하며, 일부 커넥터는 양방향 SSL을 지원합니다. Tableau에서 명시적으로 지원하지 않는 경우 사용자 지정을 통해 사용하도록 설정할 수 있습니다. 두 유형 모두에 대해 SSL을 구성할 수 있는 다양한 방법이 있으며, 사용자 환경에 가장 적합한 방법을 사용할 수 있습니다.
참고: Tableau Cloud의 경우 서버 인증서가 일반 공개 루트 CA에서 서명되지 않았고 인증서를 내장할 수 있는 옵션이 없는 경우 Tableau Bridge를 사용할 수 있습니다. 이렇게 하면 필요에 따라 인증서 및 개인 키를 구성할 수 있습니다.
JDBC 연결을 위한 단방향 SSL
JDBC 기반 커넥터에서 일반(단방향) SSL을 사용하고 자체 서명된 인증서나 비공개 CA(인증 기관)에서 서명한 인증서가 있는 경우 인증서에 대한 신뢰를 구성해야 합니다.
Tableau를 사용하면 다음 방법 중 하나를 사용하여 JDBC 연결을 위한 단방향 SSL 신뢰 관계를 구성할 수 있습니다.
인증서 내장
일부 커넥터는 통합 문서 또는 데이터 원본의 인증서 내장을 지원합니다. 이 기능을 사용할 수 있는 경우 Tableau Desktop을 사용하여 CA 인증서를 내장할 수 있습니다.
시스템 신뢰 저장소에 인증서 설치
내장할 수 없는 경우 다른 방법으로 신뢰를 구성해야 합니다. 또한 이렇게 하는 것이 모든 통합 문서에 인증서를 내장하는 것보다 쉽습니다. 아래에 Windows, Mac, Linux 플랫폼에 대한 지침이 수록되어 있습니다.
Tableau Server의 기본 신뢰 저장소 위치는 다음과 같습니다.
/opt/tableau/tableau_server/packages/repository.20233.24.0514.1218/jre/lib/security/cacerts
Windows의 경우:
Windows 루트 CA 신뢰 저장소에 CA 또는 차체 서명 인증서를 설치할 수 있습니다. Java 런타임은 시스템 루트 신뢰 저장소에서 신뢰할 수 있는 CA를 찾습니다. 중간 인증서 저장소에서는 찾지 않습니다.
참고: 루트 CA를 설치했지만 여전히 연결하는 데 문제가 있는 경우 누락된 중간 인증서가 원인일 수 있습니다. TLS 표준에서는 서버가 체인에서 루트 인증서를 제외한 모든 인증서를 전송하도록 요구하지만 일부 서버는 이 표준을 따르지 않습니다. 서버가 중간 인증서를 전송하지 않는 경우 적절하게 중간 인증서를 전달하도록 서버를 수정하거나 루트 신뢰 저장소에 중간 인증서를 설치할 수 있습니다. 또는 데이터 원본에 인증서를 내장하도록 선택하고 드라이버 속성에서 신뢰 저장소를 구성할 수 있습니다.
- Windows에서 "인증서"를 검색합니다.
- 컴퓨터 인증서 관리를 선택합니다.
- 동작 메뉴에서 모든 작업을 선택한 다음 Windows 버전에 따라 다음 중 하나를 수행합니다.
- 가져오기를 선택한 다음 로컬 컴퓨터를 선택합니다.
- 인증서 찾기를 선택합니다.
- 찾아보기로 인증서 파일을 찾습니다.
- "신뢰할 수 있는 루트 인증 기관"으로 가져옵니다.
Mac의 경우:
Mac에서 사용자 지정 인증서를 설치하려면 다음 단계에 따라 인증서를 "시스템" 키 체인으로 가져옵니다.
참고: 대부분의 드라이버에서는 Mac의 키 체인에서 인증서를 로드할 수 있지만 일부는 작동하지 않습니다. 다른 드라이버의 경우 .properties 파일을 사용하여 신뢰 저장소를 구성해야 할 수도 있습니다. 자세한 내용은 연결 사용자 지정 및 조정을 참조하십시오.
- https://support.apple.com/guide/keychain-access/add-certificates-to-a-keychain-kyca2431/mac(링크가 새 창에서 열림)로 이동합니다.
- 인증서를 "시스템" 키 체인("시스템 루트" 아님)으로 가져옵니다.
- 다음과 같이 신뢰 관계를 설정합니다.
- 키 체인 앱에서 새 인증서를 마우스 오른쪽 단추로 클릭합니다.
- 정보 입수를 선택합니다.
- 대화 상자에서 신뢰 섹션을 연 다음 이 인증서 사용 시: 항상 신뢰를 선택합니다.
Linux의 경우:
많은 Linux 배포판은 시스템 인증서에서 Java 형식의 신뢰 저장소를 생성합니다. 이 파일을 만들려면 패키지 관리자에서 Java를 설치해야 합니다.
이렇게 하면 JRE에서 운영 체제와 동일한 인증서를 사용할 수 있습니다.
참고: Tableau Server는 이 파일을 다음과 같은 표준 위치에서 찾습니다./etc/ssl/certs/java/cacerts
/etc/pki/java/cacerts
다른 위치를 구성하려면
tsm configuration set -k native_api.ConnectivityTrustStore -v <path-to-cacerts> --force-keys명령을 실행합니다.
이 파일은 다음과 같아야 합니다.
- 신뢰할 수 있는 모든 CA 및 자체 서명 인증서를 포함해야 합니다.
- 공개 키만 포함해야 합니다.
- JKS 형식이어야 합니다.
- Tableau 권한이 없는 사용자('서비스 계정 사용자')가 읽을 수 있어야 합니다.
- 기본 JKS 비밀번호 'changeit'을 사용합니다.
사용자 지정 CA 또는 자체 서명 인증서를 설치하려면 배포판의 설명서를 참조하십시오. 적절한 명령을 실행하여 키 저장소를 생성합니다. 예:
update-ca-certificates
사용자 지정 드라이버 속성 사용
.properties 파일을 사용하여 신뢰 저장소 위치를 비롯한 JDBC 연결 옵션을 사용자 지정할 수 있습니다. 이 파일은 각 연결 매개 변수에 대한 키-값 쌍을 포함하는 일반 텍스트 파일입니다.
예를 들어 이 속성 파일의 행은 신뢰 설정을 구성하는 데 사용됩니다.
javax.net.ssl.trustStore=C:\\My_Folder\\truststore.jks
javax.net.ssl.trustStoreType=JKS
javax.net.ssl.trustStorePassword=password
참고: 특정 속성 설정에 대한 자세한 내용은 드라이버의 설명서를 참조하십시오.
파일을 만들어 올바른 위치에 저장하면 파일의 속성이 동일한 데이터 원본 유형에 대한 모든 JDBC 연결에 적용됩니다.
범용 '기타 데이터베이스(JDBC)' 커넥터를 사용하는 경우 연결 대화 상자에서 직접 .properties 파일을 지정할 수 있습니다.
자세한 내용은 연결 사용자 지정 및 조정(링크가 새 창에서 열림)을 참조하십시오.
JDBC 연결을 위한 양방향 SSL
Postgres와 같은 일부 JDBC 연결은 양방향 SSL 인증을 사용하도록 구성할 수도 있습니다. 이 경우 .properties 파일을 사용하여 신뢰 저장소 및 키의 위치와 세부 정보를 지정하여 구성할 수 있습니다.
.properties 파일을 사용하여 클라이언트 인증서 및 개인 키 구성
참고: Tableau Cloud의 경우 양방향 SSL이 필요하고, 커넥터에 키를 내장하는 옵션이 없는 경우 Tableau Bridge를 사용하고 거기에서 SSL 구성을 설정해야 합니다.
- 키 저장소 및 신뢰 저장소 설정을 반영하도록 .properties 파일을 수정합니다. 다음 예제를 참조하십시오. "My_Folder"를 파일의 위치로 바꾸고 "<password>"를 사용 중인 비밀번호로 바꾸십시오. OSX 및 Linux의 경로는 단일 "/" 문자로 구분해야 합니다.
javax.net.ssl.trustStore=C:\\My_Folder\\truststore.jks
javax.net.ssl.trustStoreType=JKS
javax.net.ssl.trustStorePassword=<password>
javax.net.ssl.keyStore=C:\\My_Folder\\keystore.jks
javax.net.ssl.keyStoreType=JKS
javax.net.ssl.keyStorePassword=password - Tableau 제품에 따라 .properties 파일을 적절한 데이터 원본 폴더에 저장합니다. 확실하지 않은 경우 연결 사용자 지정 및 조정에서 사용 가능한 디렉터리 전체 목록을 참조하십시오.
- Tableau Server에 게시하는 경우 각 Tableau Server 노드의 올바른 위치에 .properties 파일, truststore.jks 및 keystore.jks를 설치했는지 확인하십시오.
이 방법을 사용하는 경우 SSL 대화 상자에서 인증서 및 키를 업로드할 필요가 없습니다. 대신 SSL 필요를 클릭합니다. 이렇게 JDBC 커넥터가 .properties 파일에서 키 저장소 및 신뢰 저장소의 위치를 읽습니다.
문제 해결
SSL을 사용할 때 발생하는 문제는 종종 잘못된 인증서 구성과 관련이 있습니다.
문제의 근원을 좁히는 한 가지 방법은 어떤 인증서가 사용 중인지, 그리고 그 인증서가 어디에 설치되어 있는지 확인하는 것입니다. OpenSSL CLI 도구가 설치되면 s_client
명령을 사용할 수 있습니다.
openssl s_client -connect hostname:port -showcerts
hostname
및 port
값을 테스트하는 시스템에 적합한 값으로 바꿉니다. 실행하면 이 명령은 SSL 연결을 생성하려고 시도한 다음 서버에서 보낸 인증서를 표시합니다.
일부 데이터베이스에는 사용자 지정 TLS 핸드셰이크가 있으며, openssl은 이 중 몇 가지를 직접 지원합니다. 최신 버전의 경우 postgres와 mysql이 지원됩니다. postgres 또는 mysql 호환 데이터베이스에 연결하고 있는데 위의 명령에 문제가 있는 경우 -starttls 옵션을 사용하여 데이터베이스에서 사용하는 프로토콜을 사용하도록 설정해 볼 수 있습니다. 예를 들면 다음과 같습니다.
openssl s_client -connect hostname:port -showcerts -starttls postgres
OpenSSL 문제 해결에 대한 자세한 내용은 OpenSSL s_client 명령을 사용하여 SSL 연결 테스트(링크가 새 창에서 열림)를 참조하십시오. OpenSSL s_client에 대한 설명서 전문은 OpenSSL 설명서(영문)(링크가 새 창에서 열림)에서 확인할 수 있습니다.
참고 항목
- Oracle JDBC 연결에 SSL 필요(링크가 새 창에서 열림) - Oracle JDBC 연결에 신뢰할 수 있는 SSL 인증서를 추가하기 위한 설치 지침입니다.
- SSL을 사용한 Oracle JDBC 연결