AWS API Gateway的安全性

时间:2019-03-31 00:51:03

标签: aws-api-gateway

我具有以下URL来调用API网关后面的服务:https:// .execute-api..amazonaws.com / prod / ...,到目前为止,我尚未启用API密钥和授权

问题:它足够安全吗?某人说这是不安全的,因为任何人都可以使用该URL来调用我在URL之后的服务,而不仅仅是我自己。一种解决方案是,我可以启用API密钥,并在调用url时将API密钥作为请求标头附加。另一个解决方案是使用AWS Cognito等。

为什么它不安全? 已经不是一种凭证吗?只有我知道这个,并且我将带有的api URL仅提供给我信任的人,没有其他人知道URL的是什么。如果某人确实想监视,那么附加API密钥并没有帮助,因为如果该人可以窃取,那么他也可以窃取该API密钥。

我了解API网关也可以使用AWS cognito进行身份验证。即,当一个人访问该URL时,将要求他输入凭证(用户/密码),但是同样,该凭证也可以被盗,与和API Key可以被盗的方式相同。

IMO(使用)和API密钥和凭据是同一回事。因此,这就是为什么我认为我只需要将API Gateway设置为public而不启用API Gateway和AWS cogonito。

我正确吗?谁能解释为什么使用API​​ Gateway或AWS Cognito比不使用它们更安全?

与上述问题有关的另一个问题: 由于该网址使用https,因此在对请求标头(如API密钥)和诸如用户名/密码之类的内容进行加密时,不会对网址本身(包括)进行加密吗?

1 个答案:

答案 0 :(得分:2)

  

Security through obscurity is like burying your money under a tree. The only thing that makes it safe is no one knows it's there.

最重要的安全因素始终是风险。我们永远无法创建一个完全安全的系统,我们只能尝试在攻击该系统的成本与破坏该系统的成本之间取得平衡。所以首先,我想问:如果有人知道您的API的URL,会有什么风险?

您是对的-这是最小的安全形式。仅此而已。

问自己一系列问题:

  • 攻击者可以从响应中学到什么?-如果您只需要知道存在一些东西即可开始获得响应,则可以开始对其进行测试以查看其行为。您可以通过限制所有响应来阻止此操作,但这可能会对合法客户产生负面影响,所以您问...

  • 我可以限制攻击者从响应中学到什么吗?-如果攻击者需要更多信息来构造合法请求,则可以进行限制和约束所有不合法的请求。

问题从那里继续升级。一切都取决于投资回报率-您所保护的东西的价值是什么,攻击的表面积是多少,被破坏的风险是什么?最重要的是客户和用户的信任。 作为专家,我们必须保护我们所托付的信息的完整性。

在HTTPS(TLS / SSL)下有一个单独的问题,来自第三方侦听器的受保护对象是什么,不受保护的是什么?简短的答案是,如果您请求foo.com/bar,则任何想知道的人都可以看到主机名(foo.com),而路径(/bar)则不可见。 Cookie,标头以及请求中包含的其他任何内容都是安全的。