现在公司都会用很多开源工具,例如常见的rocketmq-console,elastic-job,es-head等工具。 当线上需要变更的时候,直接使用这些工具很方便,但是它们也存在一些问题,没有权限控制,存在很大的安全风险和稳定性风险! 为了解决这个问题,我们通过GO语言开发一款审计网关,可以保证访问可认证,可授权,可审计。
- 自身提供用户创建,登录,认证功能
- 提供对接第三方服务认证的功能
- 提供多维度的访问控制,可以指定某个域名下的某个url允许某个用户访问
- 也可以通过HTTT的请求方式来控制访问的读写权限
- 具备白名单和黑名单的方式控制权限
- 白名单
- 黑名单
- 在kubernets中通过指定yaml文件获取
- 将配置存入缓存,然后定时获取
- 自定义一个域名+uri的方式,将请求转发到开源服务上。
- 如果开源服务存在多个节点,需要提供负载均衡。
- 将访问请求记录下来,其中必须包含访问时间,姓名,host,uri,http_method等字段
- 可以将日志上传到第三方的日志服务提供商中,例如阿里云日志服务
- 可以将日志上传到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 完成登录认证配置化对接,日志服务配置对接
- 作为一个go语言练手项目
- 回馈开源社区