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

이 참조는 Teleport 데이터베이스 서비스 관리를 위한 일반적인 명령 실행 방법을 보여줍니다. 포함된 내용:

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

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

    당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면, tsh login으로 로그인한 다음 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오.

    예를 들어:

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

    클러스터 teleport.example.com

    버전 16.2.0

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결하고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속 tctl 명령어를 실행할 수 있습니다.

    자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로 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 프록시 서비스의 주소입니다.
--token인증 서비스에 등록하기 위한 초대 토큰입니다.
--ca-pin인증 서비스를 검증하기 위한 CA 핀입니다.
-c/--config구성 파일의 경로입니다 (기본값 /etc/teleport.yaml).
--labels이 노드의 레이블 목록입니다, 예: env=dev,app=web.
--fipsTeleport를 FedRAMP/FIPS 140-2 모드로 시작합니다.
--name프록시된 데이터베이스의 이름입니다.
--description프록시된 데이터베이스의 설명입니다.
--protocol프록시된 데이터베이스 프로토콜입니다. 지원되는 프로토콜은: postgresmysql입니다.
--uri프록시된 데이터베이스에 도달할 수 있는 주소입니다.
--ca-cert데이터베이스 CA 인증서의 경로입니다.
--aws-region(RDS, Aurora 또는 Redshift 전용) AWS 지역, RDS, Aurora 또는 Redshift 데이터베이스 인스턴스가 실행되는 지역입니다.
--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.
--token인증 서비스에 등록하기 위한 초대 토큰. 기본값: 없음.
--rds-discovery에이전트가 RDS/Aurora 인스턴스를 검색할 AWS 지역 목록입니다.
--rdsproxy-discovery에이전트가 RDS 프록시를 검색할 AWS 지역 목록입니다.
--redshift-discovery에이전트가 Redshift 인스턴스를 검색할 AWS 지역 목록입니다.
--redshift-serverless-discovery에이전트가 Redshift 서버리스 인스턴스를 검색할 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-pin인증 서비스를 검증하기 위한 CA 핀 (다수의 핀을 반복할 수 있습니다).
--name프록시된 데이터베이스의 이름입니다.
--protocol프록시된 데이터베이스 프로토콜입니다. 지원되는 값은 구성 참조를 참조하십시오.
--uri프록시된 데이터베이스에 도달할 수 있는 주소입니다.
--labels데이터베이스의 콤마로 구분된 레이블 목록입니다. 예: env=dev,dept=it
-o/--output--output=stdout로 표준 출력에 쓰거나, --output=file로 기본 구성 파일에 쓰거나, --output=file:///path로 사용자 정의 경로에 쓸 수 있습니다.
--dynamic-resources-labels동적 리소스와 일치할 레이블의 콤마로 구분된 목록입니다. 예: env=dev,dept=it. 동적 리소스 일치를 활성화하는 데 필요합니다.

teleport db configure bootstrap

데이터베이스 서비스의 필요한 구성을 부트스트랩합니다. 제공된 구성을 읽어 무엇을 부트스트랩할지 결정합니다.

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"수동" 모드에서 실행될 때, 이 명령은 구성을 직접 적용하는 대신 완료하려면 지침을 출력합니다.
--policy-nameTeleport 데이터베이스 서비스 정책의 이름입니다. 기본값: DatabaseAccess
--confirm사용자에게 프롬프트를 표시하지 않고 모든 작업을 자동으로 확인합니다.
--attach-to-role정책을 첨부할 역할 이름입니다. --attach-to-user와 상호 배타적입니다. 첨부 플래그가 제공되지 않으면, 명령은 자격 증명에 따라 현재 사용자/역할에 정책을 첨부하려고 시도합니다.
--attach-to-user정책을 첨부할 사용자 이름입니다. --attach-to-role과 상호 배타적입니다. 첨부 플래그가 제공되지 않으면, 명령은 자격 증명에 따라 현재 사용자/역할에 정책을 첨부하려고 시도합니다.

teleport db configure aws print-iam

제공된 데이터베이스 유형에 따라 데이터베이스 서비스에 필요한 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, 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 인증서, 클라이언트 인증서 및 개인 키 파일을 생성합니다.

참고

데이터베이스 형식의 경우, tctl은 인증 서비스 호스트에서 실행되어야 하거나 원격 사용자가 내장된 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 데이터베이스 서비스가 데이터베이스 서버에 연결하는 데 사용하는 호스트 이름입니다. 두 번째 예에서는 Teleport와 동일한 호스트에서 실행 중인 데이터베이스를 가정합니다.

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

tctl 사용자는 서명된 데이터베이스 인증서를 생성하기 위해 Teleport 데이터베이스 서비스 역할인 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 get user/${TELEPORT_USER?} > myuser.yaml

myuser.yaml을 편집하여 db-impersonator 역할을 추가합니다:

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

사용자를 업데이트합니다:

tctl create -f myuser.yaml

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 원문 보기