我在GCP中具有云功能,该功能会在S3桶中使用SNS通知接收到任何对象时触发。 SNS的配置方式是,当任何对象进入s3存储桶时,它都会使用http触发器(https url)将其通知给GCP云功能。截至目前,云功能端点是公共的,因此,如果有人拥有非常安全的URL,则可以从任何地方从Web浏览器触发它。因此,我想将其设为私有,并希望仅通过AWS SNS对其进行访问,但不知道如何实现。
答案 0 :(得分:2)
您不能阻止用户调用您的HTTP端点,因为您必须将端点公开以使Amazon SNS能够调用您的端点。您可以验证不想接受的请求和拒绝请求(返回401未经授权)。
有几种验证请求的方法。我列出了从最不安全到最安全(也最容易到最难实现)的方法。
在x-amz-sns-topic-arn
或x-amz-sns-subscription-arn
中检查HTTP POST请求标头中期望的值。
配置SNS以使用用户名和密码使用基本身份验证。验证两个值。
验证SNS通知签名。此方法需要下载Amazon证书并在每个请求上验证签名。
Using Amazon SNS for system-to-system messaging with an HTTP/s endpoint as a subscriber