InfoGrab Docs

데이터베이스 접근 CLI 참조

요약

이 참조는 Database Service 관리를 위한 일반적인 명령을 실행하는 방법을 보여줍니다: Teleport Database Service를 실행할 호스트에서 실행되는 teleport 데몬 명령. Teleport 클러스터에 알려진 데이터베이스를 나타내는 db 리소스를 관리하는 데 사용하는 tctl 관리 도구.

이 참조는 Database Service 관리를 위한 일반적인 명령을 실행하는 방법을 보여줍니다:

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

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

To check that you can connect to your Teleport cluster, sign in with tsh login, then verify that you can run tctl commands using your current credentials.

For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:

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

If you can connect to the cluster and run the tctl status command, you can use your current credentials to run subsequent tctl commands from your workstation. If you host your own Teleport cluster, you can also run tctl commands on the computer that hosts the Teleport Auth Service for full permissions.

  • 클러스터의 데이터베이스에 접근하기 위해 최종 사용자가 실행하는 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 프록시된 데이터베이스 프로토콜. 지원: postgresmysql.
--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 프록시를 발견할 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 역할 및 사용자를 가장할 수 있어야 합니다. 가장을 허용하는 방법에 대한 자세한 내용은 가장 가이드를 참조하십시오.

$ 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

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을 실행할 수 있습니다.

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 단일 따옴표로 묶인 술어 언어로 쿼리(예: --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 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록. 제공하지 않으면 모든 데이터베이스 역할이 할당됩니다.

If --db-user or --db-name are required, then default settings are chosen from either an active database certificate obtained via a prior use of tsh db login or from the user's allowed db_users or db_names.

The database user is always required. The database name is required for PostgreSQL, MongoDB, and Oracle databases.

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 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록. 제공하지 않으면 모든 데이터베이스 역할이 할당됩니다.

If --db-user or --db-name are required, then default settings are chosen from either an active database certificate obtained via a prior use of tsh db login or from the user's allowed db_users or db_names.

The database user is always required. The database name is required for PostgreSQL, MongoDB, and Oracle databases.

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 참조

원문 보기
요약

이 참조는 Database Service 관리를 위한 일반적인 명령을 실행하는 방법을 보여줍니다: Teleport Database Service를 실행할 호스트에서 실행되는 teleport 데몬 명령. Teleport 클러스터에 알려진 데이터베이스를 나타내는 db 리소스를 관리하는 데 사용하는 tctl 관리 도구.

이 참조는 Database Service 관리를 위한 일반적인 명령을 실행하는 방법을 보여줍니다:

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

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

To check that you can connect to your Teleport cluster, sign in with tsh login, then verify that you can run tctl commands using your current credentials.

For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:

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

If you can connect to the cluster and run the tctl status command, you can use your current credentials to run subsequent tctl commands from your workstation. If you host your own Teleport cluster, you can also run tctl commands on the computer that hosts the Teleport Auth Service for full permissions.

  • 클러스터의 데이터베이스에 접근하기 위해 최종 사용자가 실행하는 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 프록시된 데이터베이스 프로토콜. 지원: postgresmysql.
--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 프록시를 발견할 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 역할 및 사용자를 가장할 수 있어야 합니다. 가장을 허용하는 방법에 대한 자세한 내용은 가장 가이드를 참조하십시오.

$ 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

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을 실행할 수 있습니다.

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 단일 따옴표로 묶인 술어 언어로 쿼리(예: --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 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록. 제공하지 않으면 모든 데이터베이스 역할이 할당됩니다.

If --db-user or --db-name are required, then default settings are chosen from either an active database certificate obtained via a prior use of tsh db login or from the user's allowed db_users or db_names.

The database user is always required. The database name is required for PostgreSQL, MongoDB, and Oracle databases.

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 자동 프로비저닝된 사용자에 사용할 데이터베이스 역할의 쉼표 구분 목록. 제공하지 않으면 모든 데이터베이스 역할이 할당됩니다.

If --db-user or --db-name are required, then default settings are chosen from either an active database certificate obtained via a prior use of tsh db login or from the user's allowed db_users or db_names.

The database user is always required. The database name is required for PostgreSQL, MongoDB, and Oracle databases.

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.