请问一下,在执行Get auth token命令时,使用管理员与操作员获取到的token值是一致的,这是为什么呢
那如何获取到具有管理员权限的token呢,有没有其他的方法呢,还有就是我使用这两个操作员权限拿到的token去访问redfish接口,会提示我无权限
- 具体是什么样的使用场景需要获取管理员权限的token?
- 访问的什么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
- 执行ipmi 获取auth token后, 一键收集日志,看下 app.log 有没有iam相关的报错。
提供一下BMC的版本,以及iam、ipmi_core组件版本
或者上传一键收集日志到附件
- 看了下源码实现,get auth token这个ipmi命令只支持
CT_SMM和CT_EDMA通道发送, 不支持bt通道发送。 你是做了什么修改调整么

是的,因为需求需要,在不修改闭源仓代码的前提下,对该命令进行一个覆盖:”做了一个命令字相同,但是调用权限比闭源仓的命令权限高的命令,调用获取token的命令前将参数channel_type由3改为9,再通过调用资源树中ipmi命令的方法调用到闭源仓的实现“
一键收集日志已发给PAE,有时间麻烦看下,感谢
咨询了下熟悉业务的人, 当前的实现逻辑是:
- 内部会有一个表存token值,
key为ChannelType, 值为token值。
{ "SMS": xxx, "IPMB": yyy }
- 当前获取token时,先判断token表中对应
ChannelType是否已存在token,有就直接返回token;没有就根据ipmi传入的信息(role_id)创建token,并存到token表中。
这解释了 为啥用不同的role_id获取到同样的token。
终上:
- 访问任意redfish接口,如:添加用户的redfish接口,请在一开始获取管理员权限下的token。
- 如果已经获取了操作员权限下的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_SMSAccessRole或Custom_IPMBAccessRole为管理员(4)。 具体可以咨询下PAE.
这个之前搞过呀,在这之前是先执行的定制化
BMCSet_IPMIChannelAccessEnabled=on
Custom_SMSAccessRole=4
Custom_IPMBAccessRole=4
后面查询的时候也都是Administrator,在这个基础上去获取token值,才发现的问题
那直接使用管理员权限去获取token,不使用操作员去获取token。


