用户管理
更新时间:2026-07-23
接口总览
| 接口名称 | 说明 | 方法 | 路径 |
|---|---|---|---|
| CreateUser | 新增用户 | POST | /v2/bcc/user/create |
| ListUsers | 查询用户列表 | POST | /v2/bcc/user/list |
| DeleteUser | 删除用户 | POST | /v2/bcc/user/delete |
| ModifyUser | 修改用户 | POST | /v2/bcc/user/update |
| CreateUserGroup | 创建用户组 | POST | /v2/bcc/userGroup/create |
| ListUserGroups | 查询用户组 | POST | /v2/bcc/userGroup/list |
| ModifyUserGroup | 更新用户组 | POST | /v2/bcc/userGroup/update |
| DeleteUserGroup | 删除用户组 | POST | /v2/bcc/userGroup/delete |
CreateUser
接口描述
新增用户
请求结构
Plain Text
1POST /v2/bcc/user/create HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": clusterId
6 "name": name,
7 "password":
8 {
9 "linux": <encrypted>,
10 "kerberos": <encrypted>,
11 "knox": <encrypted>
12 },
13 "extra": extra,
14 "userGroups": [
15 {
16 "userGroup": userGroupName
17 }
18 ]
19}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| clusterId | String | 是 | RequestBody | 集群 ID |
| name | String | 是 | RequestBody | IAM 用户名 |
| password | Password | 是 | RequestBody | 用户密码(linux / kerberos / knox) |
| extra | String | 否 | RequestBody | 备注,默认为空 |
| userGroups | List |
否 | RequestBody | 所属用户组,用户组名为必填参数,如果用户组不存在,会自动创建;默认会创建并归属于一个同名的用户组 |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| status | Int | HTTP 状态码 |
| result | Int | 成功时返回 0 |
请求示例
JSON
1{
2 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
3 "name": "alice",
4 "password":
5 {
6 "linux": "<encrypted>",
7 "kerberos": "<encrypted>",
8 "knox": "<encrypted>"
9 },
10 "extra": "commented",
11 "userGroups": [
12 {
13 "userGroup": "usergroupname"
14 }
15 ]
16}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": 0
5}
ListUsers
接口描述
查看用户列表
请求结构
Plain Text
1POST /v2/bcc/user/list HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": clusterId,
6 "withSysUser": withSysUser,
7 "pageNo": pageNo,
8 "pageSize": pageSize
9}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| clusterId | String | 是 | RequestBody | 集群 ID |
| pageNo | Int | 否 | RequestBody | 页码,默认为 1 |
| pageSize | Int | 否 | RequestBody | 每页数量,默认为 10 |
| withSysUser | Boolean | 否 | RequestBody | 是否包含系统用户,如 spark/hdfs/hive 等,默认为 false |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| status | Int | HTTP 状态码 |
| page.orderBy | String | 排序字段 |
| page.order | String | 排序方式 |
| page.pageNo | Int | 当前页码 |
| page.pageSize | Int | 每页数量 |
| page.totalCount | Int | 总数 |
| page.result | List |
用户列表 |
请求示例
JSON
1{
2 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
3 "withSysUser": false,
4 "pageNo": 1,
5 "pageSize": 10
6}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "page": {
5 "result": [
6 {
7 "id": 1001,
8 "name": "alice",
9 "description": "BMR user alice",
10 "status": "active",
11 "extra": "commented",
12 "canModify": true,
13 "canDownload": true,
14 "canDelete": true,
15 "password": {
16 "linux": "",
17 "kerberos": "",
18 "knox": ""
19 },
20 "userGroups": [
21 {
22 "id": "g-001",
23 "userGroup": "alice",
24 "extra": ""
25 }
26 ]
27 }
28 ],
29 "totalCount": 1,
30 "pageNo": 1,
31 "pageSize": 10
32 }
33}
DeleteUser
接口描述
删除用户
请求结构
Plain Text
1POST /v2/bcc/user/delete HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": clusterId,
6 "id": userId
7}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| id | Int | 是 | RequestBody | 用户 ID |
| clusterId | String | 是 | RequestBody | 集群 ID |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| status | Int | HTTP 状态码 |
| result | Int | 被删除的用户 ID |
请求示例
JSON
1{
2 "id": 1001,
3 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48"
4}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": 1001
5}
ModifyUser
接口描述
修改用户信息
请求结构
Plain Text
1POST /v2/bcc/user/update HTTP/1.1
2Content-Type: application/json
3
4{
5 "id": userId,
6 "clusterId": clusterId,
7 "password": {
8 "linux": <encrypted>,
9 "kerberos": <encrypted>,
10 "knox": <encrypted>
11 },
12 "extra": extra
13}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| id | Int | 是 | RequestBody | 用户 ID |
| clusterId | String | 是 | RequestBody | 集群 ID |
| password | Password | 否 | RequestBody | 用户密码 |
| extra | String | 否 | RequestBody | 备注 |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| status | Int | HTTP 状态码 |
| result | Int | 用户 ID |
请求示例
JSON
1{
2 "id": 1001,
3 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
4 "password": {
5 "linux": "<encrypted>",
6 "kerberos": "<encrypted>",
7 "knox": "<encrypted>"
8 },
9 "extra": "updated comment"
10}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": 1001
5}
CreateUserGroup
接口描述
新增用户组
请求结构
Plain Text
1POST /v2/bcc/userGroup/create HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": clusterId,
6 "userGroup": userGroupName,
7 "users": [
8 {
9 "id": userId,
10 "name": userName,
11 "extra": extra
12 }
13 ],
14 "extra": extra,
15 "ackPass": <encrypted admin password>
16}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| clusterId | String | 是 | RequestBody | 集群 ID |
| userGroup | String | 是 | RequestBody | 用户组名称 |
| ackPass | String | 是 | RequestBody | 确认密码,集群密码加密 |
| users | List |
否 | RequestBody | 组内用户列表,默认为空 |
| extra | String | 否 | RequestBody | 附加信息,默认为空 |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| status | Int | HTTP 状态码 |
| result | String | 创建的用户组 ID |
请求示例
JSON
1{
2 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
3 "userGroup": "developers",
4 "users": [
5 {
6 "id": 1001,
7 "name": "alice",
8 "extra": ""
9 }
10 ],
11 "extra": "dev team",
12 "ackPass": "<encrypted>"
13}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": "g-001"
5}
ListUserGroups
接口描述
查询用户组列表
请求结构
Plain Text
1POST /v2/bcc/userGroup/list HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": clusterId,
6 "pageNo": pageNo,
7 "pageSize": pageSize
8}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| clusterId | String | 是 | RequestBody | 集群 ID |
| pageNo | Int | 否 | RequestBody | 页码,默认为 1 |
| pageSize | Int | 否 | RequestBody | 每页数量,默认为 10 |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| status | Int | HTTP 状态码 |
| page.orderBy | String | 排序字段 |
| page.order | String | 排序方式(asc/desc) |
| page.pageNo | Int | 当前页码 |
| page.pageSize | Int | 每页数量 |
| page.totalCount | Int | 总数 |
| page.result | List |
用户组列表 |
请求示例
JSON
1{
2 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
3 "pageNo": 1,
4 "pageSize": 10
5}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "page": {
5 "result": [
6 {
7 "id": "g-001",
8 "userGroup": "developers",
9 "cluster_id": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
10 "userCount": 1,
11 "users": [
12 {
13 "id": 1001,
14 "name": "alice",
15 "extra": ""
16 }
17 ],
18 "extra": "dev team",
19 "canModify": true,
20 "canDelete": false
21 }
22 ],
23 "totalCount": 1,
24 "pageNo": 1,
25 "pageSize": 10
26 }
27}
ModifyUserGroup
接口描述
更新用户组信息
请求结构
Plain Text
1POST /v2/bcc/userGroup/update HTTP/1.1
2Content-Type: application/json
3
4{
5 "clusterId": clusterId,
6 "userGroup": userGroupName,
7 "users": [
8 {
9 "id": userId,
10 "name": userName,
11 "extra": extra
12 }
13 ],
14 "extra": extra,
15 "ackPass": <encrypted admin password>
16}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| clusterId | String | 是 | RequestBody | 集群 ID |
| userGroup | String | 是 | RequestBody | 用户组名称 |
| users | List |
否 | RequestBody | 组内用户列表 |
| extra | String | 否 | RequestBody | 附加信息 |
| ackPass | String | 否 | RequestBody | 确认密码 |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| status | Int | HTTP 状态码 |
| result | String | 成功时为空字符串 |
请求示例
JSON
1{
2 "id": "g-001",
3 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48",
4 "userGroup": "developers",
5 "users": [
6 {"id": 1001, "name": "alice", "extra": ""},
7 {"id": 1002, "name": "bob", "extra": ""}
8 ],
9 "extra": "dev team updated",
10 "ackPass": "<encrypted>"
11}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": ""
5}
DeleteUserGroup
接口描述
删除用户组
请求结构
Plain Text
1POST /v2/bcc/userGroup/delete HTTP/1.1
2Content-Type: application/json
3
4{
5 "userGroup": userGroupName,
6 "clusterId": clusterId
7}
请求参数
| 名称 | 类型 | 是否必须 | 参数位置 | 参数描述 |
|---|---|---|---|---|
| userGroup | String | 是 | RequestBody | 用户组名称 |
| clusterId | String | 是 | RequestBody | 集群 ID |
响应参数
| 参数名 | 参数类型 | 参数描述 |
|---|---|---|
| success | Boolean | 请求是否成功 |
| status | Int | HTTP 状态码 |
| result | String | 成功时为空字符串 |
请求示例
JSON
1{
2 "id": "g-001",
3 "userGroup": "developers",
4 "clusterId": "0181b994-576a-4a00-b04e-f6fa9d5eee48"
5}
响应示例
JSON
1{
2 "success": true,
3 "status": 200,
4 "result": ""
5}
错误返回码
| HTTP Status | Code | Message | 触发场景 | 适用接口 |
|---|---|---|---|---|
| 404 | ClusterNotFound | The cluster not found | clusterId 在当前租户下不存在 | AddUsersForUserManager, DescribeUsersForUserManager |
| 400 | LkrUserExist | Current user is already exist in bmr | 集群中已存在同名 BMR 用户 | AddUsersForUserManager |
| 400 | InvalidPassword | The password format does not meet the requirements | password.linux/kerberos/knox RSA / Base64 解密失败 | AddUsersForUserManager, ModifyUserManagerPwd |
| 404 | LkrUserNotFound | The user not found | name 不是当前主账号下的 IAM 子用户;或 users 列表中存在不属于该集群的用户 | AddUsersForUserManager, CreateGroupsSTD, ModifyUsersOfGroupSTD |
| 400 | LkrIamUserDisabled | The IAM user is disabled | name 对应的 IAM 子用户已被禁用 | AddUsersForUserManager |
| 400 | LkrMustBeOneGroups | UserGroups can only be one | userGroups 长度大于 1 | AddUsersForUserManager |
| 400 | LkrInvalidBmrUser | Current user is not in bmr users | id 对应的 BMR 用户不属于 clusterId(防越权) | DeleteUserManagerUserList, ModifyUserManagerPwd |
| 400 | PasswordNotMatch | Password does not match | ackPass 解密失败或与集群密码不匹配 | CreateGroupsSTD, ModifyUsersOfGroupSTD |
| 400 | LkrGroupNameInvalid | Group name is not valid | userGroup 不满足 ^[0-9a-zA-Z_]{1,32}$ | CreateGroupsSTD |
| 400 | LkrGroupAlreadyExist | User group is already exist | 集群中已存在同名用户组 | CreateGroupsSTD |
| 400 | LkrGroupNotFound | User group is not exist | userGroup 在该集群下不存在 | ModifyUsersOfGroupSTD, DeleteGroupsSTD |
| 400 | GroupForbidDeleteWithUsers | There are users in the user group, so can't delete | 用户组下还有用户,不允许删除 | DeleteGroupsSTD |
评价此篇文章
