我们正在使用 AWS App Sync 构建应用程序,我们仍处于非常早期的阶段。
我们的应用程序通过用户登录有一个受限区域,该区域通过 aws cognito 用户池进行管理。这很好。
我们在不需要任何身份验证的公共区域遇到问题。
我们如何保护这些公共端点?
我们对硬编码 api 密钥(我们知道可以旋转)有一些疑问,这是一个好的做法(文档页面说它不适合生产)?
有什么方法可以授权原产地吗?(又名,来自 www.foobar.baz 的任何请求都可以)
我们正在使用 AWS App Sync 构建应用程序,我们仍处于非常早期的阶段。
我们的应用程序通过用户登录有一个受限区域,该区域通过 aws cognito 用户池进行管理。这很好。
我们在不需要任何身份验证的公共区域遇到问题。
我们如何保护这些公共端点?
我们对硬编码 api 密钥(我们知道可以旋转)有一些疑问,这是一个好的做法(文档页面说它不适合生产)?
有什么方法可以授权原产地吗?(又名,来自 www.foobar.baz 的任何请求都可以)
我建议使用 Amazon Cognito 联合身份来控制对 api 的经过身份验证和未经身份验证的访问。为了将 Amazon Cognito 联合身份与 AWS AppSync 一起使用,您需要使用基于 AWS IAM 的授权。
对于经过身份验证的访问,您可以使用 Amazon Cognito 用户池并联合到 Amazon Cognito 联合身份,并且由于联合身份还可以允许未经身份验证的用户,因此您可以控制一些可以通过 IAM 策略公开的 api。
有关更多信息,请在此处阅读我们安全指南的 AWS IAM 部分
在您设置用户池配置的 AppSync 应用程序的设置菜单下,有一个设置默认操作的选项。您可以将其更改为 DENY,所有未经身份验证的请求都将被拒绝。另一种方法是允许一切,并手动将@aws_auth 指令添加到您关心限制的每个查询/变异/订阅字段。