2 个不稳定版本

0.1.0 2019年10月24日
0.0.0 2019年10月24日

#20#aws-credentials

MIT 许可证

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