Infograb logo
데이터베이스 액세스 CLI 참조

이 참조에서는 Teleport 데이터베이스 서비스를 관리하기 위한 일반적인 명령을 실행하는 방법을 보여줍니다:

  • Teleport 데이터베이스 서비스를 실행할 호스트에서 실행되는 teleport 데몬 명령입니다.

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

    연결이 가능한지 확인하기 위해 tsh login 으로 로그인한 다음, 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

    예를 들어:

    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 17.0.0-dev

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

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

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

teleport db start

Teleport 데이터베이스 서비스를 시작합니다.

teleport db start \ --token=/path/to/token \ --auth-server=proxy.example.com:3080 \ --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/--debugstderr에 자세한 로그를 활성화합니다.
--pid-filePID 파일의 전체 경로. 기본적으로 PID 파일이 생성되지 않습니다.
--auth-serverTeleport 프록시 서비스의 주소입니다.
--tokenAuth 서비스에 등록하기 위한 초대 토큰입니다.
--ca-pinAuth 서비스를 검증하기 위한 CA 핀입니다.
-c/--config구성 파일의 경로 (기본값 /etc/teleport.yaml )입니다.
--labels이 노드에 대한 라벨의 쉼표로 구분된 목록, 예: env=dev,app=web 입니다.
--fipsFedRAMP/FIPS 140-2 모드에서 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

샘플 데이터베이스 서비스 구성을 생성합니다.

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:3080 \ --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 프록시 서비스 주소입니다. 기본값: 0.0.0.0:3080 .
--tokenAuth 서비스에 등록하기 위한 초대 토큰입니다. 기본값: 없음.
--rds-discovery에이전트가 RDS/Aurora 인스턴스를 발견할 AWS 지역 목록입니다.
--rdsproxy-discovery에이전트가 RDS 프록시를 발견할 AWS 지역 목록입니다.
--redshift-discovery에이전트가 Redshift 인스턴스를 발견할 AWS 지역 목록입니다.
--redshift-serverless-discovery에이전트가 Redshift Serverless 인스턴스를 발견할 AWS 지역 목록입니다.
--elasticache-discovery에이전트가 ElastiCache 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-subscriptionAzure 발견을 위한 Azure 구독 ID 목록입니다. 기본값은 "*"입니다.
--azure-resource-groupAzure 발견을 위한 Azure 리소스 그룹 목록입니다. 기본값은 "*"입니다.
--azure-tags(Azure 발견 전용) 일치할 Azure 리소스 태그의 쉼표로 구분된 목록, 예: env=dev,dept=it
--ca-pinAuth 서비스를 검증하기 위한 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
Flag설명
-c/--config구성 파일의 경로입니다. 기본값: /etc/teleport.yaml .
--manual"수동" 모드로 실행될 때, 이 명령은 구성을 직접 적용하는 대신 완료하는 방법에 대한 지침을 출력합니다.
--policy-nameTeleport 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
Flag설명
-r/--types정책에 포함할 데이터베이스 유형의 쉼표로 구분된 목록입니다. rds , rdsproxy , redshift , redshift-serverless , elasticache , memorydb , keyspace , dynamodb , opensearch 중 하나입니다.
--role정책을 부착할 IAM 역할 이름입니다. --user 와 상호 배타적입니다.
--user정책을 부착할 IAM 사용자 이름입니다. --role 과 상호 배타적입니다.
--[no-]policyIAM 정책 문서만 출력합니다.
--[no-]boundaryIAM 경계 정책 문서만 출력합니다.
--assumes-rolesIAM 정체성이 가정할 수 있는 추가 IAM 역할의 쉼표로 구분된 목록입니다. 각 역할은 IAM 역할 ARN 또는 정체성의 계정에서 역할 이름이 될 수 있습니다.

tctl auth sign

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

참고

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

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와 동일한 호스트에서 실행 중인 데이터베이스를 가정합니다.

Flag설명
--formatdb 라는 값을 주면 데이터베이스 호환 형식으로 비밀을 생성합니다. MongoDB 비밀을 생성할 때는 mongodb 를 사용합니다.
--host인증서에 인코딩할 쉼표로 구분된 SAN입니다. Teleport가 데이터베이스에 연결하는 데 사용할 호스트 이름을 포함해야 합니다.
--out출력 파일의 이름 접두사입니다.
--ttl인증서 유효 기간입니다.

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

편집기에서 Teleport 사용자의 동적 구성 리소스를 열어 db-impersonator 역할을 추가합니다:

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

TTL

우리는 더 짧은 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

사용 가능한 데이터베이스와 그 연결 정보를 나열합니다.

tsh db ls

사용자가 접근할 수 있는 데이터베이스만 표시됩니다 (자세한 사항은 RBAC를 참조하십시오).

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_users 또는 db_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
참고

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

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

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

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

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 입니다.
Teleport 원문 보기