API 아키텍처
이 가이드에서는 tctl, Teleport Terraform 공급자, Teleport Kubernetes 오퍼레이터와 같은 클라이언트가 Teleport 클러스터의 동적 리소스를 관리할 수 있도록 하는 Teleport gRPC API의 아키텍처를 설명합니다.
이 가이드에서는 tctl, Teleport Terraform 공급자, Teleport Kubernetes 오퍼레이터와 같은 클라이언트가 Teleport 클러스터의 동적 리소스를 관리할 수 있도록 하는 Teleport gRPC API의 아키텍처를 설명합니다. Teleport gRPC API가 처음이라면 시작하기를 읽어보세요.
인증#
Auth API는 클라이언트-서버 연결을 인증하기 위해 mTLS를 사용합니다. 따라서 클라이언트는 API에 접근하기 위해 Auth 서비스가 서명한 TLS 인증서를 제공해야 합니다. 이는 자격 증명 로더를 사용하여 쉽게 생성하고 제공할 수 있습니다.
권한 부여#
Auth 서비스가 서명한 클라이언트 인증서는 특정 사용자와 연결됩니다. 이 사용자는 클라이언트가 만든 API 요청을 권한 부여하는 데 사용됩니다.
각 클라이언트마다 새 사용자와 역할을 만드는 것이 좋습니다. 이를 통해 클라이언트 작업을 더 쉽게 추적할 수 있으며, 클라이언트 권한을 신중하게 제어할 수 있습니다.
예를 들어, 클라이언트가 client.GetRole()을 사용해야 한다면, 사용자는 role 리소스에서 read 작업을 수행할 권한이 있어야 합니다. 필요한 최소 권한으로 사용자와 역할을 만들어야 합니다.
Best practices for production security
When running Teleport in production, you should adhere to the following best practices to avoid security incidents:
- Avoid using
sudoin production environments unless it's necessary. - Create new, non-root, users and use test instances for experimenting with Teleport.
- Run Teleport's services as a non-root user unless required. Only the SSH
Service requires root access. Note that you will need root permissions (or
the
CAP_NET_BIND_SERVICEcapability) to make Teleport listen on a port numbered <1024(e.g.443). - Follow the principle of least privilege. Don't give users
permissive roles when more a restrictive role will do.
For example, don't assign users the built-in
access,editorroles, which give them permissions to access and edit all cluster resources. Instead, define roles with the minimum required permissions for each user and configure Access Requests to provide temporary elevated permissions. - When you enroll Teleport resources—for example, new databases or applications—you
should save the invitation token to a file.
If you enter the token directly on the command line, a malicious user could view
it by running the
historycommand on a compromised system.
You should note that these practices aren't necessarily reflected in the examples used in documentation. Examples in the documentation are primarily intended for demonstration and for development environments.
아래를 복사하여 Teleport Auth 서비스에서 실행하세요:
# 역할 구성 생성
$ cat > api-role.yaml <
역할 기반 접근 제어에 대한 자세한 내용은 역할 문서를 참조하세요.
자격 증명#
Teleport Go 클라이언트는 Teleport 클러스터에 인증하기 위해 자격 증명이 필요합니다.
자격 증명은 Teleport CLI가 생성한 인증서와 데이터를 수집하는 자격 증명 로더를 사용하여 생성됩니다.
선택할 수 있는 자격 증명 로더가 여러 가지이며 각각 다른 장점이 있으므로, 빠른 요약은 다음과 같습니다:
- 프로필 자격 증명은 시작하기 가장 쉽습니다.
tsh login으로 기기에 로그인하기만 하면 됩니다. Teleport 프록시 주소와 자격 증명이 자동으로 찾아져 사용됩니다. - 신원 파일 자격 증명은 사용성, 기능성, 사용자 정의 측면에서 가장 균형 잡혀 있습니다. 신원 파일은
tsh login,tctl auth sign, 또는 머신 및 워크로드 아이덴티티를 통해 생성할 수 있습니다. - 동적 신원 파일 자격 증명은 디스크에서 자격 증명을 다시 로드하는 기능을 갖춘 신원 파일 자격 증명입니다. 머신 및 워크로드 아이덴티티가 기본 신원 파일을 교체할 때 자격 증명을 다시 로드할 수 있어 머신 및 워크로드 아이덴티티 통합에 적합합니다.
- 키 쌍 자격 증명은 다른 자격 증명보다 훨씬 간단한 구현을 가지고 있으며 더 친숙하게 느껴질 수 있습니다. Auth 서비스에서 직접 호스팅되는 클라이언트 인증에 적합합니다.
- TLS 자격 증명은 모든 것을 클라이언트 사용자에게 맡깁니다. 이는 주로 내부적으로 사용되지만 일부 고급 사용자에게 유용할 수 있습니다.
다음은 더 자세한 비교입니다:
| 유형 | 프로필 자격 증명 | 신원 자격 증명 | 키 쌍 자격 증명 | TLS 자격 증명 |
|---|---|---|---|---|
| 사용 편의성 | 쉬움 | 쉬움 | 중간 | 어려움 |
| 장기 인증서 지원 | 예, 서버 측에서 구성해야 함 | 예 | 예 | 예 |
| SSH 연결 지원 | 예 | 예 | 아니요 | 아니요 |
| 자동 프록시 주소 검색 | 예 | 아니요 | 아니요 | 아니요 |
| 사용된 CLI | tsh | tctl/tsh | tctl | - |
자격 증명 및 자격 증명 로더에 대한 자세한 정보와 예시는 pkg.go.dev의 자격 증명 유형을 참조하세요.
클라이언트 연결#
API 클라이언트는 Teleport Auth 서비스로의 열린 연결을 통해 요청을 보냅니다.
Auth 서비스가 프록시 서버 뒤에 격리된 경우, Auth 서비스가 서명한 SSH 인증서를 사용하여 역방향 터널 연결을 만들 수 있습니다. 서버의 역방향 터널 주소를 직접 제공하거나 웹 프록시 주소를 제공하여 클라이언트가 역방향 터널 주소를 자동으로 가져오도록 할 수 있습니다.
모든 자격 증명 로더가 mTLS 연결을 지원하지만, SSH 연결을 지원하는 것은 일부뿐입니다(위 표 참조).
이 클라이언트 생성자 예시를 참조하여 이러한 연결 옵션이 어떻게 보이는지 확인하세요.
