IDM短信发送接口设计说明
Posted 数通畅联
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDM短信发送接口设计说明相关的知识,希望对你有一定的参考价值。
对于大多数企业而言,信息化建设的主要目的是通过信息化驱动业务,实现业务升级与优化,主要有三种体现形式:建设业务系统,实现业务流程标准化、便捷化;整合业务系统和数据,形成数据资产;业务数据呈现,直观展现业务的变化和发展。无论哪种方式,数据都是信息化建设的重中之重,所以企业在进行信息化建设时,尤其要考虑安全性问题,并且要从硬件、软件、网络等多个层面进行防护。
对于信息化平台而言,除了要考虑平台本身的访问安全、使用安全外,对于数据传输的安全也是非常重要的,特别是集成类项目或者跨网络数据传输的情况。最近在交付一个集成底座(IDM+MDM+ESB)的项目时,对IDM平台进行了安全优化,由于IDM平台主要是统一认证,所以主要对短信重置密码的功能进行了安全优化处理。
1总体说明
集成底座项目主要包括三款产品,分别是IDM统一身份管理平台、MDM基础数据管理平台和ESB应用集成平台,主要作用是帮助企业建立基础的信息化架构,打通业务系统的壁垒,通过IDM完成5A管控(统一用户、统一认证、统一授权、统一审计、统一应用管控),通过MDM完成基础数据治理,通过ESB实现API治理以及应用系统的业务集成等。
1.1.集成架构
集成底座的集成方案,基于IDM、MDM、ESB实现业务系统的对接,完成系统集成、统一认证的同时,也支撑企业的基础数据治理和业务集成的需求的实现。集成底座包括了三个产品,通过产品的组合也包括了三个子方案:MDM + ESB主数据治理方案、IDM + ESB统一5A管控方案、ESB + MDM统一集成平台方案,整体架构图如下图所示:
1.MDM + ESB主数据治理方案:以MDM产品为核心进行主数据治理,由HR、ERP、财务等源头系统提供基础数据,经由ESB同步至MDM中进行管理、清洗、校验等,并通过MDM平台推送至下游系统,从而完成整个基础数据治理工作,治理范围可以包括企业内部所有的基础数据,如组织、岗位、人员、客户、供应商、物料、合同会计科目、银行账号等;
2.IDM + ESB统一5A管控方案:以IDM产品为核心完成5A管控,完成各个系统的统一用户、统一认证、统一权限等,由于通过MDM完成了基础数据治理,可以直接由MDM提供组织、人员数据到IDM形成账号数据,再下发至各个系统中,统一下游系统完成基于IDM平台的统一认证接入和权限接入等;
3.ESB + MDM统一集成平台方案:以ESB平台为主的业务集成方案,将业务系统的相关服务和API注册到ESB平台进行统一管理,根据实际业务需求,将源头系统的业务单据通过ESB的应用集成进行映射转换处理,再推送到下游系统中,实现跨系统业务对接,同时结合MDM的主数据治理,保证了业务数据关联的有效性和准确性。
1.2部署架构
集成底座方案目前主要采用云平台的部署方案,实现产品的容器化部署,通过k8s进行容器管理,基于UMC云管理平台实现基于Web端的快速部署配置,包括服务器的注册、k8s的部署、产品的部署、升级、服务器监控、扩容等都可以通过UMC完成。
云平台集群部署至少需要5台服务器保证高可用,同时根据需要也可以添加更多的节点保证性能,如图是采用了8台服务器的部署方案,其中3个master节点,5个worker节点,IDM、ESB、MDM采用容器化部署在5个worker节点上,worker1、worker2用于部署开发、测试环境,两台服务器各一个节点,worker3、worker4、worker5用于部署3个节点的生产环境。
1.3需求说明
由于IDM作用统一身份认证平台,在集成业务系统后主要起到统一认证入口的作用,用户、密码信息都保存在IDM平台中,所以在IDM平台添加了很多安全限制,如密码安全策略、登录策略等来强化登录管理,同时为了便于最终用户的使用,添加了短信重置密码的功能,但由于短信重置需要和短信平台交互,同时涉及到了用户的手机号等敏感信息,所以对于发送短信的功能要添加必要的安全限制,从而保证平台使用的安全性。
2需求分析
基于IDM短信重置密码功能的安全需求,综合考虑产品和部署架构体系,结合改功能的使用方式,决定从网络和平台两个层面进行优化,网络层面主要考虑对IP进行控制,保证访问IP的安全性,平台主要是从IDM、ESB平台功能和短信平台方面进行优化。
2.1功能说明
针对IDM平台的短信重置密码功能,首先该功能不是由IDM平台独立安城的,需要IDM集合ESB平台共同完成,由于短信平台一般都是外部的专用平台,并且不同平台的API也各不相同,所以IDM的短信发送是通过调用ESB的接口,而ESB通过开发对应的短信发送接口从而实现整个功能。
2.2网络优化
根据集成底座的部署架构,短信重置密码需要基于浏览器操作,而浏览器访问是通过nginx代理的方式进入的,所以首先考虑在Nginx上添加高频IP限流,防止同一IP反复发送请求,从而导致平台的使用收到威胁。
2.3 平台优化
平台优化主要包括两个方面,一是从IDM和ESB平台进行优化,由于密码重置功能是通过IDM平台进行操作的,首先在IDM平台即客户端添加短信发送的间隔控制,保证不能连续的点击发送短信功能;二是在ESB流程控制,调用ESB流程发送短信时,进行发送的控制,即服务端控制,实现双重控制保证安全。二是在短信平台控制,即控制短信平台发送次数,针对同一账号进行发送限制,但由于该限制需要外部短信平台实现,同时可能会关联影响到客户业务操作的短信提醒,所以不做过多说明。
3优化策略
根据具体需求以及针对需要的分析结果,考虑从服务器网络、产品和短信平台三个层面进行优化,而服务器网络和短信平台均属于外部环境,需要客户方或第三方完成,所以不做过大说明,主要针对IDM和ESB平台的相关功能进行说明。
3.1IP地址限制
该限制主要限制进行密码重置操作的IP地址,如果在固定时间内,同一IP多次进行密码重置擦操作,无论是否是针对同一账号发起的密码重置,都会对该IP进行锁定,限制该IP在一段时间内无法再进行密码重置操作。考虑到实际业务的需求,相关参数采用配置的方式:
1.IP限制的时间范围,以秒为单位;
2.发送短信重置密码的次数;
3.IP锁定的时间,以分钟为单位;
4.考虑到内网发起以及无操作的情况,增加了IP白名单,加入白名单的将不再进行IP限制。
3.2时间间隔
延长客户端进行密码重置操作的时间间隔,即每次进行发送短信操作后,需要间隔一段时间后才能再次进行短信发送操作。
1.发送的时间间隔可以配置;
2.该限制为客户端限制,如果客户端进行刷新或重置,会导致限制消失,所以需要和服务端限制配合。
3.3账号验证
账号验证即客户端时间间隔限制的服务端处理,即在ESB接口的服务端,也会进行发送时间间隔的限制,每次发送后需要间隔一段时间才能再次进行发送操作。
1.发送的时间间隔可以配置,和客户端的时间间隔是同一参数;
2.服务端限制是限制相同账号,不同账号不受时间间隔限制,但如果采用两个账号交替发送也会受到限制;
3.服务端限制不限客户端类型,不论是PC端还是移动端都受到限制,并且该限制是共享的。
3.4账号限制
增加发送保护策略,和IP限制类似,但是是限制的登录账号,即同一账号一定时间内发送次数过多,则锁定一段时间后才能发送。相关的配置参数和IP地址限制的参数类似:
1.账号限制的时间范围,以秒为单位;
2.发送短信重置密码的次数;
3.账号锁定的时间,以分钟为单位;
4.账号限制没有白名单的配置,即账号一旦锁定,则无法解锁,只能等到锁定时间结束。
4接口流程
发送短信重置密码的优化包括IDM和ESB流程两部分,但IDM部分主要由客户端限制,即在操作页面增加操作限制,相对简单不做重点说明,主要针对ESB流程进行重点介绍。由于短信发送调用的是一个ESB接口,为了保证流程开发维护的方便,以及业务的区分,分成了三部分,分别是IP地址限制、账号限制和发送间隔,建立三个接口,通过ESB的接口调用实现整体连接。
1.IP地址限制:主流程入口,发送短信的第一次验证,主要校验IP的合法性,包括IP白名单和IP锁定;
2.账号限制:账号服务接口,主要校验账号的合法性,即账号是否被锁定;
3.发送间隔:短信发送服务接口,主要校验同一账号是否满足发送时间间隔的限制,以及调用短信平台API发送短信。
4.1参数配置
由于发送短信的主要流程是ESB流程,并且服务端的相关校验也是通过ESB实现的,所以检验的相关参数直接在ESB的SMC中进行配置,如图全局变量参数如下:
而在接口开发的过程中,相关IP、账号、时间的判断是通过Redis实现的,即将相关的调用信息存储在Redis中,而存储短信发送信息对Redis消耗并不大,所以直接使用ESB的Redis集群进行存储,在SMC配置ESB的Redis集群信息:
4.2IP地址限制
IP地址限制的ESB流程图如下:
1.短信发送流程校验的第一步,先校验客户端IP是否合法;
2.在ESB全局变量中加一个短信发送IP白名单配置,如果IP在白名单中,则不进行IP校验,直接进入账号校验流程,否则进行IP校验,进行下面步骤;
3.由于IDM的短信发送功能做了调整,通过平台调用时可以在请求头中记录请求客户端的IP;
4.ESB流程中通过Redis进行IP的判断,Redis存储的key为接收到的IP,Redis存储的数据格式为:<ip>ip地址</ip><startTime>开始时间</startTime><invokeNum>调用次数</invokeNum><isLock>是否锁定</isLock>;
5.根据header中的IP从Redis中获取存储的信息(DataRow),根据锁定状态、调用次数、(当前-开始)时间差进行判断:
1)账号已锁定 && 时间差 <= IP锁定时间(全局变量配置):直接提示“IP已被锁定,请xx分钟后重试”;
2)账号已锁定 && 时间差 > IP锁定时间(全局变量配置):DataRow状态改为解锁,次数 = 1,开始时间 = 当前时间,更新Redis数据,调用下一步(账号判断)操作;
3)未锁定 && 次数 >= IP发送次数(全局变量配置) && 时间差 <= IP时间范围(全局变量配置):DataRow状态改为锁定,更新Redis数据,提示“IP已被锁定,请xx分钟后重试”;
4)未锁定 && 次数 < IP发送次数(全局变量配置) && 时间差 <= IP时间范围(全局变量配置):次数+1,更新Redis数据,调用下一步(账号判断)操作;
5)未锁定 && 时间差 > IP时间范围(全局变量配置):次数 = 1,更新Redis数据,调用下一步(账号判断)操作。
4.3账号限制
账号限制的ESB流程图如下:
1.和IP校验方式类似,只是Redis存储的信息不同;
2.ESB流程中通过Redis进行手机号的判断,Redis存储的key为接收到的手机号,Redis存储的数据格式为:<tel>手机号</tel><startTime>开始时间</startTime><lastOperTime>最后发送时间</lastOperTime><invokeNum>调用次数</invokeNum><isLock>是否锁定</isLock>;
3.根据手机号从Redis中获取存储的信息(DataRow),根据锁定状态、调用次数、(当前-开始)时间差进行判断:
1)账号已锁定 && 时间差 <= 账号锁定时间(全局变量配置):直接提示“账号已被锁定,请xx分钟后重试”;
2)账号已锁定 && 时间差 > 账号锁定时间(全局变量配置):DataRow状态改为解锁,次数 = 1,开始时间 = 当前时间,更新Redis数据,调用下一步(账号判断)操作;
3)账号未锁定 && 次数 >= 账号发送次数(全局变量配置) && 时间差 <= 账号时间范围(全局变量配置):DataRow状态改为锁定,更新Redis数据,提示“账号已被锁定,请xx分钟后重试”;
4)账号未锁定 && 次数 < 账号发送次数(全局变量配置) && 时间差 <= 账号时间范围(全局变量配置):次数+1,更新Redis数据,调用下一步(短信发送判断)操作;
5)账号未锁定 && 时间差 > 账号时间范围(全局变量配置):DataRow次数 = 1,开始时间 = 当前时间,更新Redis数据,调用下一步(短信发送判断)操作。
4.4发送间隔
短信发送间隔的流程和ESB调用短信平台的接口是在同一个流程中,也是整个短信发送流程的最后一个环节,流程图如下:
1.ESB流程中通过Redis进行手机号的判断,Redis复用账号校验流程的Redis;
2.根据手机号从Redis中获取存储的信息(DataRow),根据(当前-最后发送时间)时间差进行判断:
1)时间差 <= 发送时间间隔(全局变量配置),直接提示“短信发送时间小于xxx秒,请xxx秒后重试”;
2)时间差 > 发送时间间隔(全局变量配置),发送短信,提示“发送成功”。
5测试说明
短信流程的测试也是以满足实际需求为前提,根据开发的相关流程和业务场景进行测试,主要包括针对IP地址限制、账号限制、发送间隔三个层面,主要测试场景如下:
1.相同IP,输入不同账号进行发送测试,测试在1分钟内连续发送后IP是否提示锁定;
2.IP锁定后将IP加入白名单,测试该IP是否可以继续发送;
3.取消IP白名单,再次发送测试是否会继续锁定;
4.同一账号,在不同IP下进行短信发送,测试每次发送后是否需要等待2min才能再次发送;
5.同一账号,在不同IP下进行短信发送,10分钟内连续发送4次,测试账号是否会被锁定;
6.30min之后再次尝试发送,确认账号是否已经解锁。
5.1IP地址测试
1.相同IP,不同账号:
2.IP白名单:
3.取消白名单:
5.测试通过。
5.2账号限制测试
1.相同账号,不同IP(PC端和手机APP):
2.锁定结束:
3.测试通过。
5.3发送间隔测试
主要测试客户端和服务端进行短信发送时,是否存储2min的时间限制。
1.客户端发送测试:
2.服务端限制:
3.测试通过,并且能保证PC端和移动端的间隔时间共享。
6总结说明
IDM统一身份管理平台作为5A安全管控平台,本身就提供了大量的安全管控措施,包括密码安全策略、登录安全策略等,本次也是在原有的密码重置功能上进行了一次安全层面的优化。
6.1产品功能
IDM产品本身从安全和使用的角度考虑,已经预置了短信的功能,但是由于短信平台一般都是采用第三方,所以导致不同项目中短信平台API都不相同,所以难以统一放到IDM中,所以一直都是通过ESB流程进行开发,本次优化也是采用这种方式。但是由于本次优化增加了IP、账号等一系列限制,导致ESB的流程相对复杂,后续可以考虑在IDM平台通过添加安全策略的方式进行配置,ESB流程只负责进行短信发送,这样可以使产品功能更加完善,同时项目实施的难度也会大幅度降低。
6.2集成方案
集成底座方案主打5A安全管控体系的建立,构建统一的认证中心、安全中心,为企业信息化建立基础的信息化框架,但由于集成底座本身是产品组合的形式,所以通过对实施侧重点的调整可以满足基础数据治理、统一应用集成等需求,也可以根据实际情况采用分期建设、迭代实施的方式来建设企业的信息化基础架构。无论采用哪种方式,集成底座方案的最终作用都是为企业建立一套信息化基础体系,使其可以在此基础上进行复用、升级、扩展,整合企业信息化的发展。
6.3后续规划
目前集成底座包含的IDM、MDM、ESB产品都是比较成熟和完备的产品,虽然各个产品依然在不断的升级、优化,但是在实际项目中,目前的产品功能已基本可以满足绝大多数业务场景的需要,并且能为企业的信息化建设带来比较全面、精准的技术支撑,为企业的信息化规划、建设、发展起到积极的促进作用。
后续产品不断完善的过程中,也会将一些标准化、可复用的业务场景、流程纳入到产品方案中,保证后续实施过程中可以快速进行复用和交付,加快实施交付效率的同时保证产品更加人性化、便捷化、敏捷化,提升产品方案在企业业务过程中的促进作用。
以上是关于IDM短信发送接口设计说明的主要内容,如果未能解决你的问题,请参考以下文章