摘要:由华为技术大咖VS派拉软件CTO为大家详解云原生架构下的身份管理平台,构建云安全数字身份入口。

本文分享自华为云社区《DTSE Tech Talk | 第4期:云原生架构下的数字身份治理实践》,作者: 华为云社区精选。

DTSE Tech Talk是华为云开发者联盟推出的技术公开课,解读云上前沿技术,畅聊开发应用实践。专家团队授课,答疑解惑,助力开发者使用华为云开放能力进行应用构建、技术创新。

在本期《身份应用云上技术架构实践》的主题分享中,华为技术大咖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的能力对用户的所有访问行为进行分析,结合用户的权限策略来持续的控制用户行为风险,及时发现风险并启用二次强认证来缓解风险。另外,派拉开发了独立的日志审计服务,完全自定义化的配置客户实际需要的日志查询和报表分析的业务。

上云业务实践的4个关键点

多租户能力是SaaS服务的基础能力,通过多租户用一套资源为多个客户提供云上服务,进而发挥资源的重复利用产生效率。派拉从域名开始进行租户隔离,租户访问进入服务开始对Redis、elastic、MySQL、对象存储全域的多租户隔离,最大程度保证由租户产生的数据所有权归于租户。未来,派拉与华为云将一起去推动多租户开源组件在开源社区上的贡献。

接下来,准备进行更细粒度的多租户隔离能力,根据租户体量和优先级来决定租户对于资源占用量的隔离,从网络带宽、容器计算资源到数据库存储等中间件的优先响应,都可以基于租户的优先级进行隔离和分配,不仅如此还可以对关键租户提高更加高的体验。

作为一款SaaS化的身份管理产品,充分使用了缓存、队列、事件机制保障强大的高可用高并发能力,管理所有租户的用户数据,是所有用户的第一入口。

在大量的用户注册请求进入服务后,通过MQ队列机制进行排队消费,达到削峰的效果。用户注册完成后同样通过队列机制调用消息通知服务来降低通用业务服务的压力,保障各个微服务的业务处理能力。

用户注册完成入库后通过Maxwell组件监听数据库的binlog文件,对新创建的用户推送到Redis缓存和ES中,从而为更加高并发要求登录业务提供保障。

在安全架构方面,利用原子化微服务架构进行设计,通过基于身份和公钥技术设计的工作负载安全保障能力,并结合微服务的边车模式,在不干扰业务代码的情况下把安全能力通过Java agent技术加载到容器服务中,即使单个服务由于未知漏洞被黑客攻破后,也无法横向移动到其他并行运行的服务,最终控制威胁最小化。

用户的访问首先会经过Gateway对用户的身份和权限进行校验,合法的用户会被颁发一个身份Token,这个Token会附加到Http Header中透传到后续的服务中,每个服务接受到上一个服务的请求时,必须经过两层认证访问,第一基于mTLS技术对请求主体的设备或服务的身份合法性校验,第二从http请求头中的Token来对访问者的身份和权限校验;并持续在调用链路中的每个服务中都会进行校验,保障了全链路的身份和数据安全。

统一单点登录,用户只需登录一次即可访问多个业务系统无需重复登录,虽然看似简单的功能其内部逻辑极其复杂,从如何安全验证用户凭据,保障用户身份不被冒用,到用户在多个系统游走过程中,如何把合法身份和权限信息在多个业务系统中安全传递。

结合产品可支持的多种认证方式和多种认证协议,以身份管理系统为IDP为各个业务系统集成完成单点授权和认证,也支持身份管理系统为SP通过认证代理到其他第三方的身份认证中心IDP去认证,实现多认证中互信能力。

当用户登录平台时,平台会记录用户的登录信息,根据用户行为进行持续风险识别,结合不同的认证方式在不同场景或风险级别调用不同强度的认证能力。

统一的身份治理更加的复杂,不仅涉及到各种身份同步和权限治理的技术,还需要与客户各种业务系统中的实际业务相结合,制定身份和权限治理的指导原则。最终才能做到在用户只登录一次后,完全无障碍的在各个业务系统中安全可靠的处理其业务。

相关链接地址:

应用开发文档:https://support.developer.huaweicloud.com/doc/zh-cn_topic_0000001321416345-0000001321416345

参考示例代码:https://gitee.com/HuaweiCloudDeveloper

问题咨询和专家服务预约(需注册华为云账号):https://support.developer.huaweicloud.com/feedback/?ticket=ST-5385866-mPu9vjwIeAGISrz1rXBAdwt7-sso

点击关注,第一时间了解华为云新鲜技术~

DTSE Tech Talk | 云原生架构下的数字身份治理实践的更多相关文章

  1. 新书《OpenShift云原生架构:原理与实践》第一章第三节:企业级PaaS平台OpenShift

    近十年来,信息技术领域在经历一场技术大变革,这场变革正将我们由传统IT架构及其所支撑的臃肿应用系统时代,迁移至云原生架构及其所支撑的敏捷应用系统时代.在这场变革中,新技术的出现.更新和淘汰之迅速,以及 ...

  2. .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记

    目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...

  3. Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  4. Sentry(v20.12.1) K8S 云原生架构探索, SENTRY FOR JAVASCRIPT 手动捕获事件基本用法

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  5. Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps 详解

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  6. Sentry(v20.12.1) K8S 云原生架构探索,1分钟上手 JavaScript 性能监控

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  7. Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之管理 Transactions

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  8. Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之采样 Transactions

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  9. Sentry(v20.12.1) K8S 云原生架构探索,JavaScript Enriching Events(丰富事件信息)

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  10. API 管理在云原生场景下的机遇与挑战

    作者 | 张添翼 来源 | 尔达Erda公众号 ​ 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...

随机推荐

  1. jenkins 原理篇——pipeline流水线 声明式语法详解

    大家好,我是蓝胖子,相信大家平时项目中或多或少都有用到jenkins,它的piepeline模式能够对项目的发布流程进行编排,优化部署效率,减少错误的发生,如何去写一个pipeline脚本呢,今天我们 ...

  2. [vue]精宏技术部试用期学习笔记 I

    精宏技术部试用期学习笔记(vue) 什么是vue? 我个人对 vue 的理解 是把 html\css\js 三件套融合起来的结构,同时用组件化的思维把一个页面装填起来 同时让页面形成树状结构 优点是方 ...

  3. 关于XML的总结——Schema和DTD(转)

    XML DTD(XML的文档类型定义)是近几年来XML技术领域所使用的最广泛的一种模式.但是,由于XML DTD并不能完全满足XML自动化处理的要求,例如不能很好实现应用程序不同模块间的相互协调,缺乏 ...

  4. windows11配置wsl2虚拟linux环境

    windows11配置wsl2虚拟linux环境 wsl( Windows Subsystem for Linux )是microsoft官方为windows开发的模拟Linux方法.避免了虚拟机vm ...

  5. (Good topic)二分法:x的平方根

      计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4输出: 2 示例 2: 输入: 8输出: 2说明: 8 的平方 ...

  6. Android 11 使用 BroadcastReceiver 监听短消息

    使用装有MIUI系统的小米手机,静态注册的广播接收器监听短消息. 在AndroidManifest.xml中声明权限 <uses-permission android:name="an ...

  7. C语言实现输入的时间,屏幕显示一秒后的时间。显示格式为HH:MM:SS。

    #include <stdio.h> int main() { int HH, MM, SS; scanf("%d:%d:%d",&HH,&MM,&am ...

  8. 【报错:For input string: ""报错: get connection error! 报错:java.lang.NullPointerException 报错:java.lang.NumberFormatException: For input string: "id"】解决方案

    原因:没有input数据进入,但是当我填写数据进入的时候 get connection error! 这个消息,是我要抛出去的异常,源代码下 我一开始觉得是代码书写的问题,找.......... 应该 ...

  9. [ARC161F] Everywhere is Sparser than Whole (Judge)

    Problem Statement We define the density of a non-empty simple undirected graph as $\displaystyle\fra ...

  10. leetcode:354 俄罗斯套娃信封问题(LIS)

    解题思路: 根据题意,不难发现组合的元素,他们的长宽都是单调递增的,因此可以转化为最长上升子序列问题. 首先按照长度从小到大对信封进行排序,长度相同,按照宽度从大到小进行排序.因为当长度相同,因为可能 ...