内嵌日志服务控制台

2021-02-07 10:59:35 浏览数 (1)

一、简介

日志服务提供 日志服务控制台 内嵌到其他系统的能力,满足不需要登录腾讯云控制台即可查询分析日志的诉求。通过内嵌日志服务控制台页面,可以给用户带来以下方便:

  • 在外部系统服务中(例如公司内部运维或运营系统)快速集成日志服务的查询分析能力。
  • 无需管理众多腾讯云子账号,方便将日志数据分享给他人进行查看。

内嵌页面示例代码:cls-iframe-demo

以下为内嵌日志服务控制台流程图:

内嵌日志服务控制台页面内嵌日志服务控制台页面

前提条件

  1. 用户根据业务情况,登录 访问管理 CAM 控制台,创建 CAM 角色且允许登录控制台(角色载体为用户主账号,例如 CompanyOpsRole),并为 CAM 角色配置相应的访问权限,例如只读策略权限 QcloudCLSReadOnlyAccess。您可以 通过控制台 或 通过 API 创建 CAM 角色:
    • 通过控制台创建 CAM 角色
      1. 登录 访问管理 CAM 控制台。
      2. 单击左侧菜单栏中的【角色】,进入角色页面。
      3. 选择【新建角色】>【腾讯云账户】,开始新建自定义角色。
      4. 选择【当前主账号】并勾选【允许当前角色服务控制台】,单击【下一步】。
      输入角色载体输入角色载体

注意: 若无 “允许角色登录控制台” 选项,请 提交工单 联系我们开通白名单。

e.为角色设置访问策略,例如只读策略权限 QcloudCLSReadOnlyAccess,单击【下一步】。

配置角色访问策略配置角色访问策略

f. 输入角色名,完成创建。

审阅审阅

通过 API 创建 CAM 角色: 创建角色请参见 创建角色 API 文档,其中,ConsoleLogin 需要填入1,允许角色登录控制台。 例如请求示例:

代码语言:javascript复制
https://cam.tencentcloudapi.com/?Action=CreateRole&RoleName=CompanyOpsRole&ConsoleLogin=1&PolicyDocument={"version":"2.0","statement":[{"action":["cls:get*","cls:list*","cls:GetHistogram","cls:GetFastAnalysis","cls:GetChart","cls:ListChart","cls:ListDashboard","cls:GetDashboard","cls:searchLog","cls:downloadLog","cls:pullLogs"],"effect":"allow","principal":{"qcs":["qcs::cam::uin/100001234567:root"]}}]}

2. 获取当前用户的访问密钥。如何获取持久密钥,可参见主账号访问密钥管理文档。

操作步骤

  1. 用户登录访问腾讯云外部的 Web 服务。
  2. Web 服务端根据登录用户身份分配对应的角色名,例如 CompanyOpsRole(需预先创建好,此为前提条件1)。
  3. Web 服务端系统根据角色名访问腾讯云 STS 服务,使用前提条件2中获取到的访问密钥调用 AssumeRole 接口,申请角色 CompanyOpsRole 的临时密钥。
  4. 用户调用 AssumeRole 接口成功后,获取到角色 CompanyOpsRole 的临时密钥。
  5. 用户通过该角色的临时密钥生成登录签名信息。详细可参考以下步骤: - 参数排序 对要求签名的参数按照字母表或数字表递增顺序的排序,先考虑第一个字母,在相同的情况下考虑第二个字母,依此类推。您可以借助编程语言中的相关排序函数来实现这一功能,例如 PHP中 的 ksort 函数。其中签名参数包含以下内容:

参数名称

必选

类型

描述

action

String

操作动作,固定为roleLogin

timestamp

Int

当前时间戳

nonce

Int

随机整数,取值1000-100000000

secretId

String

STS 返回的临时 AK

- 拼接参数 将上一步排序好的请求参数,按“参数名称=参数值”拼接,例如

代码语言:javascript复制
action=roleLogin&nonce=67439&secretId=AKI***PLE&timestamp=1484793352

- 拼接签名串 按请求方法 请求主机 请求路径 ? 请求字符串的规则拼接签名串。 参数必选描述请求主机和路径是固定为cloud.tencent.com/login/roleAccessCallback请求方法是支持 GET 或 POST 签名串示例

代码语言:javascript复制
GETcloud.tencent.com/login/roleAccessCallback?action=roleLogin&nonce=67439&secretId=AKI***PLE&timestamp=1484793352

- 生成签名串 使用 HMAC-SHA1 算法对字符串签名,目前支持 HMAC-SHA1 和 HMAC-SHA256。具体代码如下,以 PHP 语言为例:

代码语言:javascript复制
$secretKey = 'Gu5***1qA'; 
$srcStr    = 'GETcloud.tencent.com/login/roleAccessCallback?action=roleLogin&nonce=67439&secretId=&timestamp=1484793352'; 
$signStr   = base64_encode(hash_hmac('sha1', $srcStr, $secretKey, true)); 
echo $signStr;

PHP 版本示例代码

代码语言:javascript复制
<?php
 $secretId  = "AKI***";            //STS 返回的临时 AK 
$secretKey = "Gu5***PLE";         //STS 返回的临时 
Secret $token     = "ADE***fds";         //STS 返回的安全 TOKEN 
$param["nonce"]     = 11886;      //rand(); 
$param["timestamp"] = 1465185768; //time(); 
$param["secretId"]  = $secretId; 
$param["action"]    = "roleLogin"; 
ksort($param); 
$signStr = "GETcloud.tencent.com/login/roleAccessCallback?"; 
foreach ( $param as $key => $value ) { $signStr = $signStr . $key . "=" . $value . "&"; 
} 
$signStr   = substr($signStr, 0, -1); 
$signature = base64_encode(hash_hmac("sha1", $signStr, $secretKey, true)); 
echo $signature.PHP_EOL;

6. 拼接完整登录信息以及目的页面地址进行登录。

a. 获取日志服务控制台检索分析页面。

代码语言:javascript复制
https://console.cloud.tencent.com/cls/search?region=<region>&logset_id=<logset_id>&topic_id=<topic_id>

b. 拼接完整登录信息以及目的页地址进行登录,**参数值需要 urlencode 编码**。

代码语言:javascript复制
https://cloud.tencent.com/login/roleAccessCallback 
?algorithm=<签名时加密算法,目前只支持 sha1 和 sha256 ,不填默认 sha1 
&secretId=<签名时 secretId> 
&token=<临时密钥 token> 
&nonce=<签名时 nonce> 
&timestamp=<签名时 timestamp> 
&signature=<签名串> 
&s_url=<登录后目的 URL>

7. 使用生成的最终链接,访问腾讯云日志服务控制台页面。例如检索分析页面的内嵌访问链接如下:

代码语言:javascript复制
https://cloud.tencent.com/login/roleAccessCallback?nonce=52055817&s_url=https://console.cloud.tencent.com/cls/search?region=ap-guangzhou&start_time=2020-05-26%252014%253A01%253A18&end_time=2020-05-26%252014%253A16%253A18&secretId=AKID-vHJ7WPHcy_RVIOm-QTIktXOf9S9z_k_JackOp3dyQPJwmDrNLQJuiNuw9******&signature=eXeWaDn6iJlcPp1sqqGd6m9/Qk****&timestamp=1592455018&token=5e4vuBHL7fBQPi1V9fvSINw4Vu7PSr9Ic3de78b86109c171eb4e3ea27c137c1fIWKU8JC-LO01L87sIYlfTSaHHXeHcqim7Jg9hBuN2nbdfgeBUPXhmpyAk4G6e9bHFZ-7yNRig7Y33CQHxh6jOesP4VfhRzQprWGRtC5No1ty******-aoj_WJhA55oyvqaqxw2jtTdh8nx9OjJr3tlbIa9oJe7aZYoPbdpFqrF6ZjlCPPap2yQB_SkUsWwDl_9BrK2Km3U2IocdvQ7QxrW0ts1aiBi7xtTSJRcfkBYPYEV_YoJrtkhYW3E4L47imA1bfVAjM9F5uKWzVzsDGDT0aCUU9mqdb4vjJrY8tm-wJKKEe8eiyY9EbkH3VWnFV2YocYNDJqFyjKOWR******

日志服务控制台检索分析页面 URL 参数说明:

参数名称

必选

类型

描述

region

String

地域简称,例如:ap-shanghai 表示上海地域,其他可用地域简称,请参见 可用地域

logset_id

String

日志集 ID

topic_id

String

日志主题 ID

start_time

String

要检索日志的起始时间,格式样例:2019-11-13 10:00:00

end_time

String

要检索日志的结束时间,格式样例:2019-11-13 20:00:00

query

String

关键字检索语法,若关键字中有 URL 保留字符,需要进行 UrlEncode 编码

hideWidget

Boolean

是否隐藏智能客服图标:true 表示隐藏,false 表示不隐藏

hideTopNav

Boolean

是否隐藏腾讯云控制台顶部导航栏:true 表示隐藏,false 表示不隐藏

hideLeftNav

Boolean

是否隐藏腾讯云控制台左侧导航栏:true 表示隐藏,false 表示不隐藏

hideHeader

Boolean

是否隐藏日志服务顶部导航栏(标题及地域选择):true 表示隐藏,false 表示不隐藏

hideTopTips

Boolean

是否隐藏日志服务顶部提示语框:true 表示隐藏,false 表示不隐藏

hideRegion

Boolean

是否隐藏日志服务顶部的地域选择按钮:true 表示隐藏,false 表示不隐藏

hideLogsetSelect

Boolean

是否隐藏日志服务日志集选择按钮:true 表示隐藏,false 表示不隐藏

hideTopicSelect

Boolean

是否隐藏日志服务日志主题选择按钮:true 表示隐藏,false 表示不隐藏

有任何问题欢迎大家加入企业微信群咨询:【云原生日志服务CLS】技术社区群(或者联系:v_ltvli加入)

云原生日志服务CLS技术社区群二维码云原生日志服务CLS技术社区群二维码

0 人点赞