用户的用户组和角色配置过多,导致请求IAM时请求体被截断
问题现象
用户的用户组和角色配置过多,会导致请求IAM时请求体被截断,发生如下报错:

原因分析
IAM的接口请求体policy参数字符个数超过限制,导致IAM时请求体被截断。
处理步骤
Guardian会遍历用户所有的用户组和角色,遍历过程中会跳过“token.server.manager.internal.roles”配置的角色和“token.server.manager.internal.groups”配置的用户组,然后再为剩下的用户组和角色添加#W和#R标签,用于构造IAM请求体中的policy参数。
发生如上报错有如下两种处理方式:
- 方案一:减少该用户的用户组或角色。
- 登录MRS集群Manager界面,具体请参见访问MRS集群Manager。
- 选择“系统 > 权限 > 用户”,单击待修改用户操作列的“修改”,根据需要删除用户组、角色。
- 修改完成后单击“确定”。
- 重新发送业务请求。
- 方案二:修改Guardian配置,需要根据实际情况在默认值基础上,增加其他需要过滤的用户组或角色。
- 根据“GetSecurityKey requestBody is”关键字查找报错日志附近的IAM请求体,并在请求体中查看“obs:accesslabel”对应标签中包含的用户组和角色,排查是否有不需要参与OBS路径授权的用户组和角色,并记录。
- 登录MRS集群Manager界面,具体请参见访问MRS集群Manager。
- 选择“集群 > 服务 > Guardian > 配置 > 全部配置 > 自定义”,在“token.server.config.expandor”中添加以下参数。
表1 配置不参与OBS路径授权的用户组和角色 参数名
描述
token.server.manager.internal.roles
不参与OBS路径授权的MRS角色。
- 默认值:Manager_administrator,Manager_auditor,Manager_operator,Manager_tenant,Manager_viewer,System_administrator,default,launcher-job
- 参数值:将1中记录的角色在添加到默认值后。例如记录的角色为role1,则该参数的值配置为:
Manager_administrator,Manager_auditor,Manager_operator,Manager_tenant,Manager_viewer,System_administrator,default,launcher-job,role1
token.server.manager.internal.groups
不参与OBS路径授权的MRS用户组。
- 默认值:hadoop,hadoopmanager,hive,kmsadmin,ficommon,yarnviewgroup
- 参数值:将1中记录的用户组在添加到默认值后。例如记录的用户组为group1,则该参数的值配置为:
hadoop,hadoopmanager,hive,kmsadmin,ficommon,yarnviewgroup,group1
- 保存服务配置,并重启Guardian服务。
- 重新发送业务请求。