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

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

知乎:灵亦

导言

许多用户在运用日志服务 SLS 时,选用 STS 这种免登的方法,能够快速将日志服务的页面集成到三方的体系中。STS 形式是十分经典且老练的免登计划,它的长处十分多,例如:能够充分利用阿里云账号 RAM 体系、能够通用地集成支撑 STS 形式的一切云产品、支撑客户自定义拜访权限等。

存在问题

跟着时刻的推移,STS 形式在多个方面现已不满足日志服务客户的需求:

功用问题

STS 形式加载速度慢,下面是 STS 形式的流程图,客户一般需求三次次序的交互才能够拜访到页面,假如考虑客户外部体系的交互和 iframe 内的重定向,这个流程会更长。

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

以 SLS 控制台查询页面为例,用户登录阿里云官网后直接翻开 SLS 页面,一般只需求 2s 即可检查到日志。假如运用 STS 形式,这个时刻会拉长到 6s 以上:

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

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

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

  4. 客户服务端获取登录token、拼接url回来给客户web(500ms)

  5. iframe拜访url(包括屡次重定向)(3s)

会话时刻约束

STS 形式创立的链接有会话时刻约束,默许是 1 小时,最长能延伸到 24 小时,且没有任何方法能够再次延伸会话的时刻。客户运用过程中经常发现翻开的浏览器 tab 页,隔天就无法运用了,此刻是无法经过新翻开一个页面登录再次恢复的(直接运用公有云日志服务是支撑新翻开页面登录后恢复旧的页面的登录状况)。客户自建的内网 web 网站一般都会有较长时刻的会话时刻,STS 形式会话时刻的约束和客户自建 web 有严峻的冲突。

会话时刻约束这个问题几乎一切运用内嵌的客户都会来问这个问题,归于痛点中的痛点。

过错排查困难

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

全新架构!日志服务 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 自研免登录计划发布

计划优势

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

会话时刻约束: 支撑客户调用 SLS 的接口延伸会话时刻,彻底解决会话时刻约束问题。

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

过错排查: 客户在施行该计划的过程中,只需调用 SLS 接口(没有第三方体系介入),SLS 会回来详细的过错原因,方便用户排查。

跨域问题: 该计划没有根据浏览器 cookie 完成,不存在跨域问题。

接入文档

有需求接入的能够参阅此文档,该计划现已全网发布:

help.aliyun.com/zh/sls/deve…

仪表盘免密共享

在给客户支撑的过程中,咱们发现让客户自建体系集成免登计划(无论过程多简略)是十分杂乱的,只要一定规模的用户才会运用免登计划。但是在许多场景下,客户也是需求免登、共享等功用的。例如客户想要暂时共享日志查询给其他同学 debug 问题;客户想要将日志服务仪表盘放在电视大屏上播放;客户想要将仪表盘嵌入到文档中等等场景。

因此除了全新的免登计划外,咱们根据 Ticket 机制供给了仪表盘的免密共享功用,支撑在控制台创立免登链接,无需调用 SDK 完成,未来也会支撑日志查询页面的免密共享。

仪表盘免密共享的操作过程十分简略,仅需一步(仪表盘页面右上角点击共享按钮):

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

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

点这里能够体验免密共享的仪表盘:Nginx 拜访日志 demo [ 1]

计划优势

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

简化流程: 运用免密共享功用只需求在控制台点击操作,无需运用 SDK,免去了杂乱的开发流程。

安全性: 一方面运用仪表盘免密共享功用有严厉的权限校验,支撑装备 Ram Policy 控制子账号是否能够创立、检查免密共享。另一方面创立免密共享支撑多种权限控制机制,例如时刻规模约束、拜访时刻约束、阿里云账号约束、过滤条件约束等。

接入文档

有需求尝试的能够参阅此文档操作,该计划现已全网发布:

help.aliyun.com/zh/sls/user…

总结

日志服务(SLS)开发了一套全新的根据 Ticket 的登录计划,包括免登计划、仪表盘免密共享计划,旨在解决用户在共享和集成日志服务时面对的挑战。这个计划较 STS 形式在快捷性、安全性、功用等多个方面有较大的优势,欢迎大家运用。

参阅文档:

[1]Nginx 拜访日志 demo*

sls.console.aliyun.com/lognext/sha…*

[2]免登接入文档

help.aliyun.com/zh/sls/deve…

[3]仪表盘免密共享运用文档

help.aliyun.com/zh/sls/user…

[4]仪表盘免密共享运用 demo*

sls.console.aliyun.com/lognext/sha…*