您可以使用云助手的会话操作记录投递功能,将会话管理(Session Manager)操作记录投递到您的对象存储OSS或日志服务SLS中,进行持久化存储。本文介绍如何配置会话操作记录投递和查看已投递的会话操作记录。
背景信息
如果您需要对会话管理(Session Manager)操作记录进行查询、分析、审计以及持久保存等操作,或者您使用会话管理(Session Manager)用于安全性、合规性要求较高的场景,建议您使用会话操作记录投递功能,即将会话管理(Session Manager)操作记录投递到您指定的对象存储OSS或日志服务SLS中,进行持久化存储。
会话操作记录投递功能支持的地域,请参见支持的地域。
计费说明
会话操作记录投递功能本身不收费,但使用该功能的过程中,您需要为如下内容付费:
步骤一:配置会话操作记录投递
您需要在ECS管理控制台上完成会话操作记录投递配置,指定存储会话操作记录的SLS项目(Project)和日志库(LogStore)、OSS存储空间(Bucket),具体操作如下:
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏左上角处,选择地域。
说明不支持跨地域投递。如果您需要为不同地域投递会话操作记录,请分别在不同地域完成配置。
在ECS 云助手页面右上角,单击设置。
在弹出的云助手设置对话框中,单击会话管理设置页签,完成投递配置。
会话操作记录投递到日志服务SLS。
选中投递到日志服务SLS。
选择已创建的SLS项目和日志库。
如果还未创建SLS项目和日志库,请单击右侧的打开SLS控制台或管理日志库开始即时创建,创建完成后返回该对话框单击图标,查看最新的列表。具体操作,请参见管理Project和管理Logstore。
在SLS中查询、分析日志还需要提前开启索引,具体操作,请参见创建索引。
(可选)您还可以设置日志库的服务器端加密方式,会话操作记录投递会继承该加密方式。具体操作,请参见数据加密。
会话操作记录投递到对象存储OSS。
单击确定。
首次进行投递配置时,系统自动授权云助手获取访问SLS和OSS资源的权限,即自动为您创建一个服务关联角色,以便将会话操作记录投递到您指定的SLS日志库或OSS存储空间中。如果已经存在,则不会重复创建。您可以手动管理授权,具体操作,请参见管理云助手服务关联角色。
步骤二:使用会话管理功能连接实例
使用会话管理功能连接实例后,会话操作记录会自动投递至您指定的SLS日志库或OSS存储空间中。
通过会话管理连接实例的具体操作,请参见在控制台通过会话管理连接实例。
步骤三:查看会话操作记录
您可以前往SLS控制台或OSS控制台查看会话操作记录,具体操作如下:
在SLS查看会话操作记录
本步骤为从ECS控制台跳转至指定日志库的方法,您也可以直接登录SLS控制台,自行查找对应的日志库。
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏左上角处,选择地域。
在ECS 云助手页面右上角,单击设置。
在弹出的云助手设置对话框中,单击会话管理设置页签,然后选中投递到日志服务SLS。
单击请选择日志服务日志库区域右侧的管理日志库。
查看和分析日志的具体操作,请参见查询与分析快速指引。
会话操作记录中,具体参数说明如下。
参数
描述
LoginUser
使用会话管理功能连接实例后,进行操作的用户名称。
CallerUid
使用会话管理功能连接实例后,进行操作的账号ID。
Content
使用会话管理功能连接实例后,操作命令与对应的输出。
操作命令与输出结果间一般以“=======”分隔。
InstanceId
使用会话管理功能连接到的实例ID。
SessionId
使用会话管理功能连接实例的会话ID。
ChannelId
使用会话管理功能连接实例的通道ID。
TokenPrincipalId
使用会话管理功能,通过STS角色扮演方式连接实例后,进行操作的实际委托人ID。
在OSS查看会话操作记录
本步骤为从ECS控制台跳转至指定存储空间的方法,您也可以直接登录OSS控制台,自行查找对应的存储空间。
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏左上角处,选择地域。
在ECS 云助手页面右上角,单击设置。
在弹出的云助手设置对话框中,单击会话管理设置页签,然后选中投递到对象存储OSS。
单击请选择存储空间区域右侧的打开OSS控制台。
进入存储某个会话操作记录相关文件的目录。
跳转到OSS控制台后,系统会自动定位到您在配置会话操作记录投递时填写的文件根目录,您可以逐级进入自动生成的子目录,查看会话记录投递文件,目录格式如下:
<文件根目录>/<实例所在地域ID>/<会话操作时间(年-月)>/<会话操作时间(日)>/<实例ID>/<SessionId>/<ChannelId>.yaml
分析会话操作记录文件。
会话操作记录文件为YAML格式,您可以下载并解析YAML文件,进行分析、审计等操作。
以解析会话操作记录YAML文件的Java代码为例,示例如下:
//会话操作记录的YAML文件解析类 public static class Document { //会话基本信息 private MetaData metaData; //会话操作记录 private List<SessionData> sessionData; } //会话基本信息 public static class MetaData { //解析版本 private String version; //使用会话管理功能连接实例后,进行操作的用户名称 private String loginUser; //使用会话管理功能连接实例后,进行操作的账号ID private Long callerUid; //使用会话管理功能连接到的实例ID private String instanceId; //使用会话管理功能连接实例的会话ID private String sessionId; //使用会话管理功能连接实例的通道ID private String channelId; //使用会话管理功能,通过STS角色扮演方式连接实例后,进行操作的实际委托人ID private String stsTokenPrincipalId; } //会话操作记录 public static class SessionData { //会话操作时间 private String time; //操作命令与对应的输出,操作命令与输出结果间一般以“>>>>>>>>>>>>”分隔 private String content; } /** * 获取Session Manager会话记录 * * @param deliveryFileName Session Manager会话记录投递的yaml文件 * @return Session Manager会话记录 */ public Document getSessionData(String deliveryFileName) { Yaml yaml = new Yaml(new Constructor(Document.class)); File deliveryFile = new File(deliveryFileName); try (InputStream deliveryInputStream = new FileInputStream(deliveryFile)) { Document document = (Document) yaml.load(deliveryInputStream); //会话基本信息 //MetaData metaData = document.getMetaData(); //会话操作记录 //List<SessionData> sessionDataList = document.getSessionData(); return document; } catch (IOException exception) { // log.error(""); } return null; }