业务网关之AK中心建设
啥是AK
AK(Access Key)是一种身份证明,它解决了“资源的使用者是谁”这个问题,比如在生活中,身份证可以证明你是你,而在云计算或程序中,AK能证明你是这个应用的拥有者。
AK和密码的有啥区别呢,密码面对的主体是人,人可以使用密码登录系统证明身份;AK的主体是程序或服务,程序或服务可以使用AK作为身份证明调用开放接口。
AK分类
AK分类主要和密码学的加密方式相关,常见的有两类:
- 对称AK(包括AKId、AKSecret)。AKId、AKSecret是成对出现的,由AK中心提供给用户,采用基于共享密钥的认证方式。每次调用相关接口时,用户会采用保存的AKSecret针对某些参数做签名,开放网关接收到请求后会用AKId查找存储的AKSecret做签名,验签通过后在通过认证。
- 非对称AK(AKId、AKPrivateKey和AKPublicKey),其中AKPrivateKey和AKPublicKey是一对公私钥,用户需将AKId、AKPublicKey上传给AK中心,在调用接口时用私钥做签名,开放网关收到请求后调用AK中心的服务,用公钥验签,通过后则认证通过。
综上来看,无论采用何种加密方式,AK中心始终存储一个密钥对,而且用户侧需严格保存密钥对,不要明文硬编码,需借助工具对敏感信息加密,尽可能避免敏感数据泄露。
AK中心
AK中心不是孤立存在的,在整个开放网关体系下AK中心是流量必经之地,因此它的重要性不言而喻。
网关AK中心建设的意义在于满足更多租户、服务的定制化需求,如服务权限管控、调用方管理等,更是为了统一当前 开放体系中“散落在各个系统的各自定制的开放认证机制”,此后所有的服务开放认证体系可收敛于AK中心。
AK中心架构图

为了统一集团前端的开放认证体系,AK中心提供了适配层解决存量应用的client_token认证体系,同时兼容BUC认证,支持用户在服务端及浏览器端的调用认证,需要注意的是浏览器端仅支持BUC认证(AK需要签名,不能在前端做签名)
权限体系
权限体系由“开放服务、接口管控、用户体系、调用方体系和黑名单体系”构成。调用方可设置管理员与开发者,同时调用方在申请时需指定调用的开放服务,审批通过后调用方使用该AK密钥对指定调用对应的开放服务;开放服务管理员可设置开放接口的调用权限,目前分为“内部接口与开放接口”,仅开放接口可被调用方调用;黑名单可由具体开放服务管理员设置某个黑名单的调用方,禁止其调用。
稳定性建设
AK中心作为网关之后的第一道基础设施,它的稳定性与性能必须得到保障,其中稳定性要求AK中心运行时要足够稳定可靠,不因依赖的系统故障而崩溃。当前计划从几个方面做稳定性建设:
- 依赖解耦与降级
- 错误兜底数据
- 网关层流量拦截
关于依赖解耦,主要是DB。当前AK中心使用DB存储AK密钥对、用户、调用方以及服务方等基础信息与权限信息,其中与运行时相关的是“AK密钥对与权限数据”,且这部分数据的特点是不易改变(设计的初衷是权限数据仅支持增加)。因此对这部分热点数据做二级缓存策略(加速层),在内存建立LRU缓存,同时建立分布式缓存(当前未实现),并制定数据刷新策略(DB回源后刷新二级缓存),若DB故障,可采用二级缓存的数据,不影响存量业务。
若依赖的分布式缓存Tair发生故障时,自动降级为 “L1 LRU内存缓存+DB”的策略,若此时DB也发生故障则降级为 L1内存缓存,支撑热点数据与请求。
AK中心设计之初是有预估请求量的,若某些开放接口被攻击或大量调用导致AK中心的计算资源(加密与签名)被耗尽造成不可用,需在网关接入层进行流量过滤,针对预设的QPS进行限流,防止AK中心被搞挂。
性能优化
所有调用开放接口的请求都会经过AK中心,因此AK处理性能直接影响开放接口的性能。优化的策略根据不同的认证方式也有所不同:
- AK认证与client_token认证优化策略:L1 RLU内存缓存 + 三方缓存,其中内存缓存需要重点建设,由于AK及token等热点数据命中率非常高,因此内存缓存使用率非常高。由于Node多进程模型的特点,若要在每个业务进程中单独做缓存,命中率会非常差,因此需要基于Agent模型建设Work进程间共享的全局内存缓存。
- BUC认证优化策略:通过持久化到Cookie进行缓存,当SSO_TOKEN未超时直接从Cookie反序列化,避免调用到BUC中心
业务网关之AK中心建设的更多相关文章
- GBT 33200-2016 社会治安综合治理 综治中心建设与管理规范 GBT 31000-2015 社会治安综合治理基础数据规范
阚总发的两个国标的标准文件, 看看里面对于数据和问题的分类等. 我们出统计分析,可以按照标准出各个大类小类的各种指标数据. 结合这几天给潍坊弄的12345的报告, 整理出一个可以结合吴中现有平台数据, ...
- 一次业务网关用ASP.NET Core 2.1重构的小结
目录 前言 统一鉴权 服务限流 路由转发 参数重组 链路跟踪 熔断降级 服务计次 业务指标监控 日志记录 迭代更新 总结 前言 对于API网关,业界貌似对它进行下划分,有下面几个分类/场景. 面向We ...
- 支付宝打造公共账号业务网关, RSA密钥对生成
作者: 玉龙 版权全部,同意转载. 请注明出处(创建金融_玉龙 http://www.weibo.com/u/1872245125) 原文地址: http://blog.csdn.net/ ...
- hdu 携程全球数据中心建设 (球面距离 + 最小生成树)
题目 #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib&g ...
- 注册中心与API网关不是这样用的!
之前在做顾问和咨询项目的时候,见到了一种非常经典的关于API网关和注册中心的错误用法.这个案例在我的星球里已经分享过,没想到最近又碰到了两个类似的使用姿势.也许这样的问题还存在不少团队的应用中,所以拿 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- 用Python建设企业认证和权限控制平台
目前大家对Python的了解更多来源是数据分析.AI.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...
- 天马行空-Ops平台建设概述
1 概述 什么是Ops平台,Ops平台的目标是什么,建设的考虑点有哪些?本章节以实际生活中医院的例子来进行各形象的阐述. 医院包含各种诊断治疗设备,病历库,医生.一个孕妇需要到医院 ...
- 微服务与网关技术(SIA-GateWay)
一.背景 软件架构,总是在不断的演进中... 把时间退回到二十年之前,当时企业级领域研发主要推崇的还是C/S模式,PB.Delphi这样的开发软件是企业应用开发的主流.随着时间的推移,基于浏览器的B/ ...
随机推荐
- jq实现加减功能
效果展示: HTML: <!-- 3.咨询分钟 --> <div class="buymain_body_son" ...
- QT:Qt Creator中创建的各种项目说明
Qt Widgets Application:支持桌面平台GUI的应用程序.GUI的设计完全基于C++,采用Qt提供的一套C++类库: Qt Console Application:控制台应用程序,无 ...
- 用WebDev.WebServer40.EXE调试VS代码
1.找到WebDev.WebServer40的录井,一般位于C:/Program Files (x86)/Common Files/Microsoft Shared/DevServer/10.0/We ...
- 在win10操作系统中pycharm启动时无法打开的解决方法
''' 当打开pycharm时报错 Error launching Pycharm Failed to load JVM DLL C:\Program Files\Jetbrains\Pycharm ...
- (四)目标检测算法之Fast R-CNN
系列博客链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html (二)目标检测算法之R-CNN https://www.cnbl ...
- sprintf的用法总结
大概知道sprintf的用法,今天在CSDN上看到一篇关于sprintf比较好的总结,现在抄下来,emmmmmmm....... srpintf()函数的功能非常强大:效率比一些字符串操作函数要高:而 ...
- 『德不孤』Pytest框架 — 10、setUp()和tearDown()函数
目录 1.setUp()和tearDown()函数介绍 2.setUp()和tearDown()函数作用 3.setUp()和tearDown()函数说明 4.示例 (1)方法级 (2)类级 (3)函 ...
- 【算法】经典的ML算法(后续结合工作实践完善心得)
18大数据挖掘的经典算法以及代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等方面,后面都是相应算法的博文链接,希望能够帮助大家学.目前追加了其他的一些经典的DM算法,在others的 ...
- tp5怎么防sql注入 xss跨站脚本攻击
在 application/config.php 中有个配置选项 框架默认没有设置任何过滤规则,你可以是配置文件中设置全局的过滤规则 则会调用这些函数 自动过滤 // 默认全局过滤方法 用逗号分隔多个 ...
- Spark ML源码分析之三 分类器
前面跟大家扯了这么多废话,终于到具体的机器学习模型了.大部分机器学习的教程,总要从监督学习开始讲起,而监督学习的众多算法当中,又以分类算法最为基础,原因在于分类问题非常的单纯直接,几乎 ...