API网关工具Kong或nginx ingress实现对客户端IP的白名单限制,提高对外服务的访问安全

一、背景

部署在生产环境的应用,供内部服务调用外,还需要暴露外网访问。

比如consul ui管理界面,我们需要给到开发和测试人员,观察服务的注册情况。

再比如前端页面和后端接口在一起的服务,后端接口供内部服务接口调用,调用安全通过颁发访问令牌来保证;而前端页面则是后台管理界面,需要暴露到外网,以便网站管理人员可以登录并操作设置。

再比如公司研发环境想要访问生产的接口,使得测试最接近真实数据及网络,当然我们不能任意暴露给所有外网访问。

既然提供了外网访问,如何适当地提高应用安全就摆在我们面前。

本文将介绍两种api网关工具来实现对客户端Ip的限制(设置白名单机制):

  • kong
  • nginx ingress

二、kong配置

Kong有自带的插件ip-restriction可以设置IP白名单

  • IP白名单

  • IP黑名单

添加至黑名单的ip客户端,则禁止访问外部域名。

可以说,kong网关因为有上面的操作界面,直观又方便,还是非常简单的。

下面介绍如何在nginx ingress中实现同样功能。

三、nginx ingress

通过注解(annotations)实现IP访问控制,您可以使用nginx.ingress.kubernetes.io/whitelist-source-range和nginx.ingress.kubernetes.io/block-source-range这两个注解类型。这些注解可以添加到Ingress资源中,以限制或允许特定的IP地址或IP地址范围访问您的服务。

完整的yaml文本示例:

bash 复制代码
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/whitelist-source-range: '122.xx.xx.66,39.xx.xx.220'
  name: xxx
  namespace: xx-service
spec:
  ingressClassName: ack-nginx
  rules:
    - host: {你的外网域名}
      http:
        paths:
          - backend:
              service:
                name: {你的service服务名称}
                port:
                  number: {你的service服务端口号}
            path: /
            pathType: ImplementationSpecific

如果你的外网IP不在上面的白名单列表,则会报错403被禁止:

四、总结

这样,我们就能在公司研发环境下,访问部署在生产的服务,既方便了联调测试,又一定程度地提高了网络安全。

相关推荐
我是小超人-雨石花7 小时前
Jenkins&Robot Framework持续集成
运维·jenkins·ci
wanhengidc8 小时前
云手机的软件核心是什么
运维·服务器·web安全·游戏·智能手机
芬加达9 小时前
jvm八股
运维·服务器·jvm
小兔薯了9 小时前
11. Linux firewall 防火墙管理
linux·运维·服务器
ink@re10 小时前
Docker环境搭建与容器管理实战:从部署到编排的完整指南
运维·docker·容器
q***74811 小时前
数据库高安全—openGauss安全整体架构&安全认证
数据库·安全·架构
RPA机器人就选八爪鱼11 小时前
RPA财务机器人:驱动财务数字化转型的核心引擎
大数据·运维·人工智能·机器人·rpa
二川bro11 小时前
第54节:安全防护 - 3D场景中的XSS防御
安全·3d·xss
zhuyasen12 小时前
Go 实战:在 Gin 基础上上构建一个生产级的动态反向代理
nginx·go·gin
-大头.12 小时前
Redis内存碎片深度解析:从动态整理到核心运维实践
运维·数据库·redis