我在GCP中有云功能,当使用SNS通知在s3桶中接收到任何对象时,该功能就会触发。SNS是这样配置的,当任何对象进入s3 bucket时,它会使用http触发器(https-url(通知GCP云功能。到目前为止,云功能的终点是公共的,因此如果有人拥有url,它可以从任何地方触发,甚至可以从web浏览器触发,这是一个很大的安全问题。因此,我想将其私有化,并希望仅通过AWS SNS访问,但不知道如何实现。
您不能阻止用户调用您的HTTP端点,因为您必须将端点公开,以便Amazon SNS能够调用您的端点。您可以验证不想处理的请求并拒绝请求(返回401 Unauthorized(。
有几种方法可以验证请求。我列出了从最不安全到最安全的方法(也是最容易实现到最难实现的方法(。
请检查x-amz-sns-topic-arn
或x-amz-sns-subscription-arn
中HTTP POST请求标头中所需的值。
将SNS配置为使用用户名和密码使用基本身份验证。验证这两个值。
验证SNS通知签名。这种方法需要下载亚马逊证书并验证每个请求的签名。
使用Amazon SNS进行系统到系统的消息传递,并将HTTP/s端点作为订户