인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
데이터베이스 접근 GUI 클라이언트
이 가이드는 Teleport와 함께 작동하도록 인기 있는 그래픽 데이터베이스 클라이언트를 구성하는 방법을 설명합니다.
Teleport 환경 설정하기
전제 조건
-
실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.
-
tctl
관리자 도구와tsh
클라이언트 도구.tctl
및tsh
다운로드 방법에 대한 지침은 설치를 방문하십시오.
- 연결이 가능한지 확인하기 위해
tsh login
으로 로그인한 다음, 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오. 예를 들어:클러스터에 연결할 수 있고tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속tctl
명령어를 실행할 수 있습니다.
자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다. - 데이터베이스에 접근하기 위해 구성된 Teleport 데이터베이스 서비스. 데이터베이스를 위해 Teleport 데이터베이스 서비스를 설정하는 방법에 대한 가이드는 다음을 참조하십시오.
guides.
연결 정보 얻기
데이터베이스에 접근하기 위해 GUI 클라이언트를 구성할 수 있도록 데이터베이스가 사용 가능한 호스트 및 포트에 대한 정보를 얻습니다.
로컬 프록시 서버 사용하기
tsh proxy db
명령을 사용하여 GUI 데이터베이스 클라이언트가 연결할 로컬 TLS 프록시를 시작합니다. 이 명령은 Teleport Enterprise (Cloud)를 사용하거나, Teleport를 자가 호스팅하는 경우 TLS 라우팅 모드를 활성화해야 합니다.
다음과 유사한 명령을 실행하십시오::
tsh proxy db <database-name>Started DB proxy on 127.0.0.1:61740
Use following credentials to connect to the <database-name> proxy: ca_file=/Users/r0mant/.tsh/keys/root.gravitational.io/certs.pem cert_file=/Users/r0mant/.tsh/keys/root.gravitational.io/alice-db/root/<database-name>-x509.pem key_file=/Users/r0mant/.tsh/keys/root.gravitational.io/alice
GUI 클라이언트를 구성할 때 표시된 로컬 프록시 호스트/포트 및 자격 증명 경로를 사용하십시오. 호스트 이름을 입력할 때는 127.0.0.1
대신 localhost
를 사용하십시오.
--tunnel
플래그를 사용하여 로컬 데이터베이스 프록시를 시작하면 데이터베이스 인스턴스에 연결하는 데 사용할 수 있는 인증된 터널이 생성됩니다. 이 터널에 연결할 때 자격 증명을 구성할 필요가 없습니다.
프록시를 시작하는 방법에 대한 예시는 다음과 같습니다:
Start the local proxy.
tsh proxy db --tunnel <database-name>Started authenticated tunnel for the <engine> database "<database-name>" in cluster "<cluster-name>" on 127.0.0.1:62652.
데이터베이스에 연결할 때 기본적으로 사용할 데이터베이스 이름과 사용자를 선택적으로 지정할 수 있습니다:
tsh proxy db --db-user=my-database-user --db-name=my-schema --tunnel <database-name>
이제 프록시 명령이 반환하는 주소에 연결할 수 있습니다. 우리의 예에서는 127.0.0.1:62652
입니다.
원격 호스트 및 포트 사용하기
자가 호스팅하는 Teleport를 사용 중이고 TLS 라우팅을 사용하지 않는 경우 다음 명령을 실행하여 데이터베이스 연결 정보를 확인하십시오:
View configuration for the database you're logged in to.
tsh db configView configuration for the specific database when you're logged into multiple.
tsh db config example
로컬에 캐시된 인증서 및 키 파일의 경로가 표시됩니다:
Name: example
Host: teleport.example.com
Port: 3080
User: postgres
Database: postgres
CA: /Users/alice/.tsh/keys/teleport.example.com/certs.pem
Cert: /Users/alice/.tsh/keys/teleport.example.com/alice-db/root/example-x509.pem
Key: /Users/alice/.tsh/keys/teleport.example.com/alice
표시된 CA
, Cert
, 및 Key
파일은 pgAdmin 4, MySQL Workbench 및 상호 TLS 인증을 지원하는 기타 그래픽 데이터베이스 클라이언트를 통해 연결하는 데 사용됩니다.
MongoDB Compass
Compass 는 공식 MongoDB 그래픽 클라이언트입니다.
"새 연결" 패널에서 "연결 필드를 각각 채우기"를 클릭합니다.

"호스트 이름" 탭에서 데이터베이스에 접근할 프록시의 호스트 이름과 포트를 입력합니다 (자세한 정보는 연결 정보 가져오기를 참조하세요). "인증"을 None으로 설정합니다.

"더 많은 옵션" 탭에서 SSL을 "클라이언트 및 서버 검증"으로 설정하고 CA, 클라이언트 키 및 인증서를 설정합니다. CA 경로는 제공되어야 하며, Teleport Proxy Service의 웹 엔드포인트에서 제공하는 인증서를 검증할 수 있어야 합니다.

더 많은 옵션 탭의 다음 필드는 이전에 실행한 tsh proxy db
명령에서 출력된 경로와 일치해야 합니다:
필드 | 경로 |
---|---|
인증 기관 | ca_file |
클라이언트 인증서 | cert_file |
클라이언트 개인 키 | key_file |
"연결" 버튼을 클릭합니다.
MySQL DBeaver
주 뷰의 "데이터베이스 탐색기" 메뉴에서 오른쪽 클릭하고 만들기 > 연결을 선택합니다:

열리는 "데이터베이스에 연결" 창의 검색창에 "mysql"을 입력하고 MySQL 드라이버를 선택한 후 "다음"을 클릭합니다:

새로 열린 "연결 설정" 탭에서 호스트는 localhost
로, 포트는 프록시 명령에서 반환된 포트(위의 예제에서 62652
)로 설정합니다:
같은 탭에서 Teleport를 사용하여 연결하는 사용자 이름을 설정하고 "비밀번호를 로컬에 저장" 박스를 체크 해제합니다:

"메인" 탭에서 "드라이버 설정 편집" 버튼을 클릭하고 "인증 없음" 박스를 체크한 후 "확인"을 클릭하여 저장합니다:

"연결 설정" 창으로 돌아오면 "확인"을 클릭하여 완료하고 DBeaver가 원격 MySQL 서버에 자동으로 연결됩니다.
MySQL Workbench
MySQL Workbench는 포괄적인 MySQL 관리 및 SQL 개발 도구를 제공하는 GUI 애플리케이션입니다.
MySQL Workbench의 "새 연결 설정" 대화 상자에서 "연결 이름", "호스트 이름", "포트", 및 "사용자 이름"을 입력합니다:

"SSL" 탭에서 "SSL 사용"을 필수 및 신원 검$1
으로 설정하고 CA, 인증서 및 개인 키 파일의 경로를 입력합니다(자세한 정보는
연결 정보 가져오기를 참조하세요):

SSL 탭의 다음 필드는 이전에 실행한 tsh proxy db
명령에서 출력된 경로와 일치해야 합니다:
필드 | 경로 |
---|---|
SSL 키 파일 | key_file |
SSL 인증서 파일 | cert_file |
SSL CA 파일 | ca_file |
원하는 경우 "연결 테스트"를 클릭하여 연결을 확인합니다:

연결을 저장하고 데이터베이스에 연결합니다.
NoSQL Workbench
NoSQL Workbench 시작 화면에서 Amazon DynamoDB 옆의 Launch 를 클릭하십시오.
왼쪽 메뉴에서 Operation builder 를 선택한 다음 + Add connection 을 클릭하십시오.
DynamoDB local 탭을 선택하고 프록시의 엔드포인트를 지정하십시오. 이는 위 예시에서 localhost:62652
입니다. (자세한 정보는 Get connection information를 참조하십시오.)
SQL Server with Azure Data Studio
Azure Data Studio에서 프록시의 엔드포인트를 사용하여 연결을 생성하십시오. 이는 위 예시에서 localhost,62652
입니다. Windows 머신의 경우 localhost
대신 127.0.0.1,62652
형식을 사용할 필요가 있을 수 있습니다. (자세한 정보는 Get connection information를 참조하십시오.)
다음 설정으로 Microsoft SQL Server와 연결을 생성하십시오:
Connection Detail | Value |
---|---|
서버 | host ,port of proxy endpoint |
Authentication Type | SQL Login |
비밀번호 | empty |
Encrypt | False |
예시:

Connect 를 클릭하여 연결하십시오.
PostgreSQL DBeaver
PostgreSQL 인스턴스에 연결하려면 인증된 프록시 주소를 사용하십시오. 이는 위 예시에서 127.0.0.1:62652
입니다 (자세한 정보는 Get connection information 의 “Authenticated Proxy” 섹션을 참조하십시오).
비밀번호가 없는 "Database native" 인증을 사용하십시오:
"Test connection"을 클릭하면 연결 성공 메시지가 반환되어야 합니다. 그런 다음 "Finish" 를 클릭하여 구성을 저장하십시오.
PostgreSQL pgAdmin 4
pgAdmin 4 는 PostgreSQL 서버를 위한 인기 있는 그래픽 클라이언트입니다.
새 연결을 구성하려면, 메인 브라우저 뷰에서 "Servers"를 마우스 오른쪽 버튼으로 클릭하고 새 서버를 생성하십시오:

새 서버 대화 상자의 "General" 탭에서 서버 연결 이름을 입력하십시오:

"Connection" 탭에서 앞서 설정한 호스트 이름, 포트, 사용자 및 데이터베이스 이름을 입력하십시오:

"SSL" 탭에서 "SSL Mode"를 Verify-Full
로 설정하고, 앞서 설정한 클라이언트 인증서, 키 및 루트 인증서의 경로를 입력하십시오:

SSL 탭의 다음 필드는 이전에 실행한 tsh proxy db
명령의 출력 경로와 일치해야 합니다:
Field | Path |
---|---|
클라이언트 인증서 | cert_file |
클라이언트 인증서 키 | key_file |
루트 인증서 | ca_file |
"Save"를 클릭하면 pgAdmin이 즉시 연결됩니다. pgAdmin이 비밀번호를 요청하면 비밀번호 필드를 비워두고 OK를 클릭하십시오.
Microsoft SQL Server Management Studio
Microsoft SQL Server Management Studio에서 프록시의 엔드포인트를 사용하여 데이터베이스 엔진에 연결합니다. 위의 예에서는 localhost,62652
입니다. Windows 머신에서는 localhost
대신 IP 127.0.0.1,62652
가 필요할 수 있습니다. (자세한 내용은 연결 정보 가져오기를 참조하세요.)
다음 설정으로 Microsoft SQL Server에 연결을 생성합니다:
Connection Detail | Value |
---|---|
서버 유형 | Database Engine |
서버 이름 | host ,port 프록시 엔드포인트 |
인증 | SQL Server Authentication |
비밀번호 | 비어 있음 |
암호화 | 사용 안 함 |
예시:

연결하려면 "Connect"를 클릭합니다.
Redis Insight
Note
Teleport의 Redis Insight 통합은 Redis 독립 실행형 인스턴스만 지원합니다.
Redis Insight를 열고 ADD REDIS DATABASE
를 클릭합니다.
이제 Redis 인스턴스를 위한 로컬 프록시를 시작합니다:
tsh proxy db --db-user=alice redis-db-name
.
Add Database Manually
를 클릭합니다. Host
로 127.0.0.1
을 사용하세요. 연결 정보 가져오기에서 실행한 tsh
명령에서 인쇄된 포트를 사용하세요.
Redis 사용자 이름을 Username
으로, 비밀번호를 Password
로 입력합니다.
다음으로, Use TLS
및 Verify TLS Certificates
체크 박스를 선택합니다. 이전에 실행한 tsh proxy db
명령에서 반환된 경로의 파일 내용을 복사하여 해당 필드에 붙여넣습니다. 아래 표에서 각 경로에 해당하는 Redis Insight 필드를 참조하세요:
Field | Path |
---|---|
CA Certificate | ca_file |
Client Certificate | cert_file |
Private Key | key_file |
Add Redis Database
를 클릭합니다.
축하합니다! Redis 인스턴스에 연결했습니다.
Snowflake: DBeaver
Snowflake 통합은 인증된 프록시 모드에서만 작동합니다. 아래 명령어를 사용하여 Snowflake 데이터베이스에 대한 연결을 위한 로컬 프록시를 시작합니다:
tsh proxy db --tunnel --port 2000 snowflake
왼쪽 상단 코너의 "add" 아이콘을 클릭하여 새 데이터베이스를 추가합니다:
열리는 "Connect to a database" 창의 검색 바에 "snowflake"를 입력하고, Snowflake 드라이버를 선택한 후 "Next"를 클릭합니다:
"Host"를 localhost
로 설정하고, 이전에 실행한 tsh proxy db
명령에서 반환된 포트(2000
, 위 예시 참조)를 "Port"에 입력합니다.
"Authentication" 섹션에서 "Username"을 Teleport에 --db-user
로 전달한 데이터베이스 사용자 이름과 일치하도록 설정하고 "Password" 필드에 임의의 값(예: "teleport")을 입력합니다. (연결을 설정할 때 "Password"의 값은 무시되지만 DBeaver가 데이터베이스를 등록하는 데 필요합니다):
다음으로 "Driver properties" 탭을 클릭하고 "account"를 임의의 값(예: "teleport")으로 설정합니다; "Password"와 마찬가지로 "account"의 값은 연결을 설정할 때 무시되지만 DBeaver가 데이터베이스를 등록하는 데 필요합니다. "User properties"에서 "ssl"을 off
로 설정합니다:
Teleport는 제공된 비밀번호와 계정 이름을 무시하며, 내부적으로 데이터베이스 에이전트 구성에서 값을 사용합니다.
SSL을 off
로 설정하면 로컬 머신의 암호화만 비활성화됩니다. Snowflake에 대한 연결은 Teleport에 의해 암호화됩니다.
이제 왼쪽 하단 모서리에서 "Test Connection..."을 클릭할 수 있습니다:
축하합니다! Snowflake 인스턴스에 연결했습니다.
Snowflake: JetBrains (IntelliJ, Goland, DataGrip, PyCharm 등)
Snowflake 통합은 인증된 프록시 모드에서만 작동합니다. 아래 명령어를 사용하여 Snowflake 데이터베이스에 대한 연결을 위한 로컬 프록시를 시작하십시오:
tsh proxy db --tunnel --port 2000 snowflake
"Database Explorer"에서 "add" 버튼을 클릭하고 "Data Source"를 선택한 다음 "Snowflake"를 선택하십시오:
다음으로 "Host"를 localhost
로 설정하고 "Port"를 앞서 실행한 tsh proxy db
명령에서 반환된 포트로 설정합니다 (위 예에서 2000
).
"Username"은 Teleport를 통해 Snowflake에 연결할 때 사용하는 것과 일치하도록 설정하고, "Password" 필드에 아무 값(예: "teleport")을 입력합니다 ("Password"의 값은 무시되지만 IDE에서 데이터 소스를 생성하는 데 필요함):
"Advanced" 탭으로 전환하고 "account"에 아무 값(예: "teleport")을 설정한 다음, ssl
이라는 새 레코드를 추가하고 값은 off
로 설정합니다( "Password"와 마찬가지로 "account"는 연결을 수립할 때 무시되지만 IDE에서 필요합니다):
Teleport는 제공된 비밀번호와 계정 이름을 무시하며, 내부적으로는 Database Agent 구성의 값을 사용합니다.
"SSL"을 off
로 설정하면 로컬 머신에서만 암호화가 비활성화됩니다. Snowflake에 대한 연결은 Teleport에 의해 암호화됩니다.
이제 "Test Connection"을 클릭하여 구성을 확인할 수 있습니다.
축하합니다! 방금 Snowflake 인스턴스에 연결했습니다.
SQL Server DataGrip
DataGrip 연결 구성 메뉴에서 프록시의 엔드포인트를 사용하십시오. 아래 예에서 localhost:4242
입니다. (자세한 내용은 연결 정보 가져오기를 참조하십시오.)
"User & Password" 인증 옵션을 선택하고 "Password" 필드는 비워 둡니다:

"OK"를 클릭하여 연결하십시오.
SQL Server DBeaver
DBeaver 연결 구성 메뉴에서 프록시의 엔드포인트를 사용하십시오. 위 예에서 localhost:62652
입니다. (자세한 내용은 연결 정보 가져오기를 참조하십시오.)
SQL Server 인증 옵션을 사용하고 비밀번호 필드는 비워 둡니다:
"OK"를 클릭하여 연결하십시오.
Cloud Spanner DataGrip
Cloud Spanner 통합은 로컬 프록시 터널 모드에서만 작동합니다.
스팬너 데이터베이스에 대한 연결을 위해 아래 명령어를 사용하여 로컬 프록시 터널을 시작하세요:
tsh proxy db --tunnel --port 1443 spanner --db-user=<service-account-name> --db-name=<spanner database name>
--db-user
에 지정된 데이터베이스 사용자는 Spanner 데이터베이스에 접근할 수 있는 GCP 서비스 계정의 이름이어야 합니다.
서비스 계정의 이름은 서비스 계정 이메일 주소의 "@" 이전의 모든 것이어야 합니다. 예를 들어, llama@example-project-123456.iam.gserviceaccount.com
의 이름은 "llama" 입니다.
이 명령은 로컬 포트 1443을 사용하지만 원하는 다른 포트를 선택하거나 --port
플래그를 생략하면 tsh
가 임의로 로컬 포트를 선택하도록 할 수 있습니다.
향후 GUI 클라이언트를 다시 구성할 필요가 없도록 포트를 지정하는 것이 좋습니다.
DataGrip 메뉴에서 "File > New > Data Source from URL"을 클릭한 다음, tsh proxy db
에서 출력된 JDBC URL을 복사하여 붙여넣습니다:
"Google Cloud Spanner" 드라이버가 자동으로 선택되어야 합니다. "Ok"를 클릭하십시오.
DataGrip은 GCP 자격 증명이 필요하지 않습니다 - 이는 이미 Teleport에 의해 제공됩니다. 새 데이터 소스의 "General" 탭에서 "Authentication" 드롭다운 설정을 선택하고 "No auth"를 선택합니다:

"Test connection"을 클릭하여 연결 구성이 올바른지 확인한 후, "Ok"를 클릭하여 데이터 소스를 생성합니다.
Note
나중에 이 데이터 소스를 재사용하려면, 동일한 tsh 로컬 포트(이 예에서는 1443)를 사용해야 하거나, tsh 로컬 프록시가 청취하는 포트에 맞게 드라이버 URL을 수정해야 합니다.
Cloud Spanner DBeaver
Cloud Spanner 통합은 로컬 프록시 터널 모드에서만 작동합니다.
스팬너 데이터베이스에 대한 연결을 위해 아래 명령어를 사용하여 로컬 프록시 터널을 시작하세요:
tsh proxy db --tunnel --port 1443 spanner --db-user=<service-account-name> --db-name=<spanner database name>
--db-user
에 지정된 데이터베이스 사용자는 Spanner 데이터베이스에 접근할 수 있는 GCP 서비스 계정의 이름이어야 합니다.
서비스 계정의 이름은 서비스 계정 이메일 주소의 "@" 이전의 모든 것이어야 합니다. 예를 들어, llama@example-project-123456.iam.gserviceaccount.com
의 이름은 "llama" 입니다.
이 명령은 로컬 포트 1443을 사용하지만 원하는 다른 포트를 선택하거나 --port
플래그를 생략하면 tsh
가 임의로 로컬 포트를 선택하도록 할 수 있습니다.
향후 GUI 클라이언트를 다시 구성할 필요가 없도록 포트를 지정하는 것이 좋습니다.
메뉴에서 "Database > Driver Manager"를 클릭합니다:

"Google Cloud Spanner" 드라이버를 검색하고 선택한 다음, "Copy" 버튼을 클릭하여 사용자 정의 드라이버 구성을 만듭니다:

사용자 정의 드라이버에 이름을 지정합니다, 예: "Teleport Spanner", 그런 다음 "URL Template"을 다음 패턴 문자열로 설정합니다:
jdbc:cloudspanner://127.0.0.1:{port}/projects/{server}/instances/{host}/databases/{database};usePlainText=true

"Ok"를 클릭한 다음, "Close"를 클릭합니다.
메뉴에서 "Database > New Connection from JDBC URL"을 클릭합니다:
이제 tsh proxy db
에서 출력된 JDBC URL을 복사하여 붙여넣습니다:

"Proceed"를 클릭한 다음, "Finish"를 클릭합니다.
Note
나중에 이 데이터 소스를 재사용하려면, 동일한 tsh 로컬 포트(이 예에서는 1443)를 사용해야 하거나, tsh 로컬 프록시가 청취하는 포트에 맞게 드라이버 URL을 수정해야 합니다.
Oracle SQL Developer
Oracle 통합은 인증된 프록시 모드에서만 작동합니다. 아래 명령을 사용하여 Oracle 데이터베이스에 대한 연결을 위해 로컬 프록시를 시작합니다:
tsh proxy db --tunnel --port 1521 --db-user=<user> --db-name=<db-name> oracle
이 명령은 로컬 포트 1521을 사용하지만, 원하는 포트를 선택하거나 --port
플래그를 생략하면 tsh
가 무작위로 로컬 포트를 선택하게 할 수 있습니다. 다시
GUI 클라이언트를 다시 구성할 필요가 없도록 하기 위해 포트를 지정해야 합니다.
"Connections"에서 새로운 데이터베이스 연결을 위해 "+" 버튼을 클릭합니다:
다음으로, --db-user
매개변수에서 이름과 사용자 이름을 설정합니다. 연결 유형을 "Custom JDBC"로 설정하고 tsh proxy db
명령에서 "Custom JDBC URL"을 설정합니다.
이제 "Test"를 클릭하여 구성을 확인할 수 있습니다.
축하합니다! 이제 Oracle 인스턴스에 연결되었습니다.