业务网关之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/ ...
随机推荐
- C#中的泛型 / 泛型类 / 数组、ArrayList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- Oracle建表和SQL语句的增删改
创建表 --建表语法结构: /* CREATE TABLE 表名( 字段名1 数据类型, 字段名2 数据类型 .... ); */ --建一张老师表,里面包含老师编号,老师姓名,老师联系方式,老师入职 ...
- 简明Python教程 - 学习笔记
1,第一步 cmd下运行python文件 :python 文件名.(在文件目录下) 退出python解释器:ctrl + z 或 exit() 回车 进入帮助模式:help(),退出:q 或 回车 2 ...
- c语言怎么避免打印空数据?
目录 前景提要 解决方案 实战演练 1.数组搭建 2.在循环处,处理这个问题 3.在循环中,添加过滤条件. 4.扩展了其他类型的数组,都是可以通过这种方式进行过滤,最后,得到打印的时候,没有空值. 总 ...
- Python:Dict
0.运算符 in:检查字典中是否有某个key 'a' in {'a':1,'b':2} True 提取其中Key对应的Value: d={'1':'A','2':'B','3':'C'} d['2'] ...
- quartz框架(六)-ThreadPool
ThreadPool 本篇博文,博主将介绍Quartz框架中ThreadPool线程池相关的内容.线程池顾名思义,就是一个可以帮助我们来进行线程资源管理的对象.在web开发中,常见的就有数据库连接池, ...
- 借助DBHelper实现学生管理案例分析
一.案例功能的实现 数据: --专业 create table ProfessionInfo ( ProfessionID int primary key identity(1,1), --专业编号 ...
- 微信小程序下拉框实现
小程序中是没有直接的下拉框标签可以使用的,所以下拉框需要手动写,或者使用框架 因为考虑到下拉框展开的时候,可能需要遮挡住其余的样式,这里就用的cover-view标签.(不考虑遮挡的可以换成普通的vi ...
- CF1483F口胡
<线 性 做 法> 首先我们对所有串建立 ACAM,不难发现对于一个 \(i\),可能的 \(j\) 一定是 \(i\) 所有后缀节点在 fail 树上第一个被打标记的祖先. 但是这些祖先 ...
- Mysql等保部分加固
一.等保要求:操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换. 实施步骤: 启用口令复杂审核(5.6.6版本以上,才有此模块功能,需要重启mysql). 查看 ...