Infograb logo
동적 데이터베이스 등록

동적 데이터베이스 등록은 Teleport 관리자가 정적 구성을 업데이트하고 Teleport 데이터베이스 서비스 인스턴스를 재시작하지 않고도 새로운 데이터베이스를 등록하거나 기존 데이터베이스를 업데이트/등록 해제할 수 있도록 합니다.

동적 등록은 또한 관리자가 동일한 데이터베이스 리소스를 모니터링하도록 데이터베이스 서비스 복제본을 구성하여 고가용성 을 위한 여러 데이터베이스 서비스 인스턴스를 배포할 수 있게 합니다.

동적 등록을 활성화하려면 Teleport 데이터베이스 서비스 구성에 이 서비스가 등록하기 위해 모니터링할 리소스 레이블 선택기 목록을 포함하는 resources 섹션을 포함하십시오:

db_service:
  enabled: "yes"
  resources:
    - labels:
        "*": "*"

클러스터의 모든 동적 앱 리소스를 데이터베이스 서비스에 등록하려면 와일드카드 선택기를 사용할 수 있으며, 특정 하위 집합에 대해 특정 레이블 집합을 제공할 수 있습니다:

resources:
  - labels:
      "env": "prod"
      "engine": "postgres"
  - labels:
      "env": "test"
      "engine": "mysql"

현재 실행 중인 데이터베이스 서비스를 보려면 tctl get db_services 를 실행하십시오:

kind: db_service
metadata:
  expires: "2024-08-27T11:38:10.207175Z"
  name: 2b5207e3-a258-423e-a41d-e50ea2f0dfdc
spec:
  hostname: my-host
  resources:
    - labels:
        env: prod
        engine: postgres
    - labels:
        env: test
        engine: mysql
version: v1

db_service 내의 name 은 Teleport 데이터베이스 서비스를 실행 중인 에이전트의 호스트 ID와 일치합니다.

다음으로 데이터베이스 리소스를 정의합니다:

kind: db
version: v3
metadata:
  name: example
  description: "예제 데이터베이스"
  labels:
    env: prod
    engine: postgres
spec:
  protocol: "postgres"
  uri: "localhost:5432"

동적 등록을 생성하는 사용자는 데이터베이스 레이블 및 db 리소스에 대한 접근 권한이 있는 역할을 가지고 있어야 합니다. 이 예제 역할에서는 사용자가 env: prodengine: postgres 로 레이블이 지정된 데이터베이스만 생성하고 유지할 수 있습니다.

kind: role
metadata:
  name: dynamicregexample
spec:
  allow:
    db_labels:
      engine: postgres
      env: prod
    rules:
      - resources:
          - db
        verbs:
          - list
          - create
          - read
          - update
          - delete
version: v5

전체 데이터베이스 리소스 사양 참조를 확인하십시오.

데이터베이스 리소스를 생성하려면 다음을 실행하십시오:

tctl create database.yaml
  • 연결이 가능한지 확인하기 위해 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 db ls 또는 UI)에 나타납니다.

기존 데이터베이스 리소스를 업데이트하려면 다음을 실행하십시오:

tctl create -f database.yaml

업데이트된 리소스의 레이블이 특정 데이터베이스와 더 이상 일치하지 않으면 등록 해제되고 프록시가 중지됩니다.

데이터베이스 리소스를 삭제하려면 다음을 실행하십시오:

tctl rm db/example

tctl 이외에도 동적 리소스는 다음을 통해 추가할 수 있습니다:

동적 리소스 사용 문서를 참조하여 Teleport의 동적 리소스를 관리하는 방법에 대해 자세히 알아보십시오.

Teleport 원문 보기