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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 全新架构!日志服务 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日志并进行多维度分析。
相关文章
|
4天前
|
运维 监控 数据可视化
日志服务 HarmonyOS NEXT 日志采集最佳实践
鸿蒙操作系统(HarmonyOS)上的日志服务(SLS)SDK 提供了针对 IoT、移动端到服务端的全场景日志采集、处理和分析能力,旨在满足万物互联时代下应用的多元化设备接入、高效协同和安全可靠运行的需求。
116801 10
|
4天前
|
消息中间件 监控 API
在Python中如何实现微服务架构,及相关的服务间通信方案?
Python微服务架构涉及服务划分、注册发现、通信协议选择(如HTTP、gRPC、消息队列)及服务间通信实现。每个服务应自治,有独立数据库和部署流程,并需考虑容错(如分布式事务、重试、熔断)和监控日志。API网关用于请求管理和路由。实际操作需根据需求和技术栈调整,并关注服务拆分和数据一致性。
26 5
|
4天前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
4天前
|
SQL 存储 监控
SLS 查询新范式:使用 SPL 对日志进行交互式探索
像 Unix 命令一样支持多级管道级联,像加工预览一样实时处理查询结果,更便捷的交互,更丰富的算子,更灵活的探索半结构化日志,快来试试使用 SPL 语言查询日志数据吧~
46357 4
|
4天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
67 0
|
4天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
102 0
|
4天前
|
缓存 前端开发 小程序
【分布式技术专题】「架构设计方案」盘点和总结RBAC服务体系的功能设计及注意事项技术体系
【分布式技术专题】「架构设计方案」盘点和总结RBAC服务体系的功能设计及注意事项技术体系
34 0
|
2天前
|
关系型数据库 MySQL 数据库
mysql数据库bin-log日志管理
mysql数据库bin-log日志管理
|
2天前
|
存储 关系型数据库 数据库
关系型数据库文件方式存储LOG FILE(日志文件)
【5月更文挑战第11天】关系型数据库文件方式存储LOG FILE(日志文件)
8 1
|
3天前
|
运维 监控 安全
Java一分钟之-Log4j与日志记录的重要性
【5月更文挑战第16天】Log4j是Java常用的日志框架,用于灵活地记录程序状态和调试问题。通过设置日志级别和过滤器,可避免日志输出混乱。为防止日志文件过大,可配置滚动策略。关注日志安全性,如Log4j 2.x的CVE-2021-44228漏洞,及时更新至安全版本。合理使用日志能提升故障排查和系统监控效率。
17 0
http://www.vxiaotou.com