#aws #command-line #amazon-s3 #access #request #local-server #authentication

app auth-proxy

提供本地服务器,您可以将需要但未提供身份验证机制的控制台工具指向它。例如,如果您想通过简单的curl命令访问安全的S3存储桶,则无法在不进行认证的情况下做到这一点。

4 个版本

0.1.1 2022年11月9日
0.1.0 2022年11月7日
0.0.3 2022年10月9日
0.0.2 2022年1月22日
0.0.1 2022年1月21日

#12#local-server

每月 25 次下载

MIT 许可证

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 中配置的用户或角色。

安装

为了安装 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