dtse tech talk | 第4期:云原生架构下的数字身份治理实践-4008云顶国际网站
dtse tech talk是华为云开发者联盟推出的技术公开课,解读云上前沿技术,畅聊开发应用实践。专家团队授课,答疑解惑,助力开发者使用华为云开放能力进行应用构建、技术创新。
《saas应用开发》系列精品内容合集:
☆ 第一期:saas云原生应用典型架构
☆ 第二期:saas应用技术架构设计
☆ 第三期:saas数据路由设计实现
在本期《身份应用云上技术架构实践》的主题分享中,华为技术大咖vs派拉软件cto,带来云原生架构下的身份管理平台,为企业、机构、开发者构建云安全数字身份入口,赋能用户全场景下的数字身份治理与链接服务。
上图为身份管理平台的架构图,平台在架构方面大规模使用华为云云原生组件,以及网络、安全、k8s平台、中间件等产品。通过实践应用云原生产品,企业仅需关注业务即可,无需关注产品本身。为加速产品迭代,平台底层由华为云提供专业的服务,如容器镜像服务、云数据库mysql、分布式缓存服务等。
在开发过程中,派拉采用基于spring cloud的微服务体系进行架构,用户的访问首先会经过华为云组件保障流量的安全和负载均衡,并经过k8s的ingress组件后进入到服务空间,在微服务网关spring cloud gateway组件对接用户的访问进行验证并分发到具体的业务微服务中。微服务网关作为唯一对外暴露的服务,也是唯一一个有session状态的服务,其他都为无状态服务。对于微服务的治理全面采用spring cloud体系进行统一管理,包括nacos作为微服务注册中心和配置中心,spring boot admin对微服务进行监控,hystrix做降级和熔断及故障隔离,xxl-job作为分布式任务管理,还有自研的parapki服务管理证书和密钥。
在云上自动化发布实践方面,采用云下开发测试,云上验收发布模式进行产品迭代的方式。产品发布过程中全面拥抱devops,并融入零信任安全理念建立devsecops开发模式。利用自研的独立pki服务,可以控制每一个用户的后台访问权限时间。而且在整个身份安全保护开发运维的过程中,以及各种工具的使用上,派拉将安全一直贯穿整个研发体系。
云下产品开发和测试环境运行idc机房中,利用零信任产品,开发和测试人员从办公网或家庭网能安全的接入开发测试环境,所有的代码提交都通过流水线自动化编译打包上传到nexus和harbor中,再通过自动化发布能力在开发和测试环境中k8s上进行版本发布,通过测试后的产品版本根据流程触发提交镜像到华为云容器管理组件。保证从代码提交后打包的制品在各个环境下的一致性,减少质量问题逃逸。另外对于k8s、微服务、中间件的管理平台的认证和操作的安全性是一个很大的挑战,我们通过nginx从网络上隔离运维和开发人员直接访问管理平台,所有人必须通过mtls才能连接管理平台,并通过parapki为运维开发人员分配合适权限的个人证书,从身份、权限、时效性来保护管理平台的操作。
由于网络边界的消失,对于传统从内网网络边界的安全访问模型,已经无法适应云原生时代,在云上运维架构和安全实践中,派拉基于零信任理念,通过先认证后链接的方式,保障端到服务、端到端、服务到服务的全链路网络安全。实现全面启用mtls,凡是网络传输的数据一律加密,通过零信任网关代理所有对外服务,基于沙箱技术保护客户端自身安全,最终完成整合全链路网络、数据、身份及权限的安全一体化方案。最终保证从开发阶段代码安全、前后端调试安全、到产品运维安全,最后到产品发布服务内部调用方面的一个全面防护。
在实践应审尽审理念方面,派拉通过日志组件审计所有通过网关的用户访问数据,并存储到es中,结合大数据和ai的能力对用户的所有访问行为进行分析,结合用户的权限策略来持续的控制用户行为风险,及时发现风险并启用二次强认证来缓解风险。另外,派拉开发了独立的日志审计服务,完全自定义化的配置客户实际需要的日志查询和报表分析的业务。
多租户能力是saas服务的基础能力,通过多租户用一套资源为多个客户提供云上服务,进而发挥资源的重复利用产生效率。派拉从域名开始进行租户隔离,租户访问进入服务开始对redis、elastic、mysql、对象存储全域的多租户隔离,最大程度保证由租户产生的数据所有权归于租户。未来,派拉与华为云将一起去推动多租户开源组件在开源社区上的贡献。
接下来,准备进行更细粒度的多租户隔离能力,根据租户体量和优先级来决定租户对于资源占用量的隔离,从网络带宽、容器计算资源到数据库存储等中间件的优先响应,都可以基于租户的优先级进行隔离和分配,不仅如此还可以对关键租户提高更加高的体验。
作为一款saas化的身份管理产品,充分使用了缓存、队列、事件机制保障强大的高可用高并发能力,管理所有租户的用户数据,是所有用户的第一入口。
在大量的用户注册请求进入服务后,通过mq队列机制进行排队消费,达到削峰的效果。用户注册完成后同样通过队列机制调用消息通知服务来降低通用业务服务的压力,保障各个微服务的业务处理能力。
用户注册完成入库后通过maxwell组件监听数据库的binlog文件,对新创建的用户推送到redis缓存和es中,从而为更加高并发要求登录业务提供保障。
在安全架构方面,利用原子化微服务架构进行设计,通过基于身份和公钥技术设计的工作负载安全保障能力,并结合微服务的边车模式,在不干扰业务代码的情况下把安全能力通过java agent技术加载到容器服务中,即使单个服务由于未知漏洞被黑客攻破后,也无法横向移动到其他并行运行的服务,最终控制威胁最小化。
用户的访问首先会经过gateway对用户的身份和权限进行校验,合法的用户会被颁发一个身份token,这个token会附加到http header中透传到后续的服务中,每个服务接受到上一个服务的请求时,必须经过两层认证访问,第一基于mtls技术对请求主体的设备或服务的身份合法性校验,第二从http请求头中的token来对访问者的身份和权限校验;并持续在调用链路中的每个服务中都会进行校验,保障了全链路的身份和数据安全。
统一单点登录,用户只需登录一次即可访问多个业务系统无需重复登录,虽然看似简单的功能其内部逻辑极其复杂,从如何安全验证用户凭据,保障用户身份不被冒用,到用户在多个系统游走过程中,如何把合法身份和权限信息在多个业务系统中安全传递。
结合产品可支持的多种认证方式和多种认证协议,以身份管理系统为idp为各个业务系统集成完成单点授权和认证,也支持身份管理系统为sp通过认证代理到其他第三方的身份认证中心idp去认证,实现多认证中互信能力。
当用户登录平台时,平台会记录用户的登录信息,根据用户行为进行持续风险识别,结合不同的认证方式在不同场景或风险级别调用不同强度的认证能力。
统一的身份治理更加的复杂,不仅涉及到各种身份同步和权限治理的技术,还需要与客户各种业务系统中的实际业务相结合,制定身份和权限治理的指导原则。最终才能做到在用户只登录一次后,完全无障碍的在各个业务系统中安全可靠的处理其业务。
相关链接地址:
应用开发文档:
参考示例代码:
问题咨询和专家服务预约(需注册华为云账号):
- 点赞
- 收藏
- 关注作者
评论(0)