Infograb logo
자가 호스팅 클러스터에서 Teleport 정책 실행

Teleport 정책의 Access Graph는 자가 호스팅된 Teleport 클러스터에서 Access Graph를 설정해야 합니다. Access Graph는 PostgreSQL을 기본 스토리지로 사용하는 전용 서비스이며, Auth 서비스 및 Proxy 서비스와 통신하여 리소스 및 액세스에 대한 정보를 수집합니다.

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

필수 조건

  • Teleport Enterprise 클러스터 v14.3.6 이상이 실행 중이어야 합니다.
  • Teleport 정책이 활성화된 최신 license.pem 파일이 필요합니다.
  • Docker 버전 v20.10.7 이상이 필요합니다.
  • PostgreSQL 데이터베이스 서버 v14 이상이 필요합니다.
    • Access Graph는 데이터를 저장할 전 dedicated database가 필요합니다. 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.20.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 보기

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