tur*_*tle 4 amazon-s3 amazon-web-services aws-lambda
我有一个暴露于公共互联网的API,我通过亚马逊的Gateway API服务创建了这个API.API调用触发查询后端数据库的Lambda函数.我创建的API由S3静态网页用于获取数据.
我想保护我的API,以便只有我的S3存储桶(index.html)的内容才有权访问我的API.我想阻止人们直接查询我的API并使用curl请求等来抓取数据.我已经阅读了一些关于IAM角色,Cognito和Lambda权限模型的内容,但我不确定使用所有这些不同的工具保护我的API.
保护我的API的最佳方法是什么,以便只有我的S3存储桶中的内容才有权访问我的API?
好吧,你无法真正授权S3访问API,因为S3不访问你的API - S3将html(js/css和其他静态资产)传递给访问你网站的用户的客户端(网络浏览器).然后,从客户端调用API.
此外,亚马逊强制要求API网关公开(有意义但你不能在VPC背后有API)
你可以做什么:
如果您害怕滥用,也可以阅读常见问题解答
问:如何解决或阻止API威胁或滥用?
Amazon API Gateway支持API中每个方法的限制设置.您可以为REST API中的每种方法设置标准速率限制和每秒突发速率限制.此外,Amazon API Gateway可自动保护您的后端系统免受分布式拒绝服务(DDoS)攻击,无论是使用伪造请求(第7层)还是SYN Flood(第3层)攻击.
根据您的设置,您可以尝试在API网关的资源策略中使用一个或多个AWS 条件键。例如,您只能允许引用者是您的S3静态网站的请求:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": [
"execute-api:/{{stageNameOrWildcard*}}/{{httpVerbOrWildcard*}}/{{resourcePathOrWildcard*}}"
],
"Condition": {
"StringLike": {
"aws:Referer": [
"<bucket-name>.s3-website-<AWS-region>.amazonaws.com/*"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
966 次 |
最近记录: |