4 个版本
0.1.1 | 2022年11月9日 |
---|---|
0.1.0 |
|
0.0.3 | 2022年10月9日 |
0.0.2 | 2022年1月22日 |
0.0.1 | 2022年1月21日 |
#12 在 #local-server
每月 25 次下载
21KB
281 行
身份验证代理
auth-proxy
提供本地服务器,您可以将需要但未提供身份验证机制的控制台工具指向它。例如,如果您想通过简单的curl命令访问安全的S3存储桶,则无法在不进行认证的情况下做到这一点。
假设您有权访问该存储桶,您可以配置 auth-proxy 使用您想要的 AWS 配置文件和请求模式,然后向本地服务发出curl请求,该服务将拦截请求,添加适当的授权,然后将请求“转发”到配置的端点。
为什么?
这个工具最初是为了考虑私有的 Rust 仓库 编写的。截至规范的第1版,存在一种简单的身份验证方法,允许您控制对仓库索引的访问,但该机制不适用于实际下载存储库(源代码)。
我想创建一种机制,可以通过 AWS IAM 控制对私有 Rust 仓库的访问,并保留某些基于 Rust 的项目仅用于私有用途。
功能
- 简单的命令行界面
- 通过基于 YAML 的配置文件定义路由规则
- 通过 auth-proxy 路由的请求将根据您定义的 AWS CLI 配置文件使用 AWS SigV4 进行签名。
待办事项
(不分顺序,请将这些添加到 GitHub 问题跟踪器)
- 始终使用 us-west-2 AWS 区域进行身份验证。需要在配置文件中使其可定制。
- 更好的错误和帮助信息。目前,如果某些输入不正确,auth-proxy 只是崩溃。
- 一次性运行的能力。目前,auth-proxy 将运行,直到手动终止。如果能够在命令行中传递命令给 auth-proxy 并使其在完成后退出将很好。
- 分发一个无限期运行 auth-proxy 的 Docker 映像。
- 实现其他身份验证机制?
- 添加更多支持的服务,或者更好的是,消除在代码库中定义特定服务的需要。
- 使 auth-proxy 运行的端口号可定制。
使用说明
auth-proxy
目前仅支持使用 AWS SigV4 进行认证。因此,一般意图是使用 auth-proxy
来认证安全的 AWS 资源(如 S3 存储桶),因此您需要一个 AWS 账户、一些安全资源以及您在 IAM 和 AWS CLI 中配置的用户或角色。
安装
Rust 和相关工具
为了安装 auth-proxy
,您首先需要安装 Rust
AWS CLI(可选)
如果您以任何方式使用 AWS 服务,那么您可能已经安装了 AWS CLI。虽然您不一定使用 AWS CLI,但它可以用来验证您是否有权访问您想要交互的资源,并且 入门和相关的说明 将帮助您设置适当的认证配置文件。
auth-proxy
安装 Rust 后,您现在可以从命令行运行以下命令来安装 auth-proxy
cargoinstall auth-proxy
创建配置文件
为了使 auth-proxy
知道如何路由请求,您需要将其指向为您创建的配置文件。这包括要使用的 AWS 配置文件的详细信息以及与请求路由相关的规则。代理配置文件使用 YAML 定义,这是一种相对简单、易于阅读的文本文件格式。
以下是一个示例配置文件,它包括一个规则,将特定模式的请求路由到 S3。
# This is the AWS credentials profile to use for signing requests.
aws_profile: code
# The list of rules that are used to route requests from the originally made
# requests. They are evaluated from top to bottom and the first matching
# rule is what is used to reroute the request. If no rules match, than a 404
# is returned to the calling client.
rules:
-
# The regular expression to match the requested path.
path_pattern: "^/prefix/more/path/(.+)"
# The new host name to route matching requests to.
proxy_host: some-s3-bucket.s3.amazonaws.com
#
proxy_request_path_and_query: /another/path/$1
# The service name to use when signing the request.
destination_service: s3
运行 auth-proxy
创建您的配置文件后,您可以通过以下方式运行它
auth-proxyPATH_TO_PROFILE
...此时,它将开始监听端口 8123。为了验证它是否按预期工作,您可以发出一个示例请求,在本例中是从安全的存储桶中拉取文件,该存储桶可以通过所需的 AWS 配置文件访问
curlhttps://127.0.0.1:8123/prefix/more/path/sub/path/file.txt
...在经过适当的签名后,将被重定向到以下 URL
https://some-s3-bucket.s3.amazonaws.com/another/path/sub/path/file.txt
依赖项
~19–34MB
~595K SLoC