Infograb logo
셀프 호스팅 클러스터에서 Teleport 정책 실행

Teleport 정책의 Access Graph는 셀프 호스팅 Teleport 클러스터에서 설정해야 하며,
PostgreSQL을 백 엔드 저장소로 사용하는 전용 서비스인 Access Graph와 함께 작동하며,
Auth 서비스 및 Proxy 서비스와 통신하여 리소스 및 액세스에 대한 정보를 수집합니다.

이 가이드는 서비스를 설정하고 Teleport 클러스터에서 Access Graph를 활성화하는 데 도움을 줄 것입니다.

전제 조건

  • 실행 중인 Teleport Enterprise 클러스터 v14.3.6 이상.
  • Teleport 정책이 활성화된 업데이트된 license.pem .
  • Docker 버전 v20.10.7 이상.
  • PostgreSQL 데이터베이스 서버 v14 이상.
    • Access Graph는 데이터를 저장할 전용 데이터베이스가 필요합니다.
      Access Graph가 데이터베이스에 연결하는 사용자는 이 데이터베이스의 소유자여야 하며, 유사한 광범위한 권한을 가져야 합니다:
      적어도 public 스키마에서 CREATE TABLE 권한과 CREATE SCHEMA 권한이 필요합니다.
    • Amazon RDS for PostgreSQL이 지원됩니다.
  • Access Graph 서비스에 대한 TLS 인증서
    • TLS 인증서는 "서버 인증" 키 사용을 위해 발급되어야 하며,
      X.509 v3 subjectAltName 확장에서 Access Graph 서비스의 IP 또는 DNS 이름을 나열해야 합니다.
    • Access Graph 서비스의 버전 1.20.4부터 컨테이너는 기본적으로 비루트 사용자로 실행됩니다.
      인증서 파일이 컨테이너를 실행하는 사용자가 읽을 수 있도록 설정되어 있어야 합니다. 다음 명령으로 올바른 권한을 설정할 수 있습니다:
      sudo chown 65532 /etc/access_graph/tls.key
  • Access Graph 서비스를 실행하는 노드는 Teleport Auth 서비스 및 Proxy 서비스에서 접근 가능해야 합니다.

Docker를 사용한 배포는 테스트 및 개발 목적으로 적합합니다. 프로덕션 배포의 경우, Kubernetes에서 이 서비스를 배포하기 위해 Access Graph Helm 차트를 사용하는 것을 고려하십시오. Access Graph에 대한 Helm 차트를 참조하여 지침을 받으십시오.

1/3단계. Access Graph 설정

Access Graph 서비스를 호스팅하는 머신에 Teleport 클러스터의 호스트 인증 기관(CA) 복사본이 필요합니다.
이 서비스는 Auth 서비스와 Proxy 서비스에 의해 발급된 호스트 인증서를 통해 수신 연결의 인증을 요구합니다.

호스트 CA는 다음 방법 중 하나로 검색하여 파일에 저장할 수 있습니다:

sudo mkdir /etc/access_graph
curl -s 'https://teleport.example.com/webapi/auth/export?type=tls-host' | sudo tee /etc/access_graph/teleport_host_ca.pem
sudo mkdir /etc/access_graph
tsh login --proxy=teleport.example.com
tctl get cert_authorities --format=json \ | jq -r '.[] | select(.spec.type == "host") | .spec.active_keys.tls[].cert' \ | base64 -d | sudo tee /etc/access_graph/teleport_host_ca.pem

그런 다음, 같은 머신에서 Access Graph 서비스에 대한 구성 파일을 다음과 비슷하게 생성합니다:

backend:
  postgres:
    # PostgreSQL 연결 URI 형식을 사용합니다. https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS 를 참조하십시오.
    # 더 엄격한 `sslmode` 값을 강력히 권장합니다,
    # 예: `sslmode=verify-full&sslrootcert=/etc/access_graph/my_postgres_ca.crt` .
    # 가능한 매개변수에 대한 전체 참조는 https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS 를 참조하십시오.
    connection: postgres://access_graph_user:my_password@db.example.com:5432/access_graph_db?sslmode=require

    # Amazon RDS에서 실행하는 경우, 환경에 설정된 자격 증명을 통해 IAM 인증을 다음과 같이 사용할 수 있습니다:
    # iam:
    #   aws_region: us-west-2

# Access Graph 서비스가 수신할 IP 주소(선택 사항)와 포트.
# 기본값입니다. 이 키는 모든 인터페이스에서 포트 50051로 수신하려면 생략할 수 있습니다.
address: ":50051"

tls:
  # Access Graph 서버에 대한 PEM 인코딩된 TLS 인증서 및 개인 키의 파일 경로.
  cert: /etc/access_graph/tls.crt
  key: /etc/access_graph/tls.key

# 이 Access Graph 서비스에 등록할 수 있는 Teleport 클러스터의 호스트 CA 파일 경로를 나열합니다.
# 여러 경로를 포함하여 여러 Teleport 클러스터가 Access Graph 서비스에 연결할 수 있도록 허용할 수 있습니다.
registration_cas:
  - /etc/access_graph/teleport_host_ca.pem # Teleport 클러스터의 호스트 CA 인증서를 포함하는 파일의 전체 경로.

마지막으로, 다음과 같이 Docker를 사용하여 Access Graph 서비스를 시작합니다:

$ docker run -p 50051:50051 -v <path-to-config>:/app/config.yaml -v /etc/access_graph:/etc/access_graph public.ecr.aws/gravitational/access-graph:1.24.4

2/3단계. Teleport Auth 서비스 구성 업데이트

Auth 서비스의 YAML 구성에서 Access Graph 구성을 위한 새 최상위 섹션을 추가합니다.

access_graph:
  enabled: true
  # Access Graph 서비스가 수신 대기 중인 host:port
  endpoint: access-graph.example.com:50051
  # Access Graph 서버 인증서가 서명될 것으로 예상되는 신뢰할 수 있는 CA를 지정합니다.
  # 지정하지 않으면 시스템 신뢰 저장소가 사용됩니다.
  ca: /etc/access_graph_ca.pem

그런 다음, Auth 서비스 인스턴스를 재시작하고, 이어서 Proxy 서비스 인스턴스를 재시작합니다.

3/3단계. 웹 UI에서 Access Graph 보기

웹 UI의 "Access Management" 탭에서 Access Graph를 찾을 수 있습니다.

Access Management 메뉴 항목

인터페이스에 액세스하려면 사용자가 access_graph 리소스에 대해 listread 동사를 허용하는 역할을 가져야 합니다. 예를 들어:

kind: role
version: v7
metadata:
  name: my-role
spec:
  allow:
    rules:
      - resources:
          - access_graph
        verbs:
          - list
          - read

미리 설정된 editor 역할은 기본적으로 필요한 권한을 가지고 있습니다.

Teleport 원문 보기