gravitational/teleport
GitHub: gravitational/teleport
Teleport 是一个基础设施访问安全平台,通过短期证书和统一身份认证,为 SSH、Kubernetes、数据库等资源提供无 VPN、无堡垒机的安全访问方案。
Stars: 19953 | Forks: 2004
Teleport 为基础设施提供连接、身份验证、访问控制和审计功能。
你可以使用 Teleport 来:
* 为你所有的云和本地基础设施设置单点登录 (SSO)。
* 保护对服务器、Kubernetes 集群、数据库、Windows 桌面、Web 应用程序和云 API 的访问,无需长期有效的密钥或密码。
* 建立安全隧道以访问位于 NAT 和防火墙后的资源,无需 VPN 或堡垒机。
* 记录和审计 SSH、Kubernetes、数据库、RDP 和 Web 会话的活动。
* 在用户、机器、工作负载和资源类型之间应用一致的角色型和属性型访问控制 (RBAC/ABAC)。
* 针对特权角色或敏感系统,实施最小权限和即时 (JIT) 访问请求。
* 为人类用户和工作负载维护统一的身份和访问层。
Teleport 适用于 SSH、Kubernetes、数据库、RDP、云控制台、内部 Web 服务、Git 仓库以及模型上下文协议 (MCP) 服务器。
## 更多信息
[Teleport 入门指南](https://goteleport.com/docs/get-started/)
[Teleport 架构](https://goteleport.com/docs/reference/architecture/)
[参考指南](https://goteleport.com/docs/reference/)
[常见问题解答](https://goteleport.com/docs/faq)
## 目录
1. [简介](#introduction)
2. [我们为何构建 Teleport](#why-we-built-teleport)
3. [支持与贡献](#supporting-and-contributing)
4. [安装与运行](#installing-and-running)
5. [Docker](#docker)
6. [构建 Teleport](#building-teleport)
7. [许可证](#license)
8. [常见问题解答](#faq)
## 简介
Teleport 包含一个身份感知访问代理、一个颁发短期证书的 CA、一个统一的访问控制系统,以及一个用于访问防火墙后资源的隧道系统。
Teleport 是一个单一的 Go 二进制文件,可与多种协议和云服务集成,包括
* [SSH 节点](https://goteleport.com/docs/enroll-resources/server-access/introduction/)
* [Kubernetes 集群](https://goteleport.com/docs/enroll-resources/kubernetes-access/introduction/)
* [PostgreSQL、MongoDB、CockroachDB 和 MySQL 数据库](https://goteleport.com/docs/enroll-resources/database-access/)
* [模型上下文协议](https://goteleport.com/docs/connect-your-client/model-context-protocol/)
* [内部 Web 应用](https://goteleport.com/docs/enroll-resources/application-access/introduction/)
* [Windows 主机](https://goteleport.com/docs/enroll-resources/desktop-access/introduction/)
* [网络服务器](https://goteleport.com/docs/enroll-resources/server-access/introduction/)
你可以将 Teleport 设置为 [Linux 守护进程](https://goteleport.com/docs/admin-guides/deploy-a-cluster/linux-demo) 或 [Kubernetes 部署](https://goteleport.com/docs/admin-guides/deploy-a-cluster/helm-deployments/)。
Teleport 专注于基础设施安全的最佳实践,包括:
- 不使用共享密钥(如 SSH 密钥或 Kubernetes 令牌);Teleport 对所有协议使用具有自动过期功能的基于证书的身份验证。
- 对所有内容进行多因素认证 (MFA)。
- 通过 GitHub Auth、OpenID Connect 或 SAML(使用 Okta 或 Microsoft Entra ID 等端点)对所有内容进行单点登录 (SSO)。
- 用于协作排查问题的会话共享。
- 基础设施内省,通过 Teleport CLI 或 Web UI 查看每个 SSH 节点、数据库实例、Kubernetes 集群或内部 Web 应用的状态。
Teleport 使用 [Go crypto](https://godoc.org/golang.org/x/crypto)。它与 OpenSSH、`sshd` 服务器和 `ssh` 客户端、Kubernetes 集群等*完全兼容*。
| 项目链接 | 描述 |
|---|---|
| [Teleport 官网](https://goteleport.com/) | 项目的官方网站。 |
| [文档](https://goteleport.com/docs/) | 管理员指南、用户手册等。 |
| [功能特性](https://goteleport.com/docs/feature-matrix/) | 探索 Teleport 功能的完整列表。 |
| [博客](https://goteleport.com/blog/) | 我们发布 Teleport 新闻和有用文章的博客。 |
| [论坛](https://github.com/gravitational/teleport/discussions) | 提出设置问题,或发布教程、反馈或想法。 |
| [开发者工具](https://goteleport.com/resources/tools/) | 数十个免费的基于浏览器的工具,用于代码处理、加密、数据转换等。 |
| [Teleport 学院](https://goteleport.com/learn/) | 操作指南、最佳实践,以及深入探讨 SSH、Kubernetes、MCP 等主题。 |
| [Slack](https://goteleport.com/slack) | 设置需要帮助?在我们的 Slack 频道中联系我们。 |
| [云托管版 & 自托管版](https://goteleport.com/pricing/) | Teleport Enterprise 是面向团队的云托管选项,这些团队需要安全且轻松地访问其计算环境。 |
## 我们为何构建 Teleport
在 Rackspace 共事期间,Teleport 的创建者注意到大多数云用户在设置和配置基础设施安全方面感到困难。许多为此设计的流行工具在现代分布式计算基础设施中难以理解且维护成本高昂。
我们决定构建一个易于使用、理解和扩展的解决方案。一种实时呈现所有服务器的方案,就像它们和你身处同一房间,仿佛被**传送**过来一样。于是,Teleport 诞生了!
如今,从个人爱好者到超大规模企业,大家都信赖 Teleport,用它来简化云 CLI 和控制台、Kubernetes 集群、SSH 服务器、数据库、内部 Web 应用以及 AI 代理使用的模型上下文协议 (MCP) 的安全性。
[了解更多关于 Teleport 及其历史](https://goteleport.com/about/)
## 支持与贡献
我们的目标是让 Teleport 易于采用和贡献,首先从清晰全面的[文档](https://goteleport.com/docs/)开始。
如果你有疑问、正在探索想法或想确认某事,请先从 GitHub Discussion 开始。讨论有助于我们回答问题、探索用例,并共同决定某事是否应成为错误报告或功能请求。
- 在 [Teleport Discussions](https://github.com/gravitational/teleport/discussions) 中发起对话
这是提问、分享想法和获得帮助的最佳场所。我们的工程师会积极参与其中,当有明确可操作的下一步时,讨论可以升级为 issue。
- Issues 用于确认的错误和定义明确的功能请求
如果某事已被验证为错误或改进,请随时提交 issue。如有疑问,请先发起讨论,我们将协助指导。
- 企业版和 POC 支持
如果你正在评估 Teleport Enterprise 或在 POC 期间需要更快的响应支持,我们可以建立专门的 Slack 频道。你可以[通过我们的网站联系我们](https://goteleport.com/contact-sales/)以开始。
## 安装与运行
要设置单实例 Teleport 集群,请遵循我们的[入门指南](https://goteleport.com/docs/admin-guides/deploy-a-cluster/linux-demo/)。
然后,你可以将服务器、Kubernetes 集群和其他基础设施注册到你的 Teleport 集群。
你也可以从 Teleport Enterprise Cloud 开始,这是一个托管的 Teleport 部署,可以更轻松地实现对基础设施的安全访问。
[注册](https://goteleport.com/signup/) Teleport Enterprise Cloud 的免费试用,并遵循本指南[注册你的第一台服务器](https://goteleport.com/docs/get-started/)。
## Docker
### 部署 Teleport
如果你希望在 Docker 容器内部署 Teleport,请参阅[安装指南](https://goteleport.com/docs/installation/docker/#running-teleport-on-docker)。
### 用于本地测试和开发
要在本地运行完整的测试套件,请参阅[测试依赖项列表](BUILD_macos.md#local-tests-dependencies)
## 构建 Teleport
`teleport` 仓库包含 Teleport 守护进程二进制文件(用 Go 编写)和一个用 TypeScript 编写的 Web UI。
如果你的目的是构建并部署在生产基础设施中,应使用已发布的标签。默认分支 `master` 是即将发布的主要版本当前的开发分支。获取 https://goteleport.com/download/ 上列出的最新发布标签,然后在 `git clone` 中使用该标签。例如 `git clone https://github.com/gravitational/teleport.git -b v18.5.0` 获取 v18.5.0 版本。
### Docker 化构建
使用 Docker 构建通常是最简单的,它确保构建所需的所有工具都可用。要执行 docker 化构建,请确保 docker 已安装并正在运行,然后执行:
```
make -C build.assets build-binaries
```
此命令将构建与主机架构匹配的 Linux 二进制文件。
无法交叉编译到不同的目标架构。
### 本地构建
#### 依赖项
从源代码构建 Teleport 需要以下依赖项。为了获得最大的兼容性,请使用 [`build.assets/versions.mk`](/build.assets/versions.mk) 中列出的版本安装这些依赖项:
1. [`Go`](https://golang.org/dl/)
2. [`Rust`](https://www.rust-lang.org/tools/install)
3. [`Node.js`](https://nodejs.org/en/download/)
4. [`libfido2`](https://github.com/Yubico/libfido2)
5. [`pkg-config`](https://www.freedesktop.org/wiki/Software/pkg-config/)
有关 macOS 上开发环境设置的示例,请参阅[这些说明](/BUILD_macos.md)。
#### 执行构建
获取源代码
```
git clone https://github.com/gravitational/teleport.git
cd teleport
```
执行构建
```
make full
```
为了支持开发环境,`tsh` 默认动态链接 libfido2,只要能找到该库本身即可:
```
$ brew install libfido2 pkg-config # Replace with your package manager of choice
$ make build/tsh
> libfido2 found, setting FIDO2=dynamic
> (...)
```
发布二进制文件静态链接 libfido2。你可以使用 FIDO2 变量切换链接模式:
```
make build/tsh FIDO2=dynamic # dynamic linking
make build/tsh FIDO2=static # static linking, for an easy setup use `make enter`
# or `build.assets/macos/build-fido2-macos.sh`.
make build/tsh FIDO2=off # doesn't link libfido2 in any way
```
构建支持 Touch ID 的 `tsh` 需要访问 Apple Developer 帐户。如果你是 Teleport 维护者,请向团队请求访问权限。
#### 构建输出并在本地运行
如果构建成功,安装程序会将二进制文件放在 `build` 目录中。
在开始之前,创建默认数据目录:
```
sudo mkdir -p -m0700 /var/lib/teleport
sudo chown $USER /var/lib/teleport
```
#### 在热重载模式下运行 Teleport
为了加快开发过程,你可以使用 [`CompileDaemon`](https://github.com/githubnemo/CompileDaemon) 运行 Teleport。这将构建并运行 Teleport 二进制文件,然后在任何 Go 源文件更改时重新构建并重新启动它。
1. 安装 CompileDaemon:
go install github.com/githubnemo/CompileDaemon@latest
请注意,我们使用 `go install` 而不是建议的 `go get`,因为我们不希望 CompileDaemon 成为项目的依赖项。
2. 构建并运行 Teleport 二进制文件:
make teleport-hot-reload
默认情况下,这会运行 `teleport start` 命令。如果你想自定义命令,例如通过提供自定义配置文件位置,可以使用 `TELEPORT_ARGS` 参数:
make teleport-hot-reload TELEPORT_ARGS='start --config=/path/to/config.yaml'
请注意,如果你修改了任何 Protocol Buffers 文件,你仍然需要运行 [`make grpc`](api/proto/README.md) 以重新生成 Go 源代码;重新生成这些源代码反过来会导致 CompileDaemon 重新构建并重启 Teleport。
### Web UI
Teleport Web UI 位于 [web](web) 目录中。
#### 为开发重建 Web UI
要重建 Teleport UI 包,运行以下命令:
```
make docker-ui
```
然后你可以用新生成的 `/dist` 文件夹中的文件替换 Teleport Web UI 文件。
为了在 Web UI 上实现快速迭代,你可以运行一个[本地 web-dev 服务器](web#web-ui)。
你也可以告诉 Teleport 从源目录加载 Web UI 资产。要启用此行为,请设置环境变量 `DEBUG=1` 并使用默认目标进行重建:
```
# 在开发模式下将 Teleport 作为单节点集群运行:
DEBUG=1 ./build/teleport start -d
```
保持服务器在此模式下运行,并在 `/dist` 目录中进行 UI 更改。有关如何更新 Web UI 的说明,请阅读 [`web` README](web#readme)。
### 管理依赖项
所有依赖项均使用 [Go modules](https://blog.golang.org/using-go-modules) 管理。以下是一些常见任务的说明:
#### 添加新依赖项
最新版本:
```
go get github.com/new/dependency
```
并更新源代码以使用此依赖项。
要获取特定版本,请改用 `go get github.com/new/dependency@version`。
#### 将依赖项设置为特定版本
```
go get github.com/new/dependency@version
```
#### 将依赖项更新到最新版本
```
go get -u github.com/new/dependency
```
#### 更新所有依赖项
```
go get -u all
```
#### 调试依赖项
为什么导入了特定的包?
`go mod why $pkgname`
为什么导入了特定的模块?
`go mod why -m $modname`
为什么导入了特定版本的模块?
`go mod graph | grep $modname`
## 许可证
Teleport 以多种形式分发,具有不同的许可含义。
Teleport API 模块(此仓库中 `/api` 下的所有代码)在 [Apache 2.0 许可证](./api/LICENSE)下可用。
此仓库中的其余源代码在 [GNU Affero General Public License](./LICENSE) 下可用。从源代码编译 Teleport 的用户必须遵守此许可证的条款。
在 http://goteleport.com/download 上分发的 Teleport Community Edition 构建在[修改后的 Apache 2.0 许可证](./build.assets/LICENSE-community)下可用。
## 常见问题解答
### Teleport 可用于生产环境吗?
是的,Teleport 已准备好用于生产环境,并被当今许多领先公司用来保护和促进对其最宝贵和关键任务应用程序的访问。你可以在[我们的网站](https://goteleport.com/case-study/)上了解有关在生产中使用 Teleport 的公司的更多信息。
### Teleport 安全吗?
是的,Teleport 已通过国家和国际公认的技术安全公司的多次安全审计。我们在我们的[信任页面](https://trust.goteleport.com/)上公布审计结果、我们的安全理念及相关信息。
### Teleport 支持哪些资源?
Teleport 保护对[广泛设施资源](https://goteleport.com/docs/enroll-resources)的访问,包括 Linux 服务器、Windows 桌面、Kubernetes 集群、数据库、内部 Web 应用程序、云提供商 API 和控制台(如 AWS、Azure 和 GCP),以及 AI 代理使用的模型上下文协议 (MCP) 服务器。
### Teleport 如何部署?
Teleport 可以[部署以适应大多数环境](https://goteleport.com/docs/feature-matrix/#platform-integrations-management-licensing-and-deployment),既可以作为 Linux 或 Kubernetes 上的自托管集群,也可以使用 Teleport Enterprise Cloud。在所有情况下,Teleport 代理运行在靠近你的资源的地方,并通过强制执行身份、访问控制和审计的 Auth Service 和 Proxy Service 进行连接。
### Teleport 是身份提供商 (IdP) 吗?
Teleport 使用现有的 IdP(Okta、Google Workspace、Microsoft Entra ID 或 GitHub)来颁发短期证书并应用访问策略。Teleport 也可以[配置为充当 SAML IdP](https://goteleport.com/docs/identity-governance/idps/),以便在需要时对用户进行应用程序身份验证。
### Teleport 需要凭据处理或机密管理吗?
Teleport 通过颁发绑定到人类或非人类身份的[短期、自动过期的 mTLS 和 SSH 证书](https://goteleport.com/docs/reference/architecture/authentication/#short-lived-certificates),消除了长期密码、SSH 密钥、数据库凭据、凭据轮换和保管库流程。
### Teleport 是特权访问管理 (PAM) 解决方案吗?
Teleport 提供现代 PAM 软件功能,如强身份验证、会话记录、基于策略的访问和 JIT 提权,且无需机密、凭据轮换或保管库依赖。这使用短期证书和基于角色的策略,实现了对服务器、Kubernetes、数据库、云控制台和其他特权环境的受控、受审计访问。
### Teleport 是即时 (JIT) 访问解决方案吗?
Teleport 通过[有时限的访问请求启用 JIT 访问](https://goteleport.com/docs/identity-governance/access-requests/)。用户请求他们临时需要的角色或资源,策略决定是否需要批准,权限自动过期。这种方法在保持访问工作流高效和可预测的同时维护了最小权限。
### Teleport 是否保护对 Kubernetes 的访问?
Teleport 可以[代理和保护 Kubernetes 访问](https://goteleport.com/docs/enroll-resources/kubernetes-access/introduction/),提供基于身份的身份验证、基于角色的访问控制以及详细的 kubectl 活动审计。
### Teleport 支持 SPIFFE 吗?
Teleport 支持[工作负载的 SPIFFE 兼容身份](https://goteleport.com/docs/machine-workload-identity/workload-identity/spiffe/),允许其参与 SPIFFE 生态系统和联邦。Teleport 颁发短期 SVID,并可与外部 PKI 层次结构集成。
### Teleport 是 VPN 或堡垒机的替代品吗?
是的。Teleport 经常被用作传统 VPN 和堡垒机的替代品,支持[基于身份的直接资源访问](https://goteleport.com/docs/core-concepts/#teleport-proxy-service),而不是广泛的网络访问。
### Teleport 是否保护模型上下文协议 (MCP) 和 AI 代理?
Teleport 通过在 MCP 客户端和服务器之间放置身份感知策略执行来[保护 MCP 连接](https://goteleport.com/docs/connect-your-client/model-context-protocol/)。这确保所有工具调用都经过身份验证、授权和审计,无需自定义授权代码,并保护敏感系统免受过于宽泛的访问。
标签:ABAC, DevSecOps, EVTX分析, EVTX分析, Go语言, JIT访问, JSONLines, NAT穿透, Python工具, RBAC, RDP, SamuraiWTF, SSH, SSO, Streamlit, VPN替代, 上游代理, 人工智能安全, 会话录制, 单点登录, 反向代理, 可视化界面, 合规性, 基础设施访问, 堡垒机, 大语言模型安全, 子域名突变, 安全隧道, 审计, 开源, 提示词模板, 数据库访问, 无密码认证, 日志审计, 最小权限, 服务器管理, 机密管理, 程序破解, 访问控制, 证书颁发机构, 请求拦截, 远程桌面, 远程访问, 零信任