将ARMS页面嵌入自建Web应用

如需在自建Web应用中免登录查看ARMS控制台的页面,您可将ARMS控制台嵌入自建Web应用,以此避免系统间的来回切换。

背景信息

ARMS控制台嵌入自建Web应用可以实现以下效果:

  • 可登录自有系统并浏览嵌入的ARMS控制台的应用列表、应用详情、调用查询等页面。

  • 可隐藏ARMS控制台的顶部菜单栏和左侧导航栏。具体操作,请参见隐藏导航栏

  • 可通过访问控制RAM控制操作权限,例如将完整权限改为只读权限。具体操作,请参见借助RAM用户实现分权

访问流程

外部系统访问ARMS的流程如下图所示。

image

步骤一:创建RAM用户并添加权限

使用阿里云账号创建RAM用户并为其添加调用STS服务扮演RAM角色的权限。

  1. 创建RAM用户,具体操作,请参见创建RAM用户

  2. RAM用户添加AliyunSTSAssumeRoleAccess权限,具体操作,请参见RAM用户授权

    Add Permission For User

步骤二:创建RAM角色并添加权限

创建RAM角色并为其添加访问控制台的权限。RAM用户将会扮演该RAM角色访问控制台。

  1. 创建RAM角色,具体操作,请参见创建可信实体为阿里云账号的RAM角色

  2. RAM角色添加完整权限或只读权限,具体操作,请参见RAM角色授权

    • AliyunARMSFullAccess:ARMS的完整权限

    • AliyunARMSReadOnlyAccess:ARMS的只读权限

      重要

      为了实现对ARMS所有功能的只读权限,除了添加AliyunARMSReadOnlyAccess权限策略外,还需要再为特定的资源组配置ReadTraceApp权限,否则ARMS将无法展示资源组鉴权下的应用列表。

步骤三:获取临时AccessKeyToken

登录自建Web,然后在Web服务端调用STSAssumeRole接口获取临时AccessKeyToken,即临时身份。AssumeRole接口详情,请参见AssumeRole

您可以选择以下方式调用AssumeRole接口:

本文以通过Java SDK调用为例。

您在使用Java SDK时需要注意填写以下参数:

String accessKey = "<accessKeyId>"; //RAM用户的AccessKeyId。
String accessSecret = "<accessKeySecret>"; //RAM用户的AccessKeySecret。
String roleArn = "<roleArn>"; //RAM角色的标识ARN。

RAM用户的AccessKeyIdAccessKeySecret为创建RAM用户时获取。获取操作,请参见创建AccessKey

获取RAM角色的roleArn的操作步骤如下:

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 角色

  3. 角色页面,单击目标RAM角色名称。

  4. RAM角色详情页面的基本信息区域,复制ARN信息。

步骤四:获取登录Token

通过STSAssumeRole接口获取临时AccessKeyToken后,调用登录服务接口获取登录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。

  1. ARMS控制台获取待嵌入的控制台页面的URL链接。

    例如上海地域应用页面的URL链接为:

    https://arms.console.aliyun.com/apm?iframeMode=true&pid=${pid}&regionId=${regionId}#/${pid}/home
    说明
    • 如果为虚商接入,则需要将域名改成虚商域名。

      https://arms4service.console.aliyun.com/apm?iframeMode=true&pid=${pid}&regionId=${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

  2. 利用登录TokenARMS控制台页面链接生成免登录访问链接。

    https://signin.aliyun.com/federation?Action=Login
        &LoginUrl=<登录失效跳转的地址,一般配置为自建Web配置302跳转的URL>
        &SigninToken=<获取到的登录Token>
        &Destination=<ARMS控制台页面链接>
  3. 在浏览器访问该免登录访问链接。

常见问题

使用iframe嵌入时提示"frame-ancestors 'self' *.aliyun.com",导致无法使用

由于安全限制,使用iframe嵌入需要使用虚商接入时,请参考步骤四添加&TicketType=mini参数,参考步骤五使用虚商域名(https://arms4service.console.aliyun.com)生成链接。