全新架构!日志服务 SLS 自研免登录方案发布

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 全新架构!日志服务 SLS 自研免登录方案发布

作者:灵亦

引言


很多用户在使用日志服务 SLS 时,采用 STS 这种免登的方式,能够快速将日志服务的页面集成到三方的系统中。STS 模式是非常经典且成熟的免登方案,它的优点非常多,例如:能够充分利用阿里云账号 RAM 体系、能够通用地集成支持 STS 模式的所有云产品、支持客户自定义访问权限等。


存在问题


随着时间的推移,STS 模式在多个方面已经不满足日志服务客户的需求:


性能问题

STS 模式加载速度慢,下面是 STS 模式的流程图,客户通常需要三次顺序的交互才能够访问到页面,如果考虑客户外部系统的交互和 iframe 内的重定向,这个流程会更长。



以 SLS 控制台查询页面为例,用户登录阿里云官网后直接打开 SLS 页面,通常只需要 2s 即可查看到日志。如果使用 STS 模式,这个时间会拉长到 6s 以上:


1. 客户打开自建 web(1 ~ 2s)

2. 客户自建 web 发起获取免登链接请求(向客户的服务端)(1s)

3. 客户服务端访问令牌服务(500 ms)

4. 客户服务端获取登录 token、拼接 url 返回给客户 web(500ms)5. iframe 访问 url(包含多次重定向)(3s)


会话时间限制

STS 模式创建的链接有会话时间限制,默认是 1 小时,最长能延长到 24 小时,且没有任何办法能够再次延长会话的时间。客户使用过程中经常发现打开的浏览器 tab 页,隔天就无法使用了,此时是无法通过新打开一个页面登录再次恢复的(直接使用公有云日志服务是支持新打开页面登录后恢复旧的页面的登录状态)。客户自建的内网 web 网站一般都会有较长时间的会话时间,STS 模式会话时间的限制和客户自建 web 有严重的冲突。


会话时间限制这个问题几乎所有使用内嵌的客户都会来问这个问题,属于痛点中的痛点。


错误排查困难

上面介绍过 STS 模式登录的流程非常长,登录过程涉及到阿里云多个模块(STS、RAM、登录、SLS),所以在登录的流程中一旦出现问题很难排查。而且由于登录逻辑中包含多次重定向的操作,SLS 控制台本身很难自己排查客户登录不成功的根因。客户如果登录失败,一般会看到下面几种让人非常懵的结果:



或者:



跨域问题

STS 模式一般是在客户自建的 web 中使用 iframe 内嵌 SLS 的页面,这种跨域的方式严重依赖浏览器的 cookie。而随着各大浏览器厂商安全策略的增强,跨域 cookie 已经受到非常大的限制。例如:


a. Safari 很早就已经限制了第三方的 cookie,这个导致如果客户不主动关闭这个限制,Safari 默认是无法打开 STS 模式内嵌的页面。

b. Chrome 从 2024 年 1 月也开始逐步限制第三方的 cookie,到 2024 年第三季度某日后 Chrome 也将默认打开第三方的 cookie 的限制。


全新免登方案


全新架构

为了解决上面的所有问题,SLS 自研了一套全新的基于 Ticket 的免登方案,支持客户能够使用 Ticket 方案将 SLS 控制台免登分享给他人或免登嵌入到第三方系统,同时可控制嵌入至第三方系统的日志服务权限。


该 Ticket 方案登录过程只需要两步,第一是调用 SDK 获取免登链接,第二是使用链接直接访问 SLS,在此过程中没有任何浏览器重定向操作。



方案优势

速度快:只需两步即可访问 SLS 控制台,没有任何浏览器重定向操作,平均访问时间在 2s 以内。

会话时间限制:支持客户调用 SLS 的接口延长会话时间,彻底解决会话时间限制问题。

安全性:支持使用 RAM 账户调用创建免登链接接口,支持使用 RAM Policy 控制该免登链接的权限。

错误排查:客户在实施该方案的过程中,只需调用 SLS  接口(没有第三方系统介入),SLS 会返回详细的错误原因,方便用户排查。

跨域问题:该方案没有基于浏览器 cookie 实现,不存在跨域问题。


接入文档

有需要接入的可以参考此文档,该方案已经全网发布:

https://help.aliyun.com/zh/sls/developer-reference/console-embedding-and-sharing-new-version-2


仪表盘免密分享


在给客户支持的过程中,我们发现让客户自建系统集成免登方案(无论步骤多简单)是非常复杂的,只有一定规模的用户才会使用免登方案。但是在很多场景下,客户也是需要免登、分享等功能的。例如客户想要临时分享日志查询给其他同学 debug 问题;客户想要将日志服务仪表盘放在电视大屏上播放;客户想要将仪表盘嵌入到文档中等等场景。


因此除了全新的免登方案外,我们基于 Ticket 机制提供了仪表盘的免密分享功能,支持在控制台创建免登链接,无需调用 SDK 实现,未来也会支持日志查询页面的免密分享。


仪表盘免密分享的操作步骤非常简单,仅需一步(仪表盘页面右上角点击分享按钮):




点这里可以体验免密分享的仪表盘:Nginx 访问日志 demo[1]


方案优势

方便实用:免密分享使得用户可以直接通过一个链接访问仪表盘,无需处理复杂的登录问题、权限校验问题,能够满足多个场景的客户使用需求(大屏、诊断、共享等),特别是在一些特殊的只需要一次性登录的场景。

简化流程:使用免密分享功能只需要在控制台点击操作,无需使用 SDK,免去了复杂的开发流程。

安全性:一方面使用仪表盘免密分享功能有严格的权限校验,支持配置 Ram Policy 控制子账号是否可以创建、查看免密分享。另一方面创建免密分享支持多种权限控制机制,例如时间范围限制、访问时间限制、阿里云账号限制、过滤条件限制等。


接入文档

有需要尝试的可以参考此文档操作,该方案已经全网发布:

https://help.aliyun.com/zh/sls/user-guide/dashboard-secret-free-sharing


总结


日志服务(SLS)开发了一套全新的基于 Ticket 的登录方案,包括免登方案、仪表盘免密分享方案,旨在解决用户在共享和集成日志服务时面临的挑战。这个方案较 STS 模式在便捷性、安全性、性能等多个方面有较大的优势,欢迎大家使用。


参考文档:

[1] Nginx 访问日志 demo

https://sls.console.aliyun.com/lognext/share/project/nginx-demo-log/dashboard/nginx-access-log_nginx_dashboard_cn?sls_ticket=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoic2hhcmUtZGFzaGJvYXJkIiwiZXhwIjo0MTAyNDE1OTk5LCJub25jZSI6MTcwOTE4OTM0NDM3MywiaWF0IjoxNzA5MTg5MzQ0LCJ0aWNrZXRJZCI6ImUwZjdmYWVjLWU5YjEtNDhhYy05NGQwLTg4NGZlM2IxZDQzZCJ9.P1cN65LRTXabTMiQlQsLD4wwFNMBMfpWTdv5fEUuoWY&hideTopbar=true

[2] 免登接入文档

https://help.aliyun.com/zh/sls/developer-reference/console-embedding-and-sharing-new-version-2

[3] 仪表盘免密分享使用文档

https://help.aliyun.com/zh/sls/user-guide/dashboard-secret-free-sharing

[4] 仪表盘免密分享使用 demo

https://sls.console.aliyun.com/lognext/share/project/nginx-demo-log/dashboard/nginx-access-log_nginx_dashboard_cn?hideTopbar=true&sls_ticket=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoic2hhcmUtZGFzaGJvYXJkIiwiZXhwIjo0MTAyNDE1OTk5LCJub25jZSI6MTcwOTE4OTM0NDM3MywiaWF0IjoxNzA5MTg5MzQ0LCJ0aWNrZXRJZCI6ImUwZjdmYWVjLWU5YjEtNDhhYy05NGQwLTg4NGZlM2IxZDQzZCJ9.P1cN65LRTXabTMiQlQsLD4wwFNMBMfpWTdv5fEUuoWY

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 监控 数据库
Django 后端架构开发:高效日志规范与实践
Django 后端架构开发:高效日志规范与实践
65 1
|
5天前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
48 3
Mysql高可用架构方案
|
7天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
11天前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
19天前
|
存储 缓存 NoSQL
分布式架构下 Session 共享的方案
【10月更文挑战第15天】在实际应用中,需要根据具体的业务需求、系统架构和性能要求等因素,选择合适的 Session 共享方案。同时,还需要不断地进行优化和调整,以确保系统的稳定性和可靠性。
|
2月前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
2月前
|
存储 弹性计算 SDN
企业级 ECS 集群的构建需要综合考虑多个因素,通过不断的比较和对比不同的方案,选择最适合企业自身需求和发展的架构。
【9月更文挑战第5天】在数字化商业环境中,构建企业级ECS(弹性计算服务)集群对提升业务稳定性、扩展性和性能至关重要。本文将比较传统物理服务器与ECS架构,分析云服务商选择(如AWS和阿里云)、实例配置(CPU/内存)、网络架构(SDN vs 传统)及存储方案(本地存储 vs 云存储),帮助企业根据自身需求选出最优方案,实现高效稳定的ECS集群部署。
69 18
|
2月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
142 9
|
3月前
|
弹性计算 关系型数据库 Serverless
云端架构下的高效多媒体文件处理方案测评体验
传统的服务器部署模式在处理高并发、大数据量的文件转换任务时,常面临资源瓶颈和成本上升的问题。使用函数计算,利用事件驱动和异步任务的方式,将文件处理任务与核心应用解耦,同时依靠函数计算自动弹性扩展和按使用付费的优势可以快速对多媒体文件进行处理。
|
3月前
|
存储 缓存 安全
MPP架构数据仓库使用问题之DADI相比其他方案,在资源使用上有什么优势
MPP架构数据仓库使用问题之DADI相比其他方案,在资源使用上有什么优势

热门文章

最新文章

下一篇
无影云桌面