Stories

Detail Return Return

全新架構!日誌服務 SLS 自研免登錄方案發布 - Stories Detail

引言

很多用户在使用日誌服務 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-em...

儀表盤免密分享

在給客户支持的過程中,我們發現讓客户自建系統集成免登方案(無論步驟多簡單)是非常複雜的,只有一定規模的用户才會使用免登方案。但是在很多場景下,客户也是需要免登、分享等功能的。例如客户想要臨時分享日誌查詢給其他同學 debug 問題;客户想要將日誌服務儀表盤放在電視大屏上播放;客户想要將儀表盤嵌入到文檔中等等場景。

因此除了全新的免登方案外,我們基於 Ticket 機制提供了儀表盤的免密分享功能,支持在控制枱創建免登鏈接,無需調用 SDK 實現,未來也會支持日誌查詢頁面的免密分享。

儀表盤免密分享的操作步驟非常簡單,僅需一步(儀表盤頁面右上角點擊分享按鈕):

圖片

圖片

點這裏可以體驗免密分享的儀表盤:Nginx 訪問日誌 demo[1]

方案優勢

方便實用:免密分享使得用户可以直接通過一個鏈接訪問儀表盤,無需處理複雜的登錄問題、權限校驗問題,能夠滿足多個場景的客户使用需求(大屏、診斷、共享等),特別是在一些特殊的只需要一次性登錄的場景。

簡化流程:使用免密分享功能只需要在控制枱點擊操作,無需使用 SDK,免去了複雜的開發流程。

安全性:一方面使用儀表盤免密分享功能有嚴格的權限校驗,支持配置 Ram Policy 控制子賬號是否可以創建、查看免密分享。另一方面創建免密分享支持多種權限控制機制,例如時間範圍限制、訪問時間限制、阿里雲賬號限制、過濾條件限制等。

接入文檔

有需要嘗試的可以參考此文檔操作,該方案已經全網發佈:

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

總結

日誌服務(SLS)開發了一套全新的基於 Ticket 的登錄方案,包括免登方案、儀表盤免密分享方案,旨在解決用户在共享和集成日誌服務時面臨的挑戰。這個方案較 STS 模式在便捷性、安全性、性能等多個方面有較大的優勢,歡迎大家使用。

參考文檔:

[1] Nginx 訪問日誌 demo

https://sls.console.aliyun.com/lognext/share/project/nginx-de...

[2] 免登接入文檔

https://help.aliyun.com/zh/sls/developer-reference/console-em...

[3] 儀表盤免密分享使用文檔

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

[4] 儀表盤免密分享使用 demo

https://sls.console.aliyun.com/lognext/share/project/nginx-de...

作者:靈亦

原文鏈接

本文為阿里雲原創內容,未經允許不得轉載。

user avatar yfcs999 Avatar yuque Avatar tangpanqing Avatar fulade Avatar yunxiao0816 Avatar shiwangdehongshu Avatar huopodeyaokongqi_c3jobz Avatar biocrosscoder Avatar xcye Avatar huangxincheng Avatar lsjwq Avatar muzhy Avatar
Favorites 16 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.