【已评审】新增资源协作方法NewRemoteConsoleSessionBySystemId

背景

需求多系统场景下,需要支持用户通过创建远程控制台会话,并且同时支持连接到多个主机,因此需要基于不同主机进行会话管理

关联ISSUE

[需求]: 支持多系统场景下KVM会话管理 - openUBMC/mdb_interface - GitCode

评审点

新增资源协作方法NewRemoteConsoleSessionBySystemId,支持多系统场景创建远程控制台会话

详细描述

资源path(已有):/bmc/kepler/SessionService/Sessions

资源interface(已有):bmc.kepler.SessionService.Sessions

方法名称 变化类型 读写权限 请求签名 请求参数 响应签名 响应参数 接口说明
NewRemoteConsoleSessionBySystemId 新增方法 ConfigureSelf a{ss}syyy Token、SystemId、SessionType、SessionMode ss RemoteConsoleToken, RemoteConsoleSessionId 多系统场景创建远程控制台会话

请求参数说明

Token:签名为 s, 表示认证信息

SystemId:签名为 y,系统主机的id(在业务组件中效验)
SessionType:签名为 y,表示会话的类型

取值范围:{

        "GUI": 0,

        "Redfish": 1,

        "CLI": 2,

        "SSO": 3,

        "KVM": 4,

        "VNC": 5,

        "KVM_VMM": 6,

        "VIDEO": 7,

        "All": 255

}
SessionMode:签名为y,表示会话的模式

取值范围: {

        "Shared": 0,
        "Exclusive": 1

}

响应参数说明

RemoteConsoleToken:签名为 s, 返回认证信息
RemoteConsoleSessionId:签名为 s,返回会话的id

评审结论

结论: 不新增方法接口,上下文可以传SystemId,通过上下文传进来,在组件内部进行业务处理

遗留问题

【预审】

  1. 对于 Session 管理来说,要区分 System 么,不论是单主机还是多主机,或者跨设备通信,Session和网络连接(socket.connection)绑定的,需要和主机绑定吗?
  2. Token 直接在方法中作为参数传递,安全性是如何保障的?

问题1.对于 Session 管理来说,要区分 System 么,不论是单主机还是多主机,或者跨设备通信,Session和网络连接(socket.connection)绑定的,需要和主机绑定吗?

结论: 需要区分不同主机的KVM会话,因为每个主机在独占方式下只能连接一个KVM会话,在共享方式下可以连接两个。不同系统主机之间的会话应独立管理,避免互相影响(例如,系统主机1独占KVM会话后,不影响系统主机2使用独占方式接入)

问题2.Token 直接在方法中作为参数传递,安全性是如何保障的?

结论: 这是基于本地会话token,在会话中会通过用户名密码和权限有认证的机制