InfoGrab DocsInfoGrab Docs

데이터베이스 자동 검색

요약

Teleport는 데이터베이스를 자동으로 검색하여 Teleport 클러스터에 등록하도록 구성할 수 있습니다. 이 페이지에서는 데이터베이스 자동 검색의 아키텍처와, Teleport Discovery 서비스 및 Teleport Database 서비스에서 데이터베이스 자동 검색을 구성하는 데 사용할 수 있는 옵션을 설명합니다.

Teleport는 데이터베이스를 자동으로 검색하여 Teleport 클러스터에 등록하도록 구성할 수 있습니다.

이 페이지에서는 데이터베이스 자동 검색의 아키텍처와, Teleport Discovery 서비스 및 Teleport Database 서비스에서 데이터베이스 자동 검색을 구성하는 데 사용할 수 있는 옵션을 설명합니다.

지원 클라우드#

  • AWS: AWS 데이터베이스 자동 검색.
  • Azure: Azure 데이터베이스 자동 검색.

아키텍처 개요#

데이터베이스 자동 검색은 다음 구성 요소로 이루어집니다:

  1. 하나 이상의 Teleport Discovery 서비스 인스턴스가 API를 폴링하여 데이터베이스를 검색하고 Teleport 클러스터에 등록합니다.
  2. 하나 이상의 Teleport Database 서비스 인스턴스가 검색된 데이터베이스로 데이터베이스 연결을 전달합니다.

Discovery 서비스와 Database 서비스는 모두 동일한 Teleport 프로세스 또는 별도의 프로세스에서 구성할 수 있습니다. 데이터베이스 자동 검색을 데이터베이스 접근과 분리하기 위해 이들을 별도 프로세스로 실행할 것을 권장합니다.

Discovery 서비스 작동 방식#

Teleport Discovery 서비스는 구성된 셀렉터와 일치하는 데이터베이스를 찾기 위해 API를 폴링하는 역할을 담당합니다. Discovery 서비스가 데이터베이스를 매칭하면, 해당 데이터베이스를 Teleport 클러스터에 동적으로 등록합니다. Discovery 서비스가 Teleport 클러스터에 생성하는 동적 db 리소스에는 다음과 같은 정보가 포함됩니다:

  • 이름: 데이터베이스 이름으로, Teleport 클러스터 내 다른 db 이름과의 충돌을 피하기 위해 추가 식별 정보가 덧붙여집니다
  • 라벨
    • 가져온 데이터베이스 태그
    • 데이터베이스 위치/리전
    • 클라우드 계정 정보(예: AWS 계정 ID / Azure 구독 ID)
    • 매처 유형에 대응하는, 검색된 데이터베이스의 유형(예: "rds", "redshift" 등)
  • 엔드포인트 정보: 데이터베이스에 접근할 수 있는 연결 엔드포인트
Tip

클라우드 제공업체에서 데이터베이스에 특수 태그를 부착하면 검색된 데이터베이스의 이름을 재정의할 수 있습니다:

  • : TeleportDatabaseName
  • : 원하는 이름

Discovery 서비스는 데이터베이스 메타데이터에 이 태그가 포함되어 있는지 확인하고, 해당 값을 Teleport 내 리소스 이름으로 사용합니다. 이름 재정의는 그대로 사용되며, 즉 추가 메타데이터가 덧붙여지지 않습니다.

Teleport Discovery 서비스는 데이터베이스를 폴링할 수 있는 API에만 접근하면 되며, 어떤 데이터베이스에도 연결할 네트워크 연결성이나 권한이 필요하지 않습니다.

새 데이터베이스를 등록하는 것 외에도, Discovery 서비스는 삭제되었거나 더 이상 Discovery 서비스에 구성된 셀렉터와 일치하지 않는 데이터베이스를 Teleport의 레지스트리에서 제거하기도 합니다.

Warning

Discovery Service는 검색된 리소스를 서로 다른 집합으로 그룹화할 수 있게 하는 구성 파라미터 discovery_service.discovery_group을 제공합니다. 이 파라미터는 서로 다른 클라우드 리소스 집합을 감시하는 Discovery Agent들이 서로 충돌하여 다른 서비스가 생성한 리소스를 삭제하는 것을 방지하는 데 사용됩니다.

여러 개의 Discovery Service를 실행할 때, 동일한 클라우드 리소스를 감시하는 경우에는 각 서비스가 동일한 discovery_group 값으로 구성되어 있는지 확인해야 하며, 서로 다른 클라우드 리소스를 감시하는 경우에는 서로 다른 값으로 구성해야 합니다.

동일한 Teleport 클러스터에서 구성을 혼합하여 실행할 수 있습니다. 즉 일부 Discovery Service는 동일한 클라우드 리소스를 감시하도록 구성하고 다른 서비스는 서로 다른 리소스를 감시하도록 구성할 수 있습니다. 예를 들어, 서로 다른 두 개의 클라우드 계정에서 데이터를 분석하는 4개 에이전트 고가용성 구성은 다음과 같은 구성으로 실행됩니다.

  • Production 계정에서 데이터를 폴링하는 discovery_group: "prod"로 구성된 Discovery Service 2개.
  • Staging 계정에서 데이터를 폴링하는 discovery_group: "staging"로 구성된 Discovery Service 2개.

Discovery 서비스 구성#

다음은 Discovery 서비스를 위한 데이터베이스 자동 검색 구성 예시입니다:

discovery_service:
    enabled: true
    discovery_group: "disc-group"
    # poll_interval is the cadence at which the discovery server will run each of its
    # discovery cycles. The default is 5m.
    poll_interval: 5m
    # Matchers for discovering AWS-hosted resources.
    aws:
      # AWS resource types to discover and register with your Teleport cluster.
      # Valid database discovery options are:
      # 'rds' - Amazon RDS and Aurora databases.
      # 'rdsproxy' - Amazon RDS Proxy databases.
      # 'redshift' - Amazon Redshift databases.
      # 'redshift-serverless' - Amazon Redshift Serverless databases.
      # 'elasticache' - Amazon ElastiCache Redis and Valkey databases.
      # 'elasticache-serverless' - Amazon ElastiCache Serverless Redis or Valkey databases.
      # 'memorydb' - Amazon MemoryDB Redis databases.
      # 'opensearch' - Amazon OpenSearch databases.
      # 'docdb' - Amazon DocumentDB databases.
    - types: ["rds"]
      # AWS regions to search for resources from
      regions: ["us-east-1","us-west-1"]
      # Optional AWS resource tags to match when registering resources
      # Defaults to a wildcard selector that matches any resource: "*":"*"
      tags:
        "env": "prod"
      # Optional AWS role that the Discovery Service will assume to discover
      # and register AWS-hosted resources.
      assume_role_arn: "arn:aws:iam::123456789012:role/rds-discovery"
      # Optional AWS external ID that the Discovery Service will use to assume
      # a role in an external AWS account.
      external_id: "example-external-id"

discovery_service.aws[] 설정은 AWS 리소스에 대한 셀렉터 목록입니다. 이 예시는 Teleport Discovery 서비스가 us-east-1 및 us-west-1 리전에서 Amazon RDS 데이터베이스를 대상으로 AWS를 폴링하도록 구성합니다. 이 서비스는 RDS 데이터베이스 검색에 필요한 권한을 가진 123... AWS 계정의 AWS IAM 역할을 수임(assume)합니다. 자세한 작동 방식은 다음과 같습니다:

  1. 제공업체 유형: Discovery 서비스는 서로 다른 제공업체가 호스팅하는 리소스를 검색할 수 있습니다. 각 제공업체 유형에는 고유한 구성 섹션이 있습니다. Discovery 서비스는 해당 제공업체에 대해 구성된 셀렉터 목록을 기준으로 제공업체 API를 폴링합니다. 각 셀렉터는 Discovery 서비스가 제공업체 API를 폴링할 때 사용됩니다. 이 예시에서 제공업체 구성은 AWS에 대한 것입니다.
  2. 권한: Discovery 서비스는 제공업체 API에 자신을 인증하는 데 사용할 수 있는 자격 증명에 접근해야 합니다. discovery_service.aws[].assume_role_arn이 구성되어 있으면, Discovery 서비스는 리소스 검색을 위한 추가 API 호출을 하기 전에 먼저 해당 AWS IAM 역할을 수임합니다. 즉, 하나의 Discovery 서비스가 외부 역할을 수임함으로써 여러 AWS 계정에 걸쳐 리소스를 검색하는 데 사용될 수 있습니다. 이는 IAM 구성을 단순화하는 데도 유용할 수 있습니다 — 검색해야 하는 리소스 유형에 따라 Discovery 서비스가 서로 다른 역할을 사용하도록 구성할 수 있습니다. 이 예시에서 Discovery 서비스는 이름에서 알 수 있듯이 RDS 데이터베이스 검색에 필요한 권한만 가진 "rds-discovery" IAM 역할을 수임합니다.
  3. 셀렉터: 제공업체 API를 통해 리소스가 발견되면, Discovery 서비스는 해당 리소스를 등록해야 하는지 확인하기 위해 대응하는 셀렉터 태그/라벨을 확인합니다. 셀렉터가 일치하면, Discovery 서비스는 해당 리소스를 Teleport 클러스터에 동적으로 등록합니다. 데이터베이스의 경우, 이는 db 리소스를 생성하는 것을 의미합니다. 이 예시에서 Discovery 서비스는 us-east-1 및 us-west-1 리전에서 Amazon RDS 데이터베이스를 폴링하며, AWS 태그 "env: prod"가 있는 모든 RDS 데이터베이스에 대해 Teleport 클러스터에 db 리소스를 등록합니다.

Discovery 서비스 구성에 대한 자세한 내용은 위의 가이드 중 하나 또는 Discovery 서비스 구성 파일 참조를 참고하세요.

Database 서비스 작동 방식#

Teleport Database 서비스는 Teleport 클러스터 내에서 동적으로 등록된 db 리소스를 모니터링하고, 해당 리소스가 나타내는 데이터베이스에 대한 연결 프록시 역할을 하는 것을 담당합니다.

Database 서비스는 db 리소스를 매칭하기 위해 라벨 셀렉터로 구성되어야 합니다. db 리소스가 매칭되면, Database 서비스는 db_server 하트비트를 생성하여 Teleport 클러스터에 해당 db 리소스가 나타내는 데이터베이스에 대한 접근을 제공할 수 있음을 알립니다. Database 서비스는 데이터베이스 엔드포인트에 대한 네트워크 연결성과, 데이터베이스에 인증할 수 있는 권한을 가지고 있어야 합니다. 필요한 권한은 데이터베이스 유형에 따라 다르므로, 자세한 권한 정보는 Teleport의 데이터베이스 접근 가이드를 참고하세요.

Database 서비스 구성#

다음은 Database 서비스에 대한 구성 예시입니다:

db_service:
  enabled: true
  # Matchers for dynamic db resources created with the "tctl create" command or by database auto-discovery.
  resources:
    - labels:
        # These labels, among others, are added automatically by the Discovery
        # Service.
        # "cloud" origin indicates that a `db` resource was created for a
        # resource discovered in the cloud.
        "teleport.dev/origin": "cloud"
        # Cloud resources are also labeled to indicate which cloud provider
        # they came from.
        "teleport.dev/cloud": "AWS"
        # Specific to AWS. This is the AWS account ID.
        "account-id": "123456789012"
        # Use specific label selectors so each Database Service only matches
        # databases it can actually reach.
        "env": "staging"
        "vpc-id": "vpc-id-123"
      aws:
        # This is an optional AWS role ARN to assume when forwarding connections
        # to AWS databases.
        # The Database Service's IAM identity must be allowed to assume this
        # role.
        assume_role_arn: "arn:aws:iam::123456789012:role/StagingDBAccess"
    - labels:
        "teleport.dev/origin": "cloud"
        "teleport.dev/cloud": "AWS"
        "account-id": "222222222222"
      aws:
        assume_role_arn: "arn:aws:iam::222222222222:role/ProdDBAccess"
        # External ID is an optional value that should be set when accessing
        # your AWS account from a third-party service (delegated access).
        external_id: "exampleID123"

db_service.resources[] 설정은 라벨 셀렉터 목록입니다. 이 예시는 Teleport Database 서비스가 두 계정(123...222...)에서 검색된 AWS 데이터베이스를 매칭하도록 구성합니다. 각 계정에 대해 서비스는 서로 다른 AWS IAM 역할을 수임합니다. 자세한 작동 방식은 다음과 같습니다:

  1. 라벨 매칭: Database 서비스는 db 리소스를 모니터링하며, db_service.resources[].labelsdb와 일치하는 첫 번째 라벨 셀렉터가 사용됩니다. 어떤 셀렉터도 일치하지 않으면 해당 db 리소스는 무시됩니다.
Warning

Database Service 인스턴스가 실제로 도달할 수 있는 데이터베이스에만 매칭되도록, 필요한 경우 더 구체적인 레이블 셀렉터를 사용하십시오. 광범위한 셀렉터는 도달할 수 없는 데이터베이스가 등록되게 하여 연결 실패로 이어질 수 있습니다.

  1. 권한: Database 서비스는 일치한 라벨 셀렉터에 구성된 아이덴티티를 수임합니다. 셀렉터에 아이덴티티가 지정되어 있지 않으면, Database 서비스는 자체 아이덴티티를 사용합니다.
  2. 연결: Database 서비스는 자체 아이덴티티 또는 수임한 아이덴티티로서, 자격 증명을 가져와 데이터베이스에 인증하고, 해당 자격 증명을 사용하여 인가된 Teleport 사용자를 위한 프록시 역할을 합니다.

데이터베이스 자동 검색

Teleport v18.9
원문 보기
요약

Teleport는 데이터베이스를 자동으로 검색하여 Teleport 클러스터에 등록하도록 구성할 수 있습니다. 이 페이지에서는 데이터베이스 자동 검색의 아키텍처와, Teleport Discovery 서비스 및 Teleport Database 서비스에서 데이터베이스 자동 검색을 구성하는 데 사용할 수 있는 옵션을 설명합니다.

Teleport는 데이터베이스를 자동으로 검색하여 Teleport 클러스터에 등록하도록 구성할 수 있습니다.

이 페이지에서는 데이터베이스 자동 검색의 아키텍처와, Teleport Discovery 서비스 및 Teleport Database 서비스에서 데이터베이스 자동 검색을 구성하는 데 사용할 수 있는 옵션을 설명합니다.

지원 클라우드#

  • AWS: AWS 데이터베이스 자동 검색.
  • Azure: Azure 데이터베이스 자동 검색.

아키텍처 개요#

데이터베이스 자동 검색은 다음 구성 요소로 이루어집니다:

  1. 하나 이상의 Teleport Discovery 서비스 인스턴스가 API를 폴링하여 데이터베이스를 검색하고 Teleport 클러스터에 등록합니다.
  2. 하나 이상의 Teleport Database 서비스 인스턴스가 검색된 데이터베이스로 데이터베이스 연결을 전달합니다.

Discovery 서비스와 Database 서비스는 모두 동일한 Teleport 프로세스 또는 별도의 프로세스에서 구성할 수 있습니다. 데이터베이스 자동 검색을 데이터베이스 접근과 분리하기 위해 이들을 별도 프로세스로 실행할 것을 권장합니다.

Discovery 서비스 작동 방식#

Teleport Discovery 서비스는 구성된 셀렉터와 일치하는 데이터베이스를 찾기 위해 API를 폴링하는 역할을 담당합니다. Discovery 서비스가 데이터베이스를 매칭하면, 해당 데이터베이스를 Teleport 클러스터에 동적으로 등록합니다. Discovery 서비스가 Teleport 클러스터에 생성하는 동적 db 리소스에는 다음과 같은 정보가 포함됩니다:

  • 이름: 데이터베이스 이름으로, Teleport 클러스터 내 다른 db 이름과의 충돌을 피하기 위해 추가 식별 정보가 덧붙여집니다
  • 라벨
    • 가져온 데이터베이스 태그
    • 데이터베이스 위치/리전
    • 클라우드 계정 정보(예: AWS 계정 ID / Azure 구독 ID)
    • 매처 유형에 대응하는, 검색된 데이터베이스의 유형(예: "rds", "redshift" 등)
  • 엔드포인트 정보: 데이터베이스에 접근할 수 있는 연결 엔드포인트
Tip

클라우드 제공업체에서 데이터베이스에 특수 태그를 부착하면 검색된 데이터베이스의 이름을 재정의할 수 있습니다:

  • : TeleportDatabaseName
  • : 원하는 이름

Discovery 서비스는 데이터베이스 메타데이터에 이 태그가 포함되어 있는지 확인하고, 해당 값을 Teleport 내 리소스 이름으로 사용합니다. 이름 재정의는 그대로 사용되며, 즉 추가 메타데이터가 덧붙여지지 않습니다.

Teleport Discovery 서비스는 데이터베이스를 폴링할 수 있는 API에만 접근하면 되며, 어떤 데이터베이스에도 연결할 네트워크 연결성이나 권한이 필요하지 않습니다.

새 데이터베이스를 등록하는 것 외에도, Discovery 서비스는 삭제되었거나 더 이상 Discovery 서비스에 구성된 셀렉터와 일치하지 않는 데이터베이스를 Teleport의 레지스트리에서 제거하기도 합니다.

Warning

Discovery Service는 검색된 리소스를 서로 다른 집합으로 그룹화할 수 있게 하는 구성 파라미터 discovery_service.discovery_group을 제공합니다. 이 파라미터는 서로 다른 클라우드 리소스 집합을 감시하는 Discovery Agent들이 서로 충돌하여 다른 서비스가 생성한 리소스를 삭제하는 것을 방지하는 데 사용됩니다.

여러 개의 Discovery Service를 실행할 때, 동일한 클라우드 리소스를 감시하는 경우에는 각 서비스가 동일한 discovery_group 값으로 구성되어 있는지 확인해야 하며, 서로 다른 클라우드 리소스를 감시하는 경우에는 서로 다른 값으로 구성해야 합니다.

동일한 Teleport 클러스터에서 구성을 혼합하여 실행할 수 있습니다. 즉 일부 Discovery Service는 동일한 클라우드 리소스를 감시하도록 구성하고 다른 서비스는 서로 다른 리소스를 감시하도록 구성할 수 있습니다. 예를 들어, 서로 다른 두 개의 클라우드 계정에서 데이터를 분석하는 4개 에이전트 고가용성 구성은 다음과 같은 구성으로 실행됩니다.

  • Production 계정에서 데이터를 폴링하는 discovery_group: "prod"로 구성된 Discovery Service 2개.
  • Staging 계정에서 데이터를 폴링하는 discovery_group: "staging"로 구성된 Discovery Service 2개.

Discovery 서비스 구성#

다음은 Discovery 서비스를 위한 데이터베이스 자동 검색 구성 예시입니다:

discovery_service:
    enabled: true
    discovery_group: "disc-group"
    # poll_interval is the cadence at which the discovery server will run each of its
    # discovery cycles. The default is 5m.
    poll_interval: 5m
    # Matchers for discovering AWS-hosted resources.
    aws:
      # AWS resource types to discover and register with your Teleport cluster.
      # Valid database discovery options are:
      # 'rds' - Amazon RDS and Aurora databases.
      # 'rdsproxy' - Amazon RDS Proxy databases.
      # 'redshift' - Amazon Redshift databases.
      # 'redshift-serverless' - Amazon Redshift Serverless databases.
      # 'elasticache' - Amazon ElastiCache Redis and Valkey databases.
      # 'elasticache-serverless' - Amazon ElastiCache Serverless Redis or Valkey databases.
      # 'memorydb' - Amazon MemoryDB Redis databases.
      # 'opensearch' - Amazon OpenSearch databases.
      # 'docdb' - Amazon DocumentDB databases.
    - types: ["rds"]
      # AWS regions to search for resources from
      regions: ["us-east-1","us-west-1"]
      # Optional AWS resource tags to match when registering resources
      # Defaults to a wildcard selector that matches any resource: "*":"*"
      tags:
        "env": "prod"
      # Optional AWS role that the Discovery Service will assume to discover
      # and register AWS-hosted resources.
      assume_role_arn: "arn:aws:iam::123456789012:role/rds-discovery"
      # Optional AWS external ID that the Discovery Service will use to assume
      # a role in an external AWS account.
      external_id: "example-external-id"

discovery_service.aws[] 설정은 AWS 리소스에 대한 셀렉터 목록입니다. 이 예시는 Teleport Discovery 서비스가 us-east-1 및 us-west-1 리전에서 Amazon RDS 데이터베이스를 대상으로 AWS를 폴링하도록 구성합니다. 이 서비스는 RDS 데이터베이스 검색에 필요한 권한을 가진 123... AWS 계정의 AWS IAM 역할을 수임(assume)합니다. 자세한 작동 방식은 다음과 같습니다:

  1. 제공업체 유형: Discovery 서비스는 서로 다른 제공업체가 호스팅하는 리소스를 검색할 수 있습니다. 각 제공업체 유형에는 고유한 구성 섹션이 있습니다. Discovery 서비스는 해당 제공업체에 대해 구성된 셀렉터 목록을 기준으로 제공업체 API를 폴링합니다. 각 셀렉터는 Discovery 서비스가 제공업체 API를 폴링할 때 사용됩니다. 이 예시에서 제공업체 구성은 AWS에 대한 것입니다.
  2. 권한: Discovery 서비스는 제공업체 API에 자신을 인증하는 데 사용할 수 있는 자격 증명에 접근해야 합니다. discovery_service.aws[].assume_role_arn이 구성되어 있으면, Discovery 서비스는 리소스 검색을 위한 추가 API 호출을 하기 전에 먼저 해당 AWS IAM 역할을 수임합니다. 즉, 하나의 Discovery 서비스가 외부 역할을 수임함으로써 여러 AWS 계정에 걸쳐 리소스를 검색하는 데 사용될 수 있습니다. 이는 IAM 구성을 단순화하는 데도 유용할 수 있습니다 — 검색해야 하는 리소스 유형에 따라 Discovery 서비스가 서로 다른 역할을 사용하도록 구성할 수 있습니다. 이 예시에서 Discovery 서비스는 이름에서 알 수 있듯이 RDS 데이터베이스 검색에 필요한 권한만 가진 "rds-discovery" IAM 역할을 수임합니다.
  3. 셀렉터: 제공업체 API를 통해 리소스가 발견되면, Discovery 서비스는 해당 리소스를 등록해야 하는지 확인하기 위해 대응하는 셀렉터 태그/라벨을 확인합니다. 셀렉터가 일치하면, Discovery 서비스는 해당 리소스를 Teleport 클러스터에 동적으로 등록합니다. 데이터베이스의 경우, 이는 db 리소스를 생성하는 것을 의미합니다. 이 예시에서 Discovery 서비스는 us-east-1 및 us-west-1 리전에서 Amazon RDS 데이터베이스를 폴링하며, AWS 태그 "env: prod"가 있는 모든 RDS 데이터베이스에 대해 Teleport 클러스터에 db 리소스를 등록합니다.

Discovery 서비스 구성에 대한 자세한 내용은 위의 가이드 중 하나 또는 Discovery 서비스 구성 파일 참조를 참고하세요.

Database 서비스 작동 방식#

Teleport Database 서비스는 Teleport 클러스터 내에서 동적으로 등록된 db 리소스를 모니터링하고, 해당 리소스가 나타내는 데이터베이스에 대한 연결 프록시 역할을 하는 것을 담당합니다.

Database 서비스는 db 리소스를 매칭하기 위해 라벨 셀렉터로 구성되어야 합니다. db 리소스가 매칭되면, Database 서비스는 db_server 하트비트를 생성하여 Teleport 클러스터에 해당 db 리소스가 나타내는 데이터베이스에 대한 접근을 제공할 수 있음을 알립니다. Database 서비스는 데이터베이스 엔드포인트에 대한 네트워크 연결성과, 데이터베이스에 인증할 수 있는 권한을 가지고 있어야 합니다. 필요한 권한은 데이터베이스 유형에 따라 다르므로, 자세한 권한 정보는 Teleport의 데이터베이스 접근 가이드를 참고하세요.

Database 서비스 구성#

다음은 Database 서비스에 대한 구성 예시입니다:

db_service:
  enabled: true
  # Matchers for dynamic db resources created with the "tctl create" command or by database auto-discovery.
  resources:
    - labels:
        # These labels, among others, are added automatically by the Discovery
        # Service.
        # "cloud" origin indicates that a `db` resource was created for a
        # resource discovered in the cloud.
        "teleport.dev/origin": "cloud"
        # Cloud resources are also labeled to indicate which cloud provider
        # they came from.
        "teleport.dev/cloud": "AWS"
        # Specific to AWS. This is the AWS account ID.
        "account-id": "123456789012"
        # Use specific label selectors so each Database Service only matches
        # databases it can actually reach.
        "env": "staging"
        "vpc-id": "vpc-id-123"
      aws:
        # This is an optional AWS role ARN to assume when forwarding connections
        # to AWS databases.
        # The Database Service's IAM identity must be allowed to assume this
        # role.
        assume_role_arn: "arn:aws:iam::123456789012:role/StagingDBAccess"
    - labels:
        "teleport.dev/origin": "cloud"
        "teleport.dev/cloud": "AWS"
        "account-id": "222222222222"
      aws:
        assume_role_arn: "arn:aws:iam::222222222222:role/ProdDBAccess"
        # External ID is an optional value that should be set when accessing
        # your AWS account from a third-party service (delegated access).
        external_id: "exampleID123"

db_service.resources[] 설정은 라벨 셀렉터 목록입니다. 이 예시는 Teleport Database 서비스가 두 계정(123...222...)에서 검색된 AWS 데이터베이스를 매칭하도록 구성합니다. 각 계정에 대해 서비스는 서로 다른 AWS IAM 역할을 수임합니다. 자세한 작동 방식은 다음과 같습니다:

  1. 라벨 매칭: Database 서비스는 db 리소스를 모니터링하며, db_service.resources[].labelsdb와 일치하는 첫 번째 라벨 셀렉터가 사용됩니다. 어떤 셀렉터도 일치하지 않으면 해당 db 리소스는 무시됩니다.
Warning

Database Service 인스턴스가 실제로 도달할 수 있는 데이터베이스에만 매칭되도록, 필요한 경우 더 구체적인 레이블 셀렉터를 사용하십시오. 광범위한 셀렉터는 도달할 수 없는 데이터베이스가 등록되게 하여 연결 실패로 이어질 수 있습니다.

  1. 권한: Database 서비스는 일치한 라벨 셀렉터에 구성된 아이덴티티를 수임합니다. 셀렉터에 아이덴티티가 지정되어 있지 않으면, Database 서비스는 자체 아이덴티티를 사용합니다.
  2. 연결: Database 서비스는 자체 아이덴티티 또는 수임한 아이덴티티로서, 자격 증명을 가져와 데이터베이스에 인증하고, 해당 자격 증명을 사용하여 인가된 Teleport 사용자를 위한 프록시 역할을 합니다.