InfoGrab DocsInfoGrab Docs

데이터베이스 접근 CLI 참조

요약

이 페이지는 Teleport로 보호되는 데이터베이스를 관리하는 데 관련된 Teleport CLI 명령을 나열합니다. Teleport Database Service를 실행할 호스트에서 실행되는 teleport 데몬 명령.

이 페이지는 Teleport로 보호되는 데이터베이스를 관리하는 데 관련된 Teleport CLI 명령을 나열합니다. 여기에는 다음이 포함됩니다:

  • Teleport Database Service를 실행할 호스트에서 실행되는 teleport 데몬 명령.

  • Teleport 클러스터에 알려진 데이터베이스를 나타내는 db 리소스를 관리하는 데 사용하는 tctl 관리 도구.

Teleport cluster에 연결할 수 있는지 확인하려면 tsh login으로 로그인한 다음, 현재 자격 증명으로 tctl 명령을 실행할 수 있는지 확인합니다.

예를 들어, teleport.example.com에 cluster 내 Teleport Proxy Service의 도메인 이름을, email@example.com에 Teleport 사용자 이름을 지정하여 다음 명령을 실행합니다:

$ tsh login --proxy=teleport.example.com --user=email@example.com
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

cluster에 연결하여 tctl status 명령을 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 이후의 tctl 명령을 실행할 수 있습니다. 자체 Teleport cluster를 호스팅하는 경우, 전체 권한을 얻기 위해 Teleport Auth Service를 호스팅하는 컴퓨터에서 tctl 명령을 실행할 수도 있습니다.

  • 클러스터의 데이터베이스에 접근하기 위해 최종 사용자가 실행하는 tsh 클라이언트 도구.

teleport db start#

Teleport Database Service를 시작합니다.

$ teleport db start \
    --token=/path/to/token \
    --auth-server=proxy.example.com:443 \
    --name=example \
    --protocol=postgres \
    --uri=postgres.example.com:5432
$ teleport db start \
    --token=/path/to/token \
    --auth-server=mytenant.teleport.sh:443 \
    --name=example \
    --protocol=postgres \
    --uri=postgres.mytenant.teleport.sh:5432
플래그 설명
-d/--debug 상세 로깅을 stderr로 활성화합니다.
--pid-file PID 파일의 전체 경로. 기본적으로 PID 파일이 생성되지 않습니다.
--auth-server Teleport Proxy Service의 주소.
--token Auth Service에 등록하기 위한 초대 토큰.
--ca-pin Auth Service를 검증하기 위한 CA 핀.
-c/--config 구성 파일 경로(기본값 /etc/teleport.yaml).
--labels 이 노드에 대한 레이블의 쉼표 구분 목록, 예를 들어 env=dev,app=web.
--fips FedRAMP/FIPS 모드에서 Teleport를 시작합니다.
--name 프록시된 데이터베이스의 이름.
--description 프록시된 데이터베이스의 설명.
--protocol 프록시된 데이터베이스 프로토콜. 지원되는 값은 postgres, mysql, mongodb, oracle, cockroachdb, redis, snowflake, sqlserver, cassandra, elasticsearch, opensearch, dynamodb, clickhouse, clickhouse-http, spanner입니다.
--uri 프록시된 데이터베이스에 도달할 수 있는 주소.
--ca-cert 데이터베이스 CA 인증서 경로.
--aws-region (RDS, Aurora 또는 Redshift에만 해당) RDS, Aurora 또는 Redshift 데이터베이스 인스턴스가 실행 중인 AWS 리전.
--aws-redshift-cluster-id (Redshift에만 해당) Redshift 데이터베이스 클러스터 식별자.
--gcp-project-id (Cloud SQL에만 해당) GCP Cloud SQL 프로젝트 식별자.
--gcp-instance-id (Cloud SQL에만 해당) GCP Cloud SQL 인스턴스 식별자.

teleport db configure create#

샘플 Database Service 구성을 만듭니다.

$ teleport db configure create --rds-discovery=us-west-1 --rds-discovery=us-west-2
$ teleport db configure create \
  --token=/tmp/token \
  --proxy=proxy.example.com:443 \
  --name=example \
  --protocol=postgres \
  --uri=postgres://postgres.example.com:5432 \
  --labels=env=prod
$ teleport db configure create --rds-discovery=us-west-1 --rds-discovery=us-west-2
$ teleport db configure create \
  --token=/tmp/token \
  --proxy=mytenant.teleport.sh:443 \
  --name=example \
  --protocol=postgres \
  --uri=postgres://postgres.mytenant.teleport.sh:5432 \
  --labels=env=prod
플래그 설명
--proxy 연결할 Teleport Proxy Service 주소. 기본값: 0.0.0.0:3080.
--token Auth Service에 등록하기 위한 초대 토큰. 기본값: none.
--rds-discovery 에이전트가 RDS/Aurora 인스턴스를 발견할 AWS 리전 목록.
--rdsproxy-discovery 에이전트가 RDS Proxy를 발견할 AWS 리전 목록.
--redshift-discovery 에이전트가 Redshift 인스턴스를 발견할 AWS 리전 목록.
--redshift-serverless-discovery 에이전트가 Redshift Serverless 인스턴스를 발견할 AWS 리전 목록.
--elasticache-discovery 에이전트가 ElastiCache Redis 및 Valkey 클러스터를 발견할 AWS 리전 목록.
--elasticache-serverless-discovery 에이전트가 ElastiCache Serverless Valkey 또는 Redis 캐시를 발견할 AWS 리전 목록.
--aws-tags (AWS 발견에만 해당) 매칭할 AWS 리소스 태그의 쉼표 구분 목록, 예를 들어 env=dev,dept=it
--memorydb-discovery 에이전트가 MemoryDB 클러스터를 발견할 AWS 리전 목록.
--azure-mysql-discovery 에이전트가 MySQL 서버를 발견할 Azure 리전 목록.
--azure-postgres-discovery 에이전트가 Postgres 서버를 발견할 Azure 리전 목록.
--azure-redis-discovery 에이전트가 Azure Cache For Redis 서버를 발견할 Azure 리전 목록.
--azure-subscription Azure 발견을 위한 Azure 구독 ID 목록. 기본값은 "*"입니다.
--azure-resource-group Azure 발견을 위한 Azure 리소스 그룹 목록. 기본값은 "*"입니다.
--azure-tags (Azure 발견에만 해당) 매칭할 Azure 리소스 태그의 쉼표 구분 목록, 예를 들어 env=dev,dept=it
--ca-pin Auth Service를 검증하기 위한 CA 핀(여러 핀에 대해 반복 가능).
--name 프록시된 데이터베이스의 이름.
--protocol 프록시된 데이터베이스 프로토콜. 지원되는 값은 구성 참조를 확인하세요.
--uri 프록시된 데이터베이스에 도달할 수 있는 주소.
--labels 데이터베이스에 대한 레이블의 쉼표 구분 목록, 예를 들어 env=dev,dept=it
-o/--output --output=stdout으로 stdout에 쓰거나, --output=file로 기본 구성 파일에 쓰거나, --output=file:///path로 사용자 지정 경로에 씁니다.
--dynamic-resources-labels 동적 리소스를 매칭할 레이블의 쉼표 구분 목록(들), 예를 들어 env=dev,dept=it. 동적 리소스 매칭을 활성화하려면 필요합니다.

teleport db configure bootstrap#

Database Service에 필요한 구성을 부트스트랩합니다. 제공된 구성을 읽어 부트스트랩할 내용을 결정합니다.

$ teleport db configure bootstrap -c /etc/teleport.yaml --attach-to-user TeleportUser
$ teleport db configure bootstrap -c /etc/teleport.yaml --attach-to-role TeleportRole
$ teleport db configure bootstrap -c /etc/teleport.yaml --manual
플래그 설명
-c/--config 구성 파일 경로. 기본값: /etc/teleport.yaml.
--manual "manual" 모드에서 실행하면 이 명령은 직접 적용하는 대신 구성을 완료하는 지침을 출력합니다.
--policy-name Teleport Database Service 정책의 이름. 기본값: DatabaseAccess
--confirm 사용자에게 묻지 않고 모든 작업을 자동으로 확인합니다.
--attach-to-role 정책을 연결할 역할 이름. --attach-to-user와 상호 배타적입니다. 연결 플래그가 하나도 제공되지 않으면 이 명령은 자격 증명을 기반으로 현재 사용자/역할에 정책을 연결하려고 시도합니다.
--attach-to-user 정책을 연결할 사용자 이름. --attach-to-role과 상호 배타적입니다. 연결 플래그가 하나도 제공되지 않으면 이 명령은 자격 증명을 기반으로 현재 사용자/역할에 정책을 연결하려고 시도합니다.

teleport db configure aws print-iam#

제공된 데이터베이스 유형을 기반으로 Database Service에 필요한 IAM 권한을 출력합니다.

$ teleport db configure aws print-iam --types rds
$ teleport db configure aws print-iam --types rds,redshift --role my-db-service-role
$ teleport db configure aws print-iam --types redshift-serverless --assumes-roles my-access-role --policy
플래그 설명
-r/--types 정책에 포함할 데이터베이스 유형의 쉼표 구분 목록. rds, rdsproxy, redshift, redshift-serverless, elasticache, elasticache-serverless, memorydb, keyspace, dynamodb, opensearch 중 하나 이상.
--role 정책을 연결할 IAM 역할 이름. --user와 상호 배타적입니다.
--user 정책을 연결할 IAM 사용자 이름. --role과 상호 배타적입니다.
--[no-]policy IAM 정책 문서만 출력합니다.
--[no-]boundary IAM 경계 정책 문서만 출력합니다.
--assumes-roles IAM 아이덴티티가 수임할 수 있어야 하는 추가 IAM 역할의 쉼표 구분 목록. 각 역할은 IAM 역할 ARN이거나 해당 아이덴티티 계정 내 역할의 이름일 수 있습니다.

tctl auth sign#

--format=db(MongoDB의 경우 --format=mongodb) 플래그와 함께 호출되면 셀프 호스팅 데이터베이스 인스턴스로 Database Service를 구성하는 데 사용되는 CA 인증서, 클라이언트 인증서, 개인 키 파일을 생성합니다.

Note

데이터베이스 형식의 경우 tctl은 Auth Service 호스트에서 실행되거나, 원격 사용자가 내장된 Db 역할 및 사용자를 가장(impersonate)할 수 있어야 합니다. 가장을 허용하는 방법에 대한 자세한 내용은 가장 가이드를 참조하세요.

$ tctl auth sign --format=db --host=db.example.com --out=db --ttl=2190h
$ tctl auth sign --format=db --host=host1,localhost,127.0.0.1 --out=db --ttl=2190h

이 예시에서 db.example.com은 Teleport Database Service가 데이터베이스 서버에 도달할 수 있는 호스트명입니다. 두 번째 예시는 Teleport와 동일한 호스트에서 실행되는 데이터베이스를 가정합니다.

플래그 설명
--format db 값이 주어지면 데이터베이스 호환 형식으로 시크릿을 생성합니다. MongoDB 시크릿을 생성할 때는 mongodb를 사용하세요.
--host 인증서에 인코딩할 쉼표 구분 SAN. Teleport가 데이터베이스에 연결하는 데 사용할 호스트명을 포함해야 합니다.
--out 출력 파일의 이름 접두사.
--ttl 인증서 유효 기간.
데이터베이스 인증서 서명을 위한 RBAC 설정

서명된 데이터베이스 인증서를 생성하려면 tctl 사용자가 Teleport Database Service 역할인 Db를 가장할 수 있는 권한이 있어야 합니다. 이러한 가장 권한을 Teleport 사용자에게 추가하려면 다음 명령을 실행하세요.

먼저 Db 사용자를 가장할 수 있는 역할을 정의합니다. db-impersonator.yaml이라는 파일에 다음 내용을 추가하세요:

kind: role
version: v5
metadata:
  name: db-impersonator
spec:
  options:
  allow:
    impersonate:
      users: ['Db']
      roles: ['Db']

역할을 생성합니다:

$ tctl create -f db-impersonator.yaml
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

db-impersonator 역할을 추가할 수 있도록 편집기에서 Teleport 사용자의 동적 구성 리소스를 엽니다:

$ TELEPORT_USER=<your user>
$ tctl edit user/${TELEPORT_USER?}

db-impersonator 역할을 추가합니다:

spec:
   - access
   - auditor
   - editor
+  - db-impersonator
   status:
     is_locked: false

편집기에서 파일을 저장하고 닫아 사용자를 업데이트합니다.

Teleport 클러스터에서 로그아웃한 다음 다시 로그인합니다. 이제 데이터베이스 전용 인증서 형식에 대해 tctl auth sign을 실행할 수 있습니다.

Note

더 짧은 TTL을 사용하는 것을 권장하지만, 연결 기능을 잃지 않으려면 데이터베이스 서버 인증서가 만료되기 전에 갱신해야 한다는 점에 유의하십시오. 사용 사례에 가장 적합한 TTL 값을 선택하십시오.

tctl db ls#

클러스터에 등록된 모든 데이터베이스를 나열하는 관리 명령입니다.

$ tctl db ls
$ tctl db ls --format=yaml
플래그 설명
--format 출력 형식, text, yaml 또는 json 중 하나. 기본값은 text입니다.

tctl get db#

구성된 모든 데이터베이스 리소스 목록을 출력합니다.

플래그 설명
--format 출력 형식, text, yaml 또는 json 중 하나. 기본값은 yaml입니다.

tctl get db/database-resource-name#

database-resource-name 데이터베이스 리소스에 대한 세부 정보를 출력합니다.

플래그 설명
--format 출력 형식, text, yaml 또는 json 중 하나. 기본값은 yaml입니다.

tctl rm db/database-resource-name#

database-resource-name이라는 데이터베이스 리소스를 제거합니다.

tsh db ls#

RBAC에 따라 사용자가 사용할 수 있는 데이터베이스와 해당 연결 정보를 나열합니다.

# 모든 데이터베이스를 나열합니다.
$ tsh db ls
# 키워드로 데이터베이스를 검색합니다.
$ tsh db ls --search foo,bar
# 레이블로 데이터베이스를 필터링합니다.
$ tsh db ls key1=value1,key2=value2
# 추가 필드와 함께 모든 클러스터의 데이터베이스를 나열합니다.
$ tsh db ls --all -v
# "jq"를 사용하여 데이터베이스 이름을 가져옵니다.
$ tsh db ls --format json  | jq -r '.[].metadata.name'
플래그 설명
--search 쉼표로 구분된 검색 키워드 또는 따옴표로 묶인 문구 목록(예: --search=foo,bar,"some phrase").
--query 단일 따옴표로 묶인 술어 언어(predicate language)를 사용한 쿼리(예: --query='labels["key1"] == "value1" && labels["key2"] != "value2"').
--format 출력 형식(text, json, yaml).

tsh db login#

데이터베이스 자격 증명을 검색합니다.

$ tsh db login example
$ tsh db login --db-user=postgres --db-name=postgres example
플래그 설명
--db-user 로그인할 데이터베이스 사용자.
--db-name 로그인할 데이터베이스 이름.
--db-roles 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록. 제공하지 않으면 모든 데이터베이스 역할이 할당됩니다.

--db-user 또는 --db-name이 필요한 경우, 기본 설정은 이전에 tsh db login을 사용하여 얻은 활성 데이터베이스 인증서 또는 사용자에게 허용된 db_usersdb_names에서 선택됩니다.

데이터베이스 사용자는 항상 필요합니다. 데이터베이스 이름은 PostgreSQL, MongoDB, Oracle 데이터베이스에 필요합니다.

tsh db logout#

데이터베이스 자격 증명을 제거합니다.

$ tsh db logout example
$ tsh db logout

tsh db connect#

CLI 클라이언트를 사용하여 데이터베이스에 연결합니다.

# 단일 데이터베이스에만 로그인된 경우의 축약 구문.
$ tsh db connect
# 연결할 데이터베이스 서비스를 명시적으로 지정합니다.
$ tsh db connect example
# 연결할 데이터베이스 사용자와 이름을 제공합니다.
$ tsh db connect --db-user=alice --db-name=db example
# 허용된 데이터베이스 역할 중 일부를 선택합니다.
$ tsh db connect --db-user=alice --db-name=db --db-roles reader example
Note

해당하는 데이터베이스 CLI 클라이언트(psql, mysql, mongo 또는 mongosh)가 PATH에 있어야 합니다.

플래그 설명
--db-user 로그인할 데이터베이스 사용자.
--db-name 로그인할 데이터베이스 이름.
--db-roles 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록. 제공하지 않으면 모든 데이터베이스 역할이 할당됩니다.

--db-user 또는 --db-name이 필요한 경우, 기본 설정은 이전에 tsh db login을 사용하여 얻은 활성 데이터베이스 인증서 또는 사용자에게 허용된 db_usersdb_names에서 선택됩니다.

데이터베이스 사용자는 항상 필요합니다. 데이터베이스 이름은 PostgreSQL, MongoDB, Oracle 데이터베이스에 필요합니다.

tsh db exec#

대상 데이터베이스 서비스에서 데이터베이스 명령을 실행합니다.

# 레이블로 데이터베이스를 검색합니다.
$ tsh db exec "source my_script.sql" --db-user mysql --labels key1=value1,key2=value2
# 키워드로 데이터베이스를 검색합니다.
$ tsh db exec "select 1" --db-user mysql --db-name mysql --search foo,bar
# 확인 없이 지정된 대상 데이터베이스에서 명령을 실행합니다.
$ tsh db exec "select @@hostname" --db-user mysql --dbs mydb1,mydb2,mydb3 --no-confirm
# 명령을 병렬로 실행하고 출력을 파일로 저장합니다.
$ tsh db exec "select 1" --db-user mysql --labels env=dev --parallel=5 --output-dir=exec-outputs
Note

현재 PostgreSQL 및 MySQL 데이터베이스만 지원됩니다. 해당하는 데이터베이스 CLI 클라이언트(psql, mysql)가 PATH에 있어야 합니다.

플래그 설명
--db-user 로그인할 데이터베이스 사용자.
--db-name 로그인할 데이터베이스 이름.
--db-roles 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록.
--dbs 대상 데이터베이스 서비스의 쉼표 구분 목록. --search 또는 --labels와 상호 배타적입니다.
--search 쉼표로 구분된 검색 키워드 또는 따옴표로 묶인 문구 목록(예: --search=foo,bar,"some phrase").
--labels 레이블로 필터링할 쉼표 구분 레이블 목록(예: key1=value1,key2=value2).
--output-dir 대상 데이터베이스 서비스별 명령 출력을 저장할 디렉터리. 요약은 "summary.json"으로 저장됩니다.
--[no-]confirm 명령을 실행하기 전에 선택된 데이터베이스 서비스를 확인합니다.

tsh db env#

특정 데이터베이스에 대한 환경 변수를 출력합니다.

$ tsh db env
$ tsh db env example
$ eval $(tsh db env)

tsh db config#

데이터베이스 연결 정보를 출력합니다. GUI 클라이언트를 구성할 때 유용합니다.

$ tsh db config
$ tsh db config example
$ tsh db config --format=cmd example
플래그 설명
--format 출력 형식: 기본값은 text이며, 네이티브 데이터베이스 클라이언트 연결 명령을 출력하려면 cmd를 사용합니다.

데이터베이스 접근 CLI 참조

Teleport v18.9
원문 보기
요약

이 페이지는 Teleport로 보호되는 데이터베이스를 관리하는 데 관련된 Teleport CLI 명령을 나열합니다. Teleport Database Service를 실행할 호스트에서 실행되는 teleport 데몬 명령.

이 페이지는 Teleport로 보호되는 데이터베이스를 관리하는 데 관련된 Teleport CLI 명령을 나열합니다. 여기에는 다음이 포함됩니다:

  • Teleport Database Service를 실행할 호스트에서 실행되는 teleport 데몬 명령.

  • Teleport 클러스터에 알려진 데이터베이스를 나타내는 db 리소스를 관리하는 데 사용하는 tctl 관리 도구.

Teleport cluster에 연결할 수 있는지 확인하려면 tsh login으로 로그인한 다음, 현재 자격 증명으로 tctl 명령을 실행할 수 있는지 확인합니다.

예를 들어, teleport.example.com에 cluster 내 Teleport Proxy Service의 도메인 이름을, email@example.com에 Teleport 사용자 이름을 지정하여 다음 명령을 실행합니다:

$ tsh login --proxy=teleport.example.com --user=email@example.com
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

cluster에 연결하여 tctl status 명령을 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 이후의 tctl 명령을 실행할 수 있습니다. 자체 Teleport cluster를 호스팅하는 경우, 전체 권한을 얻기 위해 Teleport Auth Service를 호스팅하는 컴퓨터에서 tctl 명령을 실행할 수도 있습니다.

  • 클러스터의 데이터베이스에 접근하기 위해 최종 사용자가 실행하는 tsh 클라이언트 도구.

teleport db start#

Teleport Database Service를 시작합니다.

$ teleport db start \
    --token=/path/to/token \
    --auth-server=proxy.example.com:443 \
    --name=example \
    --protocol=postgres \
    --uri=postgres.example.com:5432
$ teleport db start \
    --token=/path/to/token \
    --auth-server=mytenant.teleport.sh:443 \
    --name=example \
    --protocol=postgres \
    --uri=postgres.mytenant.teleport.sh:5432
플래그 설명
-d/--debug 상세 로깅을 stderr로 활성화합니다.
--pid-file PID 파일의 전체 경로. 기본적으로 PID 파일이 생성되지 않습니다.
--auth-server Teleport Proxy Service의 주소.
--token Auth Service에 등록하기 위한 초대 토큰.
--ca-pin Auth Service를 검증하기 위한 CA 핀.
-c/--config 구성 파일 경로(기본값 /etc/teleport.yaml).
--labels 이 노드에 대한 레이블의 쉼표 구분 목록, 예를 들어 env=dev,app=web.
--fips FedRAMP/FIPS 모드에서 Teleport를 시작합니다.
--name 프록시된 데이터베이스의 이름.
--description 프록시된 데이터베이스의 설명.
--protocol 프록시된 데이터베이스 프로토콜. 지원되는 값은 postgres, mysql, mongodb, oracle, cockroachdb, redis, snowflake, sqlserver, cassandra, elasticsearch, opensearch, dynamodb, clickhouse, clickhouse-http, spanner입니다.
--uri 프록시된 데이터베이스에 도달할 수 있는 주소.
--ca-cert 데이터베이스 CA 인증서 경로.
--aws-region (RDS, Aurora 또는 Redshift에만 해당) RDS, Aurora 또는 Redshift 데이터베이스 인스턴스가 실행 중인 AWS 리전.
--aws-redshift-cluster-id (Redshift에만 해당) Redshift 데이터베이스 클러스터 식별자.
--gcp-project-id (Cloud SQL에만 해당) GCP Cloud SQL 프로젝트 식별자.
--gcp-instance-id (Cloud SQL에만 해당) GCP Cloud SQL 인스턴스 식별자.

teleport db configure create#

샘플 Database Service 구성을 만듭니다.

$ teleport db configure create --rds-discovery=us-west-1 --rds-discovery=us-west-2
$ teleport db configure create \
  --token=/tmp/token \
  --proxy=proxy.example.com:443 \
  --name=example \
  --protocol=postgres \
  --uri=postgres://postgres.example.com:5432 \
  --labels=env=prod
$ teleport db configure create --rds-discovery=us-west-1 --rds-discovery=us-west-2
$ teleport db configure create \
  --token=/tmp/token \
  --proxy=mytenant.teleport.sh:443 \
  --name=example \
  --protocol=postgres \
  --uri=postgres://postgres.mytenant.teleport.sh:5432 \
  --labels=env=prod
플래그 설명
--proxy 연결할 Teleport Proxy Service 주소. 기본값: 0.0.0.0:3080.
--token Auth Service에 등록하기 위한 초대 토큰. 기본값: none.
--rds-discovery 에이전트가 RDS/Aurora 인스턴스를 발견할 AWS 리전 목록.
--rdsproxy-discovery 에이전트가 RDS Proxy를 발견할 AWS 리전 목록.
--redshift-discovery 에이전트가 Redshift 인스턴스를 발견할 AWS 리전 목록.
--redshift-serverless-discovery 에이전트가 Redshift Serverless 인스턴스를 발견할 AWS 리전 목록.
--elasticache-discovery 에이전트가 ElastiCache Redis 및 Valkey 클러스터를 발견할 AWS 리전 목록.
--elasticache-serverless-discovery 에이전트가 ElastiCache Serverless Valkey 또는 Redis 캐시를 발견할 AWS 리전 목록.
--aws-tags (AWS 발견에만 해당) 매칭할 AWS 리소스 태그의 쉼표 구분 목록, 예를 들어 env=dev,dept=it
--memorydb-discovery 에이전트가 MemoryDB 클러스터를 발견할 AWS 리전 목록.
--azure-mysql-discovery 에이전트가 MySQL 서버를 발견할 Azure 리전 목록.
--azure-postgres-discovery 에이전트가 Postgres 서버를 발견할 Azure 리전 목록.
--azure-redis-discovery 에이전트가 Azure Cache For Redis 서버를 발견할 Azure 리전 목록.
--azure-subscription Azure 발견을 위한 Azure 구독 ID 목록. 기본값은 "*"입니다.
--azure-resource-group Azure 발견을 위한 Azure 리소스 그룹 목록. 기본값은 "*"입니다.
--azure-tags (Azure 발견에만 해당) 매칭할 Azure 리소스 태그의 쉼표 구분 목록, 예를 들어 env=dev,dept=it
--ca-pin Auth Service를 검증하기 위한 CA 핀(여러 핀에 대해 반복 가능).
--name 프록시된 데이터베이스의 이름.
--protocol 프록시된 데이터베이스 프로토콜. 지원되는 값은 구성 참조를 확인하세요.
--uri 프록시된 데이터베이스에 도달할 수 있는 주소.
--labels 데이터베이스에 대한 레이블의 쉼표 구분 목록, 예를 들어 env=dev,dept=it
-o/--output --output=stdout으로 stdout에 쓰거나, --output=file로 기본 구성 파일에 쓰거나, --output=file:///path로 사용자 지정 경로에 씁니다.
--dynamic-resources-labels 동적 리소스를 매칭할 레이블의 쉼표 구분 목록(들), 예를 들어 env=dev,dept=it. 동적 리소스 매칭을 활성화하려면 필요합니다.

teleport db configure bootstrap#

Database Service에 필요한 구성을 부트스트랩합니다. 제공된 구성을 읽어 부트스트랩할 내용을 결정합니다.

$ teleport db configure bootstrap -c /etc/teleport.yaml --attach-to-user TeleportUser
$ teleport db configure bootstrap -c /etc/teleport.yaml --attach-to-role TeleportRole
$ teleport db configure bootstrap -c /etc/teleport.yaml --manual
플래그 설명
-c/--config 구성 파일 경로. 기본값: /etc/teleport.yaml.
--manual "manual" 모드에서 실행하면 이 명령은 직접 적용하는 대신 구성을 완료하는 지침을 출력합니다.
--policy-name Teleport Database Service 정책의 이름. 기본값: DatabaseAccess
--confirm 사용자에게 묻지 않고 모든 작업을 자동으로 확인합니다.
--attach-to-role 정책을 연결할 역할 이름. --attach-to-user와 상호 배타적입니다. 연결 플래그가 하나도 제공되지 않으면 이 명령은 자격 증명을 기반으로 현재 사용자/역할에 정책을 연결하려고 시도합니다.
--attach-to-user 정책을 연결할 사용자 이름. --attach-to-role과 상호 배타적입니다. 연결 플래그가 하나도 제공되지 않으면 이 명령은 자격 증명을 기반으로 현재 사용자/역할에 정책을 연결하려고 시도합니다.

teleport db configure aws print-iam#

제공된 데이터베이스 유형을 기반으로 Database Service에 필요한 IAM 권한을 출력합니다.

$ teleport db configure aws print-iam --types rds
$ teleport db configure aws print-iam --types rds,redshift --role my-db-service-role
$ teleport db configure aws print-iam --types redshift-serverless --assumes-roles my-access-role --policy
플래그 설명
-r/--types 정책에 포함할 데이터베이스 유형의 쉼표 구분 목록. rds, rdsproxy, redshift, redshift-serverless, elasticache, elasticache-serverless, memorydb, keyspace, dynamodb, opensearch 중 하나 이상.
--role 정책을 연결할 IAM 역할 이름. --user와 상호 배타적입니다.
--user 정책을 연결할 IAM 사용자 이름. --role과 상호 배타적입니다.
--[no-]policy IAM 정책 문서만 출력합니다.
--[no-]boundary IAM 경계 정책 문서만 출력합니다.
--assumes-roles IAM 아이덴티티가 수임할 수 있어야 하는 추가 IAM 역할의 쉼표 구분 목록. 각 역할은 IAM 역할 ARN이거나 해당 아이덴티티 계정 내 역할의 이름일 수 있습니다.

tctl auth sign#

--format=db(MongoDB의 경우 --format=mongodb) 플래그와 함께 호출되면 셀프 호스팅 데이터베이스 인스턴스로 Database Service를 구성하는 데 사용되는 CA 인증서, 클라이언트 인증서, 개인 키 파일을 생성합니다.

Note

데이터베이스 형식의 경우 tctl은 Auth Service 호스트에서 실행되거나, 원격 사용자가 내장된 Db 역할 및 사용자를 가장(impersonate)할 수 있어야 합니다. 가장을 허용하는 방법에 대한 자세한 내용은 가장 가이드를 참조하세요.

$ tctl auth sign --format=db --host=db.example.com --out=db --ttl=2190h
$ tctl auth sign --format=db --host=host1,localhost,127.0.0.1 --out=db --ttl=2190h

이 예시에서 db.example.com은 Teleport Database Service가 데이터베이스 서버에 도달할 수 있는 호스트명입니다. 두 번째 예시는 Teleport와 동일한 호스트에서 실행되는 데이터베이스를 가정합니다.

플래그 설명
--format db 값이 주어지면 데이터베이스 호환 형식으로 시크릿을 생성합니다. MongoDB 시크릿을 생성할 때는 mongodb를 사용하세요.
--host 인증서에 인코딩할 쉼표 구분 SAN. Teleport가 데이터베이스에 연결하는 데 사용할 호스트명을 포함해야 합니다.
--out 출력 파일의 이름 접두사.
--ttl 인증서 유효 기간.
데이터베이스 인증서 서명을 위한 RBAC 설정

서명된 데이터베이스 인증서를 생성하려면 tctl 사용자가 Teleport Database Service 역할인 Db를 가장할 수 있는 권한이 있어야 합니다. 이러한 가장 권한을 Teleport 사용자에게 추가하려면 다음 명령을 실행하세요.

먼저 Db 사용자를 가장할 수 있는 역할을 정의합니다. db-impersonator.yaml이라는 파일에 다음 내용을 추가하세요:

kind: role
version: v5
metadata:
  name: db-impersonator
spec:
  options:
  allow:
    impersonate:
      users: ['Db']
      roles: ['Db']

역할을 생성합니다:

$ tctl create -f db-impersonator.yaml
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

db-impersonator 역할을 추가할 수 있도록 편집기에서 Teleport 사용자의 동적 구성 리소스를 엽니다:

$ TELEPORT_USER=<your user>
$ tctl edit user/${TELEPORT_USER?}

db-impersonator 역할을 추가합니다:

spec:
   - access
   - auditor
   - editor
+  - db-impersonator
   status:
     is_locked: false

편집기에서 파일을 저장하고 닫아 사용자를 업데이트합니다.

Teleport 클러스터에서 로그아웃한 다음 다시 로그인합니다. 이제 데이터베이스 전용 인증서 형식에 대해 tctl auth sign을 실행할 수 있습니다.

Note

더 짧은 TTL을 사용하는 것을 권장하지만, 연결 기능을 잃지 않으려면 데이터베이스 서버 인증서가 만료되기 전에 갱신해야 한다는 점에 유의하십시오. 사용 사례에 가장 적합한 TTL 값을 선택하십시오.

tctl db ls#

클러스터에 등록된 모든 데이터베이스를 나열하는 관리 명령입니다.

$ tctl db ls
$ tctl db ls --format=yaml
플래그 설명
--format 출력 형식, text, yaml 또는 json 중 하나. 기본값은 text입니다.

tctl get db#

구성된 모든 데이터베이스 리소스 목록을 출력합니다.

플래그 설명
--format 출력 형식, text, yaml 또는 json 중 하나. 기본값은 yaml입니다.

tctl get db/database-resource-name#

database-resource-name 데이터베이스 리소스에 대한 세부 정보를 출력합니다.

플래그 설명
--format 출력 형식, text, yaml 또는 json 중 하나. 기본값은 yaml입니다.

tctl rm db/database-resource-name#

database-resource-name이라는 데이터베이스 리소스를 제거합니다.

tsh db ls#

RBAC에 따라 사용자가 사용할 수 있는 데이터베이스와 해당 연결 정보를 나열합니다.

# 모든 데이터베이스를 나열합니다.
$ tsh db ls
# 키워드로 데이터베이스를 검색합니다.
$ tsh db ls --search foo,bar
# 레이블로 데이터베이스를 필터링합니다.
$ tsh db ls key1=value1,key2=value2
# 추가 필드와 함께 모든 클러스터의 데이터베이스를 나열합니다.
$ tsh db ls --all -v
# "jq"를 사용하여 데이터베이스 이름을 가져옵니다.
$ tsh db ls --format json  | jq -r '.[].metadata.name'
플래그 설명
--search 쉼표로 구분된 검색 키워드 또는 따옴표로 묶인 문구 목록(예: --search=foo,bar,"some phrase").
--query 단일 따옴표로 묶인 술어 언어(predicate language)를 사용한 쿼리(예: --query='labels["key1"] == "value1" && labels["key2"] != "value2"').
--format 출력 형식(text, json, yaml).

tsh db login#

데이터베이스 자격 증명을 검색합니다.

$ tsh db login example
$ tsh db login --db-user=postgres --db-name=postgres example
플래그 설명
--db-user 로그인할 데이터베이스 사용자.
--db-name 로그인할 데이터베이스 이름.
--db-roles 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록. 제공하지 않으면 모든 데이터베이스 역할이 할당됩니다.

--db-user 또는 --db-name이 필요한 경우, 기본 설정은 이전에 tsh db login을 사용하여 얻은 활성 데이터베이스 인증서 또는 사용자에게 허용된 db_usersdb_names에서 선택됩니다.

데이터베이스 사용자는 항상 필요합니다. 데이터베이스 이름은 PostgreSQL, MongoDB, Oracle 데이터베이스에 필요합니다.

tsh db logout#

데이터베이스 자격 증명을 제거합니다.

$ tsh db logout example
$ tsh db logout

tsh db connect#

CLI 클라이언트를 사용하여 데이터베이스에 연결합니다.

# 단일 데이터베이스에만 로그인된 경우의 축약 구문.
$ tsh db connect
# 연결할 데이터베이스 서비스를 명시적으로 지정합니다.
$ tsh db connect example
# 연결할 데이터베이스 사용자와 이름을 제공합니다.
$ tsh db connect --db-user=alice --db-name=db example
# 허용된 데이터베이스 역할 중 일부를 선택합니다.
$ tsh db connect --db-user=alice --db-name=db --db-roles reader example
Note

해당하는 데이터베이스 CLI 클라이언트(psql, mysql, mongo 또는 mongosh)가 PATH에 있어야 합니다.

플래그 설명
--db-user 로그인할 데이터베이스 사용자.
--db-name 로그인할 데이터베이스 이름.
--db-roles 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록. 제공하지 않으면 모든 데이터베이스 역할이 할당됩니다.

--db-user 또는 --db-name이 필요한 경우, 기본 설정은 이전에 tsh db login을 사용하여 얻은 활성 데이터베이스 인증서 또는 사용자에게 허용된 db_usersdb_names에서 선택됩니다.

데이터베이스 사용자는 항상 필요합니다. 데이터베이스 이름은 PostgreSQL, MongoDB, Oracle 데이터베이스에 필요합니다.

tsh db exec#

대상 데이터베이스 서비스에서 데이터베이스 명령을 실행합니다.

# 레이블로 데이터베이스를 검색합니다.
$ tsh db exec "source my_script.sql" --db-user mysql --labels key1=value1,key2=value2
# 키워드로 데이터베이스를 검색합니다.
$ tsh db exec "select 1" --db-user mysql --db-name mysql --search foo,bar
# 확인 없이 지정된 대상 데이터베이스에서 명령을 실행합니다.
$ tsh db exec "select @@hostname" --db-user mysql --dbs mydb1,mydb2,mydb3 --no-confirm
# 명령을 병렬로 실행하고 출력을 파일로 저장합니다.
$ tsh db exec "select 1" --db-user mysql --labels env=dev --parallel=5 --output-dir=exec-outputs
Note

현재 PostgreSQL 및 MySQL 데이터베이스만 지원됩니다. 해당하는 데이터베이스 CLI 클라이언트(psql, mysql)가 PATH에 있어야 합니다.

플래그 설명
--db-user 로그인할 데이터베이스 사용자.
--db-name 로그인할 데이터베이스 이름.
--db-roles 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록.
--dbs 대상 데이터베이스 서비스의 쉼표 구분 목록. --search 또는 --labels와 상호 배타적입니다.
--search 쉼표로 구분된 검색 키워드 또는 따옴표로 묶인 문구 목록(예: --search=foo,bar,"some phrase").
--labels 레이블로 필터링할 쉼표 구분 레이블 목록(예: key1=value1,key2=value2).
--output-dir 대상 데이터베이스 서비스별 명령 출력을 저장할 디렉터리. 요약은 "summary.json"으로 저장됩니다.
--[no-]confirm 명령을 실행하기 전에 선택된 데이터베이스 서비스를 확인합니다.

tsh db env#

특정 데이터베이스에 대한 환경 변수를 출력합니다.

$ tsh db env
$ tsh db env example
$ eval $(tsh db env)

tsh db config#

데이터베이스 연결 정보를 출력합니다. GUI 클라이언트를 구성할 때 유용합니다.

$ tsh db config
$ tsh db config example
$ tsh db config --format=cmd example
플래그 설명
--format 출력 형식: 기본값은 text이며, 네이티브 데이터베이스 클라이언트 연결 명령을 출력하려면 cmd를 사용합니다.