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被禁止:

四、总结

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

相关推荐
一只积极向上的小咸鱼21 小时前
Windows中通过wsl运行Ubuntu
linux·运维·ubuntu
爱吃汽的小橘21 小时前
异步串口通信和逻辑分析仪
运维·服务器·网络·单片机·嵌入式硬件·fpga开发
星光一影1 天前
【OA办公系统】神点企业OA办公助手/全开源
mysql·nginx·开源·php·源代码管理
静谧之心1 天前
在 K8s 上可靠运行 PD 分离推理:RBG 的设计与实现
云原生·容器·golang·kubernetes·开源·pd分离
Maple_land1 天前
Linux进程第八讲——进程状态全景解析(二):从阻塞到消亡的完整生命周期
linux·运维·服务器·c++·centos
爱吃生蚝的于勒1 天前
【Linux】零基础学会Linux之权限
linux·运维·服务器·数据结构·git·算法·github
Cyan_RA91 天前
Linux 远程Ubuntu服务器本地部署大模型 EmoLLM 中常见的问题及解决方案 万字详解
linux·运维·服务器·ubuntu·大模型·远程部署·emollm
lypzcgf1 天前
Coze源码分析-资源库-编辑数据库-后端源码-安全与错误处理
数据库·安全·系统架构·coze·coze源码分析·ai应用平台·agent平台
Ytadpole1 天前
客户端加密 和 服务端加密:端到端安全的真正含义
安全·加解密
minji...1 天前
Linux相关工具vim/gcc/g++/gdb/cgdb的使用详解
linux·运维·服务器·c++·git·自动化·vim