执行Get auth token命令时,使用管理员与操作员获取到的token值是一致的

请问一下,在执行Get auth token命令时,使用管理员与操作员获取到的token值是一致的,这是为什么呢

我现在的疑问就是我role ID 为4的时候在协议中应该为管理员权限,并且,两个权限不一致时为什么得到的token是一致的呢?

那如何获取到具有管理员权限的token呢,有没有其他的方法呢,还有就是我使用这两个操作员权限拿到的token去访问redfish接口,会提示我无权限

  1. 具体是什么样的使用场景需要获取管理员权限的token?
  2. 访问的什么redfish接口? 如何访问,带内还是带外访问?

在带内BT通道内,访问任意redfish接口,当前在操作员权限下的token无法执行添加用户的redfish接口,提示权限不足

带外发送/redfish/v1/Managers/1/SecurityService接口GET请求,可查询到IPMIChannelAccess的最高权限,默认为`Operator`。

带外发送/redfish/v1/Managers/1/SecurityService接口PATCH请求,可修改IPMIChannelAccess的最高权限,请求体示例:

{
    "IPMIChannelAccess": {
        "IPMBAccessRole": "Administrator",
        "SMSAccessRole": "Operator"
    }
}


有做相关的定制化

BMCSet_IPMIChannelAccessEnabled=on
Custom_SMSAccessRole=4
Custom_IPMBAccessRole=4

我说的获取到token无权限的前提下是查询busctl --user introspect bmc.kepler.ipmi_core /bmc/kepler/IpmiCore时

ChannelAccess 为Administrator

  1. 执行ipmi 获取auth token后, 一键收集日志,看下 app.log 有没有iam相关的报错。

提供一下BMC的版本,以及iam、ipmi_core组件版本

或者上传一键收集日志到附件

  1. 看了下源码实现,get auth token这个ipmi命令只支持 CT_SMMCT_EDMA通道发送, 不支持bt通道发送。 你是做了什么修改调整么
    image

是的,因为需求需要,在不修改闭源仓代码的前提下,对该命令进行一个覆盖:”做了一个命令字相同,但是调用权限比闭源仓的命令权限高的命令,调用获取token的命令前将参数channel_type由3改为9,再通过调用资源树中ipmi命令的方法调用到闭源仓的实现“

一键收集日志已发给PAE,有时间麻烦看下,感谢

咨询了下熟悉业务的人, 当前的实现逻辑是:

  1. 内部会有一个表存token值,keyChannelType, 值为token值。
{ "SMS": xxx, "IPMB": yyy }
  1. 当前获取token时,先判断token表中对应ChannelType是否已存在token,有就直接返回token;没有就根据ipmi传入的信息(role_id)创建token,并存到token表中。
    这解释了 为啥用不同的role_id 获取到同样的token。

终上:

  1. 访问任意redfish接口,如:添加用户的redfish接口,请在一开始获取管理员权限下的token。
  2. 如果已经获取了操作员权限下的token,等待token超时(默认1小时)失效,再获取管理员权限的token.

那请问一下,调用命令时channel type 是选择9 (BMA)还是0(SMM)呢,

也就是说在所有访问redfish接口之前,先执行获取token(role id)为管理员权限么?

我看了一下我们这边工具的代码实现,在访问redfish接口前在组装headers的时候会先执行获取token的命令,这个还需要什么其他操作么,感谢

你的实现是手动修改了channel_type, 选择权限是Administrator的channel即可。
应该不需要其他操作了。

你试下看是否还有问题。

我在获取之前是跑过定制化的BMCSet_IPMIChannelAccessEnabled=on、Custom_SMSAccessRole=4、Custom_IPMBAccessRole=4,Administrator的channel是哪个呢,我手动验证的话只有9 (BMA)还是0(SMM)能执行获取token命令,其他的类型都是失败的

只有这个2个channel, 这2个channel 都可以使用Administrator权限,前提是:

带外发送/redfish/v1/Managers/1/SecurityService接口PATCH请求,可修改IPMIChannelAccess的最高权限,请求体示例:

{
    "IPMIChannelAccess": {
        "IPMBAccessRole": "Administrator",
        "SMSAccessRole": "Administrator"
    }
}

真实场景可能不会存在带外场景,客户现在存在不配置BMC IP的场景该怎么解决呢

在装备阶段进行定制化,设置Custom_SMSAccessRoleCustom_IPMBAccessRole为管理员(4)。 具体可以咨询下PAE.

这个之前搞过呀,在这之前是先执行的定制化

BMCSet_IPMIChannelAccessEnabled=on
Custom_SMSAccessRole=4
Custom_IPMBAccessRole=4

后面查询的时候也都是Administrator,在这个基础上去获取token值,才发现的问题

那直接使用管理员权限去获取token,不使用操作员去获取token。

所以又回到原点了,在我执行Get auth token命令时,我直接使用管理员与操作员获取到的token值是一致的,在执行命令前,定制化都是做好的