데이터베이스 접근 FAQ
Teleport v18.9이 페이지는 Teleport로 데이터베이스를 등록하는 것에 대한 일반적인 질문들의 답변을 제공합니다. Teleport 데이터베이스 서비스는 현재 다음 프로토콜을 지원합니다: PostgreSQL, Oracle, MySQL의 경우 자체 호스팅 배포 외에도 다음 클라우드 호스팅 버전이 지원됩니다:
이 페이지는 Teleport로 데이터베이스를 등록하는 것에 대한 일반적인 질문들의 답변을 제공합니다. Teleport 전반에 관한 자주 묻는 질문 목록은 자주 묻는 질문을 참조하세요.
Teleport 데이터베이스 서비스가 지원하는 데이터베이스 프로토콜은 무엇인가요?#
Teleport 데이터베이스 서비스는 현재 다음 프로토콜을 지원합니다:
- Cassandra
- ClickHouse
- CockroachDB
- DynamoDB
- MariaDB
- Microsoft SQL Server
- MongoDB
- MySQL
- Oracle
- OpenSearch
- PostgreSQL
- Redis and Valkey
- Snowflake
PostgreSQL, Oracle, MySQL의 경우 자체 호스팅 배포 외에도 다음 클라우드 호스팅 버전이 지원됩니다:
- Amazon RDS
- Amazon Aurora (IAM 인증을 지원하지 않는 Amazon Aurora Serverless 제외)
- Amazon Redshift
- Google Cloud SQL
- Azure Database
- Oracle Exadata
지원되는 모든 구성에 대해서는 이용 가능한 가이드를 참조하세요.
지원되지 않는 PostgreSQL 프로토콜 기능은 무엇인가요?#
다음 PostgreSQL 프로토콜 기능은 현재 지원되지 않습니다:
- 클라이언트 인증서 인증과 클라우드 데이터베이스의 IAM 인증을 제외한 모든 인증 방법
데이터베이스 세션이 기록된 세션 목록에 표시되나요?#
감사 로그(audit log)에서 데이터베이스 세션 활동을 확인할 수 있습니다.
세션이 업로드된 후에는 tsh play 명령으로 감사 데이터를 재생할 수 있습니다.
데이터베이스 세션 ID는 UUID 형식입니다(예: 307b49d6-56c7-4d20-8cf0-5bc5348a7101).
sid 키를 가진 데이터베이스 세션 ID를 얻으려면 감사 로그를 참조하세요.
PostgreSQL 데이터베이스 레코딩은 대화형 형식으로 제공됩니다:
$ tsh play 307b49d6-56c7-4d20-8cf0-5bc5348a7101
Session started to database "postgres-database" at Mon Jul 20 20:00 UTC
postgres=> SELECT * FROM products;
SUCCESS
(10 rows affected)
postgres=> INSERT INTO products (name, price) VALUES ('Phone', 150.00);
ERROR: permission denied for table products (SQLSTATE 42501)
Session ended at Mon Jul 20 20:30 UTC
모든 데이터베이스 프로토콜 레코딩은 JSON 형식(--format json)으로 지원됩니다:
$ tsh play --format json 307b49d6-56c7-4d20-8cf0-5bc5348a7101
{
"cluster_name": "teleport.example.com",
"code": "TDB02I",
"db_name": "example",
"db_origin": "dynamic",
"db_protocol": "postgres",
"db_query": "select * from sample;",
"db_roles": [
"access"
],
"db_service": "example",
"db_type": "rds",
"db_uri": "databases-1.us-east-1.rds.amazonaws.com:5432",
"db_user": "alice",
"ei": 2,
"event": "db.session.query",
"sid": "307b49d6-56c7-4d20-8cf0-5bc5348a7101",
"success": true,
"time": "2023-10-06T10:58:32.88Z",
"uid": "a649d925-9dac-44cc-bd04-4387c295580f",
"user": "alice"
}
감사 로그는 event 리소스에 대한 권한이 있는 사용자의 경우 Web UI에서 왼쪽 창의
Audit 아래에서 확인할 수 있습니다. 데이터베이스 세션은 세션 레코딩 페이지에
나열되지만, PostgreSQL 세션만 재생할 수 있습니다.
데이터베이스 클라이언트가 웹 공개 주소와 다른 공개 주소를 사용할 수 있나요?#
Teleport 프록시 서비스를 구성할 때 관리자는 postgres_public_addr 및 mysql_public_addr 구성 필드를 각 데이터베이스 클라이언트가 연결해야 하는 공개 주소로 설정할 수 있습니다. 자세한 내용은 프록시 구성을 참조하세요.
이는 Teleport Web UI가 L7 로드 밸런서(예: AWS의 ALB) 뒤에서 실행될 때 유용하며, 이 경우 PostgreSQL/MySQL 프록시는 일반 TCP 로드 밸런서(예: AWS의 NLB)에 노출되어야 합니다.
Teleport 프록시 서비스에 TLS 라우팅을 사용하면 웹 공개 주소로 모든 데이터베이스 연결이 가능합니다.
Teleport Enterprise (Cloud)에서 데이터베이스 연결은 TLS 라우팅이 적용되므로 웹 공개 주소를 사용합니다.
X 데이터베이스 클라이언트를 지원하나요?#
Teleport는 인증에 클라이언트 인증서를 사용하므로, 이 인증 방법을 지원하고 최신 TLS(1.2+)를 사용하는 모든 데이터베이스 클라이언트가 작동해야 합니다.
psql, mysql, mongo 또는 mongosh와 같은 표준 명령줄 클라이언트가 지원됩니다. 선택한 그래픽 클라이언트 구성에 대한 지침도 있습니다.
X 데이터베이스는 언제 지원될 예정인가요?#
저희는 고객 수요에 따라 향후 더 많은 데이터베이스를 지원할 계획입니다.
관심 있는 데이터베이스가 이미 GitHub 이슈에 요청되었는지 확인하거나 관심 등록을 위해 새 이슈를 열어주세요.
사용자 정의 CA 인증서를 제공할 수 있나요?#
네, 구성 파일을 사용하여 사용자 정의 CA 인증서를 전달할 수 있습니다(ca_cert_file 항목 참조).
Teleport가 생성한 CA에 사용자 정의 DNS 이름을 제공할 수 있나요?#
네, Teleport 구성 파일의 tls 섹션 아래 server_name을 사용하세요. 자세한 내용은 참조 구성 파일을 참조하세요.
데이터베이스 연결 시 CA 검증을 비활성화할 수 있나요?#
네, 권장하지는 않습니다. 인증서 검증은 중간자 공격을 방지하고 의도한 데이터베이스에 연결되어 있는지 확인합니다.
Teleport를 사용하면 구성 파일을 편집하여 사용자 정의 CA 인증서(ca_cert_file) 또는 사용자 정의 DNS 이름(server_name)을 제공할 수도 있으며, 이것이 더 안전합니다.
위 옵션 중 어느 것도 적합하지 않고 여전히 CA 확인을 비활성화하려면 Teleport 구성 파일의 tls 옵션 아래 mode를 사용할 수 있습니다.
자세한 내용은 참조 구성 파일을 참조하세요.
자동 검색된 데이터베이스에서 읽기 전용 및 사용자 정의 엔드포인트를 비활성화할 수 있나요?#
네, aws 매처에서 Teleport가 생성한 레이블 endpoint-type을 사용하여 엔드포인트를 필터링할 수 있습니다. 예를 들어, RDS 자동 검색에서 읽기 전용 및 사용자 정의 엔드포인트를 비활성화하려면 다른 엔드포인트 유형을 지정하여 매칭할 수 있습니다:
aws:
- types: ["rds"]
regions: ["us-west-1"]
tags:
"env": "dev"
"endpoint-type":
- "primary"
- "instance"
Teleport가 생성한 레이블과 값의 전체 목록은 레이블 참조를 참조하세요.