
Boundary enables identity-based access management for dynamic infrastructure.
Boundary 是一个身份感知代理,为访问网络上的主机和关键系统提供了一种简单、安全的方式。
借助 Boundary,你可以:
Boundary 的设计目标是易于理解、高度可扩展且具有弹性。它可以运行在云、本地部署、安全 enclave 等环境中,并且无需在每个终端主机上安装代理,因此除了传统的主机系统和服务之外,它还适用于访问托管/云服务以及基于容器的工作流。
更多信息,请参阅 Boundary 网站上的“什么是 Boundary?”。
Boundary 由两个服务器组件组成:
真实的 Boundary 部署通常由一个或多个 Controller 与一个或多个 Worker 组成。单个 Boundary 二进制文件可以在这两种模式中的任一种下运行,也可以同时以两种模式运行。
此外,Boundary 还为最终用户提供了桌面客户端和 CLI,用于请求并建立到网络资源的授权会话。
Boundary _不_需要在你的主机和服务上安装软件。
Boundary 有两个外部依赖:
该数据库包含 Boundary 的配置和会话信息。Controller 节点必须能够访问该数据库。
机密值(例如凭据)在数据库中经过加密。目前,Boundary 支持使用 PostgreSQL 作为数据库,并已在 Postgres 12 及以上版本中完成测试。
Boundary 仅使用常见扩展,支持托管实例和自管理实例。在大多数情况下,你只需要一个数据库端点和相应的凭据。
Boundary 将 KMS 密钥用于各种目的,例如保护机密、对 Worker 进行身份验证、恢复数据、加密 Boundary 配置中的值等。Boundary 广泛使用密钥派生,以避免这些高价值密钥的密钥蔓延。
你可以使用任何云 KMS 或 Vault 的 Transit 机密引擎来满足 KMS 要求。
在更长期的场景下运行 Boundary 需要额外几步操作,例如编写一些简单的配置文件,告诉节点如何连接其数据库和 KMS。以下步骤以及永久安装所需的额外信息,详见我们的安装指南。
⚠️ 除开发或测试用例外,_不要_使用
main分支。Boundary 0.10 引入了发布分支,跟踪这些分支应该是安全的;但是,main中的迁移可能会在必要时重新编号。如果长期运行main导致迁移损坏或其他 bug,Boundary 团队将无法提供帮助。
从我们的下载页面下载最新版本的服务器二进制文件以及相应的桌面客户端。
Boundary 有一个可用于测试的 dev 模式。在 dev 模式下,你可以通过一条命令同时启动一个 Controller 和一个 Worker,它们具有以下特性:
如果你满足以下本地要求,就可以快速上手并运行 Boundary:
只需运行:
make install
这将构建 Boundary。(首次运行时,它会获取并编译 UI 资源,这会额外花费几分钟。)完成后,在 dev 模式下运行 Boundary:
$GOPATH/bin/boundary dev
请注意,开发可能还需要其他工具;要安装 Boundary 团队所用版本的工具集,请运行:
make tools
如果不这样做,你在运行 make install 时可能会遇到错误。同样重要的是,运行 make tools 会将各种用于 Boundary 开发的工具安装到 Go 的常规二进制目录中;这可能会覆盖或优先于系统上已安装的工具。
使用以下命令启动服务器二进制文件:
boundary dev
这将启动一个监听 http://127.0.0.1:9200 上传入 API 请求的 Controller 服务,以及一个监听 http://127.0.0.1:9202 上传入会话请求的 Worker 服务。它还会创建各种默认资源,并显示各种有用的信息,例如可用于身份验证的登录名和密码。
对于 dev 模式下 Boundary 的简单测试,你通常根本不需要配置任何资源!但了解 dev 模式为你做了什么还是很有用的,这样你就可以采取后续步骤。默认情况下,dev 模式会创建:
global 作用域,其中包含一个密码类型的认证方法,以及一个用于登录的账户。global 下的一个组织作用域,以及该组织内的一个项目作用域。127.0.0.1)的主机。22(例如 SSH)。你可以进入 Boundary 的 Web UI 或使用其 API 来更改这些默认值,例如,如果你想连接到不同的主机,或需要修改连接的端口。
接下来,让我们实际通过 Boundary 连接到本地 SSH 守护进程:
dev 值,即 boundary authenticate password -auth-method-id ampw_1234567890 -login-name admin -password password。(请注意,如果不包含 password 标志,系统会提示你输入。)boundary connect ssh -target-id ttcp_1234567890。如果你想调整用户名,请向命令传递 -username <name>。查看目标配置的各种可能性,尝试限制(或增加)每个会话的连接数,或设置最大时间限制;尝试从会话页面或通过 boundary sessions 取消活动会话,使用 boundary connect -exec 创建自己的命令,等等。
这个示例是入门的一种简单方式,但省略了在生产环境中可以采取的若干关键步骤:
请注意:我们非常重视 Boundary 的安全性和用户的信任。如果你认为自己发现了 Boundary 的安全问题,请_负责任地披露_,通过 [email protected] 与我们联系。
感谢你对贡献的兴趣!请参阅 CONTRIBUTING.md 获取指南。