2 个不稳定版本
0.1.0 | 2019年10月24日 |
---|---|
0.0.0 | 2019年10月24日 |
#20 在 #aws-credentials
170KB
243 行
sigv4
AWS SigV4 服务命令行工具
🍬 特点
- 熟悉的界面
- 颜色
- 美观打印的应用/json 响应
- 使用标准的 AWS 凭证链进行身份验证
📦 安装
通过 GitHub 发布
预构建的二进制文件(macos、linux 和 windows)可以直接从 GitHub 发布 下载
$ curl -L \
"https://github.com/softprops/sigv4/releases/download/v0.0.0/sigv4-$(uname -s)-$(uname -m).tar.gz" \
| tar -xz
🤸 使用
如果您熟悉 curl,您会很快适应 sigv4。其界面被设计为熟悉从命令行与 http 服务交互的人所熟悉
sigv4 0.1.0
sign aws sigv4 requests like a pro
USAGE:
sigv4 [FLAGS] [OPTIONS] <uri>
FLAGS:
-h, --help Prints help information
-i, --include Include HTTP headers in output
-V, --version Prints version information
OPTIONS:
-d, --data <data> Optional request body to send with the request
-H, --header <headers>... Optional headers to include with the request
-X, --request <method> HTTP method [default: GET]
-r, --region <region> AWS Region your resource is hosted in [default: us-east-1]
-s, --service <service> AWS service name [default: execute-api]
ARGS:
<uri> Remote resource URI
📓 资源
🗺️ Lambda 设置
假设您是一家采用无服务器战略的公司。您可能希望将一些私有 AWS Lambda 通过 API 网关公开,并希望限制对您的组织内部使用的访问。以下是如何操作的概述。
首先,您需要确定您的 AWS 组织 id。您可以通过 组织控制台 或命令行中的 aws
命令行工具来获取此信息。
$ aws organizations \
describe-organization \
--query 'Organization.Id' \
--output text
其次,您需要配置您的 API 网关,仅允许访问该组织。
使用 Serverless Framework,您可以在部署过程中声明性地执行此操作,通过 声明一个 resourcePolicy
限制访问您的 AWS 组织 ID,并在您的 serverless.yml 文件中声明一个 aws_iam
认证者 为您的私有函数。
service: SECRET_SAUCE
provider:
name: aws
runtime: YOUR_DEFAULT_FUNCTION_RUNTIME
+ resourcePolicy:
+ - Effect: Allow
+ Principal: '*'
+ Action: execute-api:Invoke
+ Resource: arn:aws:execute-api:*
+ Condition:
+ StringEquals:
+ aws:PrincipalOrgID: YOUR_AWS_ORG_ID
+ - Effect: Deny
+ Principal: '*'
+ Action: execute-api:Invoke
+ Resource: arn:aws:execute-api:*
+ Condition:
+ StringNotEquals:
+ aws:PrincipalOrgID: YOUR_AWS_ORG_ID
functions:
hello:
handler: YOUR_FUNCTION_HANDLER
events:
- http:
path: '/'
method: GET
+ authorizer: aws_iam
📝 关于 sigv4
安全性是任何现代应用的首要关注点。当您将服务卸载到管理的 AWS 基础设施时,这在网上公开该基础设施时也不例外。AWS 为管理服务之间的身份提供了一个内置的安全系统,称为 IAM,并定义了一个利用 IAM 信息的协议来认证服务之间的请求,称为 签名 v4 认证请求。
Doug Tangren (softprops) 2019
依赖项
~25–38MB
~687K SLoC