如需在自建Web應用中免登錄查看ARMS控制臺的頁面,您可將ARMS控制臺嵌入自建Web應用,以此避免系統間的來回切換。
背景信息
將ARMS控制臺嵌入自建Web應用可以實現以下效果:
可登錄自有系統并瀏覽嵌入的ARMS控制臺的應用列表、應用詳情、調用查詢等頁面。
可隱藏ARMS控制臺的頂部菜單欄和左側導航欄。具體操作,請參見隱藏導航欄。
可通過訪問控制RAM控制操作權限,例如將完整權限改為只讀權限。具體操作,請參見借助RAM用戶實現分權。
訪問流程
外部系統訪問ARMS的流程如下圖所示。
步驟一:創建RAM用戶并添加權限
使用阿里云賬號創建RAM用戶并為其添加調用STS服務扮演RAM角色的權限。
步驟二:創建RAM角色并添加權限
創建RAM角色并為其添加訪問控制臺的權限。RAM用戶將會扮演該RAM角色訪問控制臺。
創建RAM角色,具體操作,請參見創建可信實體為阿里云賬號的RAM角色。
為RAM角色添加完整權限或只讀權限,具體操作,請參見為RAM角色授權。
AliyunARMSFullAccess:ARMS的完整權限
AliyunARMSReadOnlyAccess:ARMS的只讀權限
重要為了實現對ARMS所有功能的只讀權限,除了添加AliyunARMSReadOnlyAccess權限策略外,還需要再為特定的資源組配置ReadTraceApp權限,否則ARMS將無法展示資源組鑒權下的應用列表。
步驟三:獲取臨時AccessKey和Token
登錄自建Web,然后在Web服務端調用STS的AssumeRole接口獲取臨時AccessKey和Token,即臨時身份。AssumeRole接口詳情,請參見AssumeRole。
您可以選擇以下方式調用AssumeRole接口:
通過OpenAPI開發者門戶調用。
通過Java SDK調用。
本文以通過Java SDK調用為例。
您在使用Java SDK時需要注意填寫以下參數:
String accessKey = "<accessKeyId>"; //RAM用戶的AccessKeyId。
String accessSecret = "<accessKeySecret>"; //RAM用戶的AccessKeySecret。
String roleArn = "<roleArn>"; //RAM角色的標識ARN。
RAM用戶的AccessKeyId和AccessKeySecret為創建RAM用戶時獲取。獲取操作,請參見創建AccessKey。
獲取RAM角色的roleArn的操作步驟如下:
使用RAM管理員登錄RAM控制臺。
在左側導航欄,選擇 。
在角色頁面,單擊目標RAM角色名稱。
在RAM角色詳情頁面的基本信息區域,復制ARN信息。
步驟四:獲取登錄Token
通過STS的AssumeRole接口獲取臨時AccessKey和Token后,調用登錄服務接口獲取登錄Token。
STS返回的安全Token中可能包含特殊字符,請對特殊字符進行URL編碼后再輸入。
請求樣例:
https://signin.aliyun.com/federation?Action=GetSigninToken
&AccessKeyId=<STS返回的臨時AccessKeyId>
&AccessKeySecret=<STS返回的臨時AccessKeySecret>
&SecurityToken=<STS返回的安全Token>
如果為虛商接入,則還需添加&TicketType=mini
參數。
步驟五:生成免登錄鏈接
利用獲取到的登錄Token與待嵌入的ARMS控制臺頁面鏈接生成免登錄訪問鏈接,以最終實現在自建Web中免登錄訪問ARMS控制臺頁面的目的。
由于Token有效期為3小時,建議在自建Web應用中將鏈接設置為每次請求時生成新登錄Token。
在ARMS控制臺獲取待嵌入的控制臺頁面的URL鏈接。
例如上海地域應用頁面的URL鏈接為:
https://arms.console.aliyun.com/apm?iframeMode=true&pid=${pid}®ionId=${regionId}#/${pid}/home
說明如果為虛商接入,則需要將域名改成虛商域名。
https://arms4service.console.aliyun.com/apm?iframeMode=true&pid=${pid}®ionId=${regionId}#/${pid}/home
URL鏈接必須為ARMS應用監控或前端監控的控制臺地址,鏈接中的
{pid}
和{regionId}
請從實際URL中獲取。在URL鏈接的search部分添加
iframeMode=true
,可以隱藏ARMS控制臺原有的頂部菜單欄和左側導航欄。在URL鏈接的search部分添加
hideTopbar=true
可以隱藏頂部菜單欄,添加hideSidebar=true
可以隱藏左側導航欄,同時使用等同于添加iframeMode=true
。如果URL中存在帶有#
的Hash值,需要將該參數放在#
字符之前,例如https://trace4service.console.aliyun.com/?hideTopbar=true&hideSidebar=true/#/tracing/${regionId}/list?from=now-3h&to=now&refresh=off
。
利用登錄Token與ARMS控制臺頁面鏈接生成免登錄訪問鏈接。
https://signin.aliyun.com/federation?Action=Login &LoginUrl=<登錄失效跳轉的地址,一般配置為自建Web配置302跳轉的URL> &SigninToken=<獲取到的登錄Token> &Destination=<ARMS控制臺頁面鏈接>
在瀏覽器訪問該免登錄訪問鏈接。
常見問題
使用iframe嵌入時提示"frame-ancestors 'self' *.aliyun.com",導致無法使用
由于安全限制,使用iframe嵌入需要使用虛商接入時,請參考步驟四添加&TicketType=mini
參數,參考步驟五使用虛商域名(https://arms4service.console.aliyun.com
)生成鏈接。