下午你们,
只是想找人来仔细检查我的工作。以下是保护微服务的有效方法吗?
将我们的单片应用程序和单一的合作伙伴API分解为面向特定业务功能的微服务。它们很可能是在docker容器中运行的小型expressjs应用程序,在弹性beanstalk上,谁知道。他们会住在某个地方:)
我正在考虑将Kong作为我的API网关或使用AWS API Gateway来封装我的微服务的详细信息。而且,它感觉很好。
Kong的JWT plugin将验证JWT的签名,然后将标题中的customer_id
传递给微服务。我还要提一下,我们的第三方开发人员也将参与集成乐趣。这是我发生的事情的基本草图:
Kong有一个很好的访问控制插件。我们的应用程序和移动应用程序将以“上帝”权限运行,但我绝对可以将开发人员锁定到特定的路由和方法。
撤销第三方访问权限将很容易,撤销最终用户访问权限将不会那么简单,除非我愿意通过生成新秘密立即使所有JWT无效。也许我可以将令牌时间限制在10分钟左右,并让我们的应用程序检查它们是否已过期,获取新令牌,然后继续处理原始请求。这样我就可以在数据库或其他东西中“标记”它们,而不是让JWT生成。
SSL无处不在,JWT存储在Web浏览器中仅限SSL的cookie中,并且任何声明中都没有存储敏感信息。
谢谢你们。
答案 0 :(得分:16)
我最近致力于解决这个问题和前提,在AWS架构中将大型整体重构为多个服务。
这个问题没有正确,错误或明确的如何 但是,我们确实实施了与上述问题中描述的解决方案非常相似的解决方案 我希望这个答案可以为那些第一次看到这个的人提供一个良好的方向感。
这就是我们如何去做...
<强>优点强>
<强>缺点强>
<强>优点强>
<强>缺点强>
我们决定和Kong一起去
托管解决方案的主要问题是无法将流量路由到我们的私有网络,我们还在其中托管私有DNS区域
此外,Kong的可扩展性使我们能够使用与我们的解决方案相关的逻辑来创建custom plugins
我们使用ALB在不同AZ中的多个Kong实例之间进行循环,以实现冗余和高可用性。
API配置保存在Postgres RDS上,该RDS也是内部和多个AZ。
<强>流量强>
其他强>
<强>架构:强>