spring - 微服务:内部服务的安全和架构问题
问题描述
我正在构建一个 Spring Boot 微服务,我有一些问题
我有账户微服务、支付微服务、产品微服务……在这些微服务中,有些请求有时需要使用邮件API、短信发送API、或者推送通知API。
我现在所做的是创建一个用于发送邮件的微服务、一个用于发送短信的微服务和一个用于推送通知的微服务。
我似乎无法解决的是如何使这些微服务仅在内部使用。例如,禁止用户直接调用邮件微服务。
在在stackoverflow上创建这个问题之前,我自己搞砸了,为什么我不会将发送短信的代码放在库中,发送电子邮件和推送通知并将它们添加到微服务中也是如此......当微服务需要时使用其中一个 api 我添加所需的库 .. 例如,我创建了一个推送通知库,并将其添加到需要执行推送通知的每个微服务中。
将这些邮件、短信和通知服务集成到我的微服务项目中并通过禁止用户直接使用来尊重安全性的最佳方法是什么
我不知道该怎么办,有人可以告诉我吗?
解决方案
您不必担心其他微服务在应用程序代码中调用
mailing microservice
或sms microservice
。如果您考虑这个问题,这将适用于任何内部微服务。可以在基础架构级别处理此问题让我给你举个例子,你有一个数据库在某个地方运行,你的微服务是否做任何事情来确保它是唯一一个与该数据库对话的人。答案是不。在基础架构级别,无论您使用什么云基础架构,它们都允许定义安全规则/网络策略,从而让您定义谁可以与谁交谈。IE。传入流量规则和传出流量规则
如果它们是面向公众的微服务,那就是另一个问题了。这些是内部服务
基于基础设施的一些示例
我还想补充一点,可能与您的问题没有直接关系。有问题的服务似乎非常适合作为异步服务。然后没有服务直接与他们交谈,发送服务将通知放入
queue
orkafka topic
并且这些服务从主题中消费。所以现在它确保只有相关服务将其发送到网络级别的队列或主题
推荐阅读
- c# - 通过添加图例推开实时图表
- python - 在 Pandas 中将“年”和“年中的一周”列转换为“日期”
- python - 如何使用预先训练的权重为 keras 中的特定通道设置权重?
- javascript - JOI如何允许空格和标点符号
- json - Ionic4 应用程序 API 响应未显示在查看器上 (HTML)
- android - ApplozicConversation.getMessageListForContact() 限制结果大小
- python - math.log 的错误答案(python 3)
- javascript - 问题分配可选值es6合并
- c++ - QtCreator GUI 应用程序在哪里包含并在代码中打开小部件源代码
- javascript - React:检查 prop 是否是执行它的函数的目的是什么?