在微服务的设计中,如何避免外网直接通过路径端口跳过鉴权直接访问后端服务

微服务设计中,前端请求通过nginx->gateway_service->微服务的链路访问后端服务,并通过在网关过滤请求进行统一鉴权。为避免用户绕过网关直接访问微服务,可以采用以下措施:

一:核心目标

确保所有请求都必须经过网关服务,并在网关进行统一鉴权和路由控制,可以通过以下方式实现:

1.关闭微服务的外网访问端口

2.使用内网通信,限制网络访问

3.在网关层做统一鉴权与路由发现

4.微服务之间使用服务发现(如nacos)进行通信

二:具体实现方案

1.禁止微服务直接暴露给公网

docker compose中限制端口映射

yml

services:

  user-service:

    ports:

      -"8080:8080"

改为:

      -"8080"  #只在容器内部使用,不对外暴露

docker默认只将端口暴露给容器网络中的其他服务,不会暴露到宿主机。

2.使用docker网络隔离

在docker-compose.yml中定义一个私有网络,确保只用gateway能访问服务

yml

networks:

  mircoservice-network:

    driver:bridge

services:

  gateway_service:

    networks;

      -  mircoservice-network

  user_service:

    networks;

      -  mircoservice-network

不同网络的服务无法直接通信,只能通过网关或者nginx访问。

其他略过。

三:附加安全建议:

https            在nginx层启用https,防止token被窃听

跨域控制     在gateway层添加cors配置,防止恶意网站访问

日志控制    记录所有请求日志,监控异常行为

防火墙规则 在服务器上配置防火墙,只允许特定IP或网段访问微服务端口

jwt白名单  在gateway中维护白名单,仅允许指定域名或路径访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值