---
title: "创建或更新安全用户"
date: 2026-02-06
lastmod: 2026-02-06
description: "介绍如何在 Easysearch 中创建或更新内部用户配置。"
tags: ["安全", "用户", "认证"]
summary: "此 API 用于创建或更新 Easysearch 内部用户。
API # PUT /_security/user/{name} API 的作用 # 创建新的内部用户或更新已存在的用户配置。此 API 是 Easysearch 安全模块的一部分,用于管理系统用户账户。
API 的参数 # 路由参数 # 参数 类型 是否必需 描述 name string 必需 用户名 查询字符串参数 # 参数 类型 是否必需 默认值 描述 refresh string 可选 wait_downgrade 刷新策略
wait_for:等待刷新完成
false:不刷新 请求体参数 # 参数 类型 是否必需 默认值 描述 password string 条件* - 用户的明文密码"
---
此 API 用于创建或更新 Easysearch 内部用户。
## API
```
PUT /_security/user/{name}
```
## API 的作用
创建新的内部用户或更新已存在的用户配置。此 API 是 Easysearch 安全模块的一部分,用于管理系统用户账户。
## API 的参数
### 路由参数
| 参数 | 类型 | 是否必需 | 描述 |
|------|------|----------|------|
| `name` | string | 必需 | 用户名 |
### 查询字符串参数
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|------|------|----------|--------|------|
| `refresh` | string | 可选 | wait_downgrade | 刷新策略
`wait_for`:等待刷新完成
`false`:不刷新 |
### 请求体参数
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|------|------|----------|--------|------|
| `password` | string | 条件* | - | 用户的明文密码
创建用户时必需(如果未提供 hash) |
| `hash` | string | 条件* | - | 预哈希的密码值
与 password 二选一 |
| `roles` | array | 可选 | [] | 分配给用户的内部角色列表 |
| `external_roles` | array | 可选 | [] | 分配给用户的外部角色列表
如 LDAP 角色 |
| `attributes` | object | 可选 | {} | 用户自定义的键值对属性 |
| `description` | string | 可选 | - | 用户描述信息 |
| `reserved` | boolean | 可选 | false | 是否为保留用户
仅超级管理员可设置 |
| `hidden` | boolean | 可选 | false | 是否为隐藏用户
隐藏用户在列表查询中不显示 |
**注意**:`password` 和 `hash` 必须提供其中一个。
## 请求示例
### 创建基本用户
```json
PUT /_security/user/alice
{
"password": "alice123",
"roles": ["viewer"]
}
```
### 创建带完整信息的用户
```json
PUT /_security/user/admin
{
"password": "admin123",
"roles": ["security_admin", "system_monitor"],
"external_roles": ["ldap_admins"],
"attributes": {
"department": "IT",
"location": "Beijing"
},
"description": "System administrator"
}
```
### 更新现有用户
```json
PUT /_security/user/alice
{
"password": "new_password",
"roles": ["editor", "viewer"]
}
```
### 创建隐藏用户
```json
PUT /_security/user/system_user
{
"password": "secure_password",
"roles": ["system_role"],
"hidden": true,
"reserved": true
}
```
## 响应示例
### 成功响应 - 创建用户
```json
{
"status": "CREATED",
"message": "User alice created"
}
```
### 成功响应 - 更新用户
```json
{
"status": "OK",
"message": "User alice updated"
}
```
### 错误响应 - 密码不符合要求
```json
{
"error": {
"root_cause": [
{
"type": "validation_exception",
"reason": "Password does not meet complexity requirements"
}
],
"type": "validation_exception",
"reason": "Password does not meet complexity requirements"
},
"status": 400
}
```
## 密码验证规则
密码需要满足以下规则:
1. **非空检查**:密码不能为空字符串
2. **复杂度要求**:如果配置了密码正则表达式,密码必须匹配
3. **不重复用户名**:密码不能与用户名相同(不区分大小写)
## 用户属性
用户属性(attributes)可以存储任意键值对信息,例如:
```json
{
"password": "user123",
"roles": ["viewer"],
"attributes": {
"department": "Engineering",
"team": "Backend",
"location": "Beijing",
"employee_id": "12345"
}
}
```
## 权限要求
- **创建用户**:需要 `manage_security` 权限
- **更新用户**:需要 `manage_security` 权限或修改自己的密码
- **保留用户**:只有超级管理员可以创建/修改保留用户
## 注意事项
1. 此 API 使用 PUT 方法
2. 明文密码会在存储时自动转换为哈希值
3. 指定的角色必须存在,否则会返回错误
4. 保留用户不能被普通用户修改
5. 隐藏用户在列表查询中默认不显示
## 安全建议
1. **强密码**:使用强密码策略
2. **最小权限**:只授予用户必需的角色
3. **定期更换**:定期更换用户密码
4. **审计日志**:记录用户变更操作
5. **禁用不使用**:删除或禁用不再使用的账户
## 相关文档
- [查询安全用户](./get-security-user.md)
- [删除安全用户](./delete-security-user.md)
- [查询安全角色](./get-security-role.md)
- [创建或更新安全角色](./create-or-update-security-role.md)