Skip to content

具备登录,权限控制,访问审计功能的网关服。主要用于各种没有权限的开源软件的代理服务,保证在线上操作开源软件的合规性。

Notifications You must be signed in to change notification settings

ly-wjj/audit-gateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目说明

背景说明

现在公司都会用很多开源工具,例如常见的rocketmq-console,elastic-job,es-head等工具。 当线上需要变更的时候,直接使用这些工具很方便,但是它们也存在一些问题,没有权限控制,存在很大的安全风险和稳定性风险! 为了解决这个问题,我们通过GO语言开发一款审计网关,可以保证访问可认证,可授权,可审计。

基础功能模块

用户登录认证

  1. 自身提供用户创建,登录,认证功能
  2. 提供对接第三方服务认证的功能

用户权限分配

  1. 提供多维度的访问控制,可以指定某个域名下的某个url允许某个用户访问
  2. 也可以通过HTTT的请求方式来控制访问的读写权限
  3. 具备白名单和黑名单的方式控制权限

访问控制

  1. 白名单
  2. 黑名单

配置管理

配置自动获取

  1. 在kubernets中通过指定yaml文件获取
  2. 将配置存入缓存,然后定时获取

配置解析模块

路由解析模块

过滤器

转发前过滤

响应前过滤

响应后过滤

代理功能

访问代理

  1. 自定义一个域名+uri的方式,将请求转发到开源服务上。
  2. 如果开源服务存在多个节点,需要提供负载均衡。

稳定性相关功能

服务限流

降级/熔断

灰度发布

日志记录

  1. 将访问请求记录下来,其中必须包含访问时间,姓名,host,uri,http_method等字段
  2. 可以将日志上传到第三方的日志服务提供商中,例如阿里云日志服务
  3. 可以将日志上传到Elasticsearch中

服务容错

监控告警

设计实现

使用技术

  • GO语言版本为1.15.5
  • gorm模块作为数据库的ORM
  • 用户权限使用Casbin
  • 路由管理使用gorilla/mux
  • session的会话使用gorilla/sessions
  • cooike存储使用gorilla/securecookie
  • 缓存使用github.com/patrickmn/go-cache
  • 日志库使用logrus
  • token认证使用jwt-go

项目计划

2020-12-31 完成访问校验访问代理服务的功能 2021-01-31 完成登录认证配置化对接,日志服务配置对接

开源说明

目的

  1. 作为一个go语言练手项目
  2. 回馈开源社区

About

具备登录,权限控制,访问审计功能的网关服。主要用于各种没有权限的开源软件的代理服务,保证在线上操作开源软件的合规性。

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages