이 참조는 Teleport 데이터베이스 서비스 관리를 위한 일반적인 명령 실행 방법을 보여줍니다. 포함된 내용:
-
Teleport 데이터베이스 서비스를 실행할 호스트에서 실행되는
teleport
데몬 명령입니다. -
Teleport 클러스터에서 알려진 데이터베이스를 나타내는
db
리소스를 관리하는 데 사용하는tctl
관리 도구입니다.당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면,
tsh login
으로 로그인한 다음 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오.예를 들어:
tsh login --proxy=teleport.example.com --user=email@example.comtctl 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/--debug | stderr에 자세한 로깅을 활성화합니다. |
--pid-file | PID 파일의 전체 경로입니다. 기본적으로 PID 파일이 생성되지 않습니다. |
--auth-server | Teleport 프록시 서비스의 주소입니다. |
--token | 인증 서비스에 등록하기 위한 초대 토큰입니다. |
--ca-pin | 인증 서비스를 검증하기 위한 CA 핀입니다. |
-c/--config | 구성 파일의 경로입니다 (기본값 /etc/teleport.yaml ). |
--labels | 이 노드의 레이블 목록입니다, 예: env=dev,app=web . |
--fips | Teleport를 FedRAMP/FIPS 140-2 모드로 시작합니다. |
--name | 프록시된 데이터베이스의 이름입니다. |
--description | 프록시된 데이터베이스의 설명입니다. |
--protocol | 프록시된 데이터베이스 프로토콜입니다. 지원되는 프로토콜은: postgres 와 mysql 입니다. |
--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-2teleport 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-2teleport 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-subscription | Azure 검색을 위한 Azure 구독 ID 목록입니다. 기본값은 "*". |
--azure-resource-group | Azure 검색을 위한 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 TeleportUserteleport db configure bootstrap -c /etc/teleport.yaml --attach-to-role TeleportRoleteleport db configure bootstrap -c /etc/teleport.yaml --manual
플래그 | 설명 |
---|---|
-c/--config | 구성 파일의 경로입니다. 기본값: /etc/teleport.yaml . |
--manual | "수동" 모드에서 실행될 때, 이 명령은 구성을 직접 적용하는 대신 완료하려면 지침을 출력합니다. |
--policy-name | Teleport 데이터베이스 서비스 정책의 이름입니다. 기본값: 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 rdsteleport db configure aws print-iam --types rds,redshift --role my-db-service-roleteleport 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-]policy | IAM 정책 문서만 출력합니다. |
--[no-]boundary | IAM 경계 정책 문서만 출력합니다. |
--assumes-roles | IAM 신원이 수용할 수 있는 추가 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=2190htctl auth sign --format=db --host=host1,localhost,127.0.0.1 --out=db --ttl=2190h
이 예에서 db.example.com
은 Teleport 데이터베이스 서비스가 데이터베이스 서버에 연결하는 데 사용하는 호스트 이름입니다. 두 번째 예에서는 Teleport와 동일한 호스트에서 실행 중인 데이터베이스를 가정합니다.
플래그 | 설명 |
---|---|
--format | 값 db 를 지정하면, 데이터베이스 호환 형식으로 비밀을 생성합니다. 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 값을 선택하세요.
tctl db ls
클러스터에 등록된 모든 데이터베이스를 나열하는 관리 명령입니다.
tctl db lstctl 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 exampletsh 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 exampletsh 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 envtsh db env exampleeval $(tsh db env)
tsh db config
데이터베이스 연결 정보를 출력합니다. GUI 클라이언트를 구성할 때 유용합니다.
tsh db configtsh db config exampletsh db config --format=cmd example
플래그 | 설명 |
---|---|
--format | 출력 형식: 기본값은 text , cmd 는 기본 데이터베이스 클라이언트 연결 명령을 출력합니다. |