保护和加密http API GW

0

【以下的问题经过翻译处理】 我多次提出了这个问题,但每次得到的答案都不符合我的场景描述 :)。

请仔细阅读场景:) :)

我有一个HTTP API GW(而不是REST GW),我想通过防止用户绕过CF直接命中它来保护这个GW。

由于HTTP GW不支持WAF,因此此处描述的场景不适用于我的情况:

https://wellarchitectedlabs.com/security/300_labs/300_multilayered_api_security_with_cognito_and_waf/3_prevent_requests_from_accessing_api_directly/

因为这意味着:

1- CF分发的源是API GW(但在我的情况下,我的源是S3存储桶)

2-API GW支持WAF以能够读取规则并阻止请求,这些请求不具有特定标头(但在我的情况下,我的HTTP GW不支持WAF)

由于这两个事实,我最终发现我不能使用上面文章中提出的解决方案(因为HTTP GW不支持WAF,因此无法读取WAF规则以阻止不具有由CloudFront注入的标头的请求)。

请问有没有一种解决方案来保护HTTP API GW并防止直接访问它?

用户=> CloudFront(带有S3存储桶作为源和链接到其上的WAF)=> Http GW(不是REST GW,没有链接到其上的WAF)=> NLB=> fargate群集。

1 回答
0

【以下的回答经过翻译处理】 从您的问题中我了解到您想要通过WAF保护API,但是由于您使用了不支持WAF的HTTP API,因此您在CloudFront中启用了它,并且希望确保到达网关的请求来自CF,并且没有绕过它,因此绕过了WAF。

您必须了解CloudFront可能有多个源:S3用于页面的静态内容和API Gateway用于动态内容(API调用)。客户端访问CF,CF将一些请求转发到S3,将API请求转发到API Gateway。通常通过域名或路径完成,例如,site.example.com将被转发到S3,api.example.com将被转发到API GW。

为了验证请求来自CF,需要创建一个包含某个秘密值的头,并由API Gateway进行验证。您提到的链接显示了如何在CF中完成这项工作。由于您提到HTTP API不支持WAF,为了验证头部的值,它确实支持Lambda授权者。您可以在Lambda授权者中验证秘密头的值。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则