인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
셀프 호스팅 클러스터에서 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는 데이터를 저장할 전용 데이터베이스가 필요합니다.
- Access Graph 서비스에 대한 TLS 인증서
- TLS 인증서는 "서버 인증" 키 사용을 위해 발급되어야 하며,
X.509 v3subjectAltName
확장에서 Access Graph 서비스의 IP 또는 DNS 이름을 나열해야 합니다. - Access Graph 서비스의 버전 1.20.4부터 컨테이너는 기본적으로 비루트 사용자로 실행됩니다.
인증서 파일이 컨테이너를 실행하는 사용자가 읽을 수 있도록 설정되어 있어야 합니다. 다음 명령으로 올바른 권한을 설정할 수 있습니다:sudo chown 65532 /etc/access_graph/tls.key
- TLS 인증서는 "서버 인증" 키 사용을 위해 발급되어야 하며,
- 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_graphcurl -s 'https://teleport.example.com/webapi/auth/export?type=tls-host' | sudo tee /etc/access_graph/teleport_host_ca.pem
sudo mkdir /etc/access_graphtsh login --proxy=teleport.example.comtctl 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_graph
리소스에 대해 list
및 read
동사를 허용하는 역할을 가져야 합니다. 예를 들어:
kind: role
version: v7
metadata:
name: my-role
spec:
allow:
rules:
- resources:
- access_graph
verbs:
- list
- read
미리 설정된 editor
역할은 기본적으로 필요한 권한을 가지고 있습니다.