小编Dan*_* B.的帖子

未经身份验证/访客请求的主体 ID,通过 Lambda 自定义授权方?

我的 API 网关配置为在授权请求时调用我的自定义授权方 Lambda 函数。

对于带有身份验证令牌的请求,Lambda 函数会在将请求传递给上游之前对 JWT 令牌进行解密和解码,并进行一些验证。如果令牌验证失败,授权者会使用 401 Unauthorized 使请求短路。

对于不带有身份验证令牌的请求,该函数仅允许请求通过(生成一个允许策略。)网关的上游负责决定给定的请求是否需要身份验证(仍然,令牌解密/解码/验证是完全封装在网关中,而不是在每个上游实现。)

我的问题是:对于我的网关/授权方“允许”的未经身份验证的请求,允许策略的主体 ID 的适当值是多少?我似乎没有选择离开它undefined

此外,如果我在多个不相关的请求之间重复使用主体 ID 会不会有任何风险?假设 X% 的请求共享'unauthenticated'主体 ID,作为最坏的例子,这些原本不相关的请求之间是否存在某种行为“冲突”的风险?也许一个规避风险/面向未来的解决方案是简单地附加一个 UUID 后缀:'unauthenticated|{uuid}'.

https://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

除了返回 IAM 策略之外,自定义授权方函数还必须返回调用方的委托人标识符。

amazon-web-services aws-lambda aws-api-gateway aws-iam

5
推荐指数
0
解决办法
504
查看次数

API网关HTTP代理与aws-sam集成(非Lambda代理)

我正在尝试使用aws-sam在本地开发/模拟我的API网关。我的API网关充分利用了HTTP代理集成。生产资源如下所示:

API网关资源方法上的HTTP代理集成的屏幕截图

所有的AWS-SAM的例子其中 发现,以及相关的文档和Q&A,使用LAMBDA集成/对lambda函数作为代理的资源硬依赖,对一个HTTP代理服务器的整合。

有没有办法为aws-sam应用程序定义HTTP代理资源?(而不是Lambda代理资源?)

有关:

aws-api-gateway aws-sam-cli aws-sam

5
推荐指数
1
解决办法
398
查看次数

API 网关 HTTP 代理与无服务器离线集成(不是 Lambda 代理)

我正在尝试使用无服务器离线在本地开发/模拟我的 API 网关。我的 API 网关自由地使用了HTTP 代理集成。生产资源如下所示:

API 网关资源方法上的 HTTP 代理集成的屏幕截图

我根据一些文档和讨论创建了一个无服务器离线配置,这些文档和讨论表明可以使用 Cloud Formation 配置定义 HTTP 代理集成:

我已根据我的目的改编了上述两个配置示例,请参见下文。

有什么提示,我可能在这里做错了什么?

plugins:
  - serverless-offline

service: company-apig
provider:
  name: aws
  stage: dev
  runtime: python2.7

resources:
  Resources:

    # Parent APIG RestApi
    ApiGatewayRestApi:
      Type: AWS::ApiGateway::RestApi
      Properties:
        Name: company-apig
        Description: 'The main entry point of the APIG'

    # Resource /endpoint
    EndpointResource:
      Type: AWS::ApiGateway::Resource
      Properties:
        ParentId:
          Fn::GetAtt:
            - ApiGatewayRestApi
            - RootResourceId
        PathPart: 'endpoint' …
Run Code Online (Sandbox Code Playgroud)

aws-api-gateway serverless-framework serverless serverless-offline

5
推荐指数
1
解决办法
2113
查看次数

Rails - render :content_type 没有效果

我正在开发一个 Ruby/Rails 应用程序,它可以抓取另一个网站并使用数据呈现 RSS 提要。

因为这个应用程序是在 Heroku 上构建的,所以我通过控制器生成 RSS 提要,而不是将它转储到文件系统并将其作为资产提供。

但是,当我设置render :content_type哈希时,没有任何效果。响应的内容类型仍然是text/plain

newsFeedController 的操作

def news
  do_scrape
  @posts = UbuEntry.all(:order => "created_at DESC", :limit => 400)
  render :layout => false, :content_type => Mime::RSS
end
Run Code Online (Sandbox Code Playgroud)

完整路线.rb

UbuWebRSS::Application.routes.draw do
  root :to => 'index#index'
  scope :format => true, :constraints => { :format => 'rss' } do
    get 'feed/news' => 'feed#news'
  end
end
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看实时结果:

http://www.ubuwebrss.com/feed/news.rss

以及完整的源代码:

https://github.com/freen/ubuwebrss/

我在 Google 和 StackOverflow 上环顾四周,但不清楚我做错了什么。

有小费吗?谢谢!

供参考:

视图脚本:/app/views/feed/news.rss.builder: …

rss heroku scraper mime-types ruby-on-rails-3

3
推荐指数
1
解决办法
1301
查看次数

使用 Amazon KMS 加密/解密小型应用程序数据的缺点

一对 Amazon Lambda 将对称地加密和解密一小段应用程序数据。我想使用 Amazon KMS 来促进这一点,因为它解决了秘密存储和密钥轮换等问题。

Amazon KMS 开发人员指南指出:

这些操作旨在加密和解密数据密钥。他们在加密操作中使用 AWS KMS 客户主密钥 (CMK),并且不能接受超过 4 KB(4096 字节)的数据。尽管您可以使用它们来加密少量数据(例如密码或 RSA 密钥),但它们并不是为加密应用程序数据而设计的。

它还建议使用AWS 加密 SDKAmazon S3 加密客户端来加密应用程序数据。

虽然AWS 加密 SDK 所列出的优势显而易见,并且非常有吸引力,尤其是对于非密码学家的开发人员而言,但出于本问题的目的,我们假设环境不利于这些替代方案。

如果我的应用程序数据肯定不会超过 4k,为什么我不应该简单地使用 Amazon KMS 来加密和解密这些数据

使用案例

我的团队正在实施一个新的身份验证层,以便在我们公司的服务和 API 中使用。我们正在实施 JWT 规范,但虽然我们打算避开广泛记录的困扰 JWE / JWS 兼容令牌签名的加密不满,但我们正在对有效负载进行对称加密。因此,我们保留了非加密令牌验证操作(过期等)的标准库实现的优势,并且留下了加密“脚枪”。

encryption encryption-symmetric aws-lambda amazon-kms

3
推荐指数
1
解决办法
5691
查看次数

适用于多个应用程序的多个环境的Puppet架构

我的团队使用Puppet架构,目前可以在多个环境中容纳单个应用程序(流浪,分段,生产).

我们现在希望扩展此设置的范围以支持其他应用程序.他们中的许多人将使用我们已经定义的现有模块的子集,而其他人将要求定义新模块(可能共享也可能不共享).

什么是最合适的Puppet架构,用于支持多个应用程序的多个环境?

在这样的体系结构中,大概每个应用程序都相当于一个模块.(文件 - )在结构上区分作为应用程序的模块和作为一个或多个模块的依赖关系的模块的最佳方法是什么?

例如,它可以像modules在顶级文件夹下添加第三个文件夹一样简单applications吗?或者是否有更好的分层策略?

到目前为止的研究尚未发现任何最佳实践示例/样板,例如通过GitHub上的example42或puppetlabs.

我们的文件结构:

puppet
??? environments
?   ??? production ? manifests ? init.pp
?   ??? staging ? manifests ? init.pp
?   ??? vagrant ? manifests ? init.pp
??? hiera.yaml
??? hieradata
?   ??? accounts.yaml
?   ??? common.yaml
?   ??? environments
?       ??? production.yaml
?       ??? staging.yaml
?       ??? vagrant.yaml
??? modules
?   ??? acl [..]
?   ??? newrelic [..]
?   ??? nginx [..]
?   ??? puma [..]
??? vendor
    ??? …
Run Code Online (Sandbox Code Playgroud)

puppet

2
推荐指数
1
解决办法
988
查看次数